@ledgerhq/react-ui 0.15.4-nightly.1 → 0.16.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TabSelector_stories_exports = {};
30
+ __export(TabSelector_stories_exports, {
31
+ Default: () => Default,
32
+ default: () => TabSelector_stories_default
33
+ });
34
+ module.exports = __toCommonJS(TabSelector_stories_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_index = __toESM(require("./index"));
37
+ var TabSelector_stories_default = {
38
+ title: "Form/SelectionControls/TabSelector",
39
+ component: import_index.default
40
+ };
41
+ const Template = () => {
42
+ const [currentOption, setCurrentOption] = (0, import_react.useState)("mobile");
43
+ return /* @__PURE__ */ import_react.default.createElement(
44
+ import_index.default,
45
+ {
46
+ options: ["mobile", "desktop"],
47
+ selectedOption: currentOption,
48
+ handleSelectOption: setCurrentOption,
49
+ labels: {
50
+ ["mobile"]: "Mobile",
51
+ ["desktop"]: "Desktop"
52
+ }
53
+ }
54
+ );
55
+ };
56
+ const Default = Template.bind({});
57
+ //# sourceMappingURL=TabSelector.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/form/TabSelector/TabSelector.stories.tsx"],
4
+ "sourcesContent": ["import React, { useState } from \"react\";\n\nimport TabSelector from \"./index\";\n\nexport default {\n title: \"Form/SelectionControls/TabSelector\",\n component: TabSelector,\n};\n\nconst Template = () => {\n const [currentOption, setCurrentOption] = useState(\"mobile\");\n return (\n <TabSelector\n options={[\"mobile\", \"desktop\"]}\n selectedOption={currentOption}\n handleSelectOption={setCurrentOption}\n labels={{\n [\"mobile\"]: \"Mobile\",\n [\"desktop\"]: \"Desktop\",\n }}\n />\n );\n};\n\nexport const Default = Template.bind({});\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAgC;AAEhC,mBAAwB;AAExB,IAAO,8BAAQ;AAAA,EACb,OAAO;AAAA,EACP,WAAW,aAAAA;AACb;AAEA,MAAM,WAAW,MAAM;AACrB,QAAM,CAAC,eAAe,gBAAgB,QAAI,uBAAS,QAAQ;AAC3D,SACE,6BAAAC,QAAA;AAAA,IAAC,aAAAD;AAAA,IAAA;AAAA,MACC,SAAS,CAAC,UAAU,SAAS;AAAA,MAC7B,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,QAAQ;AAAA,QACN,CAAC,QAAQ,GAAG;AAAA,QACZ,CAAC,SAAS,GAAG;AAAA,MACf;AAAA;AAAA,EACF;AAEJ;AAEO,MAAM,UAAU,SAAS,KAAK,CAAC,CAAC;",
6
+ "names": ["TabSelector", "React"]
7
+ }
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TabSelector_exports = {};
30
+ __export(TabSelector_exports, {
31
+ default: () => TabSelector
32
+ });
33
+ module.exports = __toCommonJS(TabSelector_exports);
34
+ var import_react = __toESM(require("react"));
35
+ var import_styled_components = __toESM(require("styled-components"));
36
+ var import_Flex = __toESM(require("../../layout/Flex"));
37
+ var import_Text = __toESM(require("../../asorted/Text"));
38
+ var import_framer_motion = require("framer-motion");
39
+ const StyledButton = (0, import_styled_components.default)(import_Flex.default)`
40
+ cursor: pointer;
41
+ justify-content: center;
42
+ align-items: center;
43
+ `;
44
+ const StyledFlex = (0, import_styled_components.default)(import_Flex.default)`
45
+ height: 100%;
46
+ justify-content: center;
47
+ align-items: center;
48
+ `;
49
+ const StyledText = (0, import_styled_components.default)(import_Text.default)`
50
+ line-height: 14.52px;
51
+ overflow: visible;
52
+ text-align: center;
53
+ font-size: 12px;
54
+ color: ${(p) => p.isSelected ? p.theme.colors.constant.black : p.theme.colors.opacityDefault.c50};
55
+ z-index: 10;
56
+ `;
57
+ const OptionButton = ({
58
+ option,
59
+ selectedOption,
60
+ handleSelectOption,
61
+ label,
62
+ width
63
+ }) => {
64
+ const isSelected = selectedOption === option;
65
+ return /* @__PURE__ */ import_react.default.createElement(StyledButton, { width, onClick: () => handleSelectOption(option) }, /* @__PURE__ */ import_react.default.createElement(StyledFlex, { isSelected }, /* @__PURE__ */ import_react.default.createElement(StyledText, { fontWeight: "semiBold", isSelected }, label)));
66
+ };
67
+ function TabSelector({
68
+ options,
69
+ selectedOption,
70
+ handleSelectOption,
71
+ labels
72
+ }) {
73
+ const { colors } = (0, import_styled_components.useTheme)();
74
+ const longuestLabel = labels[options[0]].length > labels[options[1]].length ? options[0] : options[1];
75
+ const widthFactor = 8;
76
+ const margin = 20;
77
+ const width = labels[longuestLabel].length * widthFactor + margin;
78
+ const semiWidth = width / 2;
79
+ const controls = (0, import_framer_motion.useAnimation)();
80
+ (0, import_react.useEffect)(() => {
81
+ controls.start({
82
+ x: selectedOption === options[0] ? -semiWidth : semiWidth,
83
+ transition: { type: "spring", damping: 30, stiffness: 130 }
84
+ });
85
+ }, [selectedOption, controls, options, semiWidth]);
86
+ return /* @__PURE__ */ import_react.default.createElement(
87
+ import_Flex.default,
88
+ {
89
+ flexDirection: "row",
90
+ justifyContent: "center",
91
+ alignItems: "center",
92
+ width: width * 2 + 4,
93
+ height: "35px",
94
+ borderRadius: "40px",
95
+ bg: colors.opacityDefault.c05,
96
+ position: "relative"
97
+ },
98
+ /* @__PURE__ */ import_react.default.createElement(
99
+ import_framer_motion.motion.div,
100
+ {
101
+ style: {
102
+ position: "absolute",
103
+ width,
104
+ height: "90%",
105
+ backgroundColor: colors.primary.c80,
106
+ borderRadius: 40
107
+ },
108
+ animate: controls
109
+ }
110
+ ),
111
+ options.map((option) => /* @__PURE__ */ import_react.default.createElement(
112
+ OptionButton,
113
+ {
114
+ width,
115
+ key: option,
116
+ option,
117
+ selectedOption,
118
+ handleSelectOption,
119
+ label: labels[option]
120
+ }
121
+ ))
122
+ );
123
+ }
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/form/TabSelector/index.tsx"],
4
+ "sourcesContent": ["import React, { useEffect } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport Flex from \"../../layout/Flex\";\nimport Text from \"../../asorted/Text\";\nimport { motion, useAnimation } from \"framer-motion\";\n\nconst StyledButton = styled(Flex)`\n cursor: pointer;\n justify-content: center;\n align-items: center;\n`;\nconst StyledFlex = styled(Flex)<{ isSelected: boolean }>`\n height: 100%;\n justify-content: center;\n align-items: center;\n`;\n\nconst StyledText = styled(Text)<{ isSelected: boolean }>`\n line-height: 14.52px;\n overflow: visible;\n text-align: center;\n font-size: 12px;\n color: ${p => (p.isSelected ? p.theme.colors.constant.black : p.theme.colors.opacityDefault.c50)};\n z-index: 10;\n`;\n\ninterface OptionButtonProps<T> {\n option: T;\n selectedOption: T;\n handleSelectOption: (option: T) => void;\n label: string;\n width: number;\n}\n\nconst OptionButton = <T,>({\n option,\n selectedOption,\n handleSelectOption,\n label,\n width,\n}: OptionButtonProps<T>) => {\n const isSelected = selectedOption === option;\n\n return (\n <StyledButton width={width} onClick={() => handleSelectOption(option)}>\n <StyledFlex isSelected={isSelected}>\n <StyledText fontWeight=\"semiBold\" isSelected={isSelected}>\n {label}\n </StyledText>\n </StyledFlex>\n </StyledButton>\n );\n};\n\nexport interface TabSelectorProps<T extends string | number> {\n options: T[];\n selectedOption: T;\n handleSelectOption: (option: T) => void;\n labels: { [key in T]: string };\n}\n\nexport default function TabSelector<T extends string | number>({\n options,\n selectedOption,\n handleSelectOption,\n labels,\n}: TabSelectorProps<T>): JSX.Element {\n const { colors } = useTheme();\n\n const longuestLabel =\n labels[options[0]].length > labels[options[1]].length ? options[0] : options[1];\n\n const widthFactor = 8;\n const margin = 20;\n const width = labels[longuestLabel].length * widthFactor + margin;\n const semiWidth = width / 2;\n const controls = useAnimation();\n\n useEffect(() => {\n controls.start({\n x: selectedOption === options[0] ? -semiWidth : semiWidth,\n transition: { type: \"spring\", damping: 30, stiffness: 130 },\n });\n }, [selectedOption, controls, options, semiWidth]);\n\n return (\n <Flex\n flexDirection={\"row\"}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n width={width * 2 + 4}\n height={\"35px\"}\n borderRadius={\"40px\"}\n bg={colors.opacityDefault.c05}\n position={\"relative\"}\n >\n <motion.div\n style={{\n position: \"absolute\",\n width: width,\n height: \"90%\",\n backgroundColor: colors.primary.c80,\n borderRadius: 40,\n }}\n animate={controls}\n />\n {options.map(option => (\n <OptionButton\n width={width}\n key={option}\n option={option}\n selectedOption={selectedOption}\n handleSelectOption={handleSelectOption}\n label={labels[option]}\n />\n ))}\n </Flex>\n );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiC;AACjC,+BAAiC;AACjC,kBAAiB;AACjB,kBAAiB;AACjB,2BAAqC;AAErC,MAAM,mBAAe,yBAAAA,SAAO,YAAAC,OAAI;AAAA;AAAA;AAAA;AAAA;AAKhC,MAAM,iBAAa,yBAAAD,SAAO,YAAAC,OAAI;AAAA;AAAA;AAAA;AAAA;AAM9B,MAAM,iBAAa,yBAAAD,SAAO,YAAAE,OAAI;AAAA;AAAA;AAAA;AAAA;AAAA,WAKnB,OAAM,EAAE,aAAa,EAAE,MAAM,OAAO,SAAS,QAAQ,EAAE,MAAM,OAAO,eAAe,GAAI;AAAA;AAAA;AAYlG,MAAM,eAAe,CAAK;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,QAAM,aAAa,mBAAmB;AAEtC,SACE,6BAAAC,QAAA,cAAC,gBAAa,OAAc,SAAS,MAAM,mBAAmB,MAAM,KAClE,6BAAAA,QAAA,cAAC,cAAW,cACV,6BAAAA,QAAA,cAAC,cAAW,YAAW,YAAW,cAC/B,KACH,CACF,CACF;AAEJ;AASe,SAAR,YAAwD;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqC;AACnC,QAAM,EAAE,OAAO,QAAI,mCAAS;AAE5B,QAAM,gBACJ,OAAO,QAAQ,CAAC,CAAC,EAAE,SAAS,OAAO,QAAQ,CAAC,CAAC,EAAE,SAAS,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAEhF,QAAM,cAAc;AACpB,QAAM,SAAS;AACf,QAAM,QAAQ,OAAO,aAAa,EAAE,SAAS,cAAc;AAC3D,QAAM,YAAY,QAAQ;AAC1B,QAAM,eAAW,mCAAa;AAE9B,8BAAU,MAAM;AACd,aAAS,MAAM;AAAA,MACb,GAAG,mBAAmB,QAAQ,CAAC,IAAI,CAAC,YAAY;AAAA,MAChD,YAAY,EAAE,MAAM,UAAU,SAAS,IAAI,WAAW,IAAI;AAAA,IAC5D,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,UAAU,SAAS,SAAS,CAAC;AAEjD,SACE,6BAAAA,QAAA;AAAA,IAAC,YAAAF;AAAA,IAAA;AAAA,MACC,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,OAAO,QAAQ,IAAI;AAAA,MACnB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,IAAI,OAAO,eAAe;AAAA,MAC1B,UAAU;AAAA;AAAA,IAEV,6BAAAE,QAAA;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,UACR,iBAAiB,OAAO,QAAQ;AAAA,UAChC,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA;AAAA,IACX;AAAA,IACC,QAAQ,IAAI,YACX,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,OAAO,MAAM;AAAA;AAAA,IACtB,CACD;AAAA,EACH;AAEJ;",
6
+ "names": ["styled", "Flex", "Text", "React"]
7
+ }
@@ -40,7 +40,8 @@ __export(form_exports, {
40
40
  SearchInput: () => import_SearchInput.default,
41
41
  SelectInput: () => import_SelectInput.default,
42
42
  SplitInput: () => import_SplitInput.default,
43
- Switch: () => import_Switch.default
43
+ Switch: () => import_Switch.default,
44
+ TabSelector: () => import_TabSelector.default
44
45
  });
45
46
  module.exports = __toCommonJS(form_exports);
46
47
  var import_BaseInput = __toESM(require("./BaseInput"));
@@ -56,4 +57,5 @@ var import_SearchInput = __toESM(require("./SearchInput"));
56
57
  var import_SelectInput = __toESM(require("./SelectInput"));
57
58
  var import_SplitInput = __toESM(require("./SplitInput"));
58
59
  var import_Switch = __toESM(require("./Switch"));
60
+ var import_TabSelector = __toESM(require("./TabSelector"));
59
61
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/form/index.ts"],
4
- "sourcesContent": ["export { default as Input } from \"./BaseInput\";\nexport { default as Checkbox } from \"./Checkbox\";\nexport { default as Dropdown } from \"./Dropdown\";\nexport { default as DropdownGeneric } from \"./DropdownGeneric\";\nexport { default as LegendInput } from \"./LegendInput\";\nexport { default as NumberInput } from \"./NumberInput\";\nexport { default as QrCodeInput } from \"./QrCodeInput\";\nexport { default as QuantityInput } from \"./QuantityInput\";\nexport { default as Radio } from \"./Radio\";\nexport { default as SearchInput } from \"./SearchInput\";\nexport { default as SelectInput } from \"./SelectInput\";\nexport { default as SplitInput } from \"./SplitInput\";\nexport { default as Switch } from \"./Switch\";\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiC;AACjC,sBAAoC;AACpC,sBAAoC;AACpC,6BAA2C;AAC3C,yBAAuC;AACvC,yBAAuC;AACvC,yBAAuC;AACvC,2BAAyC;AACzC,mBAAiC;AACjC,yBAAuC;AACvC,yBAAuC;AACvC,wBAAsC;AACtC,oBAAkC;",
4
+ "sourcesContent": ["export { default as Input } from \"./BaseInput\";\nexport { default as Checkbox } from \"./Checkbox\";\nexport { default as Dropdown } from \"./Dropdown\";\nexport { default as DropdownGeneric } from \"./DropdownGeneric\";\nexport { default as LegendInput } from \"./LegendInput\";\nexport { default as NumberInput } from \"./NumberInput\";\nexport { default as QrCodeInput } from \"./QrCodeInput\";\nexport { default as QuantityInput } from \"./QuantityInput\";\nexport { default as Radio } from \"./Radio\";\nexport { default as SearchInput } from \"./SearchInput\";\nexport { default as SelectInput } from \"./SelectInput\";\nexport { default as SplitInput } from \"./SplitInput\";\nexport { default as Switch } from \"./Switch\";\nexport { default as TabSelector } from \"./TabSelector\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiC;AACjC,sBAAoC;AACpC,sBAAoC;AACpC,6BAA2C;AAC3C,yBAAuC;AACvC,yBAAuC;AACvC,yBAAuC;AACvC,2BAAyC;AACzC,mBAAiC;AACjC,yBAAuC;AACvC,yBAAuC;AACvC,wBAAsC;AACtC,oBAAkC;AAClC,yBAAuC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export interface TabSelectorProps<T extends string | number> {
3
+ options: T[];
4
+ selectedOption: T;
5
+ handleSelectOption: (option: T) => void;
6
+ labels: {
7
+ [key in T]: string;
8
+ };
9
+ }
10
+ export default function TabSelector<T extends string | number>({ options, selectedOption, handleSelectOption, labels, }: TabSelectorProps<T>): JSX.Element;
@@ -0,0 +1,54 @@
1
+ import React, { useEffect } from "react";
2
+ import styled, { useTheme } from "styled-components";
3
+ import Flex from "../../layout/Flex";
4
+ import Text from "../../asorted/Text";
5
+ import { motion, useAnimation } from "framer-motion";
6
+ const StyledButton = styled(Flex) `
7
+ cursor: pointer;
8
+ justify-content: center;
9
+ align-items: center;
10
+ `;
11
+ const StyledFlex = styled(Flex) `
12
+ height: 100%;
13
+ justify-content: center;
14
+ align-items: center;
15
+ `;
16
+ const StyledText = styled(Text) `
17
+ line-height: 14.52px;
18
+ overflow: visible;
19
+ text-align: center;
20
+ font-size: 12px;
21
+ color: ${p => (p.isSelected ? p.theme.colors.constant.black : p.theme.colors.opacityDefault.c50)};
22
+ z-index: 10;
23
+ `;
24
+ const OptionButton = ({ option, selectedOption, handleSelectOption, label, width, }) => {
25
+ const isSelected = selectedOption === option;
26
+ return (React.createElement(StyledButton, { width: width, onClick: () => handleSelectOption(option) },
27
+ React.createElement(StyledFlex, { isSelected: isSelected },
28
+ React.createElement(StyledText, { fontWeight: "semiBold", isSelected: isSelected }, label))));
29
+ };
30
+ export default function TabSelector({ options, selectedOption, handleSelectOption, labels, }) {
31
+ const { colors } = useTheme();
32
+ const longuestLabel = labels[options[0]].length > labels[options[1]].length ? options[0] : options[1];
33
+ const widthFactor = 8;
34
+ const margin = 20;
35
+ const width = labels[longuestLabel].length * widthFactor + margin;
36
+ const semiWidth = width / 2;
37
+ const controls = useAnimation();
38
+ useEffect(() => {
39
+ controls.start({
40
+ x: selectedOption === options[0] ? -semiWidth : semiWidth,
41
+ transition: { type: "spring", damping: 30, stiffness: 130 },
42
+ });
43
+ }, [selectedOption, controls, options, semiWidth]);
44
+ return (React.createElement(Flex, { flexDirection: "row", justifyContent: "center", alignItems: "center", width: width * 2 + 4, height: "35px", borderRadius: "40px", bg: colors.opacityDefault.c05, position: "relative" },
45
+ React.createElement(motion.div, { style: {
46
+ position: "absolute",
47
+ width: width,
48
+ height: "90%",
49
+ backgroundColor: colors.primary.c80,
50
+ borderRadius: 40,
51
+ }, animate: controls }),
52
+ options.map(option => (React.createElement(OptionButton, { width: width, key: option, option: option, selectedOption: selectedOption, handleSelectOption: handleSelectOption, label: labels[option] })))));
53
+ }
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/form/TabSelector/index.tsx"],"names":[],"mappings":"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"}
@@ -11,3 +11,4 @@ export { default as SearchInput } from "./SearchInput";
11
11
  export { default as SelectInput } from "./SelectInput";
12
12
  export { default as SplitInput } from "./SplitInput";
13
13
  export { default as Switch } from "./Switch";
14
+ export { default as TabSelector } from "./TabSelector";
@@ -11,4 +11,5 @@ export { default as SearchInput } from "./SearchInput";
11
11
  export { default as SelectInput } from "./SelectInput";
12
12
  export { default as SplitInput } from "./SplitInput";
13
13
  export { default as Switch } from "./Switch";
14
+ export { default as TabSelector } from "./TabSelector";
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/react-ui",
3
- "version": "0.15.4-nightly.1",
3
+ "version": "0.16.0-next.0",
4
4
  "description": "Ledger Live - Desktop UI",
5
5
  "author": "Ledger Live Team <team-live@ledger.fr>",
6
6
  "repository": {
@@ -60,14 +60,15 @@
60
60
  "@tippyjs/react": "^4.2.6",
61
61
  "color": "^4.0.0",
62
62
  "embla-carousel-react": "8.0.0-rc17",
63
+ "framer-motion": "^11.3.28",
63
64
  "react-is": "^17.0.2",
64
65
  "react-select": "^5.2.1",
65
66
  "react-spring": "8.0.27",
66
67
  "react-transition-group": "^4.4.2",
67
68
  "react-window": "^1.8.6",
68
69
  "styled-system": "^5.1.5",
69
- "@ledgerhq/crypto-icons-ui": "^1.4.0-nightly.1",
70
- "@ledgerhq/icons-ui": "^0.7.1",
70
+ "@ledgerhq/crypto-icons-ui": "^1.4.1-next.0",
71
+ "@ledgerhq/icons-ui": "^0.7.3-next.0",
71
72
  "@ledgerhq/ui-shared": "^0.2.1"
72
73
  },
73
74
  "peerDependencies": {
@@ -83,10 +84,10 @@
83
84
  "@storybook/addon-actions": "^7.5.3",
84
85
  "@storybook/addon-essentials": "^7.5.3",
85
86
  "@storybook/addon-links": "^7.5.3",
86
- "@storybook/react": "^7.5.3",
87
- "@storybook/react-webpack5": "^7.5.3",
88
87
  "@storybook/blocks": "^7.5.3",
89
88
  "@storybook/manager-api": "7.5.3",
89
+ "@storybook/react": "^7.5.3",
90
+ "@storybook/react-webpack5": "^7.5.3",
90
91
  "@svgr/core": "^5.5.0",
91
92
  "@svgr/plugin-svgo": "*",
92
93
  "@types/color": "^3.0.2",