@ledgerhq/lumen-ui-rnative 0.1.47 → 0.1.48

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 (77) hide show
  1. package/dist/module/lib/Components/AmountInput/AmountInput.js +3 -1
  2. package/dist/module/lib/Components/AmountInput/AmountInput.js.map +1 -1
  3. package/dist/module/lib/Components/AmountInput/AmountInput.stories.js +15 -0
  4. package/dist/module/lib/Components/AmountInput/AmountInput.stories.js.map +1 -1
  5. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.js +1 -1
  6. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.js.map +1 -1
  7. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.js +20 -1
  8. package/dist/module/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.js.map +1 -1
  9. package/dist/module/lib/Components/OptionList/OptionList.js +16 -1
  10. package/dist/module/lib/Components/OptionList/OptionList.js.map +1 -1
  11. package/dist/module/lib/Components/OptionList/OptionList.mdx +45 -0
  12. package/dist/module/lib/Components/OptionList/OptionList.stories.js +61 -1
  13. package/dist/module/lib/Components/OptionList/OptionList.stories.js.map +1 -1
  14. package/dist/module/lib/Components/OptionList/OptionList.test.js +43 -1
  15. package/dist/module/lib/Components/OptionList/OptionList.test.js.map +1 -1
  16. package/dist/module/lib/Components/OptionList/useOptionList/useOptionListItems.js.map +1 -1
  17. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.js +7 -1
  18. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.js.map +1 -1
  19. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.mdx +28 -0
  20. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.stories.js +24 -1
  21. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.stories.js.map +1 -1
  22. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.test.js +28 -1
  23. package/dist/module/lib/Components/SegmentedControl/SegmentedControl.test.js.map +1 -1
  24. package/dist/module/lib/Components/TabBar/TabBar.js +7 -4
  25. package/dist/module/lib/Components/TabBar/TabBar.js.map +1 -1
  26. package/dist/module/lib/Components/TabBar/TabBar.mdx +29 -0
  27. package/dist/module/lib/Components/TabBar/TabBar.stories.js +35 -1
  28. package/dist/module/lib/Components/TabBar/TabBar.stories.js.map +1 -1
  29. package/dist/module/lib/Components/TabBar/TabBar.test.js +28 -1
  30. package/dist/module/lib/Components/TabBar/TabBar.test.js.map +1 -1
  31. package/dist/module/lib/Components/TabBar/index.js +2 -1
  32. package/dist/module/lib/Components/TabBar/index.js.map +1 -1
  33. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts +1 -1
  34. package/dist/typescript/src/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  35. package/dist/typescript/src/lib/Components/AmountInput/types.d.ts +8 -0
  36. package/dist/typescript/src/lib/Components/AmountInput/types.d.ts.map +1 -1
  37. package/dist/typescript/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.d.ts +1 -0
  38. package/dist/typescript/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.d.ts.map +1 -1
  39. package/dist/typescript/src/lib/Components/OptionList/OptionList.d.ts +18 -4
  40. package/dist/typescript/src/lib/Components/OptionList/OptionList.d.ts.map +1 -1
  41. package/dist/typescript/src/lib/Components/OptionList/types.d.ts +16 -15
  42. package/dist/typescript/src/lib/Components/OptionList/types.d.ts.map +1 -1
  43. package/dist/typescript/src/lib/Components/OptionList/useOptionList/useOptionListItems.d.ts +9 -9
  44. package/dist/typescript/src/lib/Components/OptionList/useOptionList/useOptionListItems.d.ts.map +1 -1
  45. package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControl.d.ts +8 -3
  46. package/dist/typescript/src/lib/Components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  47. package/dist/typescript/src/lib/Components/SegmentedControl/types.d.ts +6 -5
  48. package/dist/typescript/src/lib/Components/SegmentedControl/types.d.ts.map +1 -1
  49. package/dist/typescript/src/lib/Components/TabBar/TabBar.d.ts +7 -2
  50. package/dist/typescript/src/lib/Components/TabBar/TabBar.d.ts.map +1 -1
  51. package/dist/typescript/src/lib/Components/TabBar/index.d.ts +2 -2
  52. package/dist/typescript/src/lib/Components/TabBar/index.d.ts.map +1 -1
  53. package/dist/typescript/src/lib/Components/TabBar/types.d.ts +17 -16
  54. package/dist/typescript/src/lib/Components/TabBar/types.d.ts.map +1 -1
  55. package/package.json +3 -3
  56. package/src/lib/Components/AmountInput/AmountInput.stories.tsx +14 -0
  57. package/src/lib/Components/AmountInput/AmountInput.tsx +2 -0
  58. package/src/lib/Components/AmountInput/types.ts +8 -0
  59. package/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.test.ts +20 -0
  60. package/src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts +2 -0
  61. package/src/lib/Components/OptionList/OptionList.mdx +45 -0
  62. package/src/lib/Components/OptionList/OptionList.stories.tsx +63 -0
  63. package/src/lib/Components/OptionList/OptionList.test.tsx +40 -0
  64. package/src/lib/Components/OptionList/OptionList.tsx +57 -10
  65. package/src/lib/Components/OptionList/types.ts +34 -15
  66. package/src/lib/Components/OptionList/useOptionList/useOptionListItems.ts +28 -13
  67. package/src/lib/Components/SegmentedControl/SegmentedControl.mdx +28 -0
  68. package/src/lib/Components/SegmentedControl/SegmentedControl.stories.tsx +34 -1
  69. package/src/lib/Components/SegmentedControl/SegmentedControl.test.tsx +32 -1
  70. package/src/lib/Components/SegmentedControl/SegmentedControl.tsx +22 -5
  71. package/src/lib/Components/SegmentedControl/types.ts +11 -5
  72. package/src/lib/Components/TabBar/TabBar.mdx +29 -0
  73. package/src/lib/Components/TabBar/TabBar.stories.tsx +34 -1
  74. package/src/lib/Components/TabBar/TabBar.test.tsx +23 -1
  75. package/src/lib/Components/TabBar/TabBar.tsx +17 -9
  76. package/src/lib/Components/TabBar/index.ts +2 -2
  77. package/src/lib/Components/TabBar/types.ts +19 -17
