@darajs/ui-components 0.4.8

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 (278) hide show
  1. package/LICENSE +201 -0
  2. package/dist/accordion/accordion-item.d.ts +24 -0
  3. package/dist/accordion/accordion-item.d.ts.map +1 -0
  4. package/dist/accordion/accordion-item.js +92 -0
  5. package/dist/accordion/accordion-item.js.map +1 -0
  6. package/dist/accordion/accordion.d.ts +32 -0
  7. package/dist/accordion/accordion.d.ts.map +1 -0
  8. package/dist/accordion/accordion.js +87 -0
  9. package/dist/accordion/accordion.js.map +1 -0
  10. package/dist/badge/badge.d.ts +20 -0
  11. package/dist/badge/badge.d.ts.map +1 -0
  12. package/dist/badge/badge.js +42 -0
  13. package/dist/badge/badge.js.map +1 -0
  14. package/dist/button/button.d.ts +35 -0
  15. package/dist/button/button.d.ts.map +1 -0
  16. package/dist/button/button.js +169 -0
  17. package/dist/button/button.js.map +1 -0
  18. package/dist/button-bar/button-bar.d.ts +19 -0
  19. package/dist/button-bar/button-bar.d.ts.map +1 -0
  20. package/dist/button-bar/button-bar.js +124 -0
  21. package/dist/button-bar/button-bar.js.map +1 -0
  22. package/dist/carousel/carousel.d.ts +23 -0
  23. package/dist/carousel/carousel.d.ts.map +1 -0
  24. package/dist/carousel/carousel.js +178 -0
  25. package/dist/carousel/carousel.js.map +1 -0
  26. package/dist/chat/chat.d.ts +28 -0
  27. package/dist/chat/chat.d.ts.map +1 -0
  28. package/dist/chat/chat.js +182 -0
  29. package/dist/chat/chat.js.map +1 -0
  30. package/dist/chat/message.d.ts +28 -0
  31. package/dist/chat/message.d.ts.map +1 -0
  32. package/dist/chat/message.js +220 -0
  33. package/dist/chat/message.js.map +1 -0
  34. package/dist/checkbox/checkbox-group.d.ts +35 -0
  35. package/dist/checkbox/checkbox-group.d.ts.map +1 -0
  36. package/dist/checkbox/checkbox-group.js +116 -0
  37. package/dist/checkbox/checkbox-group.js.map +1 -0
  38. package/dist/checkbox/checkbox.d.ts +27 -0
  39. package/dist/checkbox/checkbox.d.ts.map +1 -0
  40. package/dist/checkbox/checkbox.js +164 -0
  41. package/dist/checkbox/checkbox.js.map +1 -0
  42. package/dist/checkbox/tri-state-checkbox.d.ts +22 -0
  43. package/dist/checkbox/tri-state-checkbox.d.ts.map +1 -0
  44. package/dist/checkbox/tri-state-checkbox.js +87 -0
  45. package/dist/checkbox/tri-state-checkbox.js.map +1 -0
  46. package/dist/code-viewer/code-viewer.d.ts +31 -0
  47. package/dist/code-viewer/code-viewer.d.ts.map +1 -0
  48. package/dist/code-viewer/code-viewer.js +115 -0
  49. package/dist/code-viewer/code-viewer.js.map +1 -0
  50. package/dist/combo-box/combo-box.d.ts +39 -0
  51. package/dist/combo-box/combo-box.d.ts.map +1 -0
  52. package/dist/combo-box/combo-box.js +176 -0
  53. package/dist/combo-box/combo-box.js.map +1 -0
  54. package/dist/component-select-list/component-select-list.d.ts +27 -0
  55. package/dist/component-select-list/component-select-list.d.ts.map +1 -0
  56. package/dist/component-select-list/component-select-list.js +131 -0
  57. package/dist/component-select-list/component-select-list.js.map +1 -0
  58. package/dist/constants.d.ts +33 -0
  59. package/dist/constants.d.ts.map +1 -0
  60. package/dist/constants.js +47 -0
  61. package/dist/constants.js.map +1 -0
  62. package/dist/context-menu/context-menu.d.ts +24 -0
  63. package/dist/context-menu/context-menu.d.ts.map +1 -0
  64. package/dist/context-menu/context-menu.js +116 -0
  65. package/dist/context-menu/context-menu.js.map +1 -0
  66. package/dist/datepicker/datepicker-select.d.ts +48 -0
  67. package/dist/datepicker/datepicker-select.d.ts.map +1 -0
  68. package/dist/datepicker/datepicker-select.js +219 -0
  69. package/dist/datepicker/datepicker-select.js.map +1 -0
  70. package/dist/datepicker/datepicker.d.ts +56 -0
  71. package/dist/datepicker/datepicker.d.ts.map +1 -0
  72. package/dist/datepicker/datepicker.js +669 -0
  73. package/dist/datepicker/datepicker.js.map +1 -0
  74. package/dist/dropzone/dropzone.d.ts +21 -0
  75. package/dist/dropzone/dropzone.d.ts.map +1 -0
  76. package/dist/dropzone/dropzone.js +80 -0
  77. package/dist/dropzone/dropzone.js.map +1 -0
  78. package/dist/error-boundary/error-boundary.d.ts +33 -0
  79. package/dist/error-boundary/error-boundary.d.ts.map +1 -0
  80. package/dist/error-boundary/error-boundary.js +72 -0
  81. package/dist/error-boundary/error-boundary.js.map +1 -0
  82. package/dist/filter/categorical-filter.d.ts +26 -0
  83. package/dist/filter/categorical-filter.d.ts.map +1 -0
  84. package/dist/filter/categorical-filter.js +153 -0
  85. package/dist/filter/categorical-filter.js.map +1 -0
  86. package/dist/filter/datetime-filter.d.ts +28 -0
  87. package/dist/filter/datetime-filter.d.ts.map +1 -0
  88. package/dist/filter/datetime-filter.js +174 -0
  89. package/dist/filter/datetime-filter.js.map +1 -0
  90. package/dist/filter/numeric-filter.d.ts +24 -0
  91. package/dist/filter/numeric-filter.d.ts.map +1 -0
  92. package/dist/filter/numeric-filter.js +148 -0
  93. package/dist/filter/numeric-filter.js.map +1 -0
  94. package/dist/hierarchy-selector/hierarchy-selector.d.ts +31 -0
  95. package/dist/hierarchy-selector/hierarchy-selector.d.ts.map +1 -0
  96. package/dist/hierarchy-selector/hierarchy-selector.js +65 -0
  97. package/dist/hierarchy-selector/hierarchy-selector.js.map +1 -0
  98. package/dist/hierarchy-selector/node/branch.d.ts +47 -0
  99. package/dist/hierarchy-selector/node/branch.d.ts.map +1 -0
  100. package/dist/hierarchy-selector/node/branch.js +132 -0
  101. package/dist/hierarchy-selector/node/branch.js.map +1 -0
  102. package/dist/index.d.ts +57 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +55 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/input/input.d.ts +44 -0
  107. package/dist/input/input.d.ts.map +1 -0
  108. package/dist/input/input.js +91 -0
  109. package/dist/input/input.js.map +1 -0
  110. package/dist/jest-setup.d.ts +18 -0
  111. package/dist/jest-setup.d.ts.map +1 -0
  112. package/dist/jest-setup.js +18 -0
  113. package/dist/jest-setup.js.map +1 -0
  114. package/dist/markdown/markdown.d.ts +18 -0
  115. package/dist/markdown/markdown.d.ts.map +1 -0
  116. package/dist/markdown/markdown.js +356 -0
  117. package/dist/markdown/markdown.js.map +1 -0
  118. package/dist/modal/modal.d.ts +37 -0
  119. package/dist/modal/modal.d.ts.map +1 -0
  120. package/dist/modal/modal.js +121 -0
  121. package/dist/modal/modal.js.map +1 -0
  122. package/dist/multiselect/multiselect.d.ts +31 -0
  123. package/dist/multiselect/multiselect.d.ts.map +1 -0
  124. package/dist/multiselect/multiselect.js +231 -0
  125. package/dist/multiselect/multiselect.js.map +1 -0
  126. package/dist/numeric-input/input-stepper.d.ts +33 -0
  127. package/dist/numeric-input/input-stepper.d.ts.map +1 -0
  128. package/dist/numeric-input/input-stepper.js +54 -0
  129. package/dist/numeric-input/input-stepper.js.map +1 -0
  130. package/dist/numeric-input/numeric-input.d.ts +42 -0
  131. package/dist/numeric-input/numeric-input.d.ts.map +1 -0
  132. package/dist/numeric-input/numeric-input.js +234 -0
  133. package/dist/numeric-input/numeric-input.js.map +1 -0
  134. package/dist/progress-bar/progress-bar.d.ts +23 -0
  135. package/dist/progress-bar/progress-bar.d.ts.map +1 -0
  136. package/dist/progress-bar/progress-bar.js +90 -0
  137. package/dist/progress-bar/progress-bar.js.map +1 -0
  138. package/dist/radio/radio-group.d.ts +19 -0
  139. package/dist/radio/radio-group.d.ts.map +1 -0
  140. package/dist/radio/radio-group.js +160 -0
  141. package/dist/radio/radio-group.js.map +1 -0
  142. package/dist/search-bar/search-bar.d.ts +34 -0
  143. package/dist/search-bar/search-bar.d.ts.map +1 -0
  144. package/dist/search-bar/search-bar.js +39 -0
  145. package/dist/search-bar/search-bar.js.map +1 -0
  146. package/dist/sectioned-list/sectioned-list.d.ts +29 -0
  147. package/dist/sectioned-list/sectioned-list.d.ts.map +1 -0
  148. package/dist/sectioned-list/sectioned-list.js +205 -0
  149. package/dist/sectioned-list/sectioned-list.js.map +1 -0
  150. package/dist/select/select.d.ts +54 -0
  151. package/dist/select/select.d.ts.map +1 -0
  152. package/dist/select/select.js +143 -0
  153. package/dist/select/select.js.map +1 -0
  154. package/dist/shared/chevron-button.d.ts +13 -0
  155. package/dist/shared/chevron-button.d.ts.map +1 -0
  156. package/dist/shared/chevron-button.js +35 -0
  157. package/dist/shared/chevron-button.js.map +1 -0
  158. package/dist/shared/dropdown-list.d.ts +34 -0
  159. package/dist/shared/dropdown-list.d.ts.map +1 -0
  160. package/dist/shared/dropdown-list.js +33 -0
  161. package/dist/shared/dropdown-list.js.map +1 -0
  162. package/dist/shared/list-item.d.ts +35 -0
  163. package/dist/shared/list-item.d.ts.map +1 -0
  164. package/dist/shared/list-item.js +69 -0
  165. package/dist/shared/list-item.js.map +1 -0
  166. package/dist/slider/slider-inputs.d.ts +36 -0
  167. package/dist/slider/slider-inputs.d.ts.map +1 -0
  168. package/dist/slider/slider-inputs.js +88 -0
  169. package/dist/slider/slider-inputs.js.map +1 -0
  170. package/dist/slider/slider.d.ts +53 -0
  171. package/dist/slider/slider.d.ts.map +1 -0
  172. package/dist/slider/slider.js +273 -0
  173. package/dist/slider/slider.js.map +1 -0
  174. package/dist/spinner/spinner.d.ts +19 -0
  175. package/dist/spinner/spinner.d.ts.map +1 -0
  176. package/dist/spinner/spinner.js +144 -0
  177. package/dist/spinner/spinner.js.map +1 -0
  178. package/dist/switch/sun-icon.d.ts +3 -0
  179. package/dist/switch/sun-icon.d.ts.map +1 -0
  180. package/dist/switch/sun-icon.js +24 -0
  181. package/dist/switch/sun-icon.js.map +1 -0
  182. package/dist/switch/switch.d.ts +16 -0
  183. package/dist/switch/switch.d.ts.map +1 -0
  184. package/dist/switch/switch.js +92 -0
  185. package/dist/switch/switch.js.map +1 -0
  186. package/dist/table/cells/action-cell.d.ts +34 -0
  187. package/dist/table/cells/action-cell.d.ts.map +1 -0
  188. package/dist/table/cells/action-cell.js +68 -0
  189. package/dist/table/cells/action-cell.js.map +1 -0
  190. package/dist/table/cells/datetime-cell.d.ts +12 -0
  191. package/dist/table/cells/datetime-cell.d.ts.map +1 -0
  192. package/dist/table/cells/datetime-cell.js +36 -0
  193. package/dist/table/cells/datetime-cell.js.map +1 -0
  194. package/dist/table/cells/edit-cell-utils.d.ts +32 -0
  195. package/dist/table/cells/edit-cell-utils.d.ts.map +1 -0
  196. package/dist/table/cells/edit-cell-utils.js +2 -0
  197. package/dist/table/cells/edit-cell-utils.js.map +1 -0
  198. package/dist/table/cells/edit-input-cell.d.ts +10 -0
  199. package/dist/table/cells/edit-input-cell.d.ts.map +1 -0
  200. package/dist/table/cells/edit-input-cell.js +61 -0
  201. package/dist/table/cells/edit-input-cell.js.map +1 -0
  202. package/dist/table/cells/edit-select-cell.d.ts +12 -0
  203. package/dist/table/cells/edit-select-cell.d.ts.map +1 -0
  204. package/dist/table/cells/edit-select-cell.js +55 -0
  205. package/dist/table/cells/edit-select-cell.js.map +1 -0
  206. package/dist/table/filters.d.ts +46 -0
  207. package/dist/table/filters.d.ts.map +1 -0
  208. package/dist/table/filters.js +226 -0
  209. package/dist/table/filters.js.map +1 -0
  210. package/dist/table/headers/select-header.d.ts +14 -0
  211. package/dist/table/headers/select-header.d.ts.map +1 -0
  212. package/dist/table/headers/select-header.js +41 -0
  213. package/dist/table/headers/select-header.js.map +1 -0
  214. package/dist/table/options-menu.d.ts +25 -0
  215. package/dist/table/options-menu.d.ts.map +1 -0
  216. package/dist/table/options-menu.js +123 -0
  217. package/dist/table/options-menu.js.map +1 -0
  218. package/dist/table/render-row.d.ts +25 -0
  219. package/dist/table/render-row.d.ts.map +1 -0
  220. package/dist/table/render-row.js +163 -0
  221. package/dist/table/render-row.js.map +1 -0
  222. package/dist/table/table.d.ts +95 -0
  223. package/dist/table/table.d.ts.map +1 -0
  224. package/dist/table/table.js +422 -0
  225. package/dist/table/table.js.map +1 -0
  226. package/dist/table/types.d.ts +30 -0
  227. package/dist/table/types.d.ts.map +1 -0
  228. package/dist/table/types.js +2 -0
  229. package/dist/table/types.js.map +1 -0
  230. package/dist/tabs/tabs.d.ts +22 -0
  231. package/dist/tabs/tabs.d.ts.map +1 -0
  232. package/dist/tabs/tabs.js +91 -0
  233. package/dist/tabs/tabs.js.map +1 -0
  234. package/dist/textarea/textarea.d.ts +47 -0
  235. package/dist/textarea/textarea.d.ts.map +1 -0
  236. package/dist/textarea/textarea.js +121 -0
  237. package/dist/textarea/textarea.js.map +1 -0
  238. package/dist/tooltip/tooltip.d.ts +48 -0
  239. package/dist/tooltip/tooltip.d.ts.map +1 -0
  240. package/dist/tooltip/tooltip.js +116 -0
  241. package/dist/tooltip/tooltip.js.map +1 -0
  242. package/dist/types.d.ts +94 -0
  243. package/dist/types.d.ts.map +1 -0
  244. package/dist/types.js +2 -0
  245. package/dist/types.js.map +1 -0
  246. package/dist/utils/chevron.d.ts +34 -0
  247. package/dist/utils/chevron.d.ts.map +1 -0
  248. package/dist/utils/chevron.js +38 -0
  249. package/dist/utils/chevron.js.map +1 -0
  250. package/dist/utils/index.d.ts +22 -0
  251. package/dist/utils/index.d.ts.map +1 -0
  252. package/dist/utils/index.js +22 -0
  253. package/dist/utils/index.js.map +1 -0
  254. package/dist/utils/label.d.ts +3 -0
  255. package/dist/utils/label.d.ts.map +1 -0
  256. package/dist/utils/label.js +24 -0
  257. package/dist/utils/label.js.map +1 -0
  258. package/dist/utils/list-styles.d.ts +8 -0
  259. package/dist/utils/list-styles.d.ts.map +1 -0
  260. package/dist/utils/list-styles.js +43 -0
  261. package/dist/utils/list-styles.js.map +1 -0
  262. package/dist/utils/match-width-to-reference.d.ts +24 -0
  263. package/dist/utils/match-width-to-reference.d.ts.map +1 -0
  264. package/dist/utils/match-width-to-reference.js +30 -0
  265. package/dist/utils/match-width-to-reference.js.map +1 -0
  266. package/dist/utils/syncKbdHighlightIdx.d.ts +23 -0
  267. package/dist/utils/syncKbdHighlightIdx.d.ts.map +1 -0
  268. package/dist/utils/syncKbdHighlightIdx.js +41 -0
  269. package/dist/utils/syncKbdHighlightIdx.js.map +1 -0
  270. package/dist/utils/use-infinite-loader.d.ts +32 -0
  271. package/dist/utils/use-infinite-loader.d.ts.map +1 -0
  272. package/dist/utils/use-infinite-loader.js +119 -0
  273. package/dist/utils/use-infinite-loader.js.map +1 -0
  274. package/dist/utils/use-on-click-outside.d.ts +3 -0
  275. package/dist/utils/use-on-click-outside.d.ts.map +1 -0
  276. package/dist/utils/use-on-click-outside.js +36 -0
  277. package/dist/utils/use-on-click-outside.js.map +1 -0
  278. package/package.json +106 -0
