@hazelcast/ui 1.1.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/lib/Alert.d.ts +3 -2
  2. package/lib/Alert.js +23 -22
  3. package/lib/Alert.js.map +1 -1
  4. package/lib/Alert.module.scss +14 -6
  5. package/lib/AutocompleteField.d.ts +2 -1
  6. package/lib/AutocompleteField.js +45 -22
  7. package/lib/AutocompleteField.js.map +1 -1
  8. package/lib/AutocompleteField.module.scss +3 -5
  9. package/lib/AutocompleteFieldFormik.d.ts +2 -1
  10. package/lib/AutocompleteFieldFormik.js +11 -5
  11. package/lib/AutocompleteFieldFormik.js.map +1 -1
  12. package/lib/Button.d.ts +9 -294
  13. package/lib/Button.js +41 -14
  14. package/lib/Button.js.map +1 -1
  15. package/lib/Button.module.scss +120 -87
  16. package/lib/Calendar/Calendar.d.ts +1 -1
  17. package/lib/Calendar/Calendar.js +8 -3
  18. package/lib/Calendar/Calendar.js.map +1 -1
  19. package/lib/Calendar/Calendar.module.scss +134 -123
  20. package/lib/Calendar/components/CalendarHeader.tsx +45 -0
  21. package/lib/Calendar/components/CalendarInput.js +2 -2
  22. package/lib/Calendar/components/CalendarInput.js.map +1 -1
  23. package/lib/Calendar/components/CalendarInput.tsx +50 -0
  24. package/lib/Calendar/components/CalendarTime.js +2 -2
  25. package/lib/Calendar/components/CalendarTime.js.map +1 -1
  26. package/lib/Calendar/components/CalendarTime.module.scss +2 -0
  27. package/lib/Calendar/components/CalendarTime.tsx +117 -0
  28. package/lib/Calendar/helpers/consts.ts +99 -0
  29. package/lib/Card.d.ts +1 -0
  30. package/lib/Card.js +4 -3
  31. package/lib/Card.js.map +1 -1
  32. package/lib/Card.module.scss +16 -4
  33. package/lib/Checkbox.d.ts +2 -2
  34. package/lib/Checkbox.js +7 -4
  35. package/lib/Checkbox.js.map +1 -1
  36. package/lib/Checkbox.module.scss +17 -6
  37. package/lib/CheckboxFormik.d.ts +2 -1
  38. package/lib/CheckboxFormik.js +9 -4
  39. package/lib/CheckboxFormik.js.map +1 -1
  40. package/lib/CodeEditor.d.ts +3 -2
  41. package/lib/CodeEditor.js +4 -3
  42. package/lib/CodeEditor.js.map +1 -1
  43. package/lib/CodeEditor.module.scss +5 -2
  44. package/lib/CodeEditorFormik.js +2 -2
  45. package/lib/CodeEditorFormik.js.map +1 -1
  46. package/lib/Dialog.js +5 -2
  47. package/lib/Dialog.js.map +1 -1
  48. package/lib/Dialog.module.scss +3 -0
  49. package/lib/EmptyState.d.ts +6 -4
  50. package/lib/EmptyState.js +4 -6
  51. package/lib/EmptyState.js.map +1 -1
  52. package/lib/EmptyState.module.scss +1 -1
  53. package/lib/Error.d.ts +3 -0
  54. package/lib/Error.js +2 -1
  55. package/lib/Error.js.map +1 -1
  56. package/lib/FieldHeader.d.ts +20 -0
  57. package/lib/FieldHeader.js +15 -0
  58. package/lib/FieldHeader.js.map +1 -0
  59. package/lib/FieldHeader.module.scss +20 -0
  60. package/lib/Icon.d.ts +2 -35
  61. package/lib/Icon.js +1 -1
  62. package/lib/Icon.js.map +1 -1
  63. package/lib/Icon.module.scss +5 -0
  64. package/lib/IconButton.d.ts +6 -158
  65. package/lib/IconButton.js +3 -3
  66. package/lib/IconButton.js.map +1 -1
  67. package/lib/InteractiveList.d.ts +3 -3
  68. package/lib/InteractiveList.js +2 -3
  69. package/lib/InteractiveList.js.map +1 -1
  70. package/lib/InteractiveList.module.scss +1 -0
  71. package/lib/InteractiveListFormik.js +5 -4
  72. package/lib/InteractiveListFormik.js.map +1 -1
  73. package/lib/Link.d.ts +1 -65
  74. package/lib/Link.js +3 -4
  75. package/lib/Link.js.map +1 -1
  76. package/lib/Link.module.scss +7 -0
  77. package/lib/Loader.js +2 -2
  78. package/lib/Loader.js.map +1 -1
  79. package/lib/Loader.module.scss +10 -1
  80. package/lib/Modal.js +3 -3
  81. package/lib/Modal.js.map +1 -1
  82. package/lib/Modal.module.scss +1 -0
  83. package/lib/Notification.module.scss +1 -0
  84. package/lib/NumberField.d.ts +1 -0
  85. package/lib/NumberField.js +41 -13
  86. package/lib/NumberField.js.map +1 -1
  87. package/lib/NumberField.module.scss +40 -3
  88. package/lib/NumberFieldFormik.d.ts +2 -1
  89. package/lib/NumberFieldFormik.js +7 -4
  90. package/lib/NumberFieldFormik.js.map +1 -1
  91. package/lib/Overlay.d.ts +3 -2
  92. package/lib/Overlay.js +7 -5
  93. package/lib/Overlay.js.map +1 -1
  94. package/lib/Overlay.module.scss +18 -3
  95. package/lib/Pagination.d.ts +0 -3
  96. package/lib/Pagination.js +10 -13
  97. package/lib/Pagination.js.map +1 -1
  98. package/lib/Pagination.module.scss +3 -1
  99. package/lib/PasswordField.js +2 -2
  100. package/lib/PasswordField.js.map +1 -1
  101. package/lib/PasswordFieldFormik.d.ts +2 -1
  102. package/lib/PasswordFieldFormik.js +9 -4
  103. package/lib/PasswordFieldFormik.js.map +1 -1
  104. package/lib/Popover.d.ts +21 -0
  105. package/lib/Popover.js +77 -0
  106. package/lib/Popover.js.map +1 -0
  107. package/lib/Popover.module.scss +12 -0
  108. package/lib/Radio.d.ts +2 -2
  109. package/lib/Radio.js +4 -2
  110. package/lib/Radio.js.map +1 -1
  111. package/lib/Radio.module.scss +3 -0
  112. package/lib/RadioFormik.js +1 -1
  113. package/lib/RadioFormik.js.map +1 -1
  114. package/lib/RadioGroup.js +4 -3
  115. package/lib/RadioGroup.js.map +1 -1
  116. package/lib/RadioGroup.module.scss +1 -4
  117. package/lib/RadioGroupFormik.d.ts +2 -1
  118. package/lib/RadioGroupFormik.js +9 -4
  119. package/lib/RadioGroupFormik.js.map +1 -1
  120. package/lib/SegmentedControl.d.ts +8 -8
  121. package/lib/SegmentedControl.js.map +1 -1
  122. package/lib/SegmentedControl.module.scss +4 -2
  123. package/lib/SegmentedControlFormik.d.ts +4 -4
  124. package/lib/SegmentedControlFormik.js +1 -1
  125. package/lib/SegmentedControlFormik.js.map +1 -1
  126. package/lib/Select/CheckableSelectField.d.ts +34 -0
  127. package/lib/Select/CheckableSelectField.js +65 -0
  128. package/lib/Select/CheckableSelectField.js.map +1 -0
  129. package/lib/Select/CheckableSelectField.module.scss +87 -0
  130. package/lib/Select/CheckableSelectFieldFormik.d.ts +10 -0
  131. package/lib/Select/CheckableSelectFieldFormik.js +19 -0
  132. package/lib/Select/CheckableSelectFieldFormik.js.map +1 -0
  133. package/lib/Select/Common.d.ts +2 -0
  134. package/lib/Select/Common.js +10 -3
  135. package/lib/Select/Common.js.map +1 -1
  136. package/lib/Select/Common.module.scss +2 -0
  137. package/lib/Select/MultiSelectField.d.ts +5 -8
  138. package/lib/Select/MultiSelectField.js +13 -14
  139. package/lib/Select/MultiSelectField.js.map +1 -1
  140. package/lib/Select/MultiSelectField.module.scss +8 -0
  141. package/lib/Select/MultiSelectFieldFormik.d.ts +3 -2
  142. package/lib/Select/MultiSelectFieldFormik.js +11 -5
  143. package/lib/Select/MultiSelectFieldFormik.js.map +1 -1
  144. package/lib/Select/SelectField.d.ts +3 -7
  145. package/lib/Select/SelectField.js +8 -8
  146. package/lib/Select/SelectField.js.map +1 -1
  147. package/lib/Select/SelectField.module.scss +5 -5
  148. package/lib/Select/SelectFieldFormik.d.ts +3 -2
  149. package/lib/Select/SelectFieldFormik.js +10 -4
  150. package/lib/Select/SelectFieldFormik.js.map +1 -1
  151. package/lib/Select/helpers.d.ts +1 -2
  152. package/lib/Select/index.d.ts +7 -5
  153. package/lib/Select/index.js +7 -5
  154. package/lib/Select/index.js.map +1 -1
  155. package/lib/SimpleTable.js +7 -7
  156. package/lib/SimpleTable.js.map +1 -1
  157. package/lib/SimpleTable.module.scss +1 -1
  158. package/lib/Slider.d.ts +6 -5
  159. package/lib/Slider.js +35 -17
  160. package/lib/Slider.js.map +1 -1
  161. package/lib/Slider.module.scss +13 -9
  162. package/lib/SliderFormik.d.ts +1 -1
  163. package/lib/SliderFormik.js +1 -1
  164. package/lib/SliderFormik.js.map +1 -1
  165. package/lib/Table/Cell.module.scss +11 -4
  166. package/lib/Table/EnhancedRenderers.d.ts +0 -7
  167. package/lib/Table/EnhancedRenderers.js +3 -14
  168. package/lib/Table/EnhancedRenderers.js.map +1 -1
  169. package/lib/Table/Header.js +9 -3
  170. package/lib/Table/Header.js.map +1 -1
  171. package/lib/Table/Header.module.scss +29 -35
  172. package/lib/Table/Row.js +2 -7
  173. package/lib/Table/Row.js.map +1 -1
  174. package/lib/Table/Row.module.scss +4 -10
  175. package/lib/Table/Table.d.ts +10 -4
  176. package/lib/Table/Table.js +71 -31
  177. package/lib/Table/Table.js.map +1 -1
  178. package/lib/Table/Table.module.scss +5 -5
  179. package/lib/Tabs/Tab.d.ts +9 -1
  180. package/lib/Tabs/Tab.js +5 -2
  181. package/lib/Tabs/Tab.js.map +1 -1
  182. package/lib/Tabs/Tab.module.scss +5 -1
  183. package/lib/Tabs/TabList.js +2 -1
  184. package/lib/Tabs/TabList.js.map +1 -1
  185. package/lib/Tabs/index.d.ts +4 -4
  186. package/lib/Tabs/index.js +4 -4
  187. package/lib/Tabs/index.js.map +1 -1
  188. package/lib/Terminal.js +3 -3
  189. package/lib/Terminal.js.map +1 -1
  190. package/lib/Terminal.module.scss +1 -0
  191. package/lib/TextArea.d.ts +2 -5
  192. package/lib/TextArea.js +9 -9
  193. package/lib/TextArea.js.map +1 -1
  194. package/lib/TextArea.module.scss +15 -10
  195. package/lib/TextAreaFormik.js +1 -1
  196. package/lib/TextAreaFormik.js.map +1 -1
  197. package/lib/TextField.d.ts +13 -23
  198. package/lib/TextField.js +27 -12
  199. package/lib/TextField.js.map +1 -1
  200. package/lib/TextField.module.scss +36 -38
  201. package/lib/TextFieldFormik.d.ts +4 -2
  202. package/lib/TextFieldFormik.js +15 -4
  203. package/lib/TextFieldFormik.js.map +1 -1
  204. package/lib/TimeField.d.ts +2 -11
  205. package/lib/TimeField.js +8 -7
  206. package/lib/TimeField.js.map +1 -1
  207. package/lib/TimeField.module.scss +6 -6
  208. package/lib/TimeFieldFormik.js +1 -1
  209. package/lib/TimeFieldFormik.js.map +1 -1
  210. package/lib/Toast.js.map +1 -1
  211. package/lib/Toggle.js +4 -3
  212. package/lib/Toggle.js.map +1 -1
  213. package/lib/Toggle.module.scss +23 -19
  214. package/lib/ToggleFormik.js +1 -1
  215. package/lib/ToggleFormik.js.map +1 -1
  216. package/lib/Tooltip.d.ts +9 -2
  217. package/lib/Tooltip.js +87 -27
  218. package/lib/Tooltip.js.map +1 -1
  219. package/lib/Tooltip.module.scss +10 -5
  220. package/lib/TruncatedText.d.ts +6 -3
  221. package/lib/TruncatedText.js +2 -2
  222. package/lib/TruncatedText.js.map +1 -1
  223. package/lib/hooks/index.d.ts +5 -0
  224. package/lib/hooks/index.js +7 -0
  225. package/lib/hooks/index.js.map +1 -0
  226. package/lib/hooks/useIsMounted.d.ts +1 -0
  227. package/lib/hooks/useIsMounted.js +12 -0
  228. package/lib/hooks/useIsMounted.js.map +1 -0
  229. package/lib/hooks/useOnClickOutside.d.ts +8 -0
  230. package/lib/hooks/useOnClickOutside.js +24 -0
  231. package/lib/hooks/useOnClickOutside.js.map +1 -0
  232. package/lib/hooks/useOpenCloseState.d.ts +6 -0
  233. package/lib/hooks/useOpenCloseState.js +14 -0
  234. package/lib/hooks/useOpenCloseState.js.map +1 -0
  235. package/lib/hooks/usePrevious.d.ts +1 -0
  236. package/lib/hooks/usePrevious.js +9 -0
  237. package/lib/hooks/usePrevious.js.map +1 -0
  238. package/lib/hooks/useRefValue.d.ts +1 -0
  239. package/lib/hooks/useRefValue.js +9 -0
  240. package/lib/hooks/useRefValue.js.map +1 -0
  241. package/lib/hooks/useTableCustomizableColumns.d.ts +9 -0
  242. package/lib/hooks/useTableCustomizableColumns.js +23 -0
  243. package/lib/hooks/useTableCustomizableColumns.js.map +1 -0
  244. package/lib/index.d.ts +55 -53
  245. package/lib/index.js +55 -53
  246. package/lib/index.js.map +1 -1
  247. package/lib/utils/test.d.ts +1 -0
  248. package/lib/utils/test.js +8 -0
  249. package/lib/utils/test.js.map +1 -0
  250. package/package.json +57 -50
  251. package/styles/constants/_animations.scss +0 -1
  252. package/styles/constants/_colors.scss +1 -10
  253. package/styles/constants/_sizes.scss +6 -24
  254. package/styles/constants/_typography.scss +21 -10
  255. package/styles/constants/export.module.scss +1 -1
  256. package/styles/fonts.css +14 -65
  257. package/styles/helpers/_a11y.scss +8 -1
  258. package/styles/helpers/_error.scss +17 -0
  259. package/styles/helpers/_index.scss +1 -0
  260. package/styles/helpers/_input.scss +1 -1
