@ledgerhq/react-ui 0.3.1 → 0.7.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.
Files changed (133) hide show
  1. package/README.md +4 -4
  2. package/assets/logos/LedgerLiveAltRegular.d.ts +0 -1
  3. package/assets/logos/LedgerLiveRegular.d.ts +0 -1
  4. package/components/Chart/index.d.ts +0 -1
  5. package/components/Chart/index.js +1 -1
  6. package/components/Table/Columns.d.ts +60 -11
  7. package/components/Table/Columns.js +8 -18
  8. package/components/Table/index.d.ts +44 -12
  9. package/components/Table/index.js +36 -16
  10. package/components/Table/stories.helper.js +19 -18
  11. package/components/Tag/index.js +7 -7
  12. package/components/animations/GlitchText/index.d.ts +0 -1
  13. package/components/asorted/Divider/index.d.ts +0 -1
  14. package/components/asorted/Divider/index.js +2 -2
  15. package/components/asorted/Icon/BoxedIcon.d.ts +48 -0
  16. package/components/asorted/Icon/BoxedIcon.js +62 -0
  17. package/components/asorted/Icon/Icon.d.ts +0 -1
  18. package/components/asorted/Icon/index.d.ts +2 -0
  19. package/components/asorted/Icon/index.js +2 -0
  20. package/components/asorted/Text/index.d.ts +2 -0
  21. package/components/asorted/Text/index.js +2 -1
  22. package/components/asorted/index.d.ts +1 -1
  23. package/components/asorted/index.js +1 -1
  24. package/components/cards/Carousel/Slide.js +3 -3
  25. package/components/cards/Carousel/index.js +7 -7
  26. package/components/cta/Button/index.d.ts +12 -10
  27. package/components/cta/Button/index.js +52 -46
  28. package/components/cta/Link/index.d.ts +53 -4
  29. package/components/cta/Link/index.js +15 -11
  30. package/components/cta/Toggle/index.d.ts +0 -1
  31. package/components/form/BaseInput/index.d.ts +8 -14
  32. package/components/form/BaseInput/index.js +13 -13
  33. package/components/form/Checkbox/Checkbox.js +7 -7
  34. package/components/form/Dropdown/index.d.ts +3 -3
  35. package/components/form/Dropdown/index.js +4 -3
  36. package/components/form/LegendInput/index.d.ts +26 -2
  37. package/components/form/LegendInput/index.js +5 -4
  38. package/components/form/NumberInput/index.d.ts +25 -3
  39. package/components/form/NumberInput/index.js +7 -6
  40. package/components/form/QrCodeInput/index.d.ts +25 -3
  41. package/components/form/QrCodeInput/index.js +7 -6
  42. package/components/form/QuantityInput/index.d.ts +26 -4
  43. package/components/form/QuantityInput/index.js +9 -8
  44. package/components/form/Radio/RadioElement.d.ts +3 -2
  45. package/components/form/Radio/RadioElement.js +84 -15
  46. package/components/form/Radio/RadioListElement.js +7 -8
  47. package/components/form/Radio/index.d.ts +1 -1
  48. package/components/form/SearchInput/index.d.ts +24 -2
  49. package/components/form/SearchInput/index.js +4 -3
  50. package/components/form/SelectInput/Control.d.ts +4 -10
  51. package/components/form/SelectInput/Control.js +5 -8
  52. package/components/form/SelectInput/DropdownIndicator.d.ts +3 -10
  53. package/components/form/SelectInput/DropdownIndicator.js +1 -1
  54. package/components/form/SelectInput/IndicatorsContainer.d.ts +2 -6
  55. package/components/form/SelectInput/IndicatorsContainer.js +1 -1
  56. package/components/form/SelectInput/MenuList.d.ts +3 -10
  57. package/components/form/SelectInput/MenuList.js +1 -1
  58. package/components/form/SelectInput/Option.d.ts +6 -18
  59. package/components/form/SelectInput/Option.js +11 -11
  60. package/components/form/SelectInput/ValueContainer.d.ts +5 -14
  61. package/components/form/SelectInput/ValueContainer.js +2 -2
  62. package/components/form/SelectInput/VirtualMenuList.d.ts +2 -5
  63. package/components/form/SelectInput/VirtualMenuList.js +2 -1
  64. package/components/form/SelectInput/index.d.ts +7 -15
  65. package/components/form/SelectInput/index.js +14 -6
  66. package/components/form/SplitInput/index.js +5 -5
  67. package/components/form/Switch/Switch.js +8 -8
  68. package/components/helpers.d.ts +2 -2
  69. package/components/layout/Box/index.d.ts +1 -4
  70. package/components/layout/Drawer/index.d.ts +11 -3
  71. package/components/layout/Drawer/index.js +52 -27
  72. package/components/layout/Flex/index.d.ts +2 -5
  73. package/components/layout/Popin/index.d.ts +6 -11
  74. package/components/layout/Popin/index.js +14 -9
  75. package/components/layout/Side/index.d.ts +0 -1
  76. package/components/loaders/InfiniteLoader/index.d.ts +8 -7
  77. package/components/loaders/InfiniteLoader/index.js +35 -9
  78. package/components/loaders/ProgressLoader/index.d.ts +22 -2
  79. package/components/loaders/ProgressLoader/index.js +10 -12
  80. package/components/message/Alert/index.d.ts +31 -3
  81. package/components/message/Alert/index.js +30 -23
  82. package/components/message/Log/index.js +1 -1
  83. package/components/message/Notification/Badge.js +2 -2
  84. package/components/message/Notification/index.js +4 -6
  85. package/components/message/StatusNotification/index.d.ts +11 -0
  86. package/components/message/StatusNotification/index.js +33 -0
  87. package/components/message/Tip/index.d.ts +0 -1
  88. package/components/message/Tip/index.js +7 -7
  89. package/components/message/Tooltip/index.d.ts +0 -1
  90. package/components/message/Tooltip/index.js +1 -1
  91. package/components/message/Tooltip/styles.js +3 -3
  92. package/components/message/index.d.ts +2 -0
  93. package/components/message/index.js +2 -0
  94. package/components/navigation/Aside/index.d.ts +2 -5
  95. package/components/navigation/Breadcrumb/index.js +6 -6
  96. package/components/navigation/FlowStepper/index.d.ts +76 -0
  97. package/components/navigation/FlowStepper/index.js +35 -0
  98. package/components/navigation/index.d.ts +1 -0
  99. package/components/navigation/index.js +1 -0
  100. package/components/navigation/progress/ProgressBar/Onboarding.d.ts +0 -1
  101. package/components/navigation/progress/ProgressBar/Onboarding.js +6 -6
  102. package/components/navigation/progress/Stepper/index.d.ts +25 -9
  103. package/components/navigation/progress/Stepper/index.js +46 -27
  104. package/components/navigation/sideBar/Item/Item.d.ts +0 -1
  105. package/components/navigation/sideBar/Item/Item.js +10 -10
  106. package/components/navigation/sideBar/Logo/Logo.d.ts +0 -1
  107. package/components/navigation/sideBar/SideBar/SideBar.d.ts +0 -1
  108. package/components/navigation/sideBar/SideBar/SideBar.js +12 -10
  109. package/components/navigation/sideBar/Toggle/Toggle.d.ts +0 -1
  110. package/components/navigation/sideBar/Toggle/Toggle.js +2 -2
  111. package/components/styled.d.ts +8 -5
  112. package/components/styled.js +2 -2
  113. package/components/tabs/Bar/index.js +3 -3
  114. package/components/tabs/Chip/index.d.ts +13 -0
  115. package/components/tabs/Chip/index.js +21 -0
  116. package/components/tabs/Pill/index.js +6 -6
  117. package/components/tabs/Tabs/index.js +7 -7
  118. package/components/tabs/index.d.ts +1 -0
  119. package/components/tabs/index.js +1 -0
  120. package/index.d.ts +1 -1
  121. package/index.js +1 -1
  122. package/package.json +5 -6
  123. package/styles/InvertTheme.js +1 -1
  124. package/styles/StyleProvider.js +1 -1
  125. package/styles/global.js +15 -36
  126. package/styles/index.d.ts +1 -1
  127. package/styles/index.js +1 -1
  128. package/styles/theme.d.ts +5 -2
  129. package/styles/theme.js +13 -15
  130. package/components/loaders/InfiniteLoader/image.d.ts +0 -2
  131. package/components/loaders/InfiniteLoader/image.js +0 -1
  132. package/styles/reset.d.ts +0 -2
  133. package/styles/reset.js +0 -62
