@darajs/ui-components 1.0.0-a.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 (242) hide show
  1. package/LICENSE +201 -0
  2. package/dist/accordion/accordion-item.d.ts +25 -0
  3. package/dist/accordion/accordion-item.d.ts.map +1 -0
  4. package/dist/accordion/accordion-item.js +90 -0
  5. package/dist/accordion/accordion-item.js.map +1 -0
  6. package/dist/accordion/accordion.d.ts +33 -0
  7. package/dist/accordion/accordion.d.ts.map +1 -0
  8. package/dist/accordion/accordion.js +86 -0
  9. package/dist/accordion/accordion.js.map +1 -0
  10. package/dist/badge/badge.d.ts +21 -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 +123 -0
  21. package/dist/button-bar/button-bar.js.map +1 -0
  22. package/dist/carousel/carousel.d.ts +24 -0
  23. package/dist/carousel/carousel.d.ts.map +1 -0
  24. package/dist/carousel/carousel.js +175 -0
  25. package/dist/carousel/carousel.js.map +1 -0
  26. package/dist/checkbox/checkbox-group.d.ts +36 -0
  27. package/dist/checkbox/checkbox-group.d.ts.map +1 -0
  28. package/dist/checkbox/checkbox-group.js +116 -0
  29. package/dist/checkbox/checkbox-group.js.map +1 -0
  30. package/dist/checkbox/checkbox.d.ts +28 -0
  31. package/dist/checkbox/checkbox.d.ts.map +1 -0
  32. package/dist/checkbox/checkbox.js +162 -0
  33. package/dist/checkbox/checkbox.js.map +1 -0
  34. package/dist/checkbox/tri-state-checkbox.d.ts +23 -0
  35. package/dist/checkbox/tri-state-checkbox.d.ts.map +1 -0
  36. package/dist/checkbox/tri-state-checkbox.js +87 -0
  37. package/dist/checkbox/tri-state-checkbox.js.map +1 -0
  38. package/dist/combo-box/combo-box.d.ts +328 -0
  39. package/dist/combo-box/combo-box.d.ts.map +1 -0
  40. package/dist/combo-box/combo-box.js +213 -0
  41. package/dist/combo-box/combo-box.js.map +1 -0
  42. package/dist/component-select-list/component-select-list.d.ts +27 -0
  43. package/dist/component-select-list/component-select-list.d.ts.map +1 -0
  44. package/dist/component-select-list/component-select-list.js +129 -0
  45. package/dist/component-select-list/component-select-list.js.map +1 -0
  46. package/dist/constants.d.ts +33 -0
  47. package/dist/constants.d.ts.map +1 -0
  48. package/dist/constants.js +47 -0
  49. package/dist/constants.js.map +1 -0
  50. package/dist/context-menu/context-menu.d.ts +24 -0
  51. package/dist/context-menu/context-menu.d.ts.map +1 -0
  52. package/dist/context-menu/context-menu.js +112 -0
  53. package/dist/context-menu/context-menu.js.map +1 -0
  54. package/dist/datepicker/datepicker-select.d.ts +50 -0
  55. package/dist/datepicker/datepicker-select.d.ts.map +1 -0
  56. package/dist/datepicker/datepicker-select.js +211 -0
  57. package/dist/datepicker/datepicker-select.js.map +1 -0
  58. package/dist/datepicker/datepicker.d.ts +57 -0
  59. package/dist/datepicker/datepicker.d.ts.map +1 -0
  60. package/dist/datepicker/datepicker.js +608 -0
  61. package/dist/datepicker/datepicker.js.map +1 -0
  62. package/dist/dropzone/dropzone.d.ts +20 -0
  63. package/dist/dropzone/dropzone.d.ts.map +1 -0
  64. package/dist/dropzone/dropzone.js +77 -0
  65. package/dist/dropzone/dropzone.js.map +1 -0
  66. package/dist/error-boundary/error-boundary.d.ts +33 -0
  67. package/dist/error-boundary/error-boundary.d.ts.map +1 -0
  68. package/dist/error-boundary/error-boundary.js +72 -0
  69. package/dist/error-boundary/error-boundary.js.map +1 -0
  70. package/dist/filter/categorical-filter.d.ts +27 -0
  71. package/dist/filter/categorical-filter.d.ts.map +1 -0
  72. package/dist/filter/categorical-filter.js +150 -0
  73. package/dist/filter/categorical-filter.js.map +1 -0
  74. package/dist/filter/datetime-filter.d.ts +29 -0
  75. package/dist/filter/datetime-filter.d.ts.map +1 -0
  76. package/dist/filter/datetime-filter.js +196 -0
  77. package/dist/filter/datetime-filter.js.map +1 -0
  78. package/dist/filter/numeric-filter.d.ts +25 -0
  79. package/dist/filter/numeric-filter.d.ts.map +1 -0
  80. package/dist/filter/numeric-filter.js +146 -0
  81. package/dist/filter/numeric-filter.js.map +1 -0
  82. package/dist/hierarchy-selector/hierarchy-selector.d.ts +31 -0
  83. package/dist/hierarchy-selector/hierarchy-selector.d.ts.map +1 -0
  84. package/dist/hierarchy-selector/hierarchy-selector.js +65 -0
  85. package/dist/hierarchy-selector/hierarchy-selector.js.map +1 -0
  86. package/dist/hierarchy-selector/node/branch.d.ts +47 -0
  87. package/dist/hierarchy-selector/node/branch.d.ts.map +1 -0
  88. package/dist/hierarchy-selector/node/branch.js +133 -0
  89. package/dist/hierarchy-selector/node/branch.js.map +1 -0
  90. package/dist/index.d.ts +54 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +52 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/input/input.d.ts +58 -0
  95. package/dist/input/input.d.ts.map +1 -0
  96. package/dist/input/input.js +102 -0
  97. package/dist/input/input.js.map +1 -0
  98. package/dist/jest-setup.d.ts +18 -0
  99. package/dist/jest-setup.d.ts.map +1 -0
  100. package/dist/jest-setup.js +18 -0
  101. package/dist/jest-setup.js.map +1 -0
  102. package/dist/modal/modal.d.ts +37 -0
  103. package/dist/modal/modal.d.ts.map +1 -0
  104. package/dist/modal/modal.js +120 -0
  105. package/dist/modal/modal.js.map +1 -0
  106. package/dist/multiselect/multiselect.d.ts +31 -0
  107. package/dist/multiselect/multiselect.d.ts.map +1 -0
  108. package/dist/multiselect/multiselect.js +282 -0
  109. package/dist/multiselect/multiselect.js.map +1 -0
  110. package/dist/numeric-input/input-stepper.d.ts +33 -0
  111. package/dist/numeric-input/input-stepper.d.ts.map +1 -0
  112. package/dist/numeric-input/input-stepper.js +54 -0
  113. package/dist/numeric-input/input-stepper.js.map +1 -0
  114. package/dist/numeric-input/numeric-input.d.ts +48 -0
  115. package/dist/numeric-input/numeric-input.d.ts.map +1 -0
  116. package/dist/numeric-input/numeric-input.js +199 -0
  117. package/dist/numeric-input/numeric-input.js.map +1 -0
  118. package/dist/progress-bar/progress-bar.d.ts +23 -0
  119. package/dist/progress-bar/progress-bar.d.ts.map +1 -0
  120. package/dist/progress-bar/progress-bar.js +88 -0
  121. package/dist/progress-bar/progress-bar.js.map +1 -0
  122. package/dist/radio/radio-group.d.ts +20 -0
  123. package/dist/radio/radio-group.d.ts.map +1 -0
  124. package/dist/radio/radio-group.js +158 -0
  125. package/dist/radio/radio-group.js.map +1 -0
  126. package/dist/search-bar/search-bar.d.ts +34 -0
  127. package/dist/search-bar/search-bar.d.ts.map +1 -0
  128. package/dist/search-bar/search-bar.js +39 -0
  129. package/dist/search-bar/search-bar.js.map +1 -0
  130. package/dist/sectioned-list/sectioned-list.d.ts +29 -0
  131. package/dist/sectioned-list/sectioned-list.d.ts.map +1 -0
  132. package/dist/sectioned-list/sectioned-list.js +208 -0
  133. package/dist/sectioned-list/sectioned-list.js.map +1 -0
  134. package/dist/select/select.d.ts +54 -0
  135. package/dist/select/select.d.ts.map +1 -0
  136. package/dist/select/select.js +159 -0
  137. package/dist/select/select.js.map +1 -0
  138. package/dist/slider/slider-inputs.d.ts +36 -0
  139. package/dist/slider/slider-inputs.d.ts.map +1 -0
  140. package/dist/slider/slider-inputs.js +85 -0
  141. package/dist/slider/slider-inputs.js.map +1 -0
  142. package/dist/slider/slider.d.ts +53 -0
  143. package/dist/slider/slider.d.ts.map +1 -0
  144. package/dist/slider/slider.js +267 -0
  145. package/dist/slider/slider.js.map +1 -0
  146. package/dist/spinner/spinner.d.ts +20 -0
  147. package/dist/spinner/spinner.d.ts.map +1 -0
  148. package/dist/spinner/spinner.js +132 -0
  149. package/dist/spinner/spinner.js.map +1 -0
  150. package/dist/switch/sun-icon.d.ts +3 -0
  151. package/dist/switch/sun-icon.d.ts.map +1 -0
  152. package/dist/switch/sun-icon.js +24 -0
  153. package/dist/switch/sun-icon.js.map +1 -0
  154. package/dist/switch/switch.d.ts +17 -0
  155. package/dist/switch/switch.d.ts.map +1 -0
  156. package/dist/switch/switch.js +92 -0
  157. package/dist/switch/switch.js.map +1 -0
  158. package/dist/table/cells/action-cell.d.ts +34 -0
  159. package/dist/table/cells/action-cell.d.ts.map +1 -0
  160. package/dist/table/cells/action-cell.js +68 -0
  161. package/dist/table/cells/action-cell.js.map +1 -0
  162. package/dist/table/cells/datetime-cell.d.ts +12 -0
  163. package/dist/table/cells/datetime-cell.d.ts.map +1 -0
  164. package/dist/table/cells/datetime-cell.js +36 -0
  165. package/dist/table/cells/datetime-cell.js.map +1 -0
  166. package/dist/table/cells/edit-cell-utils.d.ts +32 -0
  167. package/dist/table/cells/edit-cell-utils.d.ts.map +1 -0
  168. package/dist/table/cells/edit-cell-utils.js +2 -0
  169. package/dist/table/cells/edit-cell-utils.js.map +1 -0
  170. package/dist/table/cells/edit-input-cell.d.ts +10 -0
  171. package/dist/table/cells/edit-input-cell.d.ts.map +1 -0
  172. package/dist/table/cells/edit-input-cell.js +61 -0
  173. package/dist/table/cells/edit-input-cell.js.map +1 -0
  174. package/dist/table/cells/edit-select-cell.d.ts +12 -0
  175. package/dist/table/cells/edit-select-cell.d.ts.map +1 -0
  176. package/dist/table/cells/edit-select-cell.js +55 -0
  177. package/dist/table/cells/edit-select-cell.js.map +1 -0
  178. package/dist/table/filters.d.ts +46 -0
  179. package/dist/table/filters.d.ts.map +1 -0
  180. package/dist/table/filters.js +223 -0
  181. package/dist/table/filters.js.map +1 -0
  182. package/dist/table/headers/select-header.d.ts +14 -0
  183. package/dist/table/headers/select-header.d.ts.map +1 -0
  184. package/dist/table/headers/select-header.js +41 -0
  185. package/dist/table/headers/select-header.js.map +1 -0
  186. package/dist/table/options-menu.d.ts +25 -0
  187. package/dist/table/options-menu.d.ts.map +1 -0
  188. package/dist/table/options-menu.js +120 -0
  189. package/dist/table/options-menu.js.map +1 -0
  190. package/dist/table/table.d.ts +95 -0
  191. package/dist/table/table.d.ts.map +1 -0
  192. package/dist/table/table.js +524 -0
  193. package/dist/table/table.js.map +1 -0
  194. package/dist/table/types.d.ts +30 -0
  195. package/dist/table/types.d.ts.map +1 -0
  196. package/dist/table/types.js +2 -0
  197. package/dist/table/types.js.map +1 -0
  198. package/dist/tabs/tabs.d.ts +22 -0
  199. package/dist/tabs/tabs.d.ts.map +1 -0
  200. package/dist/tabs/tabs.js +88 -0
  201. package/dist/tabs/tabs.js.map +1 -0
  202. package/dist/textarea/textarea.d.ts +45 -0
  203. package/dist/textarea/textarea.d.ts.map +1 -0
  204. package/dist/textarea/textarea.js +77 -0
  205. package/dist/textarea/textarea.js.map +1 -0
  206. package/dist/tooltip/tooltip.d.ts +46 -0
  207. package/dist/tooltip/tooltip.d.ts.map +1 -0
  208. package/dist/tooltip/tooltip.js +116 -0
  209. package/dist/tooltip/tooltip.js.map +1 -0
  210. package/dist/types.d.ts +66 -0
  211. package/dist/types.d.ts.map +1 -0
  212. package/dist/types.js +2 -0
  213. package/dist/types.js.map +1 -0
  214. package/dist/utils/chevron.d.ts +34 -0
  215. package/dist/utils/chevron.d.ts.map +1 -0
  216. package/dist/utils/chevron.js +40 -0
  217. package/dist/utils/chevron.js.map +1 -0
  218. package/dist/utils/index.d.ts +22 -0
  219. package/dist/utils/index.d.ts.map +1 -0
  220. package/dist/utils/index.js +22 -0
  221. package/dist/utils/index.js.map +1 -0
  222. package/dist/utils/label.d.ts +3 -0
  223. package/dist/utils/label.d.ts.map +1 -0
  224. package/dist/utils/label.js +24 -0
  225. package/dist/utils/label.js.map +1 -0
  226. package/dist/utils/list-styles.d.ts +12 -0
  227. package/dist/utils/list-styles.d.ts.map +1 -0
  228. package/dist/utils/list-styles.js +58 -0
  229. package/dist/utils/list-styles.js.map +1 -0
  230. package/dist/utils/same-width-modifier.d.ts +23 -0
  231. package/dist/utils/same-width-modifier.d.ts.map +1 -0
  232. package/dist/utils/same-width-modifier.js +17 -0
  233. package/dist/utils/same-width-modifier.js.map +1 -0
  234. package/dist/utils/use-infinite-loader.d.ts +32 -0
  235. package/dist/utils/use-infinite-loader.d.ts.map +1 -0
  236. package/dist/utils/use-infinite-loader.js +114 -0
  237. package/dist/utils/use-infinite-loader.js.map +1 -0
  238. package/dist/utils/use-on-click-outside.d.ts +3 -0
  239. package/dist/utils/use-on-click-outside.d.ts.map +1 -0
  240. package/dist/utils/use-on-click-outside.js +36 -0
  241. package/dist/utils/use-on-click-outside.js.map +1 -0
  242. package/package.json +105 -0