@@ -1,6 +1,18 @@
1
1
  @use '../styles/constants' as c;
2
2
  @use '../styles/helpers' as h;
3
3
 
4
+ @mixin buttonColor($color: c.$colorPrimary) {
5
+ color: $color;
6
+ background-color: $color;
7
+ border-color: $color;
8
+ }
9
+
10
+ @mixin disabledButtonColor {
11
+ color: c.$colorTextSecondary;
12
+ background-color: c.$colorNeutral;
13
+ border-color: c.$colorNeutral;
14
+ }
15
+
4
16
  .button {
5
17
  display: inline-block;
6
18
  position: relative;
@@ -8,17 +20,18 @@
8
20
  cursor: pointer;
9
21
  border: none;
10
22
  padding: 0;
11
- border-radius: c.$borderRadius;
12
- height: c.$inputHeight;
23
+ border-radius: c.$borderRadiusButtonSmall;
24
+ height: c.$inputHeightSmall;
13
25
  max-width: c.$buttonMaxWidth;
26
+
14
27
  // for <a> element
15
28
  text-decoration: none;
16
29
 
17
- @include c.typographyButton;
30
+ @include c.typographyButton('small');
18
31
 
19
32
  .outline {
20
33
  position: absolute;
21
- border-radius: c.$borderRadius;
34
+ border-radius: c.$borderRadiusButtonSmall;
22
35
  pointer-events: none;
23
36
  top: 50%;
24
37
  left: 50%;
@@ -38,17 +51,6 @@
38
51
  }
39
52
  }
