@laerdal/life-react-components 3.6.0-dev.1.full → 3.6.1

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 (227) hide show
  1. package/dist/Accordion/__tests__/AccordionMenu.test.tsx +42 -0
  2. package/dist/Accordion/__tests__/ContentAccordion.test.tsx +150 -0
  3. package/dist/AuthPage/__tests__/AuthPage.test.tsx +27 -0
  4. package/dist/Banners/__tests__/Banner.test.tsx +47 -0
  5. package/dist/Banners/__tests__/OverviewBanner.test.tsx +20 -0
  6. package/dist/Breadcrumb/__tests__/Breadcrumb.test.tsx +78 -0
  7. package/dist/Button/TextButton.cjs +648 -0
  8. package/dist/Button/TextButton.cjs.map +1 -0
  9. package/dist/Button/TextButton.d.ts +77 -0
  10. package/dist/Button/TextButton.js +640 -0
  11. package/dist/Button/TextButton.js.map +1 -0
  12. package/dist/Button/__tests__/BackButton.test.tsx +32 -0
  13. package/dist/Button/__tests__/Button.test.tsx +45 -0
  14. package/dist/Button/__tests__/DualButton.test.tsx +119 -0
  15. package/dist/Button/__tests__/TextButton.test.tsx +45 -0
  16. package/dist/Card/HorizontalCard/__tests__/HorizontalCard.test.tsx +71 -0
  17. package/dist/Card/HorizontalCard/__tests__/VerticalCard.test.tsx +124 -0
  18. package/dist/Card/VerticalCard/VerticalCard.cjs +187 -0
  19. package/dist/Card/VerticalCard/VerticalCard.cjs.map +1 -0
  20. package/dist/Card/VerticalCard/VerticalCard.d.ts +25 -0
  21. package/dist/Card/VerticalCard/VerticalCard.js +178 -0
  22. package/dist/Card/VerticalCard/VerticalCard.js.map +1 -0
  23. package/dist/Card/VerticalCard/VerticalCardBottomSection.cjs +261 -0
  24. package/dist/Card/VerticalCard/VerticalCardBottomSection.cjs.map +1 -0
  25. package/dist/Card/VerticalCard/VerticalCardBottomSection.d.ts +53 -0
  26. package/dist/Card/VerticalCard/VerticalCardBottomSection.js +252 -0
  27. package/dist/Card/VerticalCard/VerticalCardBottomSection.js.map +1 -0
  28. package/dist/Card/VerticalCard/VerticalCardMiddleSection.cjs +145 -0
  29. package/dist/Card/VerticalCard/VerticalCardMiddleSection.cjs.map +1 -0
  30. package/dist/Card/VerticalCard/VerticalCardMiddleSection.d.ts +42 -0
  31. package/dist/Card/VerticalCard/VerticalCardMiddleSection.js +136 -0
  32. package/dist/Card/VerticalCard/VerticalCardMiddleSection.js.map +1 -0
  33. package/dist/Card/VerticalCard/VerticalCardTopSection.cjs +165 -0
  34. package/dist/Card/VerticalCard/VerticalCardTopSection.cjs.map +1 -0
  35. package/dist/Card/VerticalCard/VerticalCardTopSection.d.ts +45 -0
  36. package/dist/Card/VerticalCard/VerticalCardTopSection.js +156 -0
  37. package/dist/Card/VerticalCard/VerticalCardTopSection.js.map +1 -0
  38. package/dist/Card/VerticalCard/__tests__/VerticalCard.test.tsx +124 -0
  39. package/dist/Card/__tests__/Card.test.tsx +146 -0
  40. package/dist/Chips/ChoiceChips.cjs +0 -1
  41. package/dist/Chips/ChoiceChips.cjs.map +1 -1
  42. package/dist/Chips/ChoiceChips.js +0 -1
  43. package/dist/Chips/ChoiceChips.js.map +1 -1
  44. package/dist/Chips/__tests__/ActionChip.test.tsx +94 -0
  45. package/dist/Chips/__tests__/ChoiceChips.test.tsx +79 -0
  46. package/dist/Chips/__tests__/FilterChip.test.tsx +95 -0
  47. package/dist/Chips/__tests__/InputChip.test.tsx +155 -0
  48. package/dist/ChipsInput/ChipDropdownInput.cjs +1 -1
  49. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -1
  50. package/dist/ChipsInput/ChipDropdownInput.js +1 -1
  51. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -1
  52. package/dist/ChipsInput/__tests__/ChipDropdownInput.test.tsx +100 -0
  53. package/dist/ChipsInput/__tests__/ChipInputFields.test.tsx +155 -0
  54. package/dist/Dropdown/BasicDropdown.cjs +0 -2
  55. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  56. package/dist/Dropdown/BasicDropdown.js +0 -2
  57. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  58. package/dist/Dropdown/DropdownButton.cjs +0 -4
  59. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  60. package/dist/Dropdown/DropdownButton.js +0 -4
  61. package/dist/Dropdown/DropdownButton.js.map +1 -1
  62. package/dist/Dropdown/DropdownContent.cjs +1 -1
  63. package/dist/Dropdown/DropdownContent.cjs.map +1 -1
  64. package/dist/Dropdown/DropdownContent.js +1 -1
  65. package/dist/Dropdown/DropdownContent.js.map +1 -1
  66. package/dist/Dropdown/DropdownFilter.cjs +0 -2
  67. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  68. package/dist/Dropdown/DropdownFilter.js +0 -2
  69. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  70. package/dist/Dropdown/__tests__/DropdownFilter.test.tsx +39 -0
  71. package/dist/Footer/__tests__/Footer.test.tsx +182 -0
  72. package/dist/GlobalNavigationBar/__tests__/Logo.test.tsx +31 -0
  73. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs +1 -0
  74. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs.map +1 -1
  75. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js +1 -0
  76. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js.map +1 -1
  77. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs +1 -0
  78. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs.map +1 -1
  79. package/dist/GlobalNavigationBar/desktop/SubMenu.js +1 -0
  80. package/dist/GlobalNavigationBar/desktop/SubMenu.js.map +1 -1
  81. package/dist/GlobalNavigationBar/desktop/__tests__/DesktopActions.test.tsx +108 -0
  82. package/dist/GlobalNavigationBar/desktop/__tests__/ExtendedMainMenu.test.tsx +28 -0
  83. package/dist/GlobalNavigationBar/desktop/__tests__/MainMenu.test.tsx +55 -0
  84. package/dist/GlobalNavigationBar/desktop/__tests__/RightSideNav.test.tsx +45 -0
  85. package/dist/GlobalNavigationBar/desktop/__tests__/UserMenu.test.tsx +125 -0
  86. package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenu.test.tsx +317 -0
  87. package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuContent.test.tsx +294 -0
  88. package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuHeader.test.tsx +195 -0
  89. package/dist/InputFields/QuickSearch.cjs +1 -1
  90. package/dist/InputFields/QuickSearch.cjs.map +1 -1
  91. package/dist/InputFields/QuickSearch.js +1 -1
  92. package/dist/InputFields/QuickSearch.js.map +1 -1
  93. package/dist/InputFields/__tests__/NumberField.test.tsx +67 -0
  94. package/dist/InputFields/__tests__/NumberInput.test.tsx +68 -0
  95. package/dist/InputFields/__tests__/QuickSearch.test.tsx +42 -0
  96. package/dist/LinearProgress/__tests__/LinearProgress.test.tsx +25 -0
  97. package/dist/List/__tests__/ListRow.test.tsx +18 -0
  98. package/dist/LoadingPage/__tests__/GlobalLoadingPage.test.tsx +23 -0
  99. package/dist/Modals/__tests__/Modal.test.tsx +169 -0
  100. package/dist/Modals/__tests__/ModalContainer.test.tsx +77 -0
  101. package/dist/Modals/__tests__/ModalContent.test.tsx +126 -0
  102. package/dist/NavItem/__tests__/NavItem.test.ts +6 -0
  103. package/dist/Navigation/NavigationProvider.cjs +43 -0
  104. package/dist/Navigation/NavigationProvider.cjs.map +1 -0
  105. package/dist/Navigation/NavigationProvider.d.ts +15 -0
  106. package/dist/Navigation/NavigationProvider.js +32 -0
  107. package/dist/Navigation/NavigationProvider.js.map +1 -0
  108. package/dist/Navigation/index.cjs +19 -0
  109. package/dist/Navigation/index.cjs.map +1 -0
  110. package/dist/Navigation/index.d.ts +2 -0
  111. package/dist/Navigation/index.js +2 -0
  112. package/dist/Navigation/index.js.map +1 -0
  113. package/dist/NotificationDot/__tests__/NotificationDot.test.tsx +33 -0
  114. package/dist/Paginator/__tests__/Paginator.test.tsx +33 -0
  115. package/dist/Popover/__tests__/Popover.test.tsx +64 -0
  116. package/dist/ProfileButton/__tests__/ProfileButton.test.tsx +31 -0
  117. package/dist/QuizButton/__tests__/QuizButton.test.tsx +53 -0
  118. package/dist/SegmentControl/__tests__/SegmentControl.test.tsx +145 -0
  119. package/dist/SideMenu/__tests__/SideMenu.test.tsx +99 -0
  120. package/dist/Switcher/__tests__/SwitcherMenuItem.tsx +14 -0
  121. package/dist/Table/Table.cjs +3 -1
  122. package/dist/Table/Table.cjs.map +1 -1
  123. package/dist/Table/Table.js +3 -1
  124. package/dist/Table/Table.js.map +1 -1
  125. package/dist/Table/TableBody.cjs +1 -1
  126. package/dist/Table/TableBody.cjs.map +1 -1
  127. package/dist/Table/TableBody.js +1 -1
  128. package/dist/Table/TableBody.js.map +1 -1
  129. package/dist/Table/TableFooter.cjs +0 -2
  130. package/dist/Table/TableFooter.cjs.map +1 -1
  131. package/dist/Table/TableFooter.js +0 -2
  132. package/dist/Table/TableFooter.js.map +1 -1
  133. package/dist/Table/__tests__/Table.test.tsx +499 -0
  134. package/dist/Tabs/__tests__/HorizontalTabs.test.tsx +95 -0
  135. package/dist/Tabs/__tests__/TabLink.test.tsx +40 -0
  136. package/dist/Tabs/__tests__/Tablist.test.tsx +37 -0
  137. package/dist/Tag/__tests__/Tag.test.tsx +86 -0
  138. package/dist/Toasters/__tests__/Toast.test.tsx +74 -0
  139. package/dist/Toggles/__tests__/ToggleButton.test.tsx +53 -0
  140. package/dist/Toggles/__tests__/ToggleSwitch.test.tsx +87 -0
  141. package/dist/Tooltips/__tests__/TooltipWrapper.test.tsx +16 -0
  142. package/dist/icons/systemicons/CreditCard.cjs +43 -0
  143. package/dist/icons/systemicons/CreditCard.cjs.map +1 -0
  144. package/dist/icons/systemicons/CreditCard.d.ts +3 -0
  145. package/dist/icons/systemicons/CreditCard.js +33 -0
  146. package/dist/icons/systemicons/CreditCard.js.map +1 -0
  147. package/dist/icons/systemicons/Discount.cjs +43 -0
  148. package/dist/icons/systemicons/Discount.cjs.map +1 -0
  149. package/dist/icons/systemicons/Discount.d.ts +3 -0
  150. package/dist/icons/systemicons/Discount.js +33 -0
  151. package/dist/icons/systemicons/Discount.js.map +1 -0
  152. package/dist/icons/systemicons/DocumentComplete.cjs +43 -0
  153. package/dist/icons/systemicons/DocumentComplete.cjs.map +1 -0
  154. package/dist/icons/systemicons/DocumentComplete.d.ts +3 -0
  155. package/dist/icons/systemicons/DocumentComplete.js +33 -0
  156. package/dist/icons/systemicons/DocumentComplete.js.map +1 -0
  157. package/dist/icons/systemicons/Folder.cjs +43 -0
  158. package/dist/icons/systemicons/Folder.cjs.map +1 -0
  159. package/dist/icons/systemicons/Folder.d.ts +3 -0
  160. package/dist/icons/systemicons/Folder.js +33 -0
  161. package/dist/icons/systemicons/Folder.js.map +1 -0
  162. package/dist/icons/systemicons/FolderNew.cjs +43 -0
  163. package/dist/icons/systemicons/FolderNew.cjs.map +1 -0
  164. package/dist/icons/systemicons/FolderNew.d.ts +3 -0
  165. package/dist/icons/systemicons/FolderNew.js +33 -0
  166. package/dist/icons/systemicons/FolderNew.js.map +1 -0
  167. package/dist/icons/systemicons/MoodHappy.cjs +43 -0
  168. package/dist/icons/systemicons/MoodHappy.cjs.map +1 -0
  169. package/dist/icons/systemicons/MoodHappy.d.ts +3 -0
  170. package/dist/icons/systemicons/MoodHappy.js +33 -0
  171. package/dist/icons/systemicons/MoodHappy.js.map +1 -0
  172. package/dist/icons/systemicons/MoodIndifferent.cjs +43 -0
  173. package/dist/icons/systemicons/MoodIndifferent.cjs.map +1 -0
  174. package/dist/icons/systemicons/MoodIndifferent.d.ts +3 -0
  175. package/dist/icons/systemicons/MoodIndifferent.js +33 -0
  176. package/dist/icons/systemicons/MoodIndifferent.js.map +1 -0
  177. package/dist/icons/systemicons/MoodSad.cjs +43 -0
  178. package/dist/icons/systemicons/MoodSad.cjs.map +1 -0
  179. package/dist/icons/systemicons/MoodSad.d.ts +3 -0
  180. package/dist/icons/systemicons/MoodSad.js +33 -0
  181. package/dist/icons/systemicons/MoodSad.js.map +1 -0
  182. package/dist/icons/systemicons/MoodVeryHappy.cjs +43 -0
  183. package/dist/icons/systemicons/MoodVeryHappy.cjs.map +1 -0
  184. package/dist/icons/systemicons/MoodVeryHappy.d.ts +3 -0
  185. package/dist/icons/systemicons/MoodVeryHappy.js +33 -0
  186. package/dist/icons/systemicons/MoodVeryHappy.js.map +1 -0
  187. package/dist/icons/systemicons/MoodVerySad.cjs +43 -0
  188. package/dist/icons/systemicons/MoodVerySad.cjs.map +1 -0
  189. package/dist/icons/systemicons/MoodVerySad.d.ts +3 -0
  190. package/dist/icons/systemicons/MoodVerySad.js +33 -0
  191. package/dist/icons/systemicons/MoodVerySad.js.map +1 -0
  192. package/dist/icons/systemicons/Orders.cjs +43 -0
  193. package/dist/icons/systemicons/Orders.cjs.map +1 -0
  194. package/dist/icons/systemicons/Orders.d.ts +3 -0
  195. package/dist/icons/systemicons/Orders.js +33 -0
  196. package/dist/icons/systemicons/Orders.js.map +1 -0
  197. package/dist/icons/systemicons/Palette.cjs +43 -0
  198. package/dist/icons/systemicons/Palette.cjs.map +1 -0
  199. package/dist/icons/systemicons/Palette.d.ts +3 -0
  200. package/dist/icons/systemicons/Palette.js +33 -0
  201. package/dist/icons/systemicons/Palette.js.map +1 -0
  202. package/dist/icons/systemicons/Stack.cjs +43 -0
  203. package/dist/icons/systemicons/Stack.cjs.map +1 -0
  204. package/dist/icons/systemicons/Stack.d.ts +3 -0
  205. package/dist/icons/systemicons/Stack.js +33 -0
  206. package/dist/icons/systemicons/Stack.js.map +1 -0
  207. package/dist/styles/design-tokens/dark/tokens.css +481 -0
  208. package/dist/styles/design-tokens/light/tokens.css +481 -0
  209. package/dist/styles/design-tokens/rqi_dark/tokens.css +481 -0
  210. package/dist/styles/design-tokens/rqi_light/tokens.css +481 -0
  211. package/dist/styles/react-datepicker.css +766 -0
  212. package/dist/styles/typography.cjs +35 -59
  213. package/dist/styles/typography.cjs.map +1 -1
  214. package/dist/styles/typography.d.ts +1 -1
  215. package/dist/styles/typography.js +35 -59
  216. package/dist/styles/typography.js.map +1 -1
  217. package/dist/test-utils.cjs +16 -10
  218. package/dist/test-utils.cjs.map +1 -1
  219. package/dist/test-utils.d.ts +5 -5
  220. package/dist/test-utils.js +14 -8
  221. package/dist/test-utils.js.map +1 -1
  222. package/dist/utils/color-tokens.cjs +91 -0
  223. package/dist/utils/color-tokens.cjs.map +1 -0
  224. package/dist/utils/color-tokens.d.ts +19 -0
  225. package/dist/utils/color-tokens.js +82 -0
  226. package/dist/utils/color-tokens.js.map +1 -0
  227. package/package.json +1 -1