@@ -5,7 +5,7 @@ import { ledgerLiveThemes } from '@ledgerhq/lumen-design-core';
5
5
  import { render, fireEvent } from '@testing-library/react-native';
6
6
  import { HomeFill, Settings, BasketPutIn } from "../../Symbols/index.js";
7
7
  import { ThemeProvider } from "../ThemeProvider/ThemeProvider.js";
8
- import { TabBar, TabBarItem } from "./TabBar.js";
8
+ import { TabBar, TabBarItem, createTabBar } from "./TabBar.js";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const renderWithProvider = component => {
11
11
  return render(/*#__PURE__*/_jsx(ThemeProvider, {
@@ -81,5 +81,32 @@ describe('TabBar', () => {
81
81
  expect(getByText('Shop')).toBeTruthy();
82
82
  expect(getByText('Settings')).toBeTruthy();
83
83
  });
84
+ describe('createTabBar', () => {
85
+ it('returns typed components that render and respond to presses', () => {
86
+ const {
87
+ TabBar: TypedTabBar,
88
+ TabBarItem: TypedItem
89
+ } = createTabBar();
90
+ const onTabPress = jest.fn();
91
+ const {
92
+ getByText
93
+ } = renderWithProvider(/*#__PURE__*/_jsxs(TypedTabBar, {
94
+ active: "home",
95
+ onTabPress: onTabPress,
96
+ children: [/*#__PURE__*/_jsx(TypedItem, {
97
+ value: "home",
98
+ label: "Home",
99
+ icon: HomeFill
100
+ }), /*#__PURE__*/_jsx(TypedItem, {
101
+ value: "settings",
102
+ label: "Settings",
103
+ icon: Settings
104
+ })]
105
+ }));
106
+ expect(getByText('Home')).toBeTruthy();
107
+ fireEvent.press(getByText('Settings'));
108
+ expect(onTabPress).toHaveBeenCalledWith('settings');
109
+ });
110
+ });
84
111
  });
85
112
  //# sourceMappingURL=TabBar.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["describe","it","expect","jest","ledgerLiveThemes","render","fireEvent","HomeFill","Settings","BasketPutIn","ThemeProvider","TabBar","TabBarItem","jsx","_jsx","jsxs","_jsxs","renderWithProvider","component","themes","colorScheme","locale","children","onTabPress","fn","getByText","active","value","label","icon","toBeTruthy","press","toHaveBeenCalledWith"],"sourceRoot":"../../../../../src","sources":["lib/Components/TabBar/TabBar.test.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["describe","it","expect","jest","ledgerLiveThemes","render","fireEvent","HomeFill","Settings","BasketPutIn","ThemeProvider","TabBar","TabBarItem","createTabBar","jsx","_jsx","jsxs","_jsxs","renderWithProvider","component","themes","colorScheme","locale","children","onTabPress","fn","getByText","active","value","label","icon","toBeTruthy","press","toHaveBeenCalledWith","TypedTabBar","TypedItem"],"sourceRoot":"../../../../../src","sources":["lib/Components/TabBar/TabBar.test.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
 
3
- export { TabBar, TabBarItem, TAB_BAR_HEIGHT } from "./TabBar.js";
3
+ export * from "./TabBar.js";
4
+ export * from "./types.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TabBar","TabBarItem","TAB_BAR_HEIGHT"],"sourceRoot":"../../../../../src","sources":["lib/Components/TabBar/index.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,UAAU,EAAEC,cAAc,QAAQ,aAAU","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["lib/Components/TabBar/index.ts"],"mappings":";;AAAA,cAAc,aAAU;AACxB,cAAc,YAAS","ignoreList":[]}
@@ -4,5 +4,5 @@ import type { AmountInputProps } from './types';
4
4
  * This is a controlled component - both `value` and `onChange` props are required.
5
5
  * The currency text can be positioned either on the left or right side of the input.
6
6
  */
7
- export declare const AmountInput: ({ lx, style, size, align, currencyText, currencyPosition, editable, disabled: disabledProp, maxIntegerLength, maxDecimalLength, allowDecimals, thousandsSeparator, value, onChangeText, isInvalid, ref, ...props }: AmountInputProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const AmountInput: ({ lx, style, size, align, currencyText, currencyPosition, editable, disabled: disabledProp, maxIntegerLength, maxDecimalLength, allowDecimals, thousandsSeparator, decimalSeparator, value, onChangeText, isInvalid, ref, ...props }: AmountInputProps) => import("react/jsx-runtime").JSX.Element;
8
8
  //# sourceMappingURL=AmountInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AmountInput.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/AmountInput.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAejB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,oNAkBzB,gBAAgB,4CAgGlB,CAAC"}
1
+ {"version":3,"file":"AmountInput.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/AmountInput.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAejB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,sOAmBzB,gBAAgB,4CAiGlB,CAAC"}
@@ -63,6 +63,14 @@ export type AmountInputProps = Omit<TextInputProps, 'value' | 'onChangeText'> &
63
63
  * @default true
64
64
  */
65
65
  thousandsSeparator?: boolean;
66
+ /**
67
+ * Character used to display the decimal separator (e.g. `1 234,5` vs `1 234.5`).
68
+ * Typing always accepts both `,` and `.` regardless of this value, so it stays
69
+ * compatible with any locale keyboard. The value returned by `onChangeText`
70
+ * uses this separator.
71
+ * @default '.'
72
+ */
73
+ decimalSeparator?: '.' | ',';
66
74
  /**
67
75
  * Mark input as invalid (e.g. for error display)
68
76
  * @default false
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,cAAc,EACd,OAAO,GAAG,cAAc,CACzB,GAAG;IACF;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/AmountInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,cAAc,EACd,OAAO,GAAG,cAAc,CACzB,GAAG;IACF;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,QAAQ,CAAC"}
@@ -3,6 +3,7 @@ type FormatOptions = {
3
3
  thousandsSeparator: boolean;
4
4
  maxIntegerLength: number;
5
5
  maxDecimalLength: number;
6
+ decimalSeparator: '.' | ',';
6
7
  };
7
8
  type UseAmountInputFormattingArgs = {
8
9
  value: string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"useAmountInputFormatting.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts"],"names":[],"mappings":"AAGA,KAAK,aAAa,GAAG;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,yCAItC,4BAA4B,KAAG,8BAsBjC,CAAC"}
1
+ {"version":3,"file":"useAmountInputFormatting.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/AmountInput/useAmountInputFormatting/useAmountInputFormatting.ts"],"names":[],"mappings":"AAGA,KAAK,aAAa,GAAG;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,GAAG,GAAG,GAAG,CAAC;CAC7B,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,yCAItC,4BAA4B,KAAG,8BAuBjC,CAAC"}
@@ -1,7 +1,8 @@
1
- import type { MetaShape, OptionListProps, OptionListContentProps, OptionListItemProps, OptionListItemLeadingProps, OptionListItemTextProps, OptionListItemDescriptionProps, OptionListItemContentProps, OptionListItemContentRowProps, OptionListEmptyStateProps, OptionListSearchProps, OptionListTriggerProps } from './types';
2
- export declare const OptionList: <TMeta extends MetaShape = MetaShape>({ items, value, defaultValue, onValueChange, disabled: disabledProp, filter, filteredItems, searchValue, defaultSearchValue, onSearchValueChange, children, }: OptionListProps<TMeta>) => import("react/jsx-runtime").JSX.Element;
3
- export declare const OptionListContent: <TMeta extends MetaShape = MetaShape>({ renderItem, lx, style, ref, ...props }: OptionListContentProps<TMeta>) => import("react/jsx-runtime").JSX.Element;
4
- export declare const OptionListItem: ({ value, disabled: disabledProp, children, lx, style, ref, ...props }: OptionListItemProps) => import("react/jsx-runtime").JSX.Element;
1
+ import { type ReactElement } from 'react';
2
+ import type { MetaShape, OptionListProps, OptionListContentProps, OptionListItemProps, OptionListItemLeadingProps, OptionListItemTextProps, OptionListItemDescriptionProps, OptionListItemContentProps, OptionListItemContentRowProps, OptionListEmptyStateProps, OptionListSearchProps, OptionListTriggerProps, OptionListValue } from './types';
3
+ export declare const OptionList: <T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape>({ items, value, defaultValue, onValueChange, disabled: disabledProp, filter, filteredItems, searchValue, defaultSearchValue, onSearchValueChange, children, }: OptionListProps<T, TMeta>) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const OptionListContent: <T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape>({ renderItem, lx, style, ref, ...props }: OptionListContentProps<T, TMeta>) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const OptionListItem: <T extends OptionListValue = OptionListValue>({ value, disabled: disabledProp, children, lx, style, ref, ...props }: OptionListItemProps<T>) => import("react/jsx-runtime").JSX.Element;
5
6
  export declare const OptionListItemText: ({ children, lx, style, ref, ...props }: OptionListItemTextProps) => import("react/jsx-runtime").JSX.Element;
6
7
  export declare const OptionListItemDescription: ({ children, lx, style, ref, ...props }: OptionListItemDescriptionProps) => import("react/jsx-runtime").JSX.Element;
7
8
  export declare const OptionListItemContent: ({ children, lx, style, ref, ...props }: OptionListItemContentProps) => import("react/jsx-runtime").JSX.Element;
@@ -10,4 +11,17 @@ export declare const OptionListItemLeading: ({ children, lx, style, ref, ...prop
10
11
  export declare const OptionListSearch: ({ ref, ...props }: OptionListSearchProps) => import("react/jsx-runtime").JSX.Element;
11
12
  export declare const OptionListEmptyState: ({ title, description, lx, style, ref, ...props }: OptionListEmptyStateProps) => import("react/jsx-runtime").JSX.Element | null;
12
13
  export declare const OptionListTrigger: ({ label, onPress, disabled: disabledProp, children, lx, style, ref, ...props }: OptionListTriggerProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare function createOptionList<T extends OptionListValue = never, TMeta extends MetaShape = MetaShape>(): {
15
+ OptionList: (props: OptionListProps<T, TMeta>) => ReactElement;
16
+ OptionListContent: (props: OptionListContentProps<T, TMeta>) => ReactElement;
17
+ OptionListItem: (props: OptionListItemProps<T>) => ReactElement;
18
+ OptionListItemText: (props: OptionListItemTextProps) => ReactElement;
19
+ OptionListItemDescription: (props: OptionListItemDescriptionProps) => ReactElement;
20
+ OptionListItemContent: (props: OptionListItemContentProps) => ReactElement;
21
+ OptionListItemContentRow: (props: OptionListItemContentRowProps) => ReactElement;
22
+ OptionListItemLeading: (props: OptionListItemLeadingProps) => ReactElement;
23
+ OptionListSearch: (props: OptionListSearchProps) => ReactElement;
24
+ OptionListEmptyState: (props: OptionListEmptyStateProps) => ReactElement | null;
25
+ OptionListTrigger: (props: OptionListTriggerProps) => ReactElement;
26
+ };
13
27
  //# sourceMappingURL=OptionList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionList.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/OptionList/OptionList.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,SAAS,EAGT,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAMjB,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,SAAS,GAAG,SAAS,EAAE,+JAY7D,eAAe,CAAC,KAAK,CAAC,4CA8CxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,KAAK,SAAS,SAAS,GAAG,SAAS,EAAE,0CAMpE,sBAAsB,CAAC,KAAK,CAAC,4CAkC/B,CAAC;AA4BF,eAAO,MAAM,cAAc,GAAI,uEAQ5B,mBAAmB,4CA+BrB,CAAC;AAyBF,eAAO,MAAM,kBAAkB,GAAI,wCAMhC,uBAAuB,4CA6BzB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,wCAMvC,8BAA8B,4CA6BhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,wCAMnC,0BAA0B,4CAsB5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,wCAMtC,6BAA6B,4CAuB/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,wCAMnC,0BAA0B,4CAsB5B,CAAC;AAeF,eAAO,MAAM,gBAAgB,GAAI,mBAAmB,qBAAqB,4CAiBxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,kDAOlC,yBAAyB,mDA4C3B,CAAC;AA6DF,eAAO,MAAM,iBAAiB,GAAI,gFAS/B,sBAAsB,4CAgCxB,CAAC"}
1
+ {"version":3,"file":"OptionList.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/OptionList/OptionList.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAY,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAQpE,OAAO,KAAK,EACV,SAAS,EAGT,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EAEtB,eAAe,EAChB,MAAM,SAAS,CAAC;AAMjB,eAAO,MAAM,UAAU,GACrB,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,+JAYC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,4CA8C3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,0CAMC,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,4CAqClC,CAAC;AA4BF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,uEAQzE,mBAAmB,CAAC,CAAC,CAAC,4CA+BxB,CAAC;AAyBF,eAAO,MAAM,kBAAkB,GAAI,wCAMhC,uBAAuB,4CA6BzB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,wCAMvC,8BAA8B,4CA6BhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,wCAMnC,0BAA0B,4CAsB5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,wCAMtC,6BAA6B,4CAuB/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,wCAMnC,0BAA0B,4CAsB5B,CAAC;AAeF,eAAO,MAAM,gBAAgB,GAAI,mBAAmB,qBAAqB,4CAiBxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,kDAOlC,yBAAyB,mDA4C3B,CAAC;AA6DF,eAAO,MAAM,iBAAiB,GAAI,gFAS/B,sBAAsB,4CAgCxB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,eAAe,GAAG,KAAK,EACjC,KAAK,SAAS,SAAS,GAAG,SAAS,KAChC;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,YAAY,CAAC;IAC/D,iBAAiB,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,YAAY,CAAC;IAC7E,cAAc,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;IAChE,kBAAkB,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,YAAY,CAAC;IACrE,yBAAyB,EAAE,CACzB,KAAK,EAAE,8BAA8B,KAClC,YAAY,CAAC;IAClB,qBAAqB,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,YAAY,CAAC;IAC3E,wBAAwB,EAAE,CACxB,KAAK,EAAE,6BAA6B,KACjC,YAAY,CAAC;IAClB,qBAAqB,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,YAAY,CAAC;IAC3E,gBAAgB,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,YAAY,CAAC;IACjE,oBAAoB,EAAE,CACpB,KAAK,EAAE,yBAAyB,KAC7B,YAAY,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,YAAY,CAAC;CACpE,CAcA"}
@@ -2,9 +2,10 @@ import type { ReactNode } from 'react';
2
2
  import type { StyledPressableProps, StyledTextProps, StyledViewProps } from '../../../styles';
3
3
  import type { SearchInputProps } from '../SearchInput';
4
4
  export type MetaShape = Record<string, unknown>;
5
- export type OptionListItemData<TMeta extends MetaShape = MetaShape> = {
5
+ export type OptionListValue = string;
6
+ export type OptionListItemData<T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape> = {
6
7
  /** Unique string identifier for this item, used for selection tracking. */
7
- value: string;
8
+ value: T;
8
9
  /** Display text. */
9
10
  label: string;
10
11
  /** Secondary text displayed below the label inside the item. */
@@ -35,28 +36,28 @@ export type OptionListContextValue = {
35
36
  handleSearchValueChange: (value: string) => void;
36
37
  };
37
38
  /** Internal type -- consumers never construct this directly. */
38
- export type OptionListItemGroup<TMeta extends MetaShape = MetaShape> = {
39
+ export type OptionListItemGroup<T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape> = {
39
40
  label: string;
40
- items: OptionListItemData<TMeta>[];
41
+ items: OptionListItemData<T, TMeta>[];
41
42
  };
42
- export type OptionListProps<TMeta extends MetaShape = MetaShape> = {
43
+ export type OptionListProps<T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape> = {
43
44
  /**
44
45
  * Flat array of items.
45
46
  * Use the `group` field on each item for automatic grouping.
46
47
  */
47
- items: OptionListItemData<TMeta>[];
48
+ items: OptionListItemData<T, TMeta>[];
48
49
  /**
49
50
  * The controlled selected value.
50
51
  */
51
- value?: string | null;
52
+ value?: T | null;
52
53
  /**
53
54
  * The default selected value (uncontrolled)
54
55
  */
55
- defaultValue?: string | null;
56
+ defaultValue?: T | null;
56
57
  /**
57
58
  * Called when the selected value changes.
58
59
  */
59
- onValueChange?: (value: string | null) => void;
60
+ onValueChange?: (value: T | null) => void;
60
61
  /**
61
62
  * When true, prevents interaction with the entire list.
62
63
  */
@@ -65,12 +66,12 @@ export type OptionListProps<TMeta extends MetaShape = MetaShape> = {
65
66
  * Custom item/query matcher.
66
67
  * Defaults to case-insensitive label match; `null` disables filtering.
67
68
  */
68
- filter?: null | ((item: OptionListItemData<TMeta>, query: string) => boolean);
69
+ filter?: null | ((item: OptionListItemData<T, TMeta>, query: string) => boolean);
69
70
  /**
70
71
  * Pre-filtered items for async/remote search.
71
72
  * Bypasses internal filtering.
72
73
  */
73
- filteredItems?: OptionListItemData<TMeta>[];
74
+ filteredItems?: OptionListItemData<T, TMeta>[];
74
75
  /**
75
76
  * Controlled search input value.
76
77
  */
@@ -85,13 +86,13 @@ export type OptionListProps<TMeta extends MetaShape = MetaShape> = {
85
86
  onSearchValueChange?: (value: string) => void;
86
87
  children: ReactNode;
87
88
  };
88
- export type OptionListContentProps<TMeta extends MetaShape = MetaShape> = {
89
+ export type OptionListContentProps<T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape> = {
89
90
  /** Render function called for each item. Receives the item data and selection/disabled state. */
90
- renderItem: (item: OptionListItemData<TMeta>, selected: boolean) => ReactNode;
91
+ renderItem: (item: OptionListItemData<T, TMeta>, selected: boolean) => ReactNode;
91
92
  } & Omit<StyledViewProps, 'children'>;
92
- export type OptionListItemProps = {
93
+ export type OptionListItemProps<T extends OptionListValue = OptionListValue> = {
93
94
  /** The value associated with this item, used for selection matching. */
94
- value: string;
95
+ value: T;
95
96
  /** Whether the item is disabled. */
96
97
  disabled?: boolean;
97
98
  children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/OptionList/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/OptionList/types.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,20 @@
1
- import type { MetaShape, OptionListItemData, OptionListItemGroup } from '../types';
1
+ import type { MetaShape, OptionListItemData, OptionListItemGroup, OptionListValue } from '../types';
2
2
  export declare const defaultLabelFilter: (item: OptionListItemData, query: string) => boolean;
3
- type UseOptionListItemsParams<TMeta extends MetaShape = MetaShape> = {
4
- items: OptionListItemData<TMeta>[];
5
- filter?: null | ((item: OptionListItemData<TMeta>, query: string) => boolean);
6
- filteredItems?: OptionListItemData<TMeta>[];
3
+ type UseOptionListItemsParams<T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape> = {
4
+ items: OptionListItemData<T, TMeta>[];
5
+ filter?: null | ((item: OptionListItemData<T, TMeta>, query: string) => boolean);
6
+ filteredItems?: OptionListItemData<T, TMeta>[];
7
7
  searchValue?: string;
8
8
  defaultSearchValue?: string;
9
9
  onSearchValueChange?: (value: string) => void;
10
10
  };
11
- type UseOptionListItemsResult<TMeta extends MetaShape = MetaShape> = {
11
+ type UseOptionListItemsResult<T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape> = {
12
12
  isGrouped: boolean;
13
- groups: OptionListItemGroup<TMeta>[];
14
- flatItems: OptionListItemData<TMeta>[];
13
+ groups: OptionListItemGroup<T, TMeta>[];
14
+ flatItems: OptionListItemData<T, TMeta>[];
15
15
  resolvedSearchValue: string;
16
16
  handleSearchValueChange: (val: string) => void;
17
17
  };
18
- export declare const useOptionListItems: <TMeta extends MetaShape = MetaShape>({ items, filter, filteredItems, searchValue: searchValueProp, defaultSearchValue, onSearchValueChange, }: UseOptionListItemsParams<TMeta>) => UseOptionListItemsResult<TMeta>;
18
+ export declare const useOptionListItems: <T extends OptionListValue = OptionListValue, TMeta extends MetaShape = MetaShape>({ items, filter, filteredItems, searchValue: searchValueProp, defaultSearchValue, onSearchValueChange, }: UseOptionListItemsParams<T, TMeta>) => UseOptionListItemsResult<T, TMeta>;
19
19
  export {};
20
20
  //# sourceMappingURL=useOptionListItems.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOptionListItems.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/OptionList/useOptionList/useOptionListItems.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAqBlB,eAAO,MAAM,kBAAkB,GAC7B,MAAM,kBAAkB,EACxB,OAAO,MAAM,KACZ,OAAiE,CAAC;AAErE,KAAK,wBAAwB,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,IAAI;IACnE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IAC9E,aAAa,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,KAAK,wBAAwB,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,IAAI;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;IACrC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IACvC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,SAAS,GAAG,SAAS,EAAE,0GAOrE,wBAAwB,CAAC,KAAK,CAAC,KAAG,wBAAwB,CAAC,KAAK,CAmClE,CAAC"}
1
+ {"version":3,"file":"useOptionListItems.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/OptionList/useOptionList/useOptionListItems.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAChB,MAAM,UAAU,CAAC;AAwBlB,eAAO,MAAM,kBAAkB,GAC7B,MAAM,kBAAkB,EACxB,OAAO,MAAM,KACZ,OAAiE,CAAC;AAErE,KAAK,wBAAwB,CAC3B,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,KAAK,SAAS,SAAS,GAAG,SAAS,IACjC;IACF,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,MAAM,CAAC,EACH,IAAI,GACJ,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,KAAK,wBAAwB,CAC3B,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,KAAK,SAAS,SAAS,GAAG,SAAS,IACjC;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC,SAAS,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,0GAOC,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,KAAG,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAmCxE,CAAC"}
@@ -1,4 +1,9 @@
1
- import type { SegmentedControlButtonProps, SegmentedControlProps } from './types';
2
- export declare function SegmentedControlButton({ value, children, icon: Icon, trailingContent, onPress, ...props }: SegmentedControlButtonProps): import("react/jsx-runtime").JSX.Element;
3
- export declare function SegmentedControl({ selectedValue, onSelectedChange, accessibilityLabel, children, disabled: disabledProp, appearance, tabLayout, ...props }: SegmentedControlProps): import("react/jsx-runtime").JSX.Element;
1
+ import type { ReactElement } from 'react';
2
+ import type { SegmentedControlButtonProps, SegmentedControlProps, SegmentedControlValue } from './types';
3
+ export declare function SegmentedControlButton<T extends SegmentedControlValue = SegmentedControlValue>({ value, children, icon: Icon, trailingContent, onPress, ...props }: SegmentedControlButtonProps<T>): import("react/jsx-runtime").JSX.Element;
4
+ export declare function SegmentedControl<T extends SegmentedControlValue = SegmentedControlValue>({ selectedValue, onSelectedChange, accessibilityLabel, children, disabled: disabledProp, appearance, tabLayout, ...props }: SegmentedControlProps<T>): import("react/jsx-runtime").JSX.Element;
5
+ export declare function createSegmentedControl<T extends SegmentedControlValue = never>(): {
6
+ SegmentedControl: (props: SegmentedControlProps<T>) => ReactElement;
7
+ SegmentedControlButton: (props: SegmentedControlButtonProps<T>) => ReactElement;
8
+ };
4
9
  //# sourceMappingURL=SegmentedControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/SegmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAMjB,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,IAAI,EACV,eAAe,EACf,OAAO,EACP,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAoD7B;AAkDD,wBAAgB,gBAAgB,CAAC,EAC/B,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EAAE,YAAY,EACtB,UAAyB,EACzB,SAAmB,EACnB,GAAG,KAAK,EACT,EAAE,qBAAqB,2CA+CvB"}
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/SegmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAMjB,wBAAgB,sBAAsB,CACpC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,EACvD,EACA,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,IAAI,EACV,eAAe,EACf,OAAO,EACP,GAAG,KAAK,EACT,EAAE,2BAA2B,CAAC,CAAC,CAAC,2CAoDhC;AAkDD,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,EACvD,EACA,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EAAE,YAAY,EACtB,UAAyB,EACzB,SAAmB,EACnB,GAAG,KAAK,EACT,EAAE,qBAAqB,CAAC,CAAC,CAAC,2CA+C1B;AAuCD,wBAAgB,sBAAsB,CACpC,CAAC,SAAS,qBAAqB,GAAG,KAAK,KACpC;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;IACpE,sBAAsB,EAAE,CACtB,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC,KAClC,YAAY,CAAC;CACnB,CAEA"}
@@ -2,15 +2,16 @@ import type { ComponentType, ReactNode } from 'react';
2
2
  import type { LumenTextStyle, StyledPressableProps } from '../../../styles';
3
3
  import type { IconSize } from '../Icon';
4
4
  import type { BoxProps } from '../Utility';
5
- export type SegmentedControlProps = {
5
+ export type SegmentedControlValue = string;
6
+ export type SegmentedControlProps<T extends SegmentedControlValue = SegmentedControlValue> = {
6
7
  /**
7
8
  * The value of the currently selected segment (drives the sliding pill).
8
9
  */
9
- selectedValue: string;
10
+ selectedValue: T;
10
11
  /**
11
12
  * Callback when the selected segment value changes.
12
13
  */
13
- onSelectedChange: (value: string) => void;
14
+ onSelectedChange: (value: T) => void;
14
15
  /**
15
16
  * When true, the entire control is disabled (no interaction, selected uses muted styling).
16
17
  */
@@ -40,11 +41,11 @@ type IconComponent = ComponentType<{
40
41
  size?: IconSize;
41
42
  color?: LumenTextStyle['color'];
42
43
  }>;
43
- export type SegmentedControlButtonProps = {
44
+ export type SegmentedControlButtonProps<T extends SegmentedControlValue = SegmentedControlValue> = {
44
45
  /**
45
46
  * Value for this segment (must be unique among siblings).
46
47
  */
47
- value: string;
48
+ value: T;
48
49
  /**
49
50
  * Button label (e.g. "Preview", "Raw").
50
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/SegmentedControl/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC;IAC5C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE/B,KAAK,aAAa,GAAG,aAAa,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/SegmentedControl/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,IACrD;IACF;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IACjB;;OAEG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC;IAC5C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE/B,KAAK,aAAa,GAAG,aAAa,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,CACrC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,IACrD;IACF;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC;IACT;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { TabBarItemProps, TabBarProps } from './types';
1
+ import type { ReactElement } from 'react';
2
+ import type { TabBarItemProps, TabBarProps, TabBarValue } from './types';
2
3
  export declare const TAB_BAR_HEIGHT = 60;
3
4
  export declare function TabBarItem({ value, label, icon, activeIcon, style, ...props }: TabBarItemProps): import("react/jsx-runtime").JSX.Element;
4
5
  /**
@@ -19,5 +20,9 @@ export declare function TabBarItem({ value, label, icon, activeIcon, style, ...p
19
20
  * <TabBarItem value="settings" label="Settings" icon={Settings} />
20
21
  * </TabBar>
21
22
  */
22
- export declare function TabBar({ active, onTabPress, children, ...props }: TabBarProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function TabBar<T extends TabBarValue = TabBarValue>({ active, onTabPress, children, ...props }: TabBarProps<T>): import("react/jsx-runtime").JSX.Element;
24
+ export declare function createTabBar<T extends TabBarValue = never>(): {
25
+ TabBar: (props: TabBarProps<T>) => ReactElement;
26
+ TabBarItem: (props: TabBarItemProps<T>) => ReactElement;
27
+ };
23
28
  //# sourceMappingURL=TabBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/TabBar/TabBar.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE5D,eAAO,MAAM,cAAc,KAAK,CAAC;AA+IjC,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,2CAmDjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,UAAU,EACV,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,2CA2Cb"}
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/TabBar/TabBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAmBrD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzE,eAAO,MAAM,cAAc,KAAK,CAAC;AA+IjC,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,2CAmDjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EAC1D,MAAM,EACN,UAAU,EACV,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,CAAC,CAAC,CAAC,2CA4ChB;AA4DD,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,KAAK,KAAK;IAC7D,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;CACzD,CAEA"}
@@ -1,3 +1,3 @@
1
- export { TabBar, TabBarItem, TAB_BAR_HEIGHT } from './TabBar';
2
- export type { TabBarProps, TabBarItemProps } from './types';
1
+ export * from './TabBar';
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/TabBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/TabBar/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -5,11 +5,26 @@ import type { BoxProps } from '../Utility';
5
5
  type IconComponent = ComponentType<{
6
6
  size?: IconSize;
7
7
  }>;
8
- export type TabBarItemProps = {
8
+ export type TabBarValue = string;
9
+ export type TabBarProps<T extends TabBarValue = TabBarValue> = {
10
+ /**
11
+ * The value of the currently active tab.
12
+ */
13
+ active: T;
14
+ /**
15
+ * The callback function called when a tab is pressed.
16
+ */
17
+ onTabPress: (active: T) => void;
18
+ /**
19
+ * The tab items to display.
20
+ */
21
+ children: ReactNode;
22
+ } & Omit<BoxProps, 'children'>;
23
+ export type TabBarItemProps<T extends TabBarValue = TabBarValue> = {
9
24
  /**
10
25
  * The unique identifier for the tab item.
11
26
  */
12
- value: string;
27
+ value: T;
13
28
  /**
14
29
  * The display label for the tab item.
15
30
  * If not provided, the icon will be centered.
@@ -25,19 +40,5 @@ export type TabBarItemProps = {
25
40
  */
26
41
  activeIcon?: IconComponent;
27
42
  } & Omit<StyledViewProps, 'children'>;
28
- export type TabBarProps = {
29
- /**
30
- * The value of the currently active tab.
31
- */
32
- active: string;
33
- /**
34
- * The callback function called when a tab is pressed.
35
- */
36
- onTabPress: (active: string) => void;
37
- /**
38
- * The tab items to display.
39
- */
40
- children: ReactNode;
41
- } & Omit<BoxProps, 'children'>;
42
43
  export {};
43
44
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/TabBar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,aAAa,GAAG,aAAa,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtC,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/TabBar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,aAAa,GAAG,aAAa,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAC7D;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IACV;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE/B,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IACjE;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC;IACT;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/lumen-ui-rnative",
3
- "version": "0.1.47",
3
+ "version": "0.1.48",
4
4
  "license": "Apache-2.0",
5
5
  "keywords": [
6
6
  "react-native",
@@ -42,7 +42,7 @@
42
42
  "!**/*.tsbuildinfo"
43
43
  ],
44
44
  "dependencies": {
45
- "@ledgerhq/lumen-utils-shared": "0.1.6",
45
+ "@ledgerhq/lumen-utils-shared": "0.1.7",
46
46
  "i18next": "^23.7.0",
47
47
  "react-i18next": "^14.0.0"
48
48
  },
@@ -52,7 +52,7 @@
52
52
  "peerDependencies": {
53
53
  "@types/react": "^19.0.0",
54
54
  "@gorhom/bottom-sheet": "^5.0.0",
55
- "@ledgerhq/lumen-design-core": "0.1.18",
55
+ "@ledgerhq/lumen-design-core": "0.1.19",
56
56
  "react": "^19.0.0",
57
57
  "react-native": "~0.81.6",
58
58
  "react-native-reanimated": "^4.1.0",
@@ -201,6 +201,20 @@ export const WithoutThousandsSeparator: Story = {
201
201
  },
202
202
  };
203
203
 
204
+ export const DecimalSeparatorComma: Story = {
205
+ render: (args) => <AmountInputStory {...args} />,
206
+ args: {
207
+ value: '1234.5',
208
+ currencyText: '€',
209
+ currencyPosition: 'right',
210
+ allowDecimals: true,
211
+ thousandsSeparator: true,
212
+ decimalSeparator: ',',
213
+ isInvalid: false,
214
+ editable: true,
215
+ },
216
+ };
217
+
204
218
  export const ErrorState: Story = {
205
219
  render: (args) => <AmountInputStory {...args} />,
206
220
  args: {
@@ -42,6 +42,7 @@ export const AmountInput = ({
42
42
  maxDecimalLength = 9,
43
43
  allowDecimals = true,
44
44
  thousandsSeparator = true,
45
+ decimalSeparator = '.',
45
46
  value,
46
47
  onChangeText,
47
48
  isInvalid = false,
@@ -64,6 +65,7 @@ export const AmountInput = ({
64
65
  thousandsSeparator,
65
66
  maxIntegerLength,
66
67
  maxDecimalLength,
68
+ decimalSeparator,
67
69
  },
68
70
  });
69
71
 
@@ -69,6 +69,14 @@ export type AmountInputProps = Omit<
69
69
  * @default true
70
70
  */
71
71
  thousandsSeparator?: boolean;
72
+ /**
73
+ * Character used to display the decimal separator (e.g. `1 234,5` vs `1 234.5`).
74
+ * Typing always accepts both `,` and `.` regardless of this value, so it stays
75
+ * compatible with any locale keyboard. The value returned by `onChangeText`
76
+ * uses this separator.
77
+ * @default '.'
78
+ */
79
+ decimalSeparator?: '.' | ',';
72
80
  /**
73
81
  * Mark input as invalid (e.g. for error display)
74
82
  * @default false
@@ -7,6 +7,7 @@ const defaultFormatOptions = {
7
7
  thousandsSeparator: true,
8
8
  maxIntegerLength: 9,
9
9
  maxDecimalLength: 9,
10
+ decimalSeparator: '.' as const,
10
11
  };
11
12
 
12
13
  describe('useAmountInputFormatting', () => {
@@ -59,4 +60,23 @@ describe('useAmountInputFormatting', () => {
59
60
 
60
61
  expect(onChangeText).toHaveBeenCalledWith('1 000');
61
62
  });
63
+
64
+ it('displays and emits the configured decimal separator', () => {
65
+ const onChangeText = jest.fn();
66
+ const { result } = renderHook(() =>
67
+ useAmountInputFormatting({
68
+ value: '1234.5',
69
+ onChangeText,
70
+ formatOptions: { ...defaultFormatOptions, decimalSeparator: ',' },
71
+ }),
72
+ );
73
+
74
+ expect(result.current.formattedValue).toBe('1 234,5');
75
+
76
+ act(() => {
77
+ result.current.handleChangeText('12,5');
78
+ });
79
+
80
+ expect(onChangeText).toHaveBeenCalledWith('12,5');
81
+ });
62
82
  });
@@ -6,6 +6,7 @@ type FormatOptions = {
6
6
  thousandsSeparator: boolean;
7
7
  maxIntegerLength: number;
8
8
  maxDecimalLength: number;
9
+ decimalSeparator: '.' | ',';
9
10
  };
10
11
 
11
12
  type UseAmountInputFormattingArgs = {
@@ -32,6 +33,7 @@ export const useAmountInputFormatting = ({
32
33
  formatOptions.thousandsSeparator,
33
34
  formatOptions.maxIntegerLength,
34
35
  formatOptions.maxDecimalLength,
36
+ formatOptions.decimalSeparator,
35
37
  ],
36
38
  );
37
39