40
53
 
41
- &.small {
42
- height: c.$inputHeightSmall;
43
- border-radius: c.$borderRadiusButtonSmall;
44
-
45
- @include c.typographyButton('small');
46
-
47
- .outline {
48
- border-radius: c.$borderRadiusButtonSmall;
49
- }
50
- }
51
-
52
54
  &:focus,
53
55
  &.focus {
54
56
  // Do not remove outline for high-contrast modes
@@ -86,97 +88,128 @@
86
88
  box-sizing: border-box;
87
89
  }
88
90
 
89
- // Kind === primary
90
- &.primary {
91
- color: c.$colorNeutralWhite;
92
- background-color: c.$colorPrimary;
91
+ &.color {
92
+ &Primary {
93
+ @include buttonColor(c.$colorPrimary);
93
94
 
94
- &:hover,
95
- &.hover,
96
- &:focus,
97
- &.focus {
98
- background-color: c.$colorPrimaryLight;
99
- }
95
+ &:hover,
96
+ &.hover,
97
+ &:focus,
98
+ &.focus {
99
+ @include buttonColor(c.$colorPrimaryLight);
100
+ }
100
101
 
101
- &:active,
102
- &.active {
103
- background-color: c.$colorPrimaryDark;
104
- }
102
+ &:active,
103
+ &.active {
104
+ @include buttonColor(c.$colorPrimaryDark);
105
+ }
105
106
 
106
- &:disabled {
107
- color: c.$colorTextSecondary;
108
- background-color: c.$colorNeutral;
107
+ &.variantContained {
108
+ color: c.$colorNeutralWhite;
109
+ }
110
+
111
+ &:disabled {
112
+ @include disabledButtonColor;
113
+ }
109
114
  }
110
- }
111
115
 
112
- // Kind === secondary
113
- &.secondary {
114
- color: c.$colorPrimary;
115
- background-color: transparent;
116
- border: c.$borderWidthButton solid;
117
- border-color: c.$colorPrimary;
116
+ &Secondary {
117
+ @include buttonColor(c.$colorError);
118
118
 
119
- .outline {
120
- /* Note: We need to take border of 1px into account */
121
- /* doiuse-disable calc */
122
- width: calc(100% + #{c.$grid} * 2.5);
123
- height: calc(100% + #{c.$grid} * 2.5);
124
- /* doiuse-enable calc */
119
+ &:hover,
120
+ &.hover,
121
+ &:focus,
122
+ &.focus {
123
+ @include buttonColor(c.$colorErrorLight);
124
+ }
125
125
 
126
- &.inset {
127
- /* doiuse-disable calc */
128
- width: calc(100% + #{c.$grid});
129
- height: calc(100% + #{c.$grid});
130
- /* doiuse-enable calc */
126
+ &:active,
127
+ &.active {
128
+ @include buttonColor(c.$colorErrorDark);
131
129
  }
132
- }
133
130
 
134
- &:hover,
135
- &.hover,
136
- &:focus,
137
- &.focus {
138
- color: c.$colorPrimaryLight;
139
- border-color: c.$colorPrimaryLight;
140
- }
131
+ &.variantContained {
132
+ color: c.$colorNeutralWhite;
133
+ }
141
134
 
142
- &:active,
143
- &.active {
144
- color: c.$colorPrimaryDark;
145
- border-color: c.$colorPrimaryDark;
135
+ &:disabled {
136
+ @include disabledButtonColor;
137
+ }
146
138
  }
147
139
 
148
- &:disabled {
149
- color: c.$colorTextSecondary;
150
- border-color: c.$colorNeutral;
140
+ &Warning {
141
+ @include buttonColor(c.$colorWarning);
142
+
143
+ &:hover,
144
+ &.hover,
145
+ &:focus,
146
+ &.focus {
147
+ @include buttonColor(c.$colorWarningLight);
148
+ }
149
+
150
+ &:active,
151
+ &.active {
152
+ @include buttonColor(c.$colorWarningDark);
153
+ }
154
+
155
+ &.variantContained {
156
+ color: c.$colorText;
157
+ }
158
+
159
+ &:disabled {
160
+ @include disabledButtonColor;
161
+ }
151
162
  }
152
163
  }
153
164
 
154
- // Kind === danger
155
- &.danger {
156
- color: c.$colorNeutralWhite;
157
- background-color: c.$colorError;
165
+ &.variant {
166
+ &Outlined {
167
+ background: none;
168
+ border-style: solid;
169
+ border-width: c.$borderWidth;
158
170
 
159
- &:hover,
160
- &.hover,
161
- &:focus,
162
- &.focus {
163
- background-color: c.$colorErrorLight;
164
- }
171
+ .outline {
172
+ /* Note: We need to take border of 1px into account */
173
+ /* doiuse-disable calc */
174
+ width: calc(100% + #{c.$grid} * 2.5);
175
+ height: calc(100% + #{c.$grid} * 2.5);
176
+ /* doiuse-enable calc */
165
177
 
166
- &:active,
167
- &.active {
168
- background-color: c.$colorErrorDark;
169
- }
178
+ &.inset {
179
+ /* doiuse-disable calc */
180
+ width: calc(100% + #{c.$grid});
181
+ height: calc(100% + #{c.$grid});
182
+ /* doiuse-enable calc */
183
+ }
184
+ }
170
185
 
171
- &:disabled {
172
- color: c.$colorTextSecondary;
173
- background-color: c.$colorNeutral;
186
+ &:hover,
187
+ &.hover,
188
+ &:active,
189
+ &.active,
190
+ &:focus,
191
+ &.focus,
192
+ &:disabled,
193
+ &.disabled {
194
+ background: none;
195
+ }
174
196
  }
175
- }
176
197
 
177
- // Kind === transparent
178
- &.transparent {
179
- color: inherit;
180
- background-color: transparent;
198
+ &Text {
199
+ color: inherit;
200
+ background: none;
201
+
202
+ &:hover,
203
+ &.hover,
204
+ &:active,
205
+ &.active,
206
+ &:focus,
207
+ &.focus,
208
+ &:disabled,
209
+ &.disabled {
210
+ color: inherit;
211
+ background: none;
212
+ }
213
+ }
181
214
  }
182
215
  }
@@ -3,7 +3,7 @@ import { ReactDatePickerProps } from 'react-datepicker';
3
3
  export declare type CalendarSize = 'medium' | 'small';
4
4
  export declare type CalendarProps = {
5
5
  containerClassName?: string;
6
- date: ReactDatePickerProps['selected'];
6
+ date: Date | null;
7
7
  inputLabel: string;
8
8
  inputClassName?: string;
9
9
  onDateChange: ReactDatePickerProps['onChange'];
@@ -1,17 +1,22 @@
1
1
  import React from 'react';
2
2
  import cn from 'classnames';
3
+ import { createPortal } from 'react-dom';
3
4
  import DatePicker from 'react-datepicker';
4
5
  import { CalendarInput } from './components/CalendarInput';
5
6
  import { CalendarHeader } from './components/CalendarHeader';
6
7
  import { CalendarTime } from './components/CalendarTime';
8
+ import { canUseDOM } from '../utils/ssr';
7
9
  import styles from './Calendar.module.scss';
8
10
  const DATE_FORMAT = 'yyyy-MM-dd';
9
11
  const DATE_FORMAT_WITH_TIME = 'yyyy-MM-dd hh:mm a';
10
- const CalendarPopperContainer = ({ children }) => React.createElement("div", { "data-test": "date-picker-popper-container" }, children);
12
+ const CalendarPopperContainer = ({ children }) => canUseDOM && children
13
+ ? createPortal(React.createElement("div", { className: styles.popper },
14
+ React.createElement("div", { "data-test": "date-picker-popper-container", className: "hz-date-picker-popper-container" }, children)), document.body)
15
+ : null;
11
16
  export const Calendar = ({ calendarClassName, className, containerClassName, date, inputLabel, inputClassName, onDateChange, showTimeInput, size = 'medium', ...props }) => (React.createElement("div", { className: cn(styles.container, {
12
17
  [styles.time]: showTimeInput,
13
18
  }, containerClassName) },
14
- React.createElement(DatePicker, Object.assign({}, props, { calendarClassName: cn(styles.calendar, calendarClassName), className: className,
19
+ React.createElement(DatePicker, { ...props, calendarClassName: cn(styles.calendar, calendarClassName), className: className,
15
20
  /*
16
21
  * Note: The library instantiates the component using React.cloneElement
17
22
  * Source: https://github.com/Hacker0x01/react-datepicker/blob/master/src/index.jsx#L926
@@ -22,5 +27,5 @@ export const Calendar = ({ calendarClassName, className, containerClassName, dat
22
27
  * 'renderCustomHeader' is the only child component override prop that is not instantiated
23
28
  * via React.cloneElement. So at least we can utilise a typed React.Component over React.ReactNode here
24
29
  */
25
- renderCustomHeader: CalendarHeader, selected: date, showPopperArrow: false, showTimeInput: showTimeInput }))));
30
+ renderCustomHeader: CalendarHeader, selected: date, showPopperArrow: false, showTimeInput: showTimeInput })));
26
31
  //# sourceMappingURL=Calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,UAAoC,MAAM,kBAAkB,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,MAAM,MAAM,wBAAwB,CAAA;AAE3C,MAAM,WAAW,GAAG,YAAY,CAAA;AAChC,MAAM,qBAAqB,GAAG,oBAAoB,CAAA;AAElD,MAAM,uBAAuB,GAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,0CAAe,8BAA8B,IAAE,QAAQ,CAAO,CAAA;AAapH,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,EAC1C,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,IAAI,GAAG,QAAQ,EACf,GAAG,KAAK,EACT,EAAE,EAAE,CAAC,CACJ,6BACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,SAAS,EAChB;QACE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa;KAC7B,EACD,kBAAkB,CACnB;IAED,oBAAC,UAAU,oBACL,KAAK,IACT,iBAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EACzD,SAAS,EAAE,SAAS;QACpB;;;WAGG;QACH,WAAW,EAAE,oBAAC,aAAa,IAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,GAAI,EACjG,eAAe,EAAE,oBAAC,YAAY,OAAG,EACjC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAC/D,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,uBAAuB;QACxC;;;;WAIG;QACH,kBAAkB,EAAE,cAAc,EAClC,QAAQ,EAAE,IAAI,EACd,eAAe,EAAE,KAAK,EACtB,aAAa,EAAE,aAAa,IAC5B,CACE,CACP,CAAA"}
1
+ {"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,UAAoC,MAAM,kBAAkB,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,MAAM,MAAM,wBAAwB,CAAA;AAE3C,MAAM,WAAW,GAAG,YAAY,CAAA;AAChC,MAAM,qBAAqB,GAAG,oBAAoB,CAAA;AAElD,MAAM,uBAAuB,GAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACnD,SAAS,IAAI,QAAQ;IACnB,CAAC,CAAC,YAAY,CACZ,6BAAK,SAAS,EAAE,MAAM,CAAC,MAAM;QAC3B,0CAAe,8BAA8B,EAAC,SAAS,EAAC,iCAAiC,IACtF,QAAQ,CACL,CACF,EACJ,QAAQ,CAAC,IAAI,CACd;IACH,CAAC,CAAC,IAAI,CAAA;AAaV,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,EAC1C,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,IAAI,GAAG,QAAQ,EACf,GAAG,KAAK,EACT,EAAE,EAAE,CAAC,CACJ,6BACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,SAAS,EAChB;QACE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa;KAC7B,EACD,kBAAkB,CACnB;IAED,oBAAC,UAAU,OACL,KAAK,EACT,iBAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EACzD,SAAS,EAAE,SAAS;QACpB;;;WAGG;QACH,WAAW,EAAE,oBAAC,aAAa,IAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,GAAI,EACjG,eAAe,EAAE,oBAAC,YAAY,OAAG,EACjC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAC/D,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,uBAAuB;QACxC;;;;WAIG;QACH,kBAAkB,EAAE,cAAc,EAClC,QAAQ,EAAE,IAAI,EACd,eAAe,EAAE,KAAK,EACtB,aAAa,EAAE,aAAa,GAC5B,CACE,CACP,CAAA"}
@@ -10,163 +10,174 @@ $inputPadding: c.$grid * 3;
10
10
  * Rest of styles
11
11
  */
12
12
  .container {
13
- /*
14
- * Internal styles override for those that cannot be
15
- * overridden using classNames composition
16
- */
13
+ width: $inputMaxWidth;
14
+ min-width: $inputMinWidth;
15
+
17
16
  :global .react-datepicker-wrapper {
18
17
  width: 100%;
19
18
  }
20
19
 
21
- :global .react-datepicker {
22
- :global .react-datepicker__header {
23
- margin: 0;
24
- padding: 0;
25
- background-color: c.$colorNeutralLighter;
26
- border: none;
27
- border-radius: 0;
20
+ &.time {
21
+ min-width: $inputMinWidthWithTime;
22
+ }
23
+ }
28
24
 
29
- :global .react-datepicker__day-names {
30
- margin-bottom: c.$grid;
25
+ .popper {
26
+ :global(.hz-date-picker-popper-container) {
27
+ /*
28
+ * Internal styles override for those that cannot be
29
+ * overridden using classNames composition
30
+ */
31
+ :global .react-datepicker-popper {
32
+ z-index: c.$zIndex200;
33
+ }
31
34
 
32
- :global .react-datepicker__day-name {
33
- width: c.$grid * 8;
34
- height: c.$grid * 8;
35
- text-align: center;
36
- vertical-align: middle;
37
- line-height: c.$grid * 8 !important;
38
- margin: 0;
39
- color: c.$colorText;
35
+ :global .react-datepicker {
36
+ :global .react-datepicker__header {
37
+ margin: 0;
38
+ padding: 0;
39
+ background-color: c.$colorNeutralLighter;
40
+ border: none;
41
+ border-radius: 0;
42
+
43
+ :global .react-datepicker__day-names {
44
+ margin-bottom: c.$grid;
45
+
46
+ :global .react-datepicker__day-name {
47
+ width: c.$grid * 8;
48
+ height: c.$grid * 8;
49
+ text-align: center;
50
+ vertical-align: middle;
51
+ line-height: c.$grid * 8 !important;
52
+ margin: 0;
53
+ color: c.$colorText;
40
54
 
41
- @include c.typographyBodySmall('bold');
55
+ @include c.typographyBodySmall('bold');
42
56
 
43
- &:not(:last-of-type) {
44
- margin-right: c.$grid * 2;
57
+ &:not(:last-of-type) {
58
+ margin-right: c.$grid * 2;
59
+ }
45
60
  }
46
61
  }
47
62
  }
48
- }
49
-
50
- :global .react-datepicker__month {
51
- /*
52
- * Note: The calendar part is asymmetrical by design
53
- * It's padded by 2 extra px from the left
54
- */
55
- margin: 0 0 0 (c.$grid * 0.5);
56
-
57
- :global .react-datepicker__week {
58
- &:not(:last-of-type) {
59
- margin-bottom: c.$grid * 2;
60
- }
61
63
 
64
+ :global .react-datepicker__month {
62
65
  /*
63
- * Note:
64
- * We need to use :global override here, as 'renderCustomDay' only allows us to override
65
- * the child of this element, which does not allow us to touch the styles properly
66
- *
67
- * Source styles: https://github.com/Hacker0x01/react-datepicker/blob/master/src/stylesheets/datepicker.scss#L395
66
+ * Note: The calendar part is asymmetrical by design
67
+ * It's padded by 2 extra px from the left
68
68
  */
69
- :global .react-datepicker__day {
70
- border-radius: c.$grid;
71
- width: c.$grid * 8;
72
- height: c.$grid * 8;
73
- background-color: c.$colorNeutralWhite;
74
- color: c.$colorTextSecondary;
75
- text-align: center;
76
- vertical-align: middle;
77
- line-height: c.$grid * 8 !important;
78
- margin: 0;
79
-
80
- // Do not remove outline for high-contrast modes
81
- // https://stackoverflow.com/a/52616313
82
- outline: transparent solid c.$outlineWidth;
83
-
84
- @include c.typographyBodySmall;
85
-
86
- &--today {
87
- @include c.typographyBodySmall('bold');
88
- }
69
+ margin: 0 0 0 (c.$grid * 0.5);
89
70
 
90
- &--in-selecting-range,
91
- &--in-range {
92
- // TODO: Improvised colour, consult with @Pawel
93
- background-color: c.$colorInfoLight;
94
- color: c.$colorNeutralWhite;
95
- }
96
-
97
- &--selected {
98
- background-color: c.$colorPrimaryLight;
99
- color: c.$colorNeutralWhite;
100
- // Note: Disable default browser outline, force our only on :focus
101
-
102
- @include c.typographyBodySmall('bold');
103
- }
104
-
105
- &--disabled {
106
- cursor: default;
107
- color: c.$colorNeutral;
108
- }
109
-
110
- &:focus {
111
- @include h.outlineSimple;
71
+ :global .react-datepicker__week {
72
+ &:not(:last-of-type) {
73
+ margin-bottom: c.$grid * 2;
112
74
  }
113
75
 
114
- &:not(:last-of-type) {
115
- margin-right: c.$grid * 2;
76
+ /*
77
+ * Note:
78
+ * We need to use :global override here, as 'renderCustomDay' only allows us to override
79
+ * the child of this element, which does not allow us to touch the styles properly
80
+ *
81
+ * Source styles:
82
+ * https://github.com/Hacker0x01/react-datepicker/blob/master/src/stylesheets/datepicker.scss#L395
83
+ */
84
+ :global .react-datepicker__day {
85
+ border-radius: c.$grid;
86
+ width: c.$grid * 8;
87
+ height: c.$grid * 8;
88
+ background-color: c.$colorNeutralWhite;
89
+ color: c.$colorTextSecondary;
90
+ text-align: center;
91
+ vertical-align: middle;
92
+ line-height: c.$grid * 8 !important;
93
+ margin: 0;
94
+
95
+ // Do not remove outline for high-contrast modes
96
+ // https://stackoverflow.com/a/52616313
97
+ outline: transparent solid c.$outlineWidth;
98
+
99
+ @include c.typographyBodySmall;
100
+
101
+ &--today {
102
+ @include c.typographyBodySmall('bold');
103
+ }
104
+
105
+ &--in-selecting-range,
106
+ &--in-range {
107
+ // TODO: Improvised colour, consult with @Pawel
108
+ background-color: c.$colorInfoLight;
109
+ color: c.$colorNeutralWhite;
110
+ }
111
+
112
+ &--selected {
113
+ background-color: c.$colorPrimaryLight;
114
+ color: c.$colorNeutralWhite;
115
+
116
+ // Note: Disable default browser outline, force our only on :focus
117
+
118
+ @include c.typographyBodySmall('bold');
119
+ }
120
+
121
+ &--disabled {
122
+ cursor: default;
123
+ color: c.$colorNeutral;
124
+ }
125
+
126
+ &:focus {
127
+ @include h.outlineSimple;
128
+ }
129
+
130
+ &:not(:last-of-type) {
131
+ margin-right: c.$grid * 2;
132
+ }
116
133
  }
117
134
  }
118
135
  }
119
- }
120
136
 
121
- :global .react-datepicker__input-time-container {
122
- margin: 0;
123
- padding: 0;
137
+ :global .react-datepicker__input-time-container {
138
+ margin: 0;
139
+ padding: 0;
124
140
 
125
- :global .react-datepicker-time__caption {
126
- display: none;
127
- }
141
+ :global .react-datepicker-time__caption {
142
+ display: none;
143
+ }
128
144
 
129
- :global .react-datepicker-time__input-container {
130
- margin: 0 c.$grid 0 c.$grid * 5;
145
+ :global .react-datepicker-time__input-container {
146
+ margin: 0 c.$grid 0 c.$grid * 5;
131
147
 
132
- :global .react-datepicker-time__input {
133
- margin: 0;
148
+ :global .react-datepicker-time__input {
149
+ margin: 0;
134
150
 
135
- input {
136
- width: auto;
151
+ input {
152
+ width: auto;
153
+ }
137
154
  }
138
155
  }
139
156
  }
140
157
  }
141
- }
142
158
 
143
- width: $inputMaxWidth;
144
- min-width: $inputMinWidth;
145
-
146
- &.time {
147
- min-width: $inputMinWidthWithTime;
148
- }
149
-
150
- .calendar {
151
- display: flex;
152
- flex-direction: row;
153
- border: c.$borderWidth solid c.$colorNeutralLight;
154
- background-color: c.$colorNeutralLighter;
155
- padding: $inputPadding;
156
- box-sizing: border-box;
157
-
158
- .headerContainer {
159
+ .calendar {
159
160
  display: flex;
160
161
  flex-direction: row;
161
- align-items: center;
162
- justify-content: space-between;
163
- // Note: There is 1.5px in designs - also $separatorWidth is not semantically the best fit
164
- margin-bottom: c.$separatorWidth;
162
+ border: c.$borderWidth solid c.$colorNeutralLight;
163
+ background-color: c.$colorNeutralLighter;
164
+ padding: $inputPadding;
165
+ box-sizing: border-box;
165
166
 
166
- .headerMonthAndYear {
167
- color: c.$colorTextSecondary;
167
+ .headerContainer {
168
+ display: flex;
169
+ flex-direction: row;
170
+ align-items: center;
171
+ justify-content: space-between;
168
172
 
169
- @include c.typographyBodySmall('bold');
173
+ // Note: There is 1.5px in designs - also $separatorWidth is not semantically the best fit
174
+ margin-bottom: c.$separatorWidth;
175
+
176
+ .headerMonthAndYear {
177
+ color: c.$colorTextSecondary;
178
+
179
+ @include c.typographyBodySmall('bold');
180
+ }
170
181
  }
171
182
  }
172
183
  }
@@ -0,0 +1,45 @@
1
+ import React, { FC } from 'react'
2
+ import { ReactDatePickerProps } from 'react-datepicker'
3
+ import { ChevronLeft, ChevronRight } from 'react-feather'
4
+ import { format } from 'date-fns'
5
+
6
+ import { IconButton } from '../../IconButton'
7
+
8
+ import styles from '../Calendar.module.scss'
9
+ import styleConsts from '../../../styles/constants/export.module.scss'
10
+
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ type ExtractFnArgumentType<T> = T extends (arg: infer U) => any ? U : never
13
+
14
+ /*
15
+ * Note:
16
+ * react-datepicker does expose header props type as "renderCustomHeader", however the property is defined
17
+ * as a render-prop.
18
+ * This way we can pick the argument type from the render function and convert the property
19
+ * to use a regular component, rather than a render-prop.
20
+ *
21
+ * There is no significant benefit other than readability.
22
+ */
23
+ export type CalendarHeaderProps = ExtractFnArgumentType<ReactDatePickerProps['renderCustomHeader']>
24
+
25
+ export const CalendarHeader: FC<CalendarHeaderProps> = ({ date, decreaseMonth, increaseMonth }) => {
26
+ return (
27
+ <div data-test="date-picker-header" className={styles.headerContainer}>
28
+ <IconButton
29
+ data-test="date-picker-header-icon-previous"
30
+ icon={ChevronLeft}
31
+ ariaLabel="Previous month"
32
+ iconColor={styleConsts.colorPrimary}
33
+ onClick={decreaseMonth}
34
+ />
35
+ <div className={styles.headerMonthAndYear}>{format(date, 'MMMM y')}</div>
36
+ <IconButton
37
+ data-test="date-picker-header-icon-next"
38
+ icon={ChevronRight}
39
+ ariaLabel="Next month"
40
+ iconColor={styleConsts.colorPrimary}
41
+ onClick={increaseMonth}
42
+ />
43
+ </div>
44
+ )
45
+ }
@@ -1,12 +1,12 @@
1
1
  import React, { forwardRef } from 'react';
2
2
  import { Calendar } from 'react-feather';
3
3
  import { TextField } from '../../TextField';
4
- export const CalendarInputInternal = ({ className, value, onChange, label, textFieldSize, ...props }) => (React.createElement(TextField, Object.assign({}, props, { size: textFieldSize, "data-test": "calendar-input", value: value === null || value === void 0 ? void 0 : value.toString(), onChange: onChange, inputContainerClassName: className, type: "text", name: "calendar-input", label: label, inputTrailingIcon: Calendar, inputTrailingIconLabel: "Calendar Icon" })));
4
+ export const CalendarInputInternal = ({ className, value, onChange, label, textFieldSize, ...props }) => (React.createElement(TextField, { ...props, size: textFieldSize, "data-test": "calendar-input", value: value === null || value === void 0 ? void 0 : value.toString(), onChange: onChange, inputContainerClassName: className, type: "text", name: "calendar-input", label: label, inputTrailingIcon: Calendar, inputTrailingIconLabel: "Calendar Icon" }));
5
5
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
6
  export const CalendarInput = forwardRef((props, ref) => {
7
7
  // Note: Cast the "unknown" props to the actual type
8
8
  const propsTyped = props;
9
- return React.createElement(CalendarInputInternal, Object.assign({}, propsTyped));
9
+ return React.createElement(CalendarInputInternal, { ...propsTyped });
10
10
  });
11
11
  CalendarInput.displayName = 'CalendarInput';
12
12
  //# sourceMappingURL=CalendarInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarInput.js","sourceRoot":"","sources":["../../../src/Calendar/components/CalendarInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwC,UAAU,EAAE,MAAM,OAAO,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,MAAM,CAAC,MAAM,qBAAqB,GAAmC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACvI,oBAAC,SAAS,oBACJ,KAAK,IACT,IAAI,EAAE,aAAa,eACT,gBAAgB,EAC1B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,IACtB,QAAQ,EAAE,QAAQ,EAClB,uBAAuB,EAAE,SAAS,EAClC,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,QAAQ,EAC3B,sBAAsB,EAAC,eAAe,IACtC,CACH,CAAA;AAgBD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAA2B,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7E,oDAAoD;IACpD,MAAM,UAAU,GAAG,KAAmC,CAAA;IAEtD,OAAO,oBAAC,qBAAqB,oBAAK,UAAU,EAAI,CAAA;AAClD,CAAC,CAAC,CAAA;AAEF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA"}
1
+ {"version":3,"file":"CalendarInput.js","sourceRoot":"","sources":["../../../src/Calendar/components/CalendarInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwC,UAAU,EAAE,MAAM,OAAO,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,MAAM,CAAC,MAAM,qBAAqB,GAAmC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACvI,oBAAC,SAAS,OACJ,KAAK,EACT,IAAI,EAAE,aAAa,eACT,gBAAgB,EAC1B,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE,EACxB,QAAQ,EAAE,QAAQ,EAClB,uBAAuB,EAAE,SAAS,EAClC,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,QAAQ,EAC3B,sBAAsB,EAAC,eAAe,GACtC,CACH,CAAA;AAgBD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAA2B,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7E,oDAAoD;IACpD,MAAM,UAAU,GAAG,KAAmC,CAAA;IAEtD,OAAO,oBAAC,qBAAqB,OAAK,UAAU,GAAI,CAAA;AAClD,CAAC,CAAC,CAAA;AAEF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA"}