@@ -0,0 +1,640 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _pt from "prop-types";
4
+ const _excluded = ["children", "variant", "type", "size", "invertFocus", "width", "testId", "disabled", "flatEdge", "icon", "iconPosition"],
5
+ _excluded2 = ["loading"];
6
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
+ import * as React from 'react';
9
+ import styled, { useTheme } from 'styled-components';
10
+ import { LoadingIndicator } from '../LoadingIndicator';
11
+ import { ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles';
12
+ import { COLORS, focusStyles, invertedFocusStyles } from '../styles';
13
+ import { Size } from '../types';
14
+ import { defaultOnMouseDownHandler } from '../common';
15
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
16
+ const getBorderRadius = (flatEdge, radius) => {
17
+ switch (flatEdge) {
18
+ case 'left':
19
+ return `0px ${radius}px ${radius}px 0px`;
20
+ case 'right':
21
+ return `${radius}px 0px 0px ${radius}px`;
22
+ case 'none':
23
+ default:
24
+ return `${radius}px`;
25
+ }
26
+ };
27
+ export const TextButtonContentContainer = styled.div`
28
+ min-width: 64px;
29
+ `;
30
+ const TextButtonBaseStyled = styled.button``;
31
+ export const TextButtonPrimaryStyled = styled(TextButtonBaseStyled)`
32
+ border: none;
33
+ background-color: transparent;
34
+ cursor: pointer;
35
+ padding: 0;
36
+ margin: 0;
37
+ position: relative;
38
+ box-sizing: border-box;
39
+ &.loading-state {
40
+ cursor: wait;
41
+ }
42
+ ${TextButtonContentContainer} {
43
+ ${props => props.$size === Size.Large ? ComponentLStyling(ComponentTextStyle.Bold, COLORS.generateToken({
44
+ componentType: 'text',
45
+ isOnFill: true,
46
+ defaultVariant: 'primary'
47
+ }, props.theme)) : props.$size === Size.Small ? ComponentSStyling(ComponentTextStyle.Bold, COLORS.generateToken({
48
+ componentType: 'text',
49
+ isOnFill: true,
50
+ defaultVariant: 'primary'
51
+ }, props.theme)) : ComponentMStyling(ComponentTextStyle.Bold, COLORS.generateToken({
52
+ componentType: 'text',
53
+ isOnFill: true,
54
+ defaultVariant: 'primary'
55
+ }, props.theme))};
56
+
57
+ background-color: ${props => COLORS.generateToken({
58
+ componentType: 'bg-fill',
59
+ defaultVariant: 'primary'
60
+ }, props.theme)};
61
+ border-radius: ${props => getBorderRadius(props.$flatEdge, 8)};
62
+
63
+ width: ${props => props.$width};
64
+ position: relative;
65
+
66
+ min-height: ${props => props.$size === Size.Large ? '56px' : props.$size === Size.Small ? '32px' : '40px'};
67
+
68
+ box-sizing: border-box;
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ padding: ${props => props.$size === Size.Large ? '14px 16px' : props.$size === Size.Small ? '6px 8px' : '8px 12px'};
73
+
74
+ span.icon:not(.loading) {
75
+ pointer-events: none;
76
+ }
77
+
78
+ span.loading {
79
+ opacity: 0;
80
+ }
81
+
82
+ .icon {
83
+ margin: ${props => props.$size === Size.Medium ? props.$iconOnly ? '-2px -8px' : '' : props.$size === Size.Small ? props.$iconOnly ? '-2px -6px' : '' : ''};
84
+ width: ${props => props.$size === Size.Large ? '28px' : props.$size === Size.Small ? '20px' : '24px'};
85
+ height: ${props => props.$size === Size.Large ? '28px' : props.$size === Size.Small ? '20px' : '24px'};
86
+ svg {
87
+ width: ${props => props.$size === Size.Large ? '28px' : props.$size === Size.Small ? '20px' : '24px'} !important;
88
+ height: ${props => props.$size === Size.Large ? '28px' : props.$size === Size.Small ? '20px' : '24px'} !important;
89
+ }
90
+ }
91
+
92
+ .label {
93
+ margin: 0 4px;
94
+ }
95
+
96
+ div {
97
+ position: absolute;
98
+ width: 100%;
99
+ svg {
100
+ height: ${props => props.$size === Size.Large ? '28px' : props.$size === Size.Small ? '20px' : '24px'};
101
+ width: ${props => props.$size === Size.Large ? '28px' : props.$size === Size.Small ? '20px' : '24px'};
102
+ path {
103
+ fill: ${props => COLORS.generateToken({
104
+ componentType: 'icon',
105
+ isOnFill: true,
106
+ defaultVariant: 'primary'
107
+ }, props.theme)};
108
+ }
109
+ }
110
+ }
111
+ }
112
+ &:hover > ${TextButtonContentContainer},
113
+ &.hover-state > ${TextButtonContentContainer} {
114
+ background-color: ${props => COLORS.generateToken({
115
+ componentType: 'bg-fill',
116
+ state: 'hover',
117
+ defaultVariant: 'primary'
118
+ }, props.theme)};
119
+ color: ${props => COLORS.generateToken({
120
+ componentType: 'text',
121
+ isOnFill: true,
122
+ defaultVariant: 'primary'
123
+ }, props.theme)};
124
+ }
125
+ &:active > ${TextButtonContentContainer},
126
+ &.active-state > ${TextButtonContentContainer} {
127
+ background-color: ${props => COLORS.generateToken({
128
+ componentType: 'bg-fill',
129
+ state: 'active',
130
+ defaultVariant: 'primary'
131
+ }, props.theme)};
132
+ color: ${props => COLORS.generateToken({
133
+ componentType: 'text',
134
+ isOnFill: true,
135
+ defaultVariant: 'primary'
136
+ }, props.theme)};
137
+ }
138
+
139
+ &:focus,
140
+ &.focus-state {
141
+ ${props => props.$invertFocus || props.$invertFocus === undefined ? invertedFocusStyles : focusStyles}
142
+ }
143
+ &:disabled,
144
+ &.disabled-state {
145
+ cursor: not-allowed;
146
+ }
147
+ &:disabled > ${TextButtonContentContainer},
148
+ &.disabled-state > ${TextButtonContentContainer} {
149
+ pointer-events: none;
150
+ background-color: ${props => COLORS.generateToken({
151
+ componentType: 'bg-fill',
152
+ state: 'disabled'
153
+ }, props.theme)};
154
+ color: ${props => COLORS.generateToken({
155
+ componentType: 'text',
156
+ isOnFill: true,
157
+ state: 'disabled'
158
+ }, props.theme)};
159
+ }
160
+ `;
161
+ export const TextButtonSecondaryStyled = styled(TextButtonPrimaryStyled)`
162
+ ${TextButtonContentContainer} {
163
+ color: ${props => COLORS.generateToken({
164
+ componentType: 'text',
165
+ defaultVariant: 'primary'
166
+ }, props.theme)};
167
+ background-color: transparent;
168
+ div svg path {
169
+ fill: ${props => COLORS.generateToken({
170
+ componentType: 'icon',
171
+ defaultVariant: 'primary'
172
+ }, props.theme)};
173
+ }
174
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
175
+ componentType: 'border',
176
+ defaultVariant: 'primary'
177
+ }, props.theme)};
178
+
179
+ padding: ${props => props.$size === Size.Large ? '12px 16px' : props.$size === Size.Small ? '4px 8px' : '6px 12px'};
180
+ }
181
+
182
+ &:hover > ${TextButtonContentContainer},
183
+ &.hover-state > ${TextButtonContentContainer} {
184
+ color: ${props => COLORS.generateToken({
185
+ componentType: 'text',
186
+ state: 'hover',
187
+ defaultVariant: 'primary'
188
+ }, props.theme)};
189
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
190
+ componentType: 'border',
191
+ state: 'hover',
192
+ defaultVariant: 'primary'
193
+ }, props.theme)};
194
+
195
+ background-color: transparent;
196
+ div {
197
+ svg {
198
+ path {
199
+ fill: ${props => COLORS.generateToken({
200
+ componentType: 'text',
201
+ state: 'hover',
202
+ defaultVariant: 'primary'
203
+ }, props.theme)};
204
+ }
205
+ }
206
+ }
207
+ }
208
+ &:active > ${TextButtonContentContainer},
209
+ &.active-state > ${TextButtonContentContainer} {
210
+ color: ${props => COLORS.generateToken({
211
+ componentType: 'text',
212
+ state: 'active',
213
+ defaultVariant: 'primary'
214
+ }, props.theme)};
215
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
216
+ componentType: 'border',
217
+ state: 'active',
218
+ defaultVariant: 'primary'
219
+ }, props.theme)};
220
+
221
+ background-color: transparent;
222
+ div {
223
+ svg {
224
+ path {
225
+ fill: ${props => COLORS.generateToken({
226
+ componentType: 'text',
227
+ state: 'hover',
228
+ defaultVariant: 'primary'
229
+ }, props.theme)};
230
+ }
231
+ }
232
+ }
233
+ }
234
+
235
+ &:disabled > ${TextButtonContentContainer},
236
+ &.disabled-state > ${TextButtonContentContainer} {
237
+ background-color: transparent;
238
+ color: ${props => COLORS.generateToken({
239
+ componentType: 'text',
240
+ state: 'disabled'
241
+ }, props.theme)};
242
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
243
+ componentType: 'border',
244
+ state: 'disabled'
245
+ }, props.theme)};
246
+ }
247
+ `;
248
+ export const TextButtonInvertedSecondaryStyled = styled(TextButtonPrimaryStyled)`
249
+ ${TextButtonContentContainer} {
250
+ color: ${props => COLORS.generateToken({
251
+ componentType: 'text',
252
+ defaultVariant: 'inverse'
253
+ }, props.theme)};
254
+ background-color: transparent;
255
+ div svg path {
256
+ fill: ${props => COLORS.generateToken({
257
+ componentType: 'icon',
258
+ defaultVariant: 'inverse'
259
+ }, props.theme)};
260
+ }
261
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
262
+ componentType: 'border',
263
+ defaultVariant: 'inverse'
264
+ }, props.theme)};
265
+
266
+ padding: ${props => props.$size === Size.Large ? '12px 16px' : props.$size === Size.Small ? '4px 8px' : '6px 12px'};
267
+ }
268
+
269
+ &:hover > ${TextButtonContentContainer},
270
+ &.hover-state > ${TextButtonContentContainer} {
271
+ color: ${props => COLORS.generateToken({
272
+ componentType: 'text',
273
+ state: 'hover',
274
+ defaultVariant: 'inverse'
275
+ }, props.theme)};
276
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
277
+ componentType: 'border',
278
+ state: 'hover',
279
+ defaultVariant: 'inverse'
280
+ }, props.theme)};
281
+
282
+ background-color: transparent;
283
+ div {
284
+ svg {
285
+ path {
286
+ fill: ${props => COLORS.generateToken({
287
+ componentType: 'text',
288
+ state: 'hover',
289
+ defaultVariant: 'inverse'
290
+ }, props.theme)};
291
+ }
292
+ }
293
+ }
294
+ }
295
+ &:active > ${TextButtonContentContainer},
296
+ &.active-state > ${TextButtonContentContainer} {
297
+ color: ${props => COLORS.generateToken({
298
+ componentType: 'text',
299
+ state: 'active',
300
+ defaultVariant: 'inverse'
301
+ }, props.theme)};
302
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
303
+ componentType: 'border',
304
+ state: 'active',
305
+ defaultVariant: 'inverse'
306
+ }, props.theme)};
307
+
308
+ background-color: transparent;
309
+ div {
310
+ svg {
311
+ path {
312
+ fill: ${props => COLORS.generateToken({
313
+ componentType: 'text',
314
+ state: 'hover',
315
+ defaultVariant: 'inverse'
316
+ }, props.theme)};
317
+ }
318
+ }
319
+ }
320
+ }
321
+
322
+ &:disabled > ${TextButtonContentContainer},
323
+ &.disabled-state > ${TextButtonContentContainer} {
324
+ background-color: transparent;
325
+ color: ${props => COLORS.generateToken({
326
+ componentType: 'text',
327
+ state: 'disabled',
328
+ defaultVariant: 'inverse'
329
+ }, props.theme)};
330
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
331
+ componentType: 'border',
332
+ state: 'disabled',
333
+ defaultVariant: 'inverse'
334
+ }, props.theme)};
335
+ }
336
+ `;
337
+ export const TextButtonTertiaryStyled = styled(TextButtonPrimaryStyled)`
338
+ ${TextButtonContentContainer} {
339
+ color: ${props => COLORS.generateToken({
340
+ componentType: 'text',
341
+ defaultVariant: 'primary'
342
+ }, props.theme)};
343
+ background-color: transparent;
344
+
345
+ div svg path {
346
+ fill: ${props => COLORS.generateToken({
347
+ componentType: 'text',
348
+ defaultVariant: 'primary'
349
+ }, props.theme)};
350
+ }
351
+
352
+ padding: ${props => props.$size === Size.Large ? '12px 16px' : props.$size === Size.Small ? '4px 8px' : '6px 12px'};
353
+ }
354
+
355
+ &:hover > ${TextButtonContentContainer},
356
+ &.hover-state > ${TextButtonContentContainer} {
357
+ background-color: ${props => COLORS.generateToken({
358
+ componentType: 'bg-surface',
359
+ state: 'hover'
360
+ }, props.theme)};
361
+ color: ${props => COLORS.generateToken({
362
+ componentType: 'text',
363
+ defaultVariant: 'primary'
364
+ }, props.theme)};
365
+
366
+ div {
367
+ svg {
368
+ path {
369
+ fill: ${props => COLORS.generateToken({
370
+ componentType: 'text',
371
+ defaultVariant: 'primary'
372
+ }, props.theme)};
373
+ }
374
+ }
375
+ }
376
+ }
377
+ &:active > ${TextButtonContentContainer},
378
+ &.active-state > ${TextButtonContentContainer} {
379
+ background-color: ${props => COLORS.generateToken({
380
+ componentType: 'bg-surface',
381
+ state: 'active'
382
+ }, props.theme)};
383
+ color: ${props => COLORS.generateToken({
384
+ componentType: 'text',
385
+ defaultVariant: 'primary'
386
+ }, props.theme)};
387
+
388
+ div {
389
+ svg {
390
+ path {
391
+ fill: ${props => COLORS.generateToken({
392
+ componentType: 'text',
393
+ defaultVariant: 'primary'
394
+ }, props.theme)};
395
+ }
396
+ }
397
+ }
398
+ }
399
+
400
+ &:disabled > ${TextButtonContentContainer},
401
+ &.disabled-state > ${TextButtonContentContainer} {
402
+ background-color: transparent !important;
403
+ color: ${props => COLORS.generateToken({
404
+ componentType: 'text',
405
+ isOnFill: true,
406
+ state: 'disabled'
407
+ }, props.theme)};
408
+ border-color: transparent !important;
409
+ }
410
+ `;
411
+ export const TextButtonPositiveStyled = styled(TextButtonPrimaryStyled)`
412
+ ${TextButtonContentContainer} {
413
+ color: white;
414
+ background-color: ${props => COLORS.getColor('positive_500', props.theme)};
415
+ }
416
+ &:hover > ${TextButtonContentContainer},
417
+ &.hover-state > ${TextButtonContentContainer} {
418
+ background-color: ${props => COLORS.getColor('positive_700', props.theme)};
419
+ }
420
+ &:active > ${TextButtonContentContainer},
421
+ &.active-state > ${TextButtonContentContainer} {
422
+ background-color: ${props => COLORS.getColor('positive_800', props.theme)};
423
+ }
424
+
425
+ &:disabled > ${TextButtonContentContainer},
426
+ &.disabled-state > ${TextButtonContentContainer} {
427
+ background-color: ${props => COLORS.getColor('neutral_100', props.theme)};
428
+ color: ${props => COLORS.getColor('neutral_300', props.theme)};
429
+ }
430
+ `;
431
+ export const TextButtonDestructiveStyled = styled(TextButtonPrimaryStyled)`
432
+ ${TextButtonContentContainer} {
433
+ color: white;
434
+ background-color: ${props => COLORS.generateToken({
435
+ componentType: 'bg-fill',
436
+ defaultVariant: 'critical'
437
+ }, props.theme)};
438
+ }
439
+ &:hover > ${TextButtonContentContainer},
440
+ &.hover-state > ${TextButtonContentContainer} {
441
+ background-color: ${props => COLORS.generateToken({
442
+ componentType: 'bg-fill',
443
+ state: 'hover',
444
+ defaultVariant: 'critical'
445
+ }, props.theme)};
446
+ }
447
+ &:active > ${TextButtonContentContainer},
448
+ &.active-state > ${TextButtonContentContainer} {
449
+ background-color: ${props => COLORS.generateToken({
450
+ componentType: 'bg-fill',
451
+ state: 'active',
452
+ defaultVariant: 'critical'
453
+ }, props.theme)};
454
+ }
455
+
456
+ &:disabled > ${TextButtonContentContainer},
457
+ &.disabled-state > ${TextButtonContentContainer} {
458
+ background-color: ${props => COLORS.generateToken({
459
+ componentType: 'bg-fill',
460
+ state: 'disabled'
461
+ }, props.theme)};
462
+ color: ${props => COLORS.generateToken({
463
+ componentType: 'text',
464
+ isOnFill: true,
465
+ state: 'disabled'
466
+ }, props.theme)};
467
+ }
468
+ `;
469
+ export const TextButtonSecondaryDestructiveStyled = styled(TextButtonPrimaryStyled)`
470
+ ${TextButtonContentContainer} {
471
+ color: ${props => COLORS.generateToken({
472
+ componentType: 'text',
473
+ defaultVariant: 'critical'
474
+ }, props.theme)};
475
+ background-color: transparent;
476
+ div svg path {
477
+ fill: ${props => COLORS.generateToken({
478
+ componentType: 'icon',
479
+ defaultVariant: 'critical'
480
+ }, props.theme)};
481
+ }
482
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
483
+ componentType: 'border',
484
+ defaultVariant: 'critical'
485
+ }, props.theme)};
486
+
487
+ padding: ${props => props.$size === Size.Large ? '12px 16px' : props.$size === Size.Small ? '4px 8px' : '6px 12px'};
488
+ }
489
+
490
+ &:hover > ${TextButtonContentContainer},
491
+ &.hover-state > ${TextButtonContentContainer} {
492
+ color: ${props => COLORS.generateToken({
493
+ componentType: 'text',
494
+ state: 'hover',
495
+ defaultVariant: 'critical'
496
+ }, props.theme)};
497
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
498
+ componentType: 'border',
499
+ state: 'hover',
500
+ defaultVariant: 'critical'
501
+ }, props.theme)};
502
+
503
+ background-color: transparent;
504
+ div {
505
+ svg {
506
+ path {
507
+ fill: ${props => COLORS.generateToken({
508
+ componentType: 'text',
509
+ state: 'hover',
510
+ defaultVariant: 'critical'
511
+ }, props.theme)};
512
+ }
513
+ }
514
+ }
515
+ }
516
+ &:active > ${TextButtonContentContainer},
517
+ &.active-state > ${TextButtonContentContainer} {
518
+ color: ${props => COLORS.generateToken({
519
+ componentType: 'text',
520
+ state: 'active',
521
+ defaultVariant: 'critical'
522
+ }, props.theme)};
523
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
524
+ componentType: 'border',
525
+ state: 'active',
526
+ defaultVariant: 'critical'
527
+ }, props.theme)};
528
+
529
+ background-color: transparent;
530
+ div {
531
+ svg {
532
+ path {
533
+ fill: ${props => COLORS.generateToken({
534
+ componentType: 'text',
535
+ state: 'hover',
536
+ defaultVariant: 'critical'
537
+ }, props.theme)};
538
+ }
539
+ }
540
+ }
541
+ }
542
+
543
+ &:disabled > ${TextButtonContentContainer},
544
+ &.disabled-state > ${TextButtonContentContainer} {
545
+ background-color: transparent;
546
+ color: ${props => COLORS.generateToken({
547
+ componentType: 'text',
548
+ state: 'disabled'
549
+ }, props.theme)};
550
+ box-shadow: inset 0 0 0 2px ${props => COLORS.generateToken({
551
+ componentType: 'border',
552
+ state: 'disabled'
553
+ }, props.theme)};
554
+ }
555
+ `;
556
+ /**
557
+ * TextButton component
558
+ */
559
+ const TextButton = /*#__PURE__*/React.forwardRef((_ref, ref) => {
560
+ let {
561
+ children = '',
562
+ variant = 'primary',
563
+ type = 'button',
564
+ size = Size.Medium,
565
+ invertFocus,
566
+ width = 'auto',
567
+ testId,
568
+ disabled,
569
+ flatEdge,
570
+ icon,
571
+ iconPosition = 'left'
572
+ } = _ref,
573
+ props = _objectWithoutProperties(_ref, _excluded);
574
+ // Let's filter out properties that we don't need to render.
575
+ const {
576
+ loading
577
+ } = props,
578
+ renderProps = _objectWithoutProperties(props, _excluded2);
579
+ const theme = useTheme();
580
+ const renderIcon = () => /*#__PURE__*/_jsx(_Fragment, {
581
+ children: /*#__PURE__*/_jsx("span", {
582
+ className: (children ? 'extramargin ' : '') + (loading ? 'icon loading' : 'icon'),
583
+ children: icon
584
+ })
585
+ });
586
+ const renderContent = () => /*#__PURE__*/_jsxs(_Fragment, {
587
+ children: [icon && iconPosition == 'left' && renderIcon(), children && /*#__PURE__*/_jsx("span", {
588
+ className: loading ? 'label loading' : 'label',
589
+ children: children
590
+ }), icon && iconPosition == 'right' && renderIcon(), loading && /*#__PURE__*/_jsx(LoadingIndicator, {})]
591
+ });
592
+ let TextButtonStyled = TextButtonPrimaryStyled;
593
+ switch (variant) {
594
+ case 'secondary':
595
+ TextButtonStyled = TextButtonSecondaryStyled;
596
+ break;
597
+ case 'tertiary':
598
+ TextButtonStyled = TextButtonTertiaryStyled;
599
+ break;
600
+ case 'positive':
601
+ TextButtonStyled = TextButtonPositiveStyled;
602
+ break;
603
+ case 'destructive':
604
+ TextButtonStyled = TextButtonDestructiveStyled;
605
+ break;
606
+ case 'secondaryDestructive':
607
+ TextButtonStyled = TextButtonSecondaryDestructiveStyled;
608
+ break;
609
+ case 'secondaryInverse':
610
+ TextButtonStyled = TextButtonInvertedSecondaryStyled;
611
+ break;
612
+ }
613
+ return /*#__PURE__*/_jsx(TextButtonStyled, _objectSpread(_objectSpread({}, renderProps), {}, {
614
+ $size: size,
615
+ $invertFocus: invertFocus,
616
+ ref: ref,
617
+ disabled: disabled,
618
+ $iconOnly: !children,
619
+ type: type,
620
+ $flatEdge: flatEdge,
621
+ $width: width,
622
+ "data-testid": testId,
623
+ className: props.loading ? 'loading-state ' + props.className : ' ' + props.className,
624
+ onMouseDown: defaultOnMouseDownHandler,
625
+ children: /*#__PURE__*/_jsx(TextButtonContentContainer, {
626
+ children: renderContent()
627
+ })
628
+ }));
629
+ });
630
+ TextButton.propTypes = {
631
+ variant: _pt.oneOf(['primary', 'secondary', 'tertiary', 'positive', 'destructive', 'secondaryDestructive', 'secondaryInverse']),
632
+ invertFocus: _pt.bool,
633
+ width: _pt.oneOfType([_pt.oneOf(['auto']), _pt.string]),
634
+ loading: _pt.bool,
635
+ testId: _pt.string,
636
+ icon: _pt.node,
637
+ iconPosition: _pt.oneOf(['left', 'right'])
638
+ };
639
+ export default TextButton;
640
+ //# sourceMappingURL=TextButton.js.map