@@ -18,30 +18,30 @@ import { rgba } from "../../../styles/helpers";
18
18
  export const InputContainer = styled.div `
19
19
  display: flex;
20
20
  height: 48px;
21
- border: ${(p) => `1px solid ${p.theme.colors.palette.neutral.c40}`};
21
+ border: ${(p) => `1px solid ${p.theme.colors.neutral.c40}`};
22
22
  border-radius: 24px;
23
23
  transition: all 0.2s ease;
24
- color: ${(p) => p.theme.colors.palette.neutral.c100};
24
+ color: ${(p) => p.theme.colors.neutral.c100};
25
25
 
26
26
  ${(p) => p.focus &&
27
27
  !p.error &&
28
28
  !p.warning &&
29
29
  css `
30
- border: 1px solid ${p.theme.colors.palette.primary.c80};
31
- box-shadow: 0 0 0 4px ${rgba(p.theme.colors.palette.primary.c60, 0.48)};
30
+ border: 1px solid ${p.theme.colors.primary.c80};
31
+ box-shadow: 0 0 0 4px ${rgba(p.theme.colors.primary.c60, 0.4)};
32
32
  `};
33
33
 
34
34
  ${(p) => p.error &&
35
35
  !p.disabled &&
36
36
  css `
37
- border: 1px solid ${p.theme.colors.palette.error.c100};
37
+ border: 1px solid ${p.theme.colors.error.c100};
38
38
  `};
39
39
 
40
40
  ${(p) => !p.error &&
41
41
  p.warning &&
42
42
  !p.disabled &&
43
43
  css `
44
- border: 1px solid ${p.theme.colors.palette.warning.c80};
44
+ border: 1px solid ${p.theme.colors.warning.c80};
45
45
  `};
46
46
 
47
47
  ${(p) => !p.error &&
@@ -49,14 +49,14 @@ export const InputContainer = styled.div `
49
49
  !p.disabled &&
50
50
  css `
51
51
  &:hover {
52
- border: ${!p.disabled && `1px solid ${p.theme.colors.palette.primary.c80}`};
52
+ border: ${!p.disabled && `1px solid ${p.theme.colors.primary.c80}`};
53
53
  }
54
54
  `};
55
55
 
56
56
  ${(p) => p.disabled &&
57
57
  css `
58
- color: ${p.theme.colors.palette.neutral.c60};
59
- background: ${(p) => p.theme.colors.palette.neutral.c20};
58
+ color: ${p.theme.colors.neutral.c60};
59
+ background: ${(p) => p.theme.colors.neutral.c20};
60
60
  `};