@@ -0,0 +1,199 @@
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 * as React from 'react';
19
+ import { useCallback, useEffect, useMemo, useState } from 'react';
20
+ import styled from '@darajs/styled-components';
21
+ import { CONTROL_KEYS, Key } from '../constants';
22
+ import Input, { ErrorMessage } from '../input/input';
23
+ import InputStepper from './input-stepper';
24
+ const InputWrapper = styled.div `
25
+ display: flex;
26
+ flex-direction: row;
27
+
28
+ width: 22ch;
29
+ height: 2.5rem;
30
+ padding-right: 0.5rem;
31
+
32
+ background-color: ${(props) => props.theme.colors.grey1};
33
+ border: 1px solid
34
+ ${(props) => {
35
+ if (props.errorMsg)
36
+ return props.theme.colors.error;
37
+ return props.theme.colors.grey1;
38
+ }};
39
+ border-radius: 0.25rem;
40
+
41
+ :focus-within:not(:disabled) {
42
+ border: 1px solid
43
+ ${(props) => {
44
+ if (props.errorMsg)
45
+ return props.theme.colors.error;
46
+ return props.theme.colors.grey3;
47
+ }};
48
+
49
+ input {
50
+ border: none;
51
+ }
52
+ }
53
+
54
+ input {
55
+ width: calc(100% - 1.25rem);
56
+ height: calc(2.5rem - 2px);
57
+ border: none;
58
+ border-radius: 0.25rem;
59
+ }
60
+
61
+ div {
62
+ border: none;
63
+ border-radius: 0.25rem;
64
+ div {
65
+ border: none;
66
+ border-radius: 0.25rem;
67
+ }
68
+ }
69
+
70
+ :hover {
71
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
72
+ border: 1px solid
73
+ ${(props) => {
74
+ if (props.disabled)
75
+ return props.theme.colors.grey1;
76
+ if (props.errorMsg)
77
+ return props.theme.colors.error;
78
+ return props.theme.colors.grey2;
79
+ }};
80
+
81
+ input {
82
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
83
+ }
84
+
85
+ div {
86
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
87
+ }
88
+ }
89
+ `;
90
+ /**
91
+ * A numeric characters only filter for the input component, can be applied to create a numeric input that prevents
92
+ * invalid entries rather than just erroring them
93
+ *
94
+ * @param integerOnly whether to limit the input to only accept integers
95
+ */
96
+ const numericFilter = (integerOnly) => (e) => {
97
+ // Check for numbers
98
+ if (parseInt(e.key) || parseInt(e.key) === 0) {
99
+ return true;
100
+ }
101
+ // Check control keys
102
+ if (CONTROL_KEYS.includes(e.key)) {
103
+ return true;
104
+ }
105
+ const target = e.target;
106
+ // Check for decimal point and make sure there is only one
107
+ if (!integerOnly && e.key === Key.PERIOD && !target.value.includes(Key.PERIOD)) {
108
+ return true;
109
+ }
110
+ // Check for minus and make sure it's at the start
111
+ if (e.key === Key.MINUS && !e.shiftKey && target.selectionStart === 0 && !target.value.includes(Key.MINUS)) {
112
+ return true;
113
+ }
114
+ return false;
115
+ };
116
+ /**
117
+ * A helper function to get the initial value of the input, either from the value or the initialValue props
118
+ *
119
+ * @param value the value prop
120
+ * @param initialValue the initialValue prop
121
+ * @returns the initial value of the numeric input
122
+ */
123
+ const getInitialValue = (value, initialValue) => {
124
+ if (Number.isFinite(value))
125
+ return String(value);
126
+ if (Number.isFinite(initialValue))
127
+ return String(initialValue);
128
+ return '';
129
+ };
130
+ /**
131
+ * NumericInput is a wrapper around the input component that restricts the value to be numeric, either float or integer.
132
+ *
133
+ * @param props the component props
134
+ */
135
+ const NumericInput = React.forwardRef((props, ref) => {
136
+ const keydownFilter = useMemo(() => numericFilter(props.integerOnly), [props.integerOnly]);
137
+ const [input, setInput] = useState(getInitialValue(props.value, props.initialValue));
138
+ const step = (value) => {
139
+ var _a;
140
+ if (!input || input === '-')
141
+ return;
142
+ const isFloat = input.includes('.');
143
+ const parsedValue = isFloat ? parseFloat(input) : parseInt(input);
144
+ let nextValueNumber = parsedValue + value;
145
+ let nextValueStr = String(nextValueNumber);
146
+ if (isFloat) {
147
+ const decimals = input.split('.')[1];
148
+ if (decimals) {
149
+ nextValueStr = (parsedValue + value / Math.pow(10, decimals.length)).toFixed(decimals.length);
150
+ nextValueNumber = parseFloat(nextValueStr);
151
+ }
152
+ }
153
+ // controlled
154
+ if (props.value !== undefined) {
155
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, nextValueNumber, {
156
+ target: {
157
+ value: nextValueStr,
158
+ },
159
+ });
160
+ // uncontrolled
161
+ }
162
+ else {
163
+ setInput(nextValueStr);
164
+ }
165
+ };
166
+ const onKeyDown = (e) => {
167
+ var _a;
168
+ if (!props.stepper)
169
+ return;
170
+ const stepSkip = Math.abs((_a = props.stepSkip) !== null && _a !== void 0 ? _a : 1);
171
+ if (e.key === Key.UP)
172
+ step(stepSkip);
173
+ if (e.key === Key.DOWN)
174
+ step(stepSkip * -1);
175
+ };
176
+ const onChange = useCallback((value, e) => {
177
+ var _a, _b;
178
+ const parsed = props.integerOnly ? parseInt(value) : parseFloat(value);
179
+ // uncontrolled component
180
+ if (props.value === undefined) {
181
+ setInput(value);
182
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, parsed, e);
183
+ return;
184
+ }
185
+ // if the value ends with a period, don't call onChange as it's not yet a valid number
186
+ if (value.endsWith('.')) {
187
+ setInput(value);
188
+ return;
189
+ }
190
+ (_b = props.onChange) === null || _b === void 0 ? void 0 : _b.call(props, parsed, e);
191
+ }, [props.integerOnly, props.value]);
192
+ useEffect(() => {
193
+ setInput(getInitialValue(props.value, props.initialValue));
194
+ }, [props.value]);
195
+ return (_jsxs("div", { children: [_jsxs(InputWrapper, { disabled: props.disabled, errorMsg: props.errorMsg, stepper: props.stepper, children: [_jsx(Input, { autoFocus: props.autoFocus, className: props.className, disabled: props.disabled, keydownFilter: keydownFilter, maxValue: props.maxValue, minValue: props.minValue, onBlur: props.onBlur, onChange: onChange, onComplete: props.onComplete, onKeyDown: onKeyDown, placeholder: props.placeholder, ref: ref, style: props.style, value: input }), props.stepper && _jsx(InputStepper, { disabled: props.disabled, step: step, stepSkip: props.stepSkip })] }), props.errorMsg && _jsx(ErrorMessage, { children: props.errorMsg })] }));
196
+ });
197
+ Input.displayName = 'NumericInput';
198
+ export default NumericInput;
199
+ //# sourceMappingURL=numeric-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-input.js","sourceRoot":"","sources":["../../src/numeric-input/numeric-input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ export interface ProgressBarProps {
3
+ /** Standard react className property */
4
+ className?: string;
5
+ /** Optional color prop for the progress bar, should be a hex code. Pass an array for multiple values */
6
+ color?: string | string[];
7
+ /** Optional label for the progress bar. If not provided, the progress will be displayed as a percentage. Pass an array for multiple values */
8
+ label?: React.ReactNode | React.ReactNode[];
9
+ /** The current progress as a percentage. Pass an array for multiple values */
10
+ progress: number | number[];
11
+ /** Set the progress bar to view as a smaller strip with no label */
12
+ small?: boolean;
13
+ /** Native react style property, can be used to fine tune the button appearance */
14
+ style?: React.CSSProperties;
15
+ }
16
+ /**
17
+ * A simple progress bar component, that displays the current progress to 100% as a bar with a small label
18
+ *
19
+ * @param props see interface for details
20
+ */
21
+ declare function ProgressBar(props: ProgressBarProps): JSX.Element;
22
+ export default ProgressBar;
23
+ //# sourceMappingURL=progress-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../src/progress-bar/progress-bar.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4E/B,MAAM,WAAW,gBAAgB;IAC7B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,8IAA8I;IAC9I,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC5C,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kFAAkF;IAClF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC/B;AAED;;;;GAIG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAgCzD;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,88 @@
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 { sortBy } from 'lodash';
19
+ import styled, { theme } from '@darajs/styled-components';
20
+ const Track = styled.div `
21
+ position: relative;
22
+
23
+ overflow: hidden;
24
+ display: flex;
25
+
26
+ width: 100%;
27
+ height: ${(props) => (props.small ? '0.5rem' : '1rem')};
28
+
29
+ background-color: ${(props) => props.theme.colors.grey2};
30
+ border-radius: ${(props) => (props.small ? '0.25rem' : '0.5rem')};
31
+ `;
32
+ const Bar = styled.div `
33
+ position: absolute;
34
+
35
+ overflow: ${(props) => (props.multi ? 'hidden' : 'visible')};
36
+
37
+ height: 100%;
38
+
39
+ background-color: ${(props) => (props.color ? props.color : props.theme.colors.primary)};
40
+ border-radius: ${(props) => (props.small ? '0.25rem' : '0.5rem')};
41
+ `;
42
+ const Text = styled.span `
43
+ position: absolute;
44
+ right: 0.5rem;
45
+ bottom: 0.05rem;
46
+ left: 0.5rem;
47
+
48
+ height: 100%;
49
+
50
+ font-size: 0.75rem;
51
+ color: ${(props) => props.theme.colors.blue1};
52
+ text-align: end;
53
+ `;
54
+ const defaultColors = [theme.colors.primary, theme.colors.success, theme.colors.warning, theme.colors.error];
55
+ /**
56
+ * Takes an input value and converts it into an array. If the input is undefined, it returns a default input array.
57
+ * If the input is already an array, it returns the input itself. Otherwise, it wraps the input inside an array.
58
+ *
59
+ * @param input - The input value that should be arrayified. It can be a value of type T, an array of T, or undefined.
60
+ * @param defaultInput - The default array to return in case the input is undefined.
61
+ *
62
+ * @returns The input arrayified as an array of type T.
63
+ *
64
+ * @typeparam T - The type of the elements in the array.
65
+ */
66
+ const arrayify = (input, defaultInput) => {
67
+ if (typeof input === 'undefined')
68
+ return defaultInput;
69
+ if (Array.isArray(input))
70
+ return input;
71
+ return [input];
72
+ };
73
+ /**
74
+ * A simple progress bar component, that displays the current progress to 100% as a bar with a small label
75
+ *
76
+ * @param props see interface for details
77
+ */
78
+ function ProgressBar(props) {
79
+ // We need to sort the values to properly render them, so we need to preserve the original index
80
+ const progresses = typeof props.progress === 'number'
81
+ ? [{ index: 0, value: props.progress }]
82
+ : sortBy([...props.progress.map((x, i) => ({ index: i, value: x }))], 'value').reverse();
83
+ const colors = arrayify(props.color, defaultColors.slice(0, progresses.length));
84
+ const labels = arrayify(props.label, progresses.map((x) => `${x.value}%`));
85
+ return (_jsx(Track, { className: props.className, multi: typeof props.progress !== 'number', small: props.small, style: props.style, children: progresses.map((progress, index) => (_jsx(Bar, { color: colors[progress.index], multi: typeof props.progress !== 'number', small: props.small, style: { width: `${progress.value}%` }, children: !props.small && _jsx(Text, { progress: progress.value, children: labels[progress.index] }) }, index))) }));
86
+ }
87
+ export default ProgressBar;
88
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.js","sourceRoot":"","sources":["../../src/progress-bar/progress-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /// <reference types="react" />
2
+ import { InteractiveComponentProps, Item } from '../types';
3
+ export interface RadioGroupProps extends InteractiveComponentProps<Item> {
4
+ /** An optional value which determines the direction of the radio group components by default is vertical */
5
+ direction?: 'horizontal' | 'vertical';
6
+ /** Whether to show radio in list style */
7
+ isListStyle?: boolean;
8
+ /** The items to pick from the list. Each should have a label and a value */
9
+ items: Array<Item>;
10
+ /** An optional onChange handler, will be called whenever the state of the checkbox changes */
11
+ onChange?: (value: Item, e?: React.FormEvent<HTMLInputElement>) => void | Promise<void>;
12
+ }
13
+ /**
14
+ * A simple radio component
15
+ *
16
+ * @param {RadioGroupProps} props - the component props
17
+ */
18
+ declare function RadioGroup(props: RadioGroupProps): JSX.Element;
19
+ export default RadioGroup;
20
+ //# sourceMappingURL=radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/radio/radio-group.tsx"],"names":[],"mappings":";AAsBA,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAyH3D,MAAM,WAAW,eAAgB,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IACpE,4GAA4G;IAC5G,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3F;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAwDvD;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,158 @@
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 isEqual from 'lodash/isEqual';
19
+ import { nanoid } from 'nanoid';
20
+ import { useEffect, useRef, useState } from 'react';
21
+ import styled from '@darajs/styled-components';
22
+ const RadioGroupWrapper = styled.div `
23
+ display: ${(props) => (props.isHorizontal ? 'flex' : 'block')};
24
+ gap: ${(props) => (props.isHorizontal ? '1.25rem' : '0rem')};
25
+ `;
26
+ const RadioWrapper = styled.label `
27
+ cursor: ${(props) => (props['aria-disabled'] ? 'not-allowed' : 'pointer')};
28
+ user-select: none;
29
+
30
+ display: flex;
31
+ gap: 0.5rem;
32
+ align-items: center;
33
+ justify-content: flex-start;
34
+
35
+ width: ${(props) => (props.isListStyle ? 'auto' : 'fit-content')};
36
+ height: 2.5rem;
37
+ padding: 0rem 0.5rem;
38
+
39
+ color: ${(props) => (props['aria-disabled'] ? props.theme.colors.grey3 : props.theme.colors.text)};
40
+
41
+ border: none;
42
+ border-radius: 0.25rem;
43
+
44
+ // sets checkmark indicator
45
+ span:after {
46
+ top: calc(0.25rem - 1px);
47
+ left: calc(0.25rem - 1px);
48
+
49
+ width: 0.5rem;
50
+ height: 0.5rem;
51
+
52
+ background-color: ${(props) => (props['aria-disabled'] ? props.theme.colors.grey3 : props.theme.colors.grey5)};
53
+ border-radius: 50%;
54
+ }
55
+
56
+ // Show the checkmark when checked
57
+ input:checked ~ span:after {
58
+ display: block;
59
+ }
60
+
61
+ // Controls background color change depending on style
62
+ ${(props) => {
63
+ if (props.isListStyle) {
64
+ return `:hover {
65
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey1}
66
+ }
67
+ :active {
68
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey2}
69
+ }`;
70
+ }
71
+ return `
72
+ :hover {
73
+ span {
74
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey1};
75
+ }
76
+ }
77
+
78
+ :active {
79
+ span {
80
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey2};
81
+ }
82
+ }
83
+ `;
84
+ }}
85
+
86
+ // Sets the outer rim color of radio button
87
+ :hover {
88
+ span {
89
+ border: 1px solid
90
+ ${(props) => (props['aria-disabled'] ? props.theme.colors.grey2 : props.theme.colors.grey4)};
91
+ }
92
+ }
93
+
94
+ :active {
95
+ span {
96
+ border: 1px solid
97
+ ${(props) => (props['aria-disabled'] ? props.theme.colors.grey2 : props.theme.colors.grey4)};
98
+ }
99
+ }
100
+ `;
101
+ // hides default html radio button
102
+ const RadioButton = styled.input `
103
+ position: absolute;
104
+ opacity: 0;
105
+ `;
106
+ // customdot/circle for the radio button
107
+ const StyledCheckmark = styled.span `
108
+ position: relative;
109
+ top: 0;
110
+ left: 0;
111
+
112
+ width: 1rem;
113
+ height: 1rem;
114
+
115
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.blue1)};
116
+ border: 1px solid ${(props) => (props.disabled ? props.theme.colors.grey2 : props.theme.colors.grey3)};
117
+ border-radius: 50%;
118
+
119
+ :after {
120
+ content: '';
121
+ position: relative;
122
+ display: none;
123
+ }
124
+ `;
125
+ /**
126
+ * A simple radio component
127
+ *
128
+ * @param {RadioGroupProps} props - the component props
129
+ */
130
+ function RadioGroup(props) {
131
+ const [currentSelected, setCurrentSelected] = useState(props.items.findIndex((item) => props.value !== undefined ? isEqual(item.value, props.value) : isEqual(item.value, props.initialValue)));
132
+ // radio needs a name that is unique to that radio component, so that more than one radio components on a page don't get mixed inputs
133
+ const uuid = useRef(null);
134
+ if (uuid.current === null) {
135
+ uuid.current = nanoid();
136
+ }
137
+ const onChangeValue = (event) => {
138
+ var _a;
139
+ const target = event.target;
140
+ const chosenIndex = Number(target.value);
141
+ setCurrentSelected(chosenIndex);
142
+ if (props.value !== undefined) {
143
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, props.items[chosenIndex], event);
144
+ }
145
+ else {
146
+ setCurrentSelected(chosenIndex);
147
+ }
148
+ };
149
+ useEffect(() => {
150
+ setCurrentSelected(props.items.findIndex((item) => props.value !== undefined ? isEqual(item.value, props.value) : isEqual(item.value, props.initialValue)));
151
+ }, [props.value]);
152
+ return (_jsx(RadioGroupWrapper, { className: props.className, isHorizontal: props.direction === 'horizontal', style: props.style, children: props.items.map((item, index) => {
153
+ var _a;
154
+ return (_jsxs(RadioWrapper, { "aria-disabled": props.disabled, isListStyle: props.isListStyle, children: [_jsx(RadioButton, { checked: isEqual((_a = props.value) === null || _a === void 0 ? void 0 : _a.value, item.value) || currentSelected === index, disabled: props.disabled, name: uuid.current, onChange: (e) => onChangeValue(e), type: "radio", value: index }), _jsx(StyledCheckmark, { disabled: props.disabled }), item.label ? item.label : item.value] }, `item-${index}`));
155
+ }) }));
156
+ }
157
+ export default RadioGroup;
158
+ //# sourceMappingURL=radio-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/radio/radio-group.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright 2023 Impulse Innovations Limited
3
+ *
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import * as React from 'react';
18
+ import { InteractiveComponentProps } from '../types';
19
+ export interface SearchBarProps extends InteractiveComponentProps<string> {
20
+ /** An optional maximum length */
21
+ maxLength?: number;
22
+ /** An optional onChange handler for listening to changes in the input */
23
+ onChange?: (value: string, e?: React.SyntheticEvent<HTMLInputElement>) => void | Promise<void>;
24
+ /** An optional placeholder that will be used when the input is empty, defaults to '' */
25
+ placeholder?: string;
26
+ }
27
+ /**
28
+ * A search bar component, accepts an onChange handler to listen for changes.
29
+ *
30
+ * @param props - the component props
31
+ */
32
+ declare function SearchBar(props: SearchBarProps): JSX.Element;
33
+ export default SearchBar;
34
+ //# sourceMappingURL=search-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../../src/search-bar/search-bar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AA6BrD,MAAM,WAAW,cAAe,SAAQ,yBAAyB,CAAC,MAAM,CAAC;IACrE,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,iBAAS,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAerD;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styled from '@darajs/styled-components';
3
+ import { MagnifyingGlass } from '@darajs/ui-icons';
4
+ import Input from '../input/input';
5
+ const Wrapper = styled.div `
6
+ display: flex;
7
+ margin: 0rem 0.5rem;
8
+ `;
9
+ const SearchBarComponent = styled(Input) `
10
+ input {
11
+ padding-right: 2.25rem;
12
+ }
13
+
14
+ :hover:not(:disabled) {
15
+ input {
16
+ border: 1px solid ${(props) => props.theme.colors.grey3};
17
+ }
18
+ }
19
+ `;
20
+ const SearchBarIcon = styled(MagnifyingGlass) `
21
+ position: relative;
22
+ top: 0.625rem;
23
+ right: 1.75rem;
24
+
25
+ height: 1.25rem;
26
+
27
+ color: ${(props) => props.theme.colors.grey4};
28
+ `;
29
+ /**
30
+ * A search bar component, accepts an onChange handler to listen for changes.
31
+ *
32
+ * @param props - the component props
33
+ */
34
+ function SearchBar(props) {
35
+ var _a;
36
+ return (_jsxs(Wrapper, { children: [_jsx(SearchBarComponent, { className: props.className, disabled: props.disabled, maxLength: props.maxLength, onChange: props.onChange, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : 'Search', style: props.style, value: props.value }), _jsx(SearchBarIcon, {})] }));
37
+ }
38
+ export default SearchBar;
39
+ //# sourceMappingURL=search-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar.js","sourceRoot":"","sources":["../../src/search-bar/search-bar.tsx"],"names":[],"mappings":";AAkBA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAGnC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGzB,CAAC;AAEF,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;;;;;;gCAOR,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;CAGlE,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;;;;;;;aAOhC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;CAC/C,CAAC;AAWF;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAqB;;IACpC,OAAO,CACH,MAAC,OAAO,eACJ,KAAC,kBAAkB,IACf,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,QAAQ,EAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,GACpB,EACF,KAAC,aAAa,KAAG,IACX,CACb,CAAC;AACN,CAAC;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ /// <reference types="react" />
2
+ import { InteractiveComponentProps, Item } from '../types';
3
+ export interface ListItem extends Item {
4
+ heading?: boolean;
5
+ section?: string;
6
+ }
7
+ export interface ListSection {
8
+ items: Array<Item>;
9
+ label: string;
10
+ }
11
+ export interface SectionedListProps extends InteractiveComponentProps<Item> {
12
+ /** An array of ListItem and/or ListSection objects to render */
13
+ items: Array<ListItem | ListSection>;
14
+ /** An optional onSelect handler for listening to changes in the selected item */
15
+ onSelect?: (item: ListItem) => void | Promise<void>;
16
+ /** Put the component in controlled mode and pass in the selectedItem */
17
+ selectedItem?: ListItem | Item;
18
+ /** Pass through of style property to the root element */
19
+ style?: React.CSSProperties;
20
+ }
21
+ /**
22
+ * A component for rendering lists, sectioned and non-sectioned. Takes an array of unpacked ListItem objects and
23
+ * renders a searchable list.
24
+ *
25
+ * @param {SectionedListProps} props - the component props
26
+ */
27
+ declare function SectionedList(props: SectionedListProps): JSX.Element;
28
+ export default SectionedList;
29
+ //# sourceMappingURL=sectioned-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectioned-list.d.ts","sourceRoot":"","sources":["../../src/sectioned-list/sectioned-list.tsx"],"names":[],"mappings":";AAyBA,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAwE3D,MAAM,WAAW,QAAS,SAAQ,IAAI;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IACvE,gEAAgE;IAChE,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IACrC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,wEAAwE;IACxE,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,yDAAyD;IACzD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC/B;AAED;;;;;GAKG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAqO7D;AAED,eAAe,aAAa,CAAC"}