@@ -0,0 +1,169 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ /**
14
+ * Copyright 2023 Impulse Innovations Limited
15
+ *
16
+ *
17
+ * Licensed under the Apache License, Version 2.0 (the "License");
18
+ * you may not use this file except in compliance with the License.
19
+ * You may obtain a copy of the License at
20
+ *
21
+ * http://www.apache.org/licenses/LICENSE-2.0
22
+ *
23
+ * Unless required by applicable law or agreed to in writing, software
24
+ * distributed under the License is distributed on an "AS IS" BASIS,
25
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26
+ * See the License for the specific language governing permissions and
27
+ * limitations under the License.
28
+ */
29
+ import { transparentize } from 'polished';
30
+ import { forwardRef } from 'react';
31
+ import styled, { useTheme } from '@darajs/styled-components';
32
+ import Spinner from '../spinner/spinner';
33
+ export const BaseButton = styled.button `
34
+ cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
35
+ user-select: none;
36
+
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+
41
+ height: 2.5rem;
42
+ padding: ${(props) => (props.$hasAnchor ? 0 : '0 1rem')};
43
+ padding: 0 1rem;
44
+
45
+ font-size: 1rem;
46
+ font-weight: 600;
47
+
48
+ border: none;
49
+ border-radius: 0.25rem;
50
+ `;
51
+ /**
52
+ * Gets outline style for button
53
+ *
54
+ * @param buttonColor outline and text color for button
55
+ * @param disabled whether button is disabled
56
+ * @param theme the current theme being used by the app
57
+ */
58
+ function getOutlinedButtonStyle(buttonColor, disabled, theme) {
59
+ return `
60
+ color: ${disabled ? theme.colors.grey2 : buttonColor};
61
+
62
+ background-color: transparent;
63
+ border: 1px solid
64
+ ${disabled ? theme.colors.grey2 : buttonColor};
65
+
66
+ :hover:not(:disabled) {
67
+ background-color: ${theme.themeType === 'dark' ? transparentize(0.85, buttonColor) : transparentize(0.9, buttonColor)};
68
+ }
69
+
70
+ :active:not(:disabled) {
71
+ background-color: ${theme.themeType === 'dark' ? transparentize(0.7, buttonColor) : transparentize(0.8, buttonColor)};
72
+ }
73
+ `;
74
+ }
75
+ /**
76
+ * Gets style for default button
77
+ *
78
+ * @param buttonColor background color for button
79
+ * @param hoverColor background color when hovering
80
+ * @param clickColor background color when clicking
81
+ * @param disabled whether button is disabled
82
+ * @param theme the current theme being used by the app
83
+ * @param textColor optional text color to use instead of the default
84
+ */
85
+ function getFilledButtonStyle(buttonColor, hoverColor, clickColor, disabled, theme, textColor) {
86
+ const color = textColor !== null && textColor !== void 0 ? textColor : theme.colors.blue1;
87
+ return `
88
+ color: ${color};
89
+
90
+ background-color: ${disabled ? theme.colors.grey2 : buttonColor};
91
+
92
+ :hover:not(:disabled) {
93
+ background-color: ${hoverColor};
94
+ }
95
+
96
+ :active:not(:disabled) {
97
+ background-color: ${clickColor};
98
+ }
99
+ `;
100
+ }
101
+ const PrimaryButton = styled(BaseButton) `
102
+ ${(props) => props.outline ?
103
+ getOutlinedButtonStyle(props.theme.colors.primary, props.disabled, props.theme)
104
+ : getFilledButtonStyle(props.theme.colors.primary, props.theme.colors.primaryHover, props.theme.colors.primaryDown, props.disabled, props.theme)}
105
+ `;
106
+ const SecondaryButton = styled(BaseButton) `
107
+ ${(props) => props.outline ?
108
+ getOutlinedButtonStyle(props.theme.colors.secondary, props.disabled, props.theme)
109
+ : getFilledButtonStyle(props.theme.colors.secondary, props.theme.colors.secondaryHover, props.theme.colors.secondaryDown, props.disabled, props.theme)}
110
+ `;
111
+ const GhostButton = styled(BaseButton) `
112
+ ${(props) => getFilledButtonStyle('transparent', props.theme.colors.grey2, props.theme.colors.grey2, props.disabled, props.theme, props.theme.colors.grey4)}
113
+ `;
114
+ const ErrorButton = styled(BaseButton) `
115
+ ${(props) => props.outline ?
116
+ getOutlinedButtonStyle(props.theme.colors.error, props.disabled, props.theme)
117
+ : getFilledButtonStyle(props.theme.colors.error, props.theme.colors.errorHover, props.theme.colors.errorDown, props.disabled, props.theme)}
118
+ `;
119
+ const PlainButton = styled(BaseButton) `
120
+ ${(props) => props.outline ?
121
+ getOutlinedButtonStyle(props.theme.colors.grey6, props.disabled, props.theme)
122
+ : getFilledButtonStyle('transparent', props.theme.colors.grey1, props.theme.colors.grey2, props.disabled, props.theme, props.theme.colors.grey6)}
123
+ `;
124
+ const AnchorWrapper = styled.a `
125
+ display: flex;
126
+ align-items: center;
127
+ justify-content: center;
128
+
129
+ width: 100%;
130
+ height: 100%;
131
+ padding: 0 1rem;
132
+
133
+ color: inherit;
134
+
135
+ :hover,
136
+ :active {
137
+ color: inherit;
138
+ text-decoration: none;
139
+ }
140
+ `;
141
+ const StyledLoading = styled(Spinner) `
142
+ padding: 1rem 2rem;
143
+ `;
144
+ /** Map of styling -> Button subclass */
145
+ const stylingMap = {
146
+ error: ErrorButton,
147
+ ghost: GhostButton,
148
+ plain: PlainButton,
149
+ primary: PrimaryButton,
150
+ secondary: SecondaryButton,
151
+ };
152
+ /**
153
+ * A simple button component, accepts a styling prop to switch between the available styles: primary, secondary,
154
+ * error, success, ghost.
155
+ *
156
+ * @param {ButtonProps} props - the component props
157
+ */
158
+ function Button(_a, ref) {
159
+ var { autoFocus, children, className, disabled, download, href, loading, id, onClick, outline = false, style, styling = 'primary', type = 'button' } = _a, props = __rest(_a, ["autoFocus", "children", "className", "disabled", "download", "href", "loading", "id", "onClick", "outline", "style", "styling", "type"]);
160
+ const currentTheme = useTheme();
161
+ const Component = stylingMap[styling];
162
+ const content = loading ? _jsx(StyledLoading, { color: outline ? currentTheme.colors.grey2 : currentTheme.colors.blue1 }) : children;
163
+ const wrappedContent = href ?
164
+ _jsx(AnchorWrapper, { download: download, href: href, children: content })
165
+ : content;
166
+ return (_jsx(Component, Object.assign({ "$hasAnchor": !!href, autoFocus: autoFocus, className: className, disabled: disabled || loading, id: id, onClick: onClick, outline: outline, style: style, type: type }, props, { ref: ref, children: wrappedContent })));
167
+ }
168
+ export default forwardRef(Button);
169
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/button/button.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { InteractiveComponentProps, Item } from '../types';
2
+ export interface ButtonProps extends InteractiveComponentProps<Item> {
3
+ /** Component id */
4
+ id?: string;
5
+ /** The items to choose from */
6
+ items: Array<Item>;
7
+ /** Optional onClick handler, will be called when the button is pressed */
8
+ onSelect?: (option: Item) => void | Promise<void>;
9
+ /** The style of the button, accepts: primary, secondary. Defaults to primary */
10
+ styling?: 'primary' | 'secondary';
11
+ }
12
+ /**
13
+ * A button bar component that has radio group type behavior for selecting from different options
14
+ *
15
+ * @param {ButtonProps} props - the component props
16
+ */
17
+ declare function ButtonBar({ className, disabled, id, value, initialValue, items, onSelect, style, styling, }: ButtonProps): JSX.Element;
18
+ export default ButtonBar;
19
+ //# sourceMappingURL=button-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-bar.d.ts","sourceRoot":"","sources":["../../src/button-bar/button-bar.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAmG3D,MAAM,WAAW,WAAY,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IAChE,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,gFAAgF;IAChF,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACrC;AAED;;;;GAIG;AACH,iBAAS,SAAS,CAAC,EACf,SAAS,EACT,QAAQ,EACR,EAAE,EACF,KAAK,EACL,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAmB,GACtB,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAuC3B;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright 2023 Impulse Innovations Limited
4
+ *
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import { transparentize } from 'polished';
19
+ import { useCallback, useEffect, useState } from 'react';
20
+ import styled from '@darajs/styled-components';
21
+ import { BaseButton } from '../button/button';
22
+ const ButtonBarWrapper = styled.div `
23
+ overflow: hidden;
24
+ display: flex;
25
+ flex: 1 1 auto;
26
+
27
+ height: 2.5rem;
28
+
29
+ border: 1px solid ${(props) => { var _a; return (props.disabled ? props.theme.colors.grey2 : (_a = props.theme.colors) === null || _a === void 0 ? void 0 : _a[props.styling]); }};
30
+ border-radius: 0.25rem;
31
+
32
+ button:not(:last-child) {
33
+ border-right: 1px solid
34
+ ${(props) => { var _a; return (props.disabled ? props.theme.colors.grey2 : (_a = props.theme.colors) === null || _a === void 0 ? void 0 : _a[props.styling]); }};
35
+ }
36
+ `;
37
+ // Prevents the enabled prop being added to the dom element
38
+ const shouldForwardProp = (prop) => !['selected'].includes(prop);
39
+ /**
40
+ * Gets style for default button
41
+ *
42
+ * @param buttonColor background color for button
43
+ * @param disabled whether button is disabled
44
+ * @param theme the current theme being used by the app
45
+ */
46
+ function getButtonStyle(buttonColor, disabled, selected, theme) {
47
+ let color = buttonColor;
48
+ let backgroundColor = 'transparent';
49
+ if (selected) {
50
+ color = theme.colors.background;
51
+ backgroundColor = buttonColor;
52
+ }
53
+ if (disabled) {
54
+ color = theme.colors.grey2;
55
+ backgroundColor = theme.colors.blue1;
56
+ }
57
+ if (disabled && selected) {
58
+ color = theme.colors.blue1;
59
+ backgroundColor = theme.colors.grey2;
60
+ }
61
+ return `
62
+ flex: 1 1 auto;
63
+
64
+ margin: 0px;
65
+
66
+ color: ${color};
67
+
68
+ background-color: ${backgroundColor};
69
+ border-radius: 0px;
70
+ height: 100%;
71
+
72
+ ${!selected &&
73
+ (theme.themeType === 'dark' ?
74
+ `
75
+ :hover:not(:disabled) {
76
+ background-color: ${transparentize(0.8, buttonColor)};
77
+ }
78
+
79
+
80
+ :active:not(:disabled) {
81
+ background-color: ${transparentize(0.6, buttonColor)};
82
+ }
83
+ `
84
+ : `
85
+ :hover:not(:disabled) {
86
+ background-color: ${transparentize(0.9, buttonColor)};
87
+ }
88
+
89
+
90
+ :active:not(:disabled) {
91
+ background-color: ${transparentize(0.8, buttonColor)};
92
+ }
93
+ `)}
94
+ `;
95
+ }
96
+ const PrimaryButton = styled(BaseButton).withConfig({ shouldForwardProp }) `
97
+ ${(props) => getButtonStyle(props.theme.colors.primary, props.disabled, props.selected, props.theme)}
98
+ `;
99
+ const SecondaryButton = styled(BaseButton).withConfig({ shouldForwardProp }) `
100
+ ${(props) => getButtonStyle(props.theme.colors.secondary, props.disabled, props.selected, props.theme)}
101
+ `;
102
+ /**
103
+ * A button bar component that has radio group type behavior for selecting from different options
104
+ *
105
+ * @param {ButtonProps} props - the component props
106
+ */
107
+ function ButtonBar({ className, disabled, id, value, initialValue, items, onSelect, style, styling = 'primary', }) {
108
+ const [selected, setSelected] = useState(value || initialValue || items[0]);
109
+ const ButtonComponent = styling === 'secondary' ? SecondaryButton : PrimaryButton;
110
+ const onClick = useCallback((item) => {
111
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(item);
112
+ if (value === undefined) {
113
+ setSelected(item);
114
+ }
115
+ }, [value, onSelect]);
116
+ // Update selection based on value prop changes
117
+ useEffect(() => {
118
+ setSelected(value || initialValue || items[0]);
119
+ // eslint-disable-next-line react-hooks/exhaustive-deps
120
+ }, [value]);
121
+ return (_jsx(ButtonBarWrapper, { className: className, disabled: disabled, style: style, styling: styling, children: items.map((item) => (_jsx(ButtonComponent, { "$hasAnchor": false, "aria-selected": selected.value === item.value, disabled: disabled, id: id, onClick: () => onClick(item), selected: selected.value === item.value, type: "button", children: item.label }, `option-${String(item.value)}`))) }));
122
+ }
123
+ export default ButtonBar;
124
+ //# sourceMappingURL=button-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-bar.js","sourceRoot":"","sources":["../../src/button-bar/button-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { CarouselItem } from '../types';
2
+ export interface CarouselProps {
3
+ /** Standard react className property */
4
+ className?: string;
5
+ /** The initial value of the carousel */
6
+ initialValue?: number;
7
+ /** The items to display, each should have a label and a value */
8
+ items: Array<CarouselItem>;
9
+ /** Callback function that is called when the value changes */
10
+ onChange?: (value: number) => void | Promise<void>;
11
+ /** Pass through of style property to the root element */
12
+ style?: React.CSSProperties;
13
+ /** The value of the carousel */
14
+ value?: number;
15
+ }
16
+ /**
17
+ * A simple carousel component that wraps a list of items to be displayed and animates the translation between them.
18
+ *
19
+ * @param {CarouselProps} props - the props of the component
20
+ */
21
+ declare function Carousel(props: CarouselProps): JSX.Element;
22
+ export default Carousel;
23
+ //# sourceMappingURL=carousel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/carousel/carousel.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkKxC,MAAM,WAAW,aAAa;IAC1B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,yDAAyD;IACzD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAuEnD;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,178 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright 2023 Impulse Innovations Limited
4
+ *
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import { useCallback, useEffect, useState } from 'react';
19
+ import styled from '@darajs/styled-components';
20
+ import { ChevronLeft, ChevronRight, Circle } from '@darajs/ui-icons';
21
+ const CarouselComponent = styled.div `
22
+ position: relative;
23
+
24
+ overflow: hidden;
25
+ display: flex;
26
+ flex: 1 1 auto;
27
+ flex-direction: column;
28
+ justify-content: center;
29
+
30
+ max-height: 100%;
31
+ padding: 0 0.5rem;
32
+ `;
33
+ const CarouselItemsContainer = styled.div `
34
+ display: inline-flex;
35
+ max-height: calc(100% - 1.625rem);
36
+ white-space: nowrap;
37
+ transition: transform 0.3s;
38
+ `;
39
+ const CarouselItemWrapper = styled.div `
40
+ display: flex;
41
+ flex: 1 0 auto;
42
+ justify-content: center;
43
+
44
+ width: 100%;
45
+ min-height: 5rem;
46
+ max-height: 100%;
47
+ `;
48
+ const CarouselIndicators = styled.div `
49
+ display: flex;
50
+ gap: 0.2rem;
51
+ justify-content: center;
52
+ `;
53
+ const Button = styled.button `
54
+ cursor: pointer;
55
+ user-select: none;
56
+
57
+ position: absolute;
58
+ z-index: 3;
59
+ top: calc(50% - 0.5rem);
60
+ transform: translateY(-50%);
61
+
62
+ display: flex;
63
+ align-items: center;
64
+
65
+ padding: 0;
66
+
67
+ color: ${(props) => props.theme.colors.grey4};
68
+
69
+ background-color: inherit;
70
+ border: none;
71
+
72
+ :hover {
73
+ color: ${(props) => props.theme.colors.grey5};
74
+ }
75
+ `;
76
+ const CircleSelect = styled.button `
77
+ cursor: pointer;
78
+ user-select: none;
79
+
80
+ z-index: 3;
81
+
82
+ padding: 0;
83
+
84
+ color: ${(props) => (props.selected ? props.theme.colors.grey4 : props.theme.colors.grey3)};
85
+
86
+ background-color: inherit;
87
+ border: none;
88
+
89
+ :hover {
90
+ color: ${(props) => props.theme.colors.grey4};
91
+ }
92
+
93
+ svg {
94
+ width: 0.5rem;
95
+ height: 0.5rem;
96
+ }
97
+ `;
98
+ const ImageWrapper = styled.div `
99
+ display: flex;
100
+ flex: 0 0 auto;
101
+ align-items: center;
102
+ justify-content: center;
103
+ `;
104
+ const TextWrapper = styled.div `
105
+ overflow: auto;
106
+ display: flex;
107
+ flex: 1 1 auto;
108
+ flex-direction: column;
109
+
110
+ box-sizing: border-box;
111
+ margin: 1rem 0;
112
+ padding: 0 1.5rem;
113
+
114
+ color: ${(props) => props.theme.colors.text};
115
+ `;
116
+ const Title = styled.div `
117
+ display: flex;
118
+ flex: 0 0 auto;
119
+ font-weight: bold;
120
+ color: ${(props) => props.theme.colors.text};
121
+ `;
122
+ const CarouselItemContainer = (props) => {
123
+ return (_jsx(CarouselItemWrapper, { children: _jsxs("div", { style: {
124
+ display: 'flex',
125
+ flexDirection: 'column',
126
+ margin: '0rem 1rem',
127
+ overflow: 'auto',
128
+ whiteSpace: 'normal',
129
+ }, children: [props.item.image && (_jsx(ImageWrapper, { children: _jsx("img", { alt: props.item.imageAlt, src: props.item.image, style: {
130
+ height: props.item.imageHeight,
131
+ width: props.item.imageWidth,
132
+ } }) })), (props.item.title || props.item.subtitle) && (_jsxs(TextWrapper, { style: {
133
+ gap: `${props.item.title && props.item.subtitle ? '0.5rem' : '0'}`,
134
+ maxWidth: '100%',
135
+ }, children: [_jsx(Title, { children: props.item.title }), _jsx("span", { children: props.item.subtitle })] })), props.item.component && props.item.component] }) }));
136
+ };
137
+ /**
138
+ * A simple carousel component that wraps a list of items to be displayed and animates the translation between them.
139
+ *
140
+ * @param {CarouselProps} props - the props of the component
141
+ */
142
+ function Carousel(props) {
143
+ const [activeIndex, setActiveIndex] = useState(props.value || props.initialValue || 0);
144
+ const updateIndex = useCallback((newIndex) => {
145
+ var _a;
146
+ let _newIndex = newIndex;
147
+ if (newIndex < 0) {
148
+ _newIndex = props.items.length - 1;
149
+ }
150
+ else if (newIndex >= props.items.length) {
151
+ _newIndex = 0;
152
+ }
153
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, _newIndex);
154
+ // uncontrolled component
155
+ if (props.value === undefined) {
156
+ setActiveIndex(_newIndex);
157
+ }
158
+ },
159
+ // eslint-disable-next-line react-hooks/exhaustive-deps
160
+ [props.onChange, props.items, props.value]);
161
+ useEffect(() => {
162
+ setActiveIndex(props.value || props.initialValue || 0);
163
+ // eslint-disable-next-line react-hooks/exhaustive-deps
164
+ }, [props.value]);
165
+ return (_jsxs(CarouselComponent, { className: props.className, style: props.style, children: [_jsx(Button, { "data-testid": "carousel-left-button", onClick: () => {
166
+ updateIndex(activeIndex - 1);
167
+ }, style: { left: '0.5rem' }, type: "button", children: _jsx(ChevronLeft, {}) }), _jsx(CarouselItemsContainer, { style: { transform: `translateX(-${activeIndex * 100}%)` }, children: props.items.map((item, index) => {
168
+ return _jsx(CarouselItemContainer, { item: item }, `carousel-item-${index}`);
169
+ }) }), _jsx(Button, { "data-testid": "carousel-right-button", onClick: () => {
170
+ updateIndex(activeIndex + 1);
171
+ }, style: { right: '0.5rem' }, type: "button", children: _jsx(ChevronRight, {}) }), _jsx(CarouselIndicators, { children: props.items.map((item, index) => {
172
+ return (_jsx(CircleSelect, { onClick: () => {
173
+ updateIndex(index);
174
+ }, selected: index === activeIndex, type: "button", children: _jsx(Circle, {}) }, `carousel-select-${index}`));
175
+ }) })] }));
176
+ }
177
+ export default Carousel;
178
+ //# sourceMappingURL=carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../src/carousel/carousel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { InteractiveComponentProps, Message, UserData } from '../types';
3
+ export interface ChatProps extends InteractiveComponentProps<Message[]> {
4
+ /** Event triggered when the chat sidebar is closed */
5
+ onClose?: () => void | Promise<void>;
6
+ /** Event triggered when the chat is changed */
7
+ onUpdate?: (value: Message[]) => void | Promise<void>;
8
+ /** The user who is currently active in the chat */
9
+ activeUser: UserData;
10
+ /** The title to appear at the top of the chat */
11
+ chatTitle?: string;
12
+ /** The placeholder text for the reply field */
13
+ placeholder?: string;
14
+ /** Whether the chat is in a popup and should be styled as such */
15
+ isPopup?: boolean;
16
+ /** A component showing the loading state of the chat, it appears above the input area, when not loading the caller can set it to null */
17
+ loadingComponent?: React.ReactNode;
18
+ /** Whether the user can edit/delete previous messages */
19
+ isHistoryReadonly?: boolean;
20
+ }
21
+ /**
22
+ * A chat component
23
+ *
24
+ * @param {ChatProps} props - the component props
25
+ */
26
+ declare function Chat(props: ChatProps): JSX.Element;
27
+ export default Chat;
28
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat/chat.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAkExE,MAAM,WAAW,SAAU,SAAQ,yBAAyB,CAAC,OAAO,EAAE,CAAC;IACnE,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,mDAAmD;IACnD,UAAU,EAAE,QAAQ,CAAC;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yIAAyI;IACzI,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AA0BD;;;;GAIG;AACH,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAqH3C;AAED,eAAe,IAAI,CAAC"}