61
61
  `;
62
62
  export const BaseInput = styled.input.attrs({
@@ -66,7 +66,7 @@ export const BaseInput = styled.input.attrs({
66
66
  height: 100%;
67
67
  width: 100%;
68
68
  border: 0;
69
- caret-color: ${(p) => p.error ? p.theme.colors.palette.error.c100 : p.theme.colors.palette.primary.c80};
69
+ caret-color: ${(p) => (p.error ? p.theme.colors.error.c100 : p.theme.colors.primary.c80)};
70
70
  background: none;
71
71
  outline: none;
72
72
  cursor: ${(p) => (p.disabled ? "not-allowed" : "text")};
@@ -76,7 +76,7 @@ export const BaseInput = styled.input.attrs({
76
76
  padding-left: 20px;
77
77
  padding-right: 20px;
78
78
  &::placeholder {
79
- color: ${(p) => p.disabled ? p.theme.colors.palette.neutral.c50 : p.theme.colors.palette.neutral.c70};
79
+ color: ${(p) => (p.disabled ? p.theme.colors.neutral.c50 : p.theme.colors.neutral.c70)};
80
80
  }
81
81
 
82
82
  /* Hide type=number arrow for Chrome, Safari, Edge, Opera */
@@ -94,11 +94,11 @@ export const BaseInput = styled.input.attrs({
94
94
  ${typography}
95
95
  `;
96
96
  export const InputErrorContainer = styled(Text) `
97
- color: ${(p) => p.theme.colors.palette.error.c100};
97
+ color: ${(p) => p.theme.colors.error.c100};
98
98
  margin-left: 12px;
99
99
  `;
100
100
  export const InputWarningContainer = styled(Text) `
101
- color: ${(p) => p.theme.colors.palette.warning.c80};
101
+ color: ${(p) => p.theme.colors.warning.c80};
102
102
  margin-left: 12px;
103
103
  `;
104
104
  export const InputRenderLeftContainer = styled(FlexBox).attrs(() => ({
@@ -17,7 +17,7 @@ const Input = styled.input `
17
17
  width: ${(p) => p.theme.space[7]}px;
18
18
  height: ${(p) => p.theme.space[7]}px;
19
19
  appearance: none;
20
- border: 1px solid ${(props) => props.theme.colors.palette.neutral.c90};
20
+ border: 1px solid ${(props) => props.theme.colors.neutral.c90};
21
21
  box-shadow: none;
22
22
 
23
23
  &:checked {
@@ -42,7 +42,7 @@ const Input = styled.input `
42
42
  }
43
43
  `;
44
44
  const Label = styled(Text).attrs({ type: "body", fontWeight: "500" }) `
45
- color: ${(props) => props.theme.colors.palette.neutral.c80};
45
+ color: ${(props) => props.theme.colors.neutral.c80};
46
46
 
47
47
  /* Version when the input is checked */
48
48
  ${Input}:checked + & {
@@ -55,7 +55,7 @@ const Label = styled(Text).attrs({ type: "body", fontWeight: "500" }) `
55
55
  `;
56
56
  const Container = styled.div `
57
57
  --ll-checkbox-color: unset;
58
- color: var(--ll-checkbox-color, ${(props) => props.theme.colors.palette.primary.c90});
58
+ color: var(--ll-checkbox-color, ${(props) => props.theme.colors.primary.c90});
59
59
 
60
60
  display: inline-flex;
61
61
  column-gap: ${(p) => p.theme.space[5]}px;
@@ -63,19 +63,19 @@ const Container = styled.div `
63
63
  cursor: pointer;
64
64
 
65
65
  &[data-variant="default"] {
66
- --ll-checkbox-color: ${(props) => props.theme.colors.palette.primary.c90};
66
+ --ll-checkbox-color: ${(props) => props.theme.colors.primary.c90};
67
67
  }
68
68
 
69
69
  &[data-variant="success"] {
70
- --ll-checkbox-color: ${(props) => props.theme.colors.palette.success.c100};
70
+ --ll-checkbox-color: ${(props) => props.theme.colors.success.c100};
71
71
  }
72
72
 
73
73
  &[data-variant="error"] {
74
- --ll-checkbox-color: ${(props) => props.theme.colors.palette.error.c100};
74
+ --ll-checkbox-color: ${(props) => props.theme.colors.error.c100};
75
75
  }
76
76
 
77
77
  &[data-disabled="true"] {
78
- --ll-checkbox-color: ${(props) => props.theme.colors.palette.neutral.c80};
78
+ --ll-checkbox-color: ${(props) => props.theme.colors.neutral.c80};
79
79
  cursor: unset;
80
80
  }
81
81
  `;
@@ -1,6 +1,6 @@
1
- /// <reference types="react" />
1
+ import { GroupBase } from "react-select";
2
2
  import { Props as SelectInputProps } from "../../form/SelectInput";
3
- export declare type Props = SelectInputProps & {
3
+ export declare type Props<O> = SelectInputProps<O, false, GroupBase<O>> & {
4
4
  label: string;
5
5
  };
6
- export default function Dropdown(props: Props): JSX.Element;
6
+ export default function Dropdown<O>(props: Props<O>): JSX.Element;
@@ -18,9 +18,10 @@ import { ValueContainer } from "../../form/SelectInput/ValueContainer";
18
18
  import { ChevronBottomMedium, ChevronTopMedium } from "@ledgerhq/icons-ui/react";
19
19
  import FlexBox from "../../layout/Flex";
20
20
  function DropdownControl(props) {
21
- const { selectProps: { label }, children, } = props;
21
+ const { selectProps, children } = props;
22
+ const { label } = selectProps;
22
23
  return (React.createElement(components.Control, Object.assign({}, props),
23
- React.createElement(Text, { fontWeight: "semiBold", variant: "paragraph", color: "palette.neutral.c80", mr: 2 }, label),
24
+ React.createElement(Text, { fontWeight: "semiBold", variant: "paragraph", color: "neutral.c80", mr: 2 }, label),
24
25
  children));
25
26
  }
26
27
  function DropdownValueContainer(props) {
@@ -37,7 +38,7 @@ function DropdownIndicatorsContainer() {
37
38
  export default function Dropdown(props) {
38
39
  const theme = useTheme();
39
40
  const { styles } = props, rest = __rest(props, ["styles"]);
40
- return (React.createElement(SelectInput, Object.assign({ placeholder: "", isSearchable: false, styles: Object.assign({ singleValue: (provided) => (Object.assign(Object.assign({}, provided), { color: theme.colors.palette.neutral.c100, margin: 0, top: undefined, position: undefined, overflow: undefined, maxWidth: undefined, transform: undefined })), input: () => ({ display: "none" }), menu: (provided) => (Object.assign(Object.assign({}, provided), { border: 0, boxShadow: "none", background: "none", width: "auto", minWidth: "200px" })) }, styles) }, rest, { components: {
41
+ return (React.createElement(SelectInput, Object.assign({ placeholder: "", isSearchable: false, styles: Object.assign({ singleValue: (provided) => (Object.assign(Object.assign({}, provided), { color: theme.colors.neutral.c100, margin: 0, top: undefined, position: undefined, overflow: undefined, maxWidth: undefined, transform: undefined })), input: () => ({ display: "none" }), menu: (provided) => (Object.assign(Object.assign({}, provided), { border: 0, boxShadow: "none", background: "none", width: "auto", minWidth: "200px" })) }, styles) }, rest, { components: {
41
42
  Control: DropdownControl,
42
43
  ValueContainer: DropdownValueContainer,
43
44
  IndicatorsContainer: DropdownIndicatorsContainer,
@@ -1,6 +1,30 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import { InputProps } from "../BaseInput";
3
3
  export declare type Props = InputProps & {
4
4
  legend: string;
5
5
  };
6
- export default function LegendInput({ legend, ...inputProps }: Props): JSX.Element;
6
+ declare const _default: React.ForwardRefExoticComponent<Omit<import("../BaseInput").CommonProps, "onChange" | "value"> & {
7
+ value: string;
8
+ onChange?: ((value: string) => void) | undefined;
9
+ onChangeEvent?: React.ChangeEventHandler<HTMLInputElement> | undefined;
10
+ renderLeft?: React.ReactNode | ((props: InputProps<string>) => React.ReactNode);
11
+ renderRight?: React.ReactNode | ((props: InputProps<string>) => React.ReactNode);
12
+ unwrapped?: boolean | undefined;
13
+ containerProps?: (({
14
+ [x: string]: any;
15
+ [x: number]: any;
16
+ [x: symbol]: any;
17
+ } & {
18
+ theme?: import("styled-components").DefaultTheme | undefined;
19
+ } & ({} | {
20
+ children?: import("react").ReactNode;
21
+ })) & {
22
+ as?: string | import("react").ComponentType<any> | undefined;
23
+ forwardedAs?: string | import("react").ComponentType<any> | undefined;
24
+ }) | undefined;
25
+ serialize?: ((value: string) => string) | undefined;
26
+ deserialize?: ((value: string) => string) | undefined;
27
+ } & {
28
+ legend: string;
29
+ } & React.RefAttributes<HTMLInputElement>>;
30
+ export default _default;
@@ -14,14 +14,15 @@ import Input, { InputRenderRightContainer } from "../BaseInput";
14
14
  import Text from "../../asorted/Text";
15
15
  import styled from "styled-components";
16
16
  const Legend = styled(Text) `
17
- color: ${(props) => props.theme.colors.palette.neutral.c70};
17
+ color: ${(props) => props.theme.colors.neutral.c70};
18
18
 
19
19
  &[data-disabled="true"] {
20
- color: ${(props) => props.theme.colors.palette.neutral.c50};
20
+ color: ${(props) => props.theme.colors.neutral.c50};
21
21
  }
22
22
  `;
23
- export default function LegendInput(_a) {
23
+ function LegendInput(_a, ref) {
24
24
  var { legend } = _a, inputProps = __rest(_a, ["legend"]);
25
- return (React.createElement(Input, Object.assign({}, inputProps, { renderRight: React.createElement(InputRenderRightContainer, null,
25
+ return (React.createElement(Input, Object.assign({ ref: ref }, inputProps, { renderRight: React.createElement(InputRenderRightContainer, null,
26
26
  React.createElement(Legend, { variant: "body", "data-disabled": inputProps.disabled }, legend)) })));
27
27
  }
28
+ export default React.forwardRef(LegendInput);
@@ -1,5 +1,27 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import { InputProps } from "../BaseInput";
3
- export default function NumberInput({ value, onPercentClick, max, disabled, ...inputProps }: InputProps<number | undefined> & {
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<import("../BaseInput").CommonProps, "onChange" | "value"> & {
4
+ value: number | undefined;
5
+ onChange?: ((value: number | undefined) => void) | undefined;
6
+ onChangeEvent?: React.ChangeEventHandler<HTMLInputElement> | undefined;
7
+ renderLeft?: React.ReactNode | ((props: InputProps<number | undefined>) => React.ReactNode);
8
+ renderRight?: React.ReactNode | ((props: InputProps<number | undefined>) => React.ReactNode);
9
+ unwrapped?: boolean | undefined;
10
+ containerProps?: (({
11
+ [x: string]: any;
12
+ [x: number]: any;
13
+ [x: symbol]: any;
14
+ } & {
15
+ theme?: import("styled-components").DefaultTheme | undefined;
16
+ } & ({} | {
17
+ children?: import("react").ReactNode;
18
+ })) & {
19
+ as?: string | import("react").ComponentType<any> | undefined;
20
+ forwardedAs?: string | import("react").ComponentType<any> | undefined;
21
+ }) | undefined;
22
+ serialize?: ((value: number | undefined) => string) | undefined;
23
+ deserialize?: ((value: string) => number | undefined) | undefined;
24
+ } & {
4
25
  onPercentClick: (percent: number) => void;
5
- }): JSX.Element;
26
+ } & React.RefAttributes<HTMLInputElement>>;
27
+ export default _default;
@@ -16,8 +16,8 @@ import Text from "../../asorted/Text";
16
16
  import styled from "styled-components";
17
17
  // TODO: Replace me with a real button as soon as they are designed
18
18
  const MaxButton = styled.button `
19
- color: ${(p) => p.active ? p.theme.colors.palette.neutral.c00 : p.theme.colors.palette.neutral.c70};
20
- background-color: ${(p) => p.active ? p.theme.colors.palette.neutral.c100 : p.theme.colors.palette.neutral.c00};
19
+ color: ${(p) => (p.active ? p.theme.colors.neutral.c00 : p.theme.colors.neutral.c70)};
20
+ background-color: ${(p) => (p.active ? p.theme.colors.neutral.c100 : p.theme.colors.neutral.c00)};
21
21
  border-radius: 100px;
22
22
  border-width: 0;
23
23
  height: 31px;
@@ -26,8 +26,8 @@ const MaxButton = styled.button `
26
26
  cursor: pointer;
27
27
 
28
28
  &:disabled {
29
- color: ${(p) => p.theme.colors.palette.neutral.c50};
30
- background-color: ${(p) => (p.active ? p.theme.colors.palette.neutral.c30 : "transparent")};
29
+ color: ${(p) => p.theme.colors.neutral.c50};
30
+ background-color: ${(p) => (p.active ? p.theme.colors.neutral.c30 : "transparent")};
31
31
  cursor: unset;
32
32
  }
33
33
  `;
@@ -42,10 +42,11 @@ function deserialize(value) {
42
42
  return undefined;
43
43
  }
44
44
  }
45
- export default function NumberInput(_a) {
45
+ function NumberInput(_a, ref) {
46
46
  var { value, onPercentClick, max, disabled } = _a, inputProps = __rest(_a, ["value", "onPercentClick", "max", "disabled"]);
47
- return (React.createElement(Input, Object.assign({ serialize: serialize, deserialize: deserialize }, inputProps, { type: "number", value: value, max: max, disabled: disabled, renderRight: React.createElement(FlexBox, { alignItems: "center", justifyContent: "center", py: "3px", mr: "8px" }, [0.25, 0.5, 0.75, 1].map((percent) => (React.createElement(MaxButton, { key: percent, onClick: () => onPercentClick(percent), active: !!value && !!max && Number(value) === percent * Number(max), disabled: disabled },
47
+ return (React.createElement(Input, Object.assign({ ref: ref, serialize: serialize, deserialize: deserialize }, inputProps, { type: "number", value: value, max: max, disabled: disabled, renderRight: React.createElement(FlexBox, { alignItems: "center", justifyContent: "center", py: "3px", mr: "8px" }, [0.25, 0.5, 0.75, 1].map((percent) => (React.createElement(MaxButton, { key: percent, onClick: () => onPercentClick(percent), active: !!value && !!max && Number(value) === percent * Number(max), disabled: disabled },
48
48
  React.createElement(Text, { variant: "tiny", color: "inherit" },
49
49
  percent * 100,
50
50
  "%"))))) })));
51
51
  }
52
+ export default React.forwardRef(NumberInput);
@@ -1,5 +1,27 @@
1
1
  import React from "react";
2
2
  import { InputProps } from "../BaseInput";
3
- export default function QrCodeInput({ onQrCodeClick, ...inputProps }: InputProps & {
4
- onQrCodeClick?: (e: React.FormEvent<HTMLButtonElement>) => void;
5
- }): JSX.Element;
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<import("../BaseInput").CommonProps, "onChange" | "value"> & {
4
+ value: string;
5
+ onChange?: ((value: string) => void) | undefined;
6
+ onChangeEvent?: React.ChangeEventHandler<HTMLInputElement> | undefined;
7
+ renderLeft?: React.ReactNode | ((props: InputProps<string>) => React.ReactNode);
8
+ renderRight?: React.ReactNode | ((props: InputProps<string>) => React.ReactNode);
9
+ unwrapped?: boolean | undefined;
10
+ containerProps?: (({
11
+ [x: string]: any;
12
+ [x: number]: any;
13
+ [x: symbol]: any;
14
+ } & {
15
+ theme?: import("styled-components").DefaultTheme | undefined;
16
+ } & ({} | {
17
+ children?: import("react").ReactNode;
18
+ })) & {
19
+ as?: string | import("react").ComponentType<any> | undefined;
20
+ forwardedAs?: string | import("react").ComponentType<any> | undefined;
21
+ }) | undefined;
22
+ serialize?: ((value: string) => string) | undefined;
23
+ deserialize?: ((value: string) => string) | undefined;
24
+ } & {
25
+ onQrCodeClick?: ((e: React.FormEvent<HTMLButtonElement>) => void) | undefined;
26
+ } & React.RefAttributes<HTMLInputElement>>;
27
+ export default _default;
@@ -22,19 +22,20 @@ const QrCodeButton = styled.button `
22
22
  height: 32px;
23
23
  border-radius: 50%;
24
24
  border-width: 0;
25
- color: ${(p) => p.theme.colors.palette.neutral.c00};
26
- background-color: ${(p) => p.theme.colors.palette.neutral.c100};
25
+ color: ${(p) => p.theme.colors.neutral.c00};
26
+ background-color: ${(p) => p.theme.colors.neutral.c100};
27
27
  cursor: pointer;
28
28
 
29
29
  &:disabled {
30
- background-color: ${(p) => p.theme.colors.palette.neutral.c30};
31
- color: ${(p) => p.theme.colors.palette.neutral.c50};
30
+ background-color: ${(p) => p.theme.colors.neutral.c30};
31
+ color: ${(p) => p.theme.colors.neutral.c50};
32
32
  cursor: unset;
33
33
  }
34
34
  `;
35
- export default function QrCodeInput(_a) {
35
+ function QrCodeInput(_a, ref) {
36
36
  var { onQrCodeClick } = _a, inputProps = __rest(_a, ["onQrCodeClick"]);
37
- return (React.createElement(Input, Object.assign({}, inputProps, { renderRight: React.createElement(FlexBox, { alignItems: "center", justifyContent: "center", pr: "8px" },
37
+ return (React.createElement(Input, Object.assign({ ref: ref }, inputProps, { renderRight: React.createElement(FlexBox, { alignItems: "center", justifyContent: "center", pr: "8px" },
38
38
  React.createElement(QrCodeButton, { onClick: onQrCodeClick, disabled: inputProps.disabled },
39
39
  React.createElement(QrCodeMedium, { size: "20px" }))) })));
40
40
  }
41
+ export default React.forwardRef(QrCodeInput);
@@ -1,6 +1,28 @@
1
1
  import React from "react";
2
2
  import { InputProps } from "../BaseInput";
3
- export default function QuantityInput({ onMaxClick, price, ...inputProps }: InputProps & {
4
- onMaxClick?: (e: React.FormEvent<HTMLButtonElement>) => void;
5
- price?: string;
6
- }): JSX.Element;
3
+ declare const _default: React.ForwardRefExoticComponent<Omit<import("../BaseInput").CommonProps, "onChange" | "value"> & {
4
+ value: string;
5
+ onChange?: ((value: string) => void) | undefined;
6
+ onChangeEvent?: React.ChangeEventHandler<HTMLInputElement> | undefined;
7
+ renderLeft?: React.ReactNode | ((props: InputProps<string>) => React.ReactNode);
8
+ renderRight?: React.ReactNode | ((props: InputProps<string>) => React.ReactNode);
9
+ unwrapped?: boolean | undefined;
10
+ containerProps?: (({
11
+ [x: string]: any;
12
+ [x: number]: any;
13
+ [x: symbol]: any;
14
+ } & {
15
+ theme?: import("styled-components").DefaultTheme | undefined;
16
+ } & ({} | {
17
+ children?: import("react").ReactNode;
18
+ })) & {
19
+ as?: string | import("react").ComponentType<any> | undefined;
20
+ forwardedAs?: string | import("react").ComponentType<any> | undefined;
21
+ }) | undefined;
22
+ serialize?: ((value: string) => string) | undefined;
23
+ deserialize?: ((value: string) => string) | undefined;
24
+ } & {
25
+ onMaxClick?: ((e: React.FormEvent<HTMLButtonElement>) => void) | undefined;
26
+ price?: string | undefined;
27
+ } & React.RefAttributes<HTMLInputElement>>;
28
+ export default _default;
@@ -15,8 +15,8 @@ import FlexBox from "../../layout/Flex";
15
15
  import Text from "../../asorted/Text";
16
16
  import styled from "styled-components";
17
17
  const MaxButton = styled.button `
18
- color: ${(p) => p.theme.colors.palette.neutral.c00};
19
- background-color: ${(p) => p.theme.colors.palette.neutral.c100};
18
+ color: ${(p) => p.theme.colors.neutral.c00};
19
+ background-color: ${(p) => p.theme.colors.neutral.c100};
20
20
  border-radius: 100px;
21
21
  border-width: 0;
22
22
  padding-left: 14px;
@@ -25,22 +25,23 @@ const MaxButton = styled.button `
25
25
  cursor: pointer;
26
26
 
27
27
  &:disabled {
28
- background-color: ${(p) => p.theme.colors.palette.neutral.c30};
29
- color: ${(p) => p.theme.colors.palette.neutral.c50};
28
+ background-color: ${(p) => p.theme.colors.neutral.c30};
29
+ color: ${(p) => p.theme.colors.neutral.c50};
30
30
  cursor: unset;
31
31
  }
32
32
  `;
33
33
  const Legend = styled(Text) `
34
- color: ${(p) => p.theme.colors.palette.neutral.c70};
34
+ color: ${(p) => p.theme.colors.neutral.c70};
35
35
 
36
36
  &[data-disabled="true"] {
37
- color: ${(p) => p.theme.colors.palette.neutral.c50};
37
+ color: ${(p) => p.theme.colors.neutral.c50};
38
38
  }
39
39
  `;
40
- export default function QuantityInput(_a) {
40
+ function QuantityInput(_a, ref) {
41
41
  var { onMaxClick, price } = _a, inputProps = __rest(_a, ["onMaxClick", "price"]);
42
- return (React.createElement(Input, Object.assign({}, inputProps, { type: "number", renderRight: React.createElement(FlexBox, { alignItems: "center", justifyContent: "center", pr: "3px", py: "3px" },
42
+ return (React.createElement(Input, Object.assign({ ref: ref }, inputProps, { type: "number", renderRight: React.createElement(FlexBox, { alignItems: "center", justifyContent: "center", pr: "3px", py: "3px" },
43
43
  price && (React.createElement(Legend, { variant: "body", pr: "12px", "data-disabled": inputProps.disabled }, price)),
44
44
  React.createElement(MaxButton, { onClick: onMaxClick, disabled: inputProps.disabled },
45
45
  React.createElement(Text, { variant: "tiny", color: "currentColor" }, "Max"))) })));
46
46
  }
47
+ export default React.forwardRef(QuantityInput);
@@ -1,11 +1,12 @@
1
1
  import { InputHTMLAttributes } from "react";
2
2
  declare type InputAttributes = Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange" | "name">;
3
3
  export declare type RadioElementProps = InputAttributes & {
4
- variant?: "default" | "success" | "error";
4
+ variant?: "default" | "main" | "success" | "error";
5
5
  label: string;
6
+ outlined?: boolean;
6
7
  };
7
8
  declare const Element: {
8
- ({ label, value, disabled, variant, ...props }: RadioElementProps): JSX.Element;
9
+ ({ label, value, disabled, outlined, variant, ...props }: RadioElementProps): JSX.Element;
9
10
  displayName: string;
10
11
  };
11
12
  export default Element;
@@ -10,21 +10,22 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import React, { useContext, useMemo } from "react";
13
- import styled from "styled-components";
13
+ import styled, { css } from "styled-components";
14
14
  import { rgba } from "../../../styles/helpers";
15
15
  import Text from "../../asorted/Text";
16
16
  import { RadioContext } from "./index";
17
17
  const Label = styled(Text) `
18
- color: var(--ledger-ui-checkbox-color, ${(p) => p.theme.colors.palette.neutral.c100});
18
+ color: var(--ledger-ui-checkbox-color, ${(p) => p.theme.colors.neutral.c100});
19
19
  `;
20
20
  const Input = styled.input `
21
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.neutral.c50};
21
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.neutral.c50};
22
22
  --ledger-ui-checkbox-size: 1.25rem;
23
23
 
24
24
  position: relative;
25
25
  appearance: none;
26
26
  width: var(--ledger-ui-checkbox-size);
27
27
  height: var(--ledger-ui-checkbox-size);
28
+ flex-shrink: 0;
28
29
  border-radius: ${(p) => `${p.theme.radii[1]}px`};
29
30
  border: 1px solid var(--ledger-ui-checkbox-color);
30
31
  cursor: pointer;
@@ -46,17 +47,31 @@ const Input = styled.input `
46
47
 
47
48
  &[data-variant="default"] {
48
49
  :hover {
49
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.primary.c90};
50
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.primary.c90};
50
51
  }
51
52
  :active {
52
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.primary.c100};
53
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.primary.c100};
53
54
  }
54
55
  :checked,
55
56
  :focus {
56
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.primary.c80};
57
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.primary.c80};
57
58
  }
58
59
  :focus {
59
- box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.palette.primary.c60, 0.48)};
60
+ box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.primary.c60, 0.48)};
61
+ }
62
+ }
63
+
64
+ &[data-variant="main"] {
65
+ :hover {
66
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.neutral.c90};
67
+ }
68
+ :active,
69
+ :checked,
70
+ :focus {
71
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.neutral.c100};
72
+ }
73
+ :focus {
74
+ box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.neutral.c60, 0.48)};
60
75
  }
61
76
  }
62
77
 
@@ -64,10 +79,10 @@ const Input = styled.input `
64
79
  :hover,
65
80
  :checked:not([disabled]),
66
81
  :checked:not([disabled]) + ${Label}, :focus {
67
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.success.c100};
82
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.success.c100};
68
83
  }
69
84
  :focus {
70
- box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.palette.success.c100, 0.48)};
85
+ box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.success.c100, 0.48)};
71
86
  }
72
87
  }
73
88
 
@@ -75,26 +90,80 @@ const Input = styled.input `
75
90
  :hover,
76
91
  :checked:not([disabled]),
77
92
  :checked:not([disabled]) + ${Label}, :focus {
78
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.error.c100};
93
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.error.c100};
94
+ }
95
+ :focus {
96
+ box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.error.c100, 0.48)};
97
+ }
98
+ }
99
+
100
+ &[data-variant]:disabled {
101
+ --ledger-ui-checkbox-color: ${(p) => p.theme.colors.neutral.c40};
102
+ cursor: unset;
103
+ background-color: ${(p) => p.theme.colors.neutral.c30};
104
+ }
105
+ `;
106
+ const outlinedCSS = css `
107
+ padding: 20px;
108
+ border: 1px solid ${(p) => p.theme.colors.neutral.c50};
109
+ border-radius: ${(p) => p.theme.radii[2]}px;
110
+ &[data-variant="default"] {
111
+ :hover {
112
+ border-color: ${(p) => p.theme.colors.primary.c90};
113
+ }
114
+ &[data-checked] :active {
115
+ border-color: ${(p) => p.theme.colors.primary.c100};
79
116
  }
80
117
  :focus {
81
- box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.palette.error.c100, 0.48)};
118
+ border-color: ${(p) => p.theme.colors.primary.c80};
119
+ }
120
+ }
121
+
122
+ &[data-variant="main"] {
123
+ :hover {
124
+ border-color: ${(p) => p.theme.colors.neutral.c90};
125
+ }
126
+ &[data-checked],
127
+ :active :focus {
128
+ border-color: ${(p) => p.theme.colors.neutral.c100};
129
+ }
130
+ }
131
+
132
+ &[data-variant="success"] {
133
+ &[data-checked]:not([disabled]) {
134
+ border-color: ${(p) => p.theme.colors.success.c100};
135
+ }
136
+ :hover {
137
+ border-color: ${(p) => p.theme.colors.success.c100};
138
+ }
139
+ }
140
+
141
+ &[data-variant="error"] {
142
+ &[data-checked]:not([disabled]) {
143
+ border-color: ${(p) => p.theme.colors.error.c100};
144
+ }
145
+ :hover {
146
+ border-color: ${(p) => p.theme.colors.error.c100};
82
147
  }
83
148
  }
84
149
 
85
150
  &[data-variant]:disabled {
86
- --ledger-ui-checkbox-color: ${(p) => p.theme.colors.palette.neutral.c40};
151
+ border-color: ${(p) => p.theme.colors.neutral.c40};
87
152
  cursor: unset;
88
- background-color: ${(p) => p.theme.colors.palette.neutral.c30};
89
153
  }
90
154
  `;
91
155
  const RadioElement = styled.label.attrs({ tabIndex: -1 }) `
92
156
  display: inline-flex;
93
157
  column-gap: 0.75rem;
94
158
  align-items: center;
159
+ cursor: pointer;
160
+ &[data-variant]:disabled {
161
+ cursor: unset;
162
+ }
163
+ ${(p) => p.outlined && outlinedCSS}
95
164
  `;
96
165
  const Element = (_a) => {
97
- var { label, value, disabled, variant = "default" } = _a, props = __rest(_a, ["label", "value", "disabled", "variant"]);
166
+ var { label, value, disabled, outlined, variant = "default" } = _a, props = __rest(_a, ["label", "value", "disabled", "outlined", "variant"]);
98
167
  const context = useContext(RadioContext);
99
168
  if (context === undefined)
100
169
  throw new Error("RadioElement must be used within a RadioProvider");
@@ -103,7 +172,7 @@ const Element = (_a) => {
103
172
  const handleChange = (event) => {
104
173
  context.onChange(event.target.value);
105
174
  };
106
- return (React.createElement(RadioElement, null,
175
+ return (React.createElement(RadioElement, Object.assign({ "data-variant": variant }, (isChecked ? { "data-checked": true } : {}), { outlined: outlined }),
107
176
  React.createElement(Input, Object.assign({ type: "radio", "data-variant": variant, checked: isChecked, disabled: disabled, onChange: handleChange, value: value, name: context.name }, props)),
108
177
  React.createElement(Label, { variant: "paragraph" }, label)));
109
178
  };
@@ -17,30 +17,29 @@ import { rgba } from "../../../styles/helpers";
17
17
  import { RadioContext } from "./index";
18
18
  export const Label = styled(Text) `
19
19
  color: ${(p) => p.disabled
20
- ? p.theme.colors.palette.neutral.c50
20
+ ? p.theme.colors.neutral.c50
21
21
  : p.checked
22
- ? p.theme.colors.palette.primary.c90
23
- : p.theme.colors.palette.neutral.c100};
22
+ ? p.theme.colors.primary.c90
23
+ : p.theme.colors.neutral.c100};
24
24
  `;
25
25
  const Container = styled(Flex) `
26
26
  cursor: ${(p) => (p.disabled ? "" : "pointer")};
27
27
  justify-content: center;
28
28
  align-items: center;
29
- background-color: ${(p) => (p.checked ? p.theme.colors.palette.primary.c20 : "")};
30
- border: 1px solid
31
- ${(p) => (p.checked ? p.theme.colors.palette.primary.c50 : p.theme.colors.palette.neutral.c40)};
29
+ background-color: ${(p) => (p.checked ? p.theme.colors.primary.c20 : "")};
30
+ border: 1px solid ${(p) => (p.checked ? p.theme.colors.primary.c50 : p.theme.colors.neutral.c40)};
32
31
  border-radius: ${(p) => `${p.theme.radii[2]}px`};
33
32
  padding: ${(p) => p.theme.space[6]}px;
34
33
 
35
34
  :hover {
36
- border-color: ${(p) => (p.disabled || p.checked ? "" : p.theme.colors.palette.primary.c80)};
35
+ border-color: ${(p) => (p.disabled || p.checked ? "" : p.theme.colors.primary.c80)};
37
36
  }
38
37
  `;
39
38
  const Input = styled.input `
40
39
  position: relative;
41
40
  appearance: none;
42
41
  &:focus ~ ${Container} {
43
- box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.palette.primary.c60, 0.48)};
42
+ box-shadow: 0px 0px 0px 4px ${(p) => rgba(p.theme.colors.primary.c60, 0.48)};
44
43
  }
45
44
  `;
46
45
  const RadioListElement = styled.label.attrs({ tabIndex: -1 }) `