no-frills-ui 0.0.14-alpha.5 → 0.0.14-alpha.6

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 (323) hide show
  1. package/dist/index.js +2365 -3152
  2. package/dist/index.js.map +1 -1
  3. package/lib-esm/components/Accordion/Accordion.d.ts +0 -1
  4. package/lib-esm/components/Accordion/Accordion.js +26 -26
  5. package/lib-esm/components/Accordion/AccordionStep.d.ts +0 -1
  6. package/lib-esm/components/Accordion/AccordionStep.js +98 -96
  7. package/lib-esm/components/Accordion/index.d.ts +0 -1
  8. package/lib-esm/components/Badge/Badge.d.ts +0 -1
  9. package/lib-esm/components/Badge/Badge.js +32 -38
  10. package/lib-esm/components/Badge/index.d.ts +0 -1
  11. package/lib-esm/components/Button/ActionButton.d.ts +0 -1
  12. package/lib-esm/components/Button/ActionButton.js +6 -39
  13. package/lib-esm/components/Button/Button.d.ts +0 -1
  14. package/lib-esm/components/Button/Button.js +8 -44
  15. package/lib-esm/components/Button/IconButton.d.ts +0 -1
  16. package/lib-esm/components/Button/IconButton.js +6 -43
  17. package/lib-esm/components/Button/LinkButton.d.ts +0 -1
  18. package/lib-esm/components/Button/LinkButton.js +6 -34
  19. package/lib-esm/components/Button/RaisedButton.d.ts +0 -1
  20. package/lib-esm/components/Button/RaisedButton.js +6 -47
  21. package/lib-esm/components/Button/index.d.ts +0 -1
  22. package/lib-esm/components/Card/Card.d.ts +0 -1
  23. package/lib-esm/components/Card/Card.js +8 -13
  24. package/lib-esm/components/Card/index.d.ts +0 -1
  25. package/lib-esm/components/Chip/Chip.d.ts +0 -1
  26. package/lib-esm/components/Chip/Chip.js +35 -43
  27. package/lib-esm/components/Chip/index.d.ts +0 -1
  28. package/lib-esm/components/ChipInput/ChipInput.d.ts +0 -1
  29. package/lib-esm/components/ChipInput/ChipInput.js +102 -162
  30. package/lib-esm/components/ChipInput/index.d.ts +0 -1
  31. package/lib-esm/components/Dialog/AlertDialog.d.ts +0 -1
  32. package/lib-esm/components/Dialog/AlertDialog.js +45 -26
  33. package/lib-esm/components/Dialog/ConfirmDialog.d.ts +0 -1
  34. package/lib-esm/components/Dialog/ConfirmDialog.js +49 -31
  35. package/lib-esm/components/Dialog/Dialog.d.ts +1 -1
  36. package/lib-esm/components/Dialog/Dialog.js +76 -106
  37. package/lib-esm/components/Dialog/PromptDialog.d.ts +0 -1
  38. package/lib-esm/components/Dialog/PromptDialog.js +82 -44
  39. package/lib-esm/components/Dialog/index.d.ts +0 -1
  40. package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +0 -1
  41. package/lib-esm/components/DragAndDrop/DragAndDrop.js +66 -71
  42. package/lib-esm/components/DragAndDrop/DragItem.d.ts +0 -1
  43. package/lib-esm/components/DragAndDrop/DragItem.js +106 -118
  44. package/lib-esm/components/DragAndDrop/index.d.ts +0 -1
  45. package/lib-esm/components/DragAndDrop/types.d.ts +0 -1
  46. package/lib-esm/components/DragAndDrop/types.js +7 -5
  47. package/lib-esm/components/Drawer/Drawer.d.ts +0 -1
  48. package/lib-esm/components/Drawer/Drawer.js +143 -197
  49. package/lib-esm/components/Drawer/index.d.ts +0 -1
  50. package/lib-esm/components/Groups/Group.d.ts +0 -1
  51. package/lib-esm/components/Groups/Group.js +28 -86
  52. package/lib-esm/components/Groups/GroupLabel.d.ts +0 -1
  53. package/lib-esm/components/Groups/GroupLabel.js +7 -17
  54. package/lib-esm/components/Groups/index.d.ts +0 -1
  55. package/lib-esm/components/Input/Checkbox.d.ts +0 -1
  56. package/lib-esm/components/Input/Checkbox.js +39 -115
  57. package/lib-esm/components/Input/Dropdown.d.ts +0 -1
  58. package/lib-esm/components/Input/Dropdown.js +74 -37
  59. package/lib-esm/components/Input/Input.d.ts +0 -1
  60. package/lib-esm/components/Input/Input.js +52 -110
  61. package/lib-esm/components/Input/Radio.d.ts +0 -1
  62. package/lib-esm/components/Input/Radio.js +31 -92
  63. package/lib-esm/components/Input/RadioButton.d.ts +0 -1
  64. package/lib-esm/components/Input/RadioButton.js +30 -67
  65. package/lib-esm/components/Input/Select.d.ts +0 -1
  66. package/lib-esm/components/Input/Select.js +65 -123
  67. package/lib-esm/components/Input/TextArea.d.ts +0 -1
  68. package/lib-esm/components/Input/TextArea.js +51 -108
  69. package/lib-esm/components/Input/Toggle.d.ts +0 -1
  70. package/lib-esm/components/Input/Toggle.js +29 -80
  71. package/lib-esm/components/Input/index.d.ts +0 -1
  72. package/lib-esm/components/Menu/Menu.d.ts +0 -1
  73. package/lib-esm/components/Menu/Menu.js +47 -62
  74. package/lib-esm/components/Menu/MenuContext.d.ts +0 -1
  75. package/lib-esm/components/Menu/MenuContext.js +4 -2
  76. package/lib-esm/components/Menu/MenuItem.d.ts +0 -1
  77. package/lib-esm/components/Menu/MenuItem.js +34 -49
  78. package/lib-esm/components/Menu/index.d.ts +0 -1
  79. package/lib-esm/components/Modal/Modal.d.ts +0 -1
  80. package/lib-esm/components/Modal/Modal.js +117 -154
  81. package/lib-esm/components/Modal/index.d.ts +0 -1
  82. package/lib-esm/components/Notification/Notification.d.ts +0 -1
  83. package/lib-esm/components/Notification/Notification.js +54 -66
  84. package/lib-esm/components/Notification/NotificationManager.d.ts +4 -1
  85. package/lib-esm/components/Notification/NotificationManager.js +157 -100
  86. package/lib-esm/components/Notification/index.d.ts +0 -1
  87. package/lib-esm/components/Notification/style.d.ts +0 -1
  88. package/lib-esm/components/Notification/style.js +51 -145
  89. package/lib-esm/components/Notification/types.d.ts +0 -1
  90. package/lib-esm/components/Notification/types.js +8 -9
  91. package/lib-esm/components/Popover/Popover.d.ts +0 -1
  92. package/lib-esm/components/Popover/Popover.js +135 -115
  93. package/lib-esm/components/Popover/index.d.ts +0 -1
  94. package/lib-esm/components/Spinner/Spinner.d.ts +0 -1
  95. package/lib-esm/components/Spinner/Spinner.js +19 -39
  96. package/lib-esm/components/Spinner/index.d.ts +0 -1
  97. package/lib-esm/components/Stepper/Step.d.ts +0 -1
  98. package/lib-esm/components/Stepper/Step.js +15 -22
  99. package/lib-esm/components/Stepper/Stepper.d.ts +0 -1
  100. package/lib-esm/components/Stepper/Stepper.js +98 -119
  101. package/lib-esm/components/Stepper/index.d.ts +0 -1
  102. package/lib-esm/components/Tabs/Tab.d.ts +0 -1
  103. package/lib-esm/components/Tabs/Tab.js +11 -10
  104. package/lib-esm/components/Tabs/Tabs.d.ts +0 -1
  105. package/lib-esm/components/Tabs/Tabs.js +80 -75
  106. package/lib-esm/components/Tabs/index.d.ts +0 -1
  107. package/lib-esm/components/Toast/Toast.d.ts +5 -1
  108. package/lib-esm/components/Toast/Toast.js +127 -135
  109. package/lib-esm/components/Toast/ToastStory.d.ts +0 -1
  110. package/lib-esm/components/Toast/index.d.ts +0 -1
  111. package/lib-esm/components/Tooltip/Tooltip.d.ts +0 -1
  112. package/lib-esm/components/Tooltip/Tooltip.js +57 -69
  113. package/lib-esm/components/Tooltip/index.d.ts +0 -1
  114. package/lib-esm/components/index.d.ts +0 -1
  115. package/lib-esm/components/index.js +42 -21
  116. package/lib-esm/icons/CheckCircle.d.ts +0 -1
  117. package/lib-esm/icons/CheckCircle.js +21 -4
  118. package/lib-esm/icons/Close.d.ts +0 -1
  119. package/lib-esm/icons/Close.js +21 -4
  120. package/lib-esm/icons/DragIndicator.d.ts +0 -1
  121. package/lib-esm/icons/DragIndicator.js +21 -4
  122. package/lib-esm/icons/ErrorOutline.d.ts +0 -1
  123. package/lib-esm/icons/ErrorOutline.js +15 -4
  124. package/lib-esm/icons/ExpandMore.d.ts +0 -1
  125. package/lib-esm/icons/ExpandMore.js +21 -4
  126. package/lib-esm/icons/FiberManualRecord.d.ts +0 -1
  127. package/lib-esm/icons/FiberManualRecord.js +23 -4
  128. package/lib-esm/icons/Info.d.ts +0 -1
  129. package/lib-esm/icons/Info.js +21 -4
  130. package/lib-esm/icons/ReportProblem.d.ts +0 -1
  131. package/lib-esm/icons/ReportProblem.js +21 -4
  132. package/lib-esm/icons/index.d.ts +0 -1
  133. package/lib-esm/index.d.ts +0 -1
  134. package/lib-esm/shared/LayerManager.d.ts +3 -1
  135. package/lib-esm/shared/LayerManager.js +105 -96
  136. package/lib-esm/shared/constants.d.ts +0 -1
  137. package/lib-esm/shared/constants.js +33 -61
  138. package/lib-esm/shared/styles.d.ts +0 -1
  139. package/lib-esm/shared/styles.js +20 -26
  140. package/package.json +15 -5
  141. package/lib-esm/components/Accordion/Accordion.d.ts.map +0 -1
  142. package/lib-esm/components/Accordion/Accordion.js.map +0 -1
  143. package/lib-esm/components/Accordion/AccordionStep.d.ts.map +0 -1
  144. package/lib-esm/components/Accordion/AccordionStep.js.map +0 -1
  145. package/lib-esm/components/Accordion/index.d.ts.map +0 -1
  146. package/lib-esm/components/Accordion/index.js +0 -3
  147. package/lib-esm/components/Accordion/index.js.map +0 -1
  148. package/lib-esm/components/Badge/Badge.d.ts.map +0 -1
  149. package/lib-esm/components/Badge/Badge.js.map +0 -1
  150. package/lib-esm/components/Badge/index.d.ts.map +0 -1
  151. package/lib-esm/components/Badge/index.js +0 -2
  152. package/lib-esm/components/Badge/index.js.map +0 -1
  153. package/lib-esm/components/Button/ActionButton.d.ts.map +0 -1
  154. package/lib-esm/components/Button/ActionButton.js.map +0 -1
  155. package/lib-esm/components/Button/Button.d.ts.map +0 -1
  156. package/lib-esm/components/Button/Button.js.map +0 -1
  157. package/lib-esm/components/Button/IconButton.d.ts.map +0 -1
  158. package/lib-esm/components/Button/IconButton.js.map +0 -1
  159. package/lib-esm/components/Button/LinkButton.d.ts.map +0 -1
  160. package/lib-esm/components/Button/LinkButton.js.map +0 -1
  161. package/lib-esm/components/Button/RaisedButton.d.ts.map +0 -1
  162. package/lib-esm/components/Button/RaisedButton.js.map +0 -1
  163. package/lib-esm/components/Button/index.d.ts.map +0 -1
  164. package/lib-esm/components/Button/index.js +0 -6
  165. package/lib-esm/components/Button/index.js.map +0 -1
  166. package/lib-esm/components/Card/Card.d.ts.map +0 -1
  167. package/lib-esm/components/Card/Card.js.map +0 -1
  168. package/lib-esm/components/Card/index.d.ts.map +0 -1
  169. package/lib-esm/components/Card/index.js +0 -3
  170. package/lib-esm/components/Card/index.js.map +0 -1
  171. package/lib-esm/components/Chip/Chip.d.ts.map +0 -1
  172. package/lib-esm/components/Chip/Chip.js.map +0 -1
  173. package/lib-esm/components/Chip/index.d.ts.map +0 -1
  174. package/lib-esm/components/Chip/index.js +0 -2
  175. package/lib-esm/components/Chip/index.js.map +0 -1
  176. package/lib-esm/components/ChipInput/ChipInput.d.ts.map +0 -1
  177. package/lib-esm/components/ChipInput/ChipInput.js.map +0 -1
  178. package/lib-esm/components/ChipInput/index.d.ts.map +0 -1
  179. package/lib-esm/components/ChipInput/index.js +0 -2
  180. package/lib-esm/components/ChipInput/index.js.map +0 -1
  181. package/lib-esm/components/Dialog/AlertDialog.d.ts.map +0 -1
  182. package/lib-esm/components/Dialog/AlertDialog.js.map +0 -1
  183. package/lib-esm/components/Dialog/ConfirmDialog.d.ts.map +0 -1
  184. package/lib-esm/components/Dialog/ConfirmDialog.js.map +0 -1
  185. package/lib-esm/components/Dialog/Dialog.d.ts.map +0 -1
  186. package/lib-esm/components/Dialog/Dialog.js.map +0 -1
  187. package/lib-esm/components/Dialog/PromptDialog.d.ts.map +0 -1
  188. package/lib-esm/components/Dialog/PromptDialog.js.map +0 -1
  189. package/lib-esm/components/Dialog/index.d.ts.map +0 -1
  190. package/lib-esm/components/Dialog/index.js +0 -5
  191. package/lib-esm/components/Dialog/index.js.map +0 -1
  192. package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts.map +0 -1
  193. package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +0 -1
  194. package/lib-esm/components/DragAndDrop/DragItem.d.ts.map +0 -1
  195. package/lib-esm/components/DragAndDrop/DragItem.js.map +0 -1
  196. package/lib-esm/components/DragAndDrop/index.d.ts.map +0 -1
  197. package/lib-esm/components/DragAndDrop/index.js +0 -3
  198. package/lib-esm/components/DragAndDrop/index.js.map +0 -1
  199. package/lib-esm/components/DragAndDrop/types.d.ts.map +0 -1
  200. package/lib-esm/components/DragAndDrop/types.js.map +0 -1
  201. package/lib-esm/components/Drawer/Drawer.d.ts.map +0 -1
  202. package/lib-esm/components/Drawer/Drawer.js.map +0 -1
  203. package/lib-esm/components/Drawer/index.d.ts.map +0 -1
  204. package/lib-esm/components/Drawer/index.js +0 -2
  205. package/lib-esm/components/Drawer/index.js.map +0 -1
  206. package/lib-esm/components/Groups/Group.d.ts.map +0 -1
  207. package/lib-esm/components/Groups/Group.js.map +0 -1
  208. package/lib-esm/components/Groups/GroupLabel.d.ts.map +0 -1
  209. package/lib-esm/components/Groups/GroupLabel.js.map +0 -1
  210. package/lib-esm/components/Groups/index.d.ts.map +0 -1
  211. package/lib-esm/components/Groups/index.js +0 -3
  212. package/lib-esm/components/Groups/index.js.map +0 -1
  213. package/lib-esm/components/Input/Checkbox.d.ts.map +0 -1
  214. package/lib-esm/components/Input/Checkbox.js.map +0 -1
  215. package/lib-esm/components/Input/Dropdown.d.ts.map +0 -1
  216. package/lib-esm/components/Input/Dropdown.js.map +0 -1
  217. package/lib-esm/components/Input/Input.d.ts.map +0 -1
  218. package/lib-esm/components/Input/Input.js.map +0 -1
  219. package/lib-esm/components/Input/Radio.d.ts.map +0 -1
  220. package/lib-esm/components/Input/Radio.js.map +0 -1
  221. package/lib-esm/components/Input/RadioButton.d.ts.map +0 -1
  222. package/lib-esm/components/Input/RadioButton.js.map +0 -1
  223. package/lib-esm/components/Input/Select.d.ts.map +0 -1
  224. package/lib-esm/components/Input/Select.js.map +0 -1
  225. package/lib-esm/components/Input/TextArea.d.ts.map +0 -1
  226. package/lib-esm/components/Input/TextArea.js.map +0 -1
  227. package/lib-esm/components/Input/Toggle.d.ts.map +0 -1
  228. package/lib-esm/components/Input/Toggle.js.map +0 -1
  229. package/lib-esm/components/Input/index.d.ts.map +0 -1
  230. package/lib-esm/components/Input/index.js +0 -9
  231. package/lib-esm/components/Input/index.js.map +0 -1
  232. package/lib-esm/components/Menu/Menu.d.ts.map +0 -1
  233. package/lib-esm/components/Menu/Menu.js.map +0 -1
  234. package/lib-esm/components/Menu/MenuContext.d.ts.map +0 -1
  235. package/lib-esm/components/Menu/MenuContext.js.map +0 -1
  236. package/lib-esm/components/Menu/MenuItem.d.ts.map +0 -1
  237. package/lib-esm/components/Menu/MenuItem.js.map +0 -1
  238. package/lib-esm/components/Menu/index.d.ts.map +0 -1
  239. package/lib-esm/components/Menu/index.js +0 -3
  240. package/lib-esm/components/Menu/index.js.map +0 -1
  241. package/lib-esm/components/Modal/Modal.d.ts.map +0 -1
  242. package/lib-esm/components/Modal/Modal.js.map +0 -1
  243. package/lib-esm/components/Modal/index.d.ts.map +0 -1
  244. package/lib-esm/components/Modal/index.js +0 -2
  245. package/lib-esm/components/Modal/index.js.map +0 -1
  246. package/lib-esm/components/Notification/Notification.d.ts.map +0 -1
  247. package/lib-esm/components/Notification/Notification.js.map +0 -1
  248. package/lib-esm/components/Notification/NotificationManager.d.ts.map +0 -1
  249. package/lib-esm/components/Notification/NotificationManager.js.map +0 -1
  250. package/lib-esm/components/Notification/index.d.ts.map +0 -1
  251. package/lib-esm/components/Notification/index.js +0 -3
  252. package/lib-esm/components/Notification/index.js.map +0 -1
  253. package/lib-esm/components/Notification/style.d.ts.map +0 -1
  254. package/lib-esm/components/Notification/style.js.map +0 -1
  255. package/lib-esm/components/Notification/types.d.ts.map +0 -1
  256. package/lib-esm/components/Notification/types.js.map +0 -1
  257. package/lib-esm/components/Popover/Popover.d.ts.map +0 -1
  258. package/lib-esm/components/Popover/Popover.js.map +0 -1
  259. package/lib-esm/components/Popover/index.d.ts.map +0 -1
  260. package/lib-esm/components/Popover/index.js +0 -2
  261. package/lib-esm/components/Popover/index.js.map +0 -1
  262. package/lib-esm/components/Spinner/Spinner.d.ts.map +0 -1
  263. package/lib-esm/components/Spinner/Spinner.js.map +0 -1
  264. package/lib-esm/components/Spinner/index.d.ts.map +0 -1
  265. package/lib-esm/components/Spinner/index.js +0 -2
  266. package/lib-esm/components/Spinner/index.js.map +0 -1
  267. package/lib-esm/components/Stepper/Step.d.ts.map +0 -1
  268. package/lib-esm/components/Stepper/Step.js.map +0 -1
  269. package/lib-esm/components/Stepper/Stepper.d.ts.map +0 -1
  270. package/lib-esm/components/Stepper/Stepper.js.map +0 -1
  271. package/lib-esm/components/Stepper/index.d.ts.map +0 -1
  272. package/lib-esm/components/Stepper/index.js +0 -4
  273. package/lib-esm/components/Stepper/index.js.map +0 -1
  274. package/lib-esm/components/Tabs/Tab.d.ts.map +0 -1
  275. package/lib-esm/components/Tabs/Tab.js.map +0 -1
  276. package/lib-esm/components/Tabs/Tabs.d.ts.map +0 -1
  277. package/lib-esm/components/Tabs/Tabs.js.map +0 -1
  278. package/lib-esm/components/Tabs/index.d.ts.map +0 -1
  279. package/lib-esm/components/Tabs/index.js +0 -3
  280. package/lib-esm/components/Tabs/index.js.map +0 -1
  281. package/lib-esm/components/Toast/Toast.d.ts.map +0 -1
  282. package/lib-esm/components/Toast/Toast.js.map +0 -1
  283. package/lib-esm/components/Toast/ToastStory.d.ts.map +0 -1
  284. package/lib-esm/components/Toast/ToastStory.js +0 -35
  285. package/lib-esm/components/Toast/ToastStory.js.map +0 -1
  286. package/lib-esm/components/Toast/index.d.ts.map +0 -1
  287. package/lib-esm/components/Toast/index.js +0 -2
  288. package/lib-esm/components/Toast/index.js.map +0 -1
  289. package/lib-esm/components/Tooltip/Tooltip.d.ts.map +0 -1
  290. package/lib-esm/components/Tooltip/Tooltip.js.map +0 -1
  291. package/lib-esm/components/Tooltip/index.d.ts.map +0 -1
  292. package/lib-esm/components/Tooltip/index.js +0 -2
  293. package/lib-esm/components/Tooltip/index.js.map +0 -1
  294. package/lib-esm/components/index.d.ts.map +0 -1
  295. package/lib-esm/components/index.js.map +0 -1
  296. package/lib-esm/icons/CheckCircle.d.ts.map +0 -1
  297. package/lib-esm/icons/CheckCircle.js.map +0 -1
  298. package/lib-esm/icons/Close.d.ts.map +0 -1
  299. package/lib-esm/icons/Close.js.map +0 -1
  300. package/lib-esm/icons/DragIndicator.d.ts.map +0 -1
  301. package/lib-esm/icons/DragIndicator.js.map +0 -1
  302. package/lib-esm/icons/ErrorOutline.d.ts.map +0 -1
  303. package/lib-esm/icons/ErrorOutline.js.map +0 -1
  304. package/lib-esm/icons/ExpandMore.d.ts.map +0 -1
  305. package/lib-esm/icons/ExpandMore.js.map +0 -1
  306. package/lib-esm/icons/FiberManualRecord.d.ts.map +0 -1
  307. package/lib-esm/icons/FiberManualRecord.js.map +0 -1
  308. package/lib-esm/icons/Info.d.ts.map +0 -1
  309. package/lib-esm/icons/Info.js.map +0 -1
  310. package/lib-esm/icons/ReportProblem.d.ts.map +0 -1
  311. package/lib-esm/icons/ReportProblem.js.map +0 -1
  312. package/lib-esm/icons/index.d.ts.map +0 -1
  313. package/lib-esm/icons/index.js +0 -9
  314. package/lib-esm/icons/index.js.map +0 -1
  315. package/lib-esm/index.d.ts.map +0 -1
  316. package/lib-esm/index.js +0 -2
  317. package/lib-esm/index.js.map +0 -1
  318. package/lib-esm/shared/LayerManager.d.ts.map +0 -1
  319. package/lib-esm/shared/LayerManager.js.map +0 -1
  320. package/lib-esm/shared/constants.d.ts.map +0 -1
  321. package/lib-esm/shared/constants.js.map +0 -1
  322. package/lib-esm/shared/styles.d.ts.map +0 -1
  323. package/lib-esm/shared/styles.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/components/Input/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;CAMzB,CAAC;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAA;;;wBAGX,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;;;;wBAItC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;;;;;;;kCAS1B,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;mCACzC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;;;;;;CAQ5E,CAAC;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;kBAQd,eAAe;4BACL,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;wBACrC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;kBAGvC,eAAe;;;;;;wBAMT,eAAe;4BACX,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;wBACrC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;wBAGjC,eAAe;;;;;mCAKJ,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;;;;;yBAOpD,eAAe,eAAe,eAAe;wBAC9C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;gCACzB,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;;;;;iBAKtD,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;wBAI1B,eAAe;wBACf,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;iBAIxC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;mBAI/B,eAAe;wBACV,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;;;;iBAKhD,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;;;;2BAIxB,eAAe,gCAAgC,eAAe;4BAC7D,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;;CAE7D,CAAC;AAKF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAoB;IACjD,MAAM,GAAG,GAAG,WAAW,CACnB,CAAC,IAAa,EAAE,EAAE;QACd,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAyB,CAAC,aAAa,GAAG,IAAI,CAAC;YACpD,CAAC;QACL,CAAC;IACL,CAAC,EACD,CAAC,KAAK,CAAC,aAAa,CAAC,CACxB,CAAC;IAEF,OAAO,CACH,MAAC,KAAK,eACF,KAAC,WAAW,oBACJ,KAAK,IACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,UAAU,kBACD,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAC7D,EACF,KAAC,eAAe,KAAG,EACnB,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACtB,CACX,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,SAAS,GAAG;IACjB,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,6CAA6C;IAC7C,aAAa,EAAE,SAAS,CAAC,IAAI;CAChC,CAAC;AAEF,QAAQ,CAAC,YAAY,GAAG;IACpB,aAAa,EAAE,KAAK;IACpB,KAAK,EAAE,EAAE;CACZ,CAAC","sourcesContent":["import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n margin: 5px 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n`;\n\nconst StyledCheckmark = styled.span`\n width: 16px;\n height: 16px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n border-radius: 3px;\n margin-right: 5px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: all 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 3px;\n height: 10px;\n border-right: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n position: absolute;\n top: 1px;\n left: 6px;\n opacity: 0;\n transform: rotate(45deg) scale(0);\n transition: all 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /** checked */\n &:checked + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledCheckmark}::after {\n opacity: 1;\n transform: rotate(45deg) scale(1);\n }\n\n /** indeterminate */\n &:indeterminate + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:indeterminate + ${StyledCheckmark}::after {\n opacity: 1;\n height: 0;\n width: 8px;\n border-right: none;\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n transform: rotate(0deg) scale(1);\n top: 7px;\n left: 4px;\n }\n\n /** active and focus */\n &:enabled:active + ${StyledCheckmark}, &:focus + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:active ~ span,\n &:focus ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** hover */\n &:enabled:hover + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** disabled */\n &:disabled + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n cursor: not-allowed;\n }\n\n &:checked:disabled + ${StyledCheckmark}, &:indeterminate:disabled + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype CheckboxProps = Omit<React.HTMLProps<HTMLInputElement>, 'as'> &\n PropTypes.InferProps<typeof Checkbox.propTypes>;\n\nexport default function Checkbox(props: CheckboxProps) {\n const ref = useCallback(\n (node: unknown) => {\n if (node !== null) {\n if (props.indeterminate) {\n (node as HTMLInputElement).indeterminate = true;\n }\n }\n },\n [props.indeterminate],\n );\n\n return (\n <Label>\n <HiddenInput\n {...props}\n ref={ref}\n type=\"checkbox\"\n aria-checked={props.indeterminate ? 'mixed' : props.checked}\n />\n <StyledCheckmark />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nCheckbox.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** If the field is in indeterminate state */\n indeterminate: PropTypes.bool,\n};\n\nCheckbox.defaultProps = {\n indeterminate: false,\n label: '',\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,KAAK,aAAa,CAAC,CAAC,IAAI;IACpB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChB,2CAA2C;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;IAChC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AASrC;;;;;;;GAOG;AACH,iBAAwB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,oDA2GzE;kBA3GuB,QAAQ;;;;;eAAR,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../../../src/components/Input/Dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\n\ntype DropdownProps<T> = {\n /** Value of the control */\n value?: T | T[];\n /** If multiple elements can be selected */\n multiSelect: boolean;\n /** Change handler */\n onChange?: (v: T | T[]) => void;\n /** Label of the control */\n label?: string;\n /** Error message */\n errorText?: string;\n /** Makes field required */\n required?: boolean;\n /** Disables the field */\n disabled?: boolean;\n} & React.PropsWithChildren<unknown>;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 12px;\n top: 16px;\n pointer-events: none;\n`;\n\n/**\n * Dropdown component that allows selection from a list of options.\n * Supports single and multi-select modes.\n *\n * @template T - The type of the value(s) in the dropdown.\n * @param {DropdownProps<T>} props - The properties for the Dropdown component.\n * @returns {JSX.Element} The rendered Dropdown component.\n */\nexport default function Dropdown<T extends object>(props: DropdownProps<T>) {\n const { multiSelect, onChange } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(props.value);\n const id = React.useId();\n const menuId = `${id}-menu`;\n const menuRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLInputElement>(null);\n\n // Focus menu when opened\n useEffect(() => {\n if (open) {\n // Wait for Popover to fully open and focus itself first\n // Then move focus to the first menu item\n const timer = setTimeout(() => {\n const firstItem = menuRef.current?.querySelector('[role=\"option\"]') as HTMLElement;\n if (firstItem) {\n firstItem.focus();\n }\n }, 100); // Wait after Popover has set initial focus\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n /**\n * Handles keydown events on the input trigger.\n * Opens the menu on 'Enter', 'Space', 'ArrowDown', or 'ArrowUp'.\n *\n * @param {React.KeyboardEvent<HTMLInputElement>} e - The keyboard event.\n */\n const onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(e.key)) {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n /**\n * Handles changes to the dropdown value.\n * Updates local state and calls the external onChange handler.\n * Closes the dropdown if not in multi-select mode.\n *\n * @param {T | T[]} val - The new value(s).\n */\n const changeHandler = (val: T | T[]) => {\n setValue(val);\n onChange?.(val);\n\n // Close dropdown after selection if not multiSelect\n if (!multiSelect) {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n /**\n * Toggles the dropdown open state on click.\n */\n const clickHandler = () => setOpen(true);\n\n const TriggerElement = React.forwardRef<HTMLInputElement>((passedProps, ref) => (\n <>\n <Input\n {...passedProps}\n ref={ref}\n type=\"text\"\n value={value && String(value)}\n label={props.label}\n errorText={props.errorText}\n onClick={clickHandler}\n onKeyDown={onKeyDown}\n required={props.required}\n disabled={props.disabled}\n readOnly\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={menuId}\n />\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n </>\n ));\n TriggerElement.displayName = 'DropdownTrigger';\n\n return (\n <Popover\n position={POPOVER_POSITION.BOTTOM_LEFT}\n open={open}\n element={TriggerElement}\n onClose={() => {\n setOpen(false);\n triggerRef.current?.focus();\n }}\n >\n <Menu\n ref={menuRef}\n id={menuId}\n value={value}\n multiSelect={multiSelect}\n onChange={changeHandler}\n >\n {props.children}\n </Menu>\n </Popover>\n );\n}\n\nDropdown.defaultProps = {\n multiSelect: false,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAK1D,KAAK,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG;IAC1D,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA4HF,QAAA,MAAM,KAAK,iGA4CT,CAAC;AAIH,eAAe,KAAK,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype InputProps = React.AllHTMLAttributes<HTMLInputElement> & {\n /** Label for the field */\n label?: string;\n /** Error message for the field */\n errorText?: string;\n};\n\ntype InputInternalProps = InputProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.input<InputInternalProps>`\n outline: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 30px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst Input = React.forwardRef<HTMLInputElement, Omit<InputProps, 'as'>>((props, ref) => {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n\n useEffect(() => {\n if (props.value !== undefined) {\n setValue(props.value);\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n});\n\nInput.displayName = 'Input';\n\nexport default Input;\n\nInput.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AA4FnC,iBAAS,KAAK,CACV,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,OAAO,KAAK,CAAC,SAAS,CAAC,oDASlG;kBAVQ,KAAK;;QAaV,0BAA0B;;;;AAI9B,eAAe,KAAK,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/components/Input/Radio.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;CAMzB,CAAC;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAA;;;;wBAIP,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;sCAexB,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;;CAIzE,CAAC;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;kBAQd,WAAW;wBACL,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;4BAC7B,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;kBAG3C,WAAW;;;;;wBAKL,WAAW;wBACX,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;gCACzB,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;;;gCAGvC,WAAW;wBACnB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;gCACzB,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;;;;wBAI/C,WAAW;wBACX,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;iBAIxC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;mBAI/B,WAAW;wBACN,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;4BACrC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;;2BAIrC,WAAW;wBACd,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;4BACrC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;;;iBAIpD,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;;CAGzD,CAAC;AAEF,SAAS,KAAK,CACV,KAA+F;IAE/F,OAAO,CACH,MAAC,KAAK,eACF,KAAC,WAAW,oBAAK,KAAK,IAAE,IAAI,EAAC,OAAO,IAAG,EACvC,KAAC,WAAW,KAAG,EACf,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACtB,CACX,CAAC;AACN,CAAC;AAED,KAAK,CAAC,SAAS,GAAG;IACd,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin: 5px 0;\n cursor: pointer;\n position: relative;\n`;\n\nconst StyledRadio = styled.span`\n width: 16px;\n height: 16px;\n margin-right: 5px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 50%;\n display: block;\n transition: background-color 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 100%;\n height: 100%;\n border-radius: 50%;\n position: absolute;\n top: 0;\n left: 0;\n box-shadow: inset 0 0 0 3px ${getThemeValue(THEME_NAME.BACKGROUND)};\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /* checked */\n &:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledRadio}::after {\n opacity: 1;\n }\n\n /* focus */\n &:enabled:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:checked:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n /* hover */\n &:enabled:hover + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n`;\n\nfunction Radio(\n props: PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Radio.propTypes>,\n) {\n return (\n <Label>\n <HiddenInput {...props} type=\"radio\" />\n <StyledRadio />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nRadio.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n};\n\nexport default Radio;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioButton.d.ts","sourceRoot":"","sources":["../../../src/components/Input/RadioButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAoDnC,eAAO,MAAM,UAAU;;SAhC8C,MACjE,WAEE;qFA0CL,CAAC;AAEF,iBAAS,WAAW,CAChB,KAAK,EAAE,SAAS,CAAC,UAAU,CACvB,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,OAAO,WAAW,CAAC,SAAS,CAC3E,oDAQJ;kBAXQ,WAAW;;QAchB,0BAA0B;;;;AAI9B,eAAe,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../../src/components/Input/RadioButton.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;iBAMT,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;4BAGtB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;;;;gCAO7B,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;;;;4BAI3C,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;iBAClD,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;;4BAI/B,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;iBAC5C,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;;4BAI/B,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC;iBACvD,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;;;4BAI9B,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;iBACpD,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;;CAE1D,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;CAMzB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;QAM5B,KAAK;;;;QAIL,KAAK;;;CAGZ,CAAC;AAEF,SAAS,WAAW,CAChB,KAEC;IAED,OAAO,CACH,MAAC,KAAK,eACF,KAAC,KAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,OAAO,IAAG,EACjC,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACtB,CACX,CAAC;AACN,CAAC;AAED,WAAW,CAAC,SAAS,GAAG;IACpB,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n width: 0;\n\n & + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 6px 12px;\n border: none;\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n cursor: pointer;\n margin-right: -1px;\n line-height: 18px;\n }\n\n &:enabled:focus + span {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:hover + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:enabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n\n &:focus-within {\n z-index: 1;\n }\n`;\n\nexport const RadioGroup = styled.div`\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n margin: 5px 0;\n\n & ${Label}:first-child > span {\n border-radius: 3px 0 0 3px;\n }\n\n & ${Label}:last-child > span {\n border-radius: 0 3px 3px 0;\n }\n`;\n\nfunction RadioButton(\n props: PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof RadioButton.propTypes\n >,\n) {\n return (\n <Label>\n <Input {...props} type=\"radio\" />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nRadioButton.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n};\n\nexport default RadioButton;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAC1D,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,UAAU,WACN,SACI,SAAS,CAAC,SAAS,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,EAC5C,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AA0ID,iBAAwB,MAAM,CAAC,KAAK,EAAE,WAAW,oDAkDhD;kBAlDuB,MAAM;;QAqD1B,0BAA0B;;QAE1B,6CAA6C;;;;eAvDzB,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/components/Input/Select.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface SelectProps\n extends\n PropTypes.InferType<typeof Select.propTypes>,\n React.InputHTMLAttributes<HTMLSelectElement> {\n value?: string;\n}\n\ntype SelectInternalProps = SelectProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n pointer-events: none;\n max-width: 268px;\n\n & svg {\n fill: currentColor;\n }\n`;\n\nconst SelectField = styled.select<SelectInternalProps>`\n border: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 32px;\n width: 268px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n pointer-events: auto;\n appearance: none;\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus ~ span,\n &:active ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 8px;\n top: 8px;\n`;\n\nexport default function Select(props: SelectProps) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n\n useEffect(() => {\n if (props.value !== undefined) {\n setValue(props.value);\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <SelectField\n {...props}\n multiple={false}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n <option />\n {props.children}\n </SelectField>\n <span>{props.label}</span>\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nSelect.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/Input/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAC1D,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,UAAU,aACN,SACI,SAAS,CAAC,SAAS,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AA2HD,iBAAwB,QAAQ,CAAC,KAAK,EAAE,aAAa,oDA2CpD;kBA3CuB,QAAQ;;QA8C5B,0BAA0B;;QAE1B,6CAA6C;;;;eAhDzB,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../src/components/Input/TextArea.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface TextAreaProps\n extends\n PropTypes.InferType<typeof TextArea.propTypes>,\n React.InputHTMLAttributes<HTMLTextAreaElement> {\n value?: string;\n}\n\ntype TextAreaInternalProps = TextAreaProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nexport default function TextArea(props: TextAreaProps) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n\n useEffect(() => {\n if (props.value !== undefined) {\n setValue(props.value);\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nTextArea.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AA+EnC,KAAK,WAAW,GAAG,SAAS,CAAC,UAAU,CACnC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,OAAO,MAAM,CAAC,SAAS,CACtE,CAAC;AAEF,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,oDAQjC;kBARQ,MAAM;;QAWX,0BAA0B;;;;AAI9B,eAAe,MAAM,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/components/Input/Toggle.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAI1B,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;;;;;4BAYE,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;;;;;;;;;;;4BAapC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;4BAEzC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;;;;4BAMpC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;;;;;wBAK3C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;;gCAKzB,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;wBAC/C,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;;;iBAMxC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;;;;;iBAKjC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;;;4BAI9B,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;;;4BAKpC,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC;wBAChD,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;CAEhE,CAAC;AAMF,SAAS,MAAM,CAAC,KAAkB;IAC9B,OAAO,CACH,MAAC,MAAM,eACH,KAAC,KAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,kBAAe,KAAK,CAAC,OAAO,IAAI,EAC/E,gBAAa,EACb,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACrB,CACZ,CAAC;AACN,CAAC;AAED,MAAM,CAAC,SAAS,GAAG;IACf,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n transition: 0.4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: '';\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n border-radius: 50%;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: 0.4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled + span:before {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\ntype ToggleProps = PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof Toggle.propTypes\n>;\n\nfunction Toggle(props: ToggleProps) {\n return (\n <Switch>\n <Input {...props} type=\"checkbox\" role=\"switch\" aria-checked={props.checked} />\n <span></span>\n <span>{props.label}</span>\n </Switch>\n );\n}\n\nToggle.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n};\n\nexport default Toggle;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,9 +0,0 @@
1
- export { default as Input } from './Input';
2
- export { default as TextArea } from './TextArea';
3
- export { default as Select } from './Select';
4
- export { default as Checkbox } from './Checkbox';
5
- export { default as Toggle } from './Toggle';
6
- export { default as Radio } from './Radio';
7
- export { default as RadioButton, RadioGroup } from './RadioButton';
8
- export { default as Dropdown } from './Dropdown';
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { default as Input } from './Input';\nexport { default as TextArea } from './TextArea';\nexport { default as Select } from './Select';\nexport { default as Checkbox } from './Checkbox';\nexport { default as Toggle } from './Toggle';\nexport { default as Radio } from './Radio';\nexport { default as RadioButton, RadioGroup } from './RadioButton';\nexport { default as Dropdown } from './Dropdown';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAY,SAAS,EAAgB,MAAM,OAAO,CAAC;AAIjE;;;GAGG;AACH,UAAU,SAAS,CAAC,CAAC;IACjB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC,iBAAiB;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAgBD;;;;;;;GAOG;AACH,QAAA,MAAM,IAAI,mJAwHR,CAAC;AAQH,eAAe,IAAI,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, ReactNode, ForwardedRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport MenuContext from './MenuContext';\n/**\n * Props for the Menu component.\n * @template T - The type of value(s) in the menu.\n */\ninterface MenuProps<T> {\n /** Multiple Menu Items can be selected */\n multiSelect?: boolean;\n /** Value(s) selected */\n value?: T | T[];\n /** Callback when the selected value changes */\n onChange?: (value: T | T[]) => void;\n /** Menu Items */\n children?: ReactNode;\n}\n\nconst MenuContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n\n & div:last-child {\n border-bottom: none;\n }\n\n &:focus-within {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/**\n * Menu component that allows selection of items from a list.\n * Supports single and multi-select modes and keyboard navigation.\n *\n * @template T - The type of value(s) in the menu.\n * @param {MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>} props - The menu properties.\n * @param {ForwardedRef<HTMLDivElement>} ref - The ref forwarded to the menu container.\n */\nconst Menu = React.forwardRef(function <T extends object>(\n props: MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { multiSelect, onChange, value: propValue, ...rest } = props;\n const [value, setValue] = useState(propValue || (multiSelect ? [] : ''));\n\n /**\n * Updates the selected value(s).\n * Handles both single and multi-select logic.\n *\n * @param {T} val - The value to select or deselect.\n */\n const updateValue = (val: T) => {\n let newVal;\n if (multiSelect) {\n if (Array.isArray(value)) {\n if (value.includes(val)) {\n newVal = value.filter((item) => item !== val);\n } else {\n newVal = [...value, val];\n }\n }\n } else {\n newVal = val;\n }\n setValue(newVal);\n onChange?.(newVal);\n };\n\n /**\n * Handles keyboard navigation within the menu.\n * Supports Arrow keys for navigation, and Enter/Space for selection.\n *\n * @param {React.KeyboardEvent} e - The keyboard event.\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const container = e.currentTarget as HTMLElement;\n const items = Array.from(container.querySelectorAll('[role=\"option\"]')) as HTMLElement[];\n const currentIndex = items.indexOf(target as HTMLElement);\n\n let nextIndex;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextIndex = currentIndex + 1;\n if (nextIndex >= items.length) nextIndex = 0;\n items[nextIndex]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextIndex = currentIndex - 1;\n if (nextIndex < 0) nextIndex = items.length - 1;\n items[nextIndex]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Enter':\n case ' ': // Space\n e.preventDefault();\n target.click();\n break;\n default:\n break;\n }\n };\n\n /**\n * Handles focus events on the menu container.\n * Delegates focus to the first item if the container itself receives focus.\n *\n * @param {React.FocusEvent} e - The focus event.\n */\n const focusHandler = (e: React.FocusEvent) => {\n // Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.\n // This allows focus to land on the container, and the next Shift+Tab will exit.\n if (e.currentTarget.contains(e.relatedTarget as Node)) {\n return;\n }\n\n // Only if focus is actually on the container (e.g. tabbing into it)\n // and not bubbling up from a child\n if (e.target === e.currentTarget) {\n // Prevent the container from holding focus; delegate to first item\n const firstItem = e.currentTarget.querySelector('[role=\"option\"]') as HTMLElement;\n firstItem?.focus();\n }\n };\n\n return (\n <MenuContext.Provider\n value={\n {\n value,\n multiSelect,\n updateValue,\n } as unknown as React.ContextType<typeof MenuContext>\n }\n >\n <MenuContainer\n {...rest}\n ref={ref}\n role=\"listbox\"\n aria-multiselectable={multiSelect}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={focusHandler}\n >\n {props.children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n});\n\nMenu.displayName = 'Menu';\n\nMenu.defaultProps = {\n multiSelect: false,\n};\n\nexport default Menu;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MenuContext.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuContext.ts"],"names":[],"mappings":"AAEA,KAAK,YAAY,CAAC,CAAC,IAAI;IACnB,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,EAAE,KAAK,CAAC;IACnB,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,IAAI;IAClB,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,WAAW,EAAE,IAAI,CAAC;IAClB,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;CACtC,CAAC;AACF,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;;AAElE,wBAAiE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MenuContext.js","sourceRoot":"","sources":["../../../src/components/Menu/MenuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAetC,eAAe,aAAa,CAA0B,SAAS,CAAC,CAAC","sourcesContent":["import { createContext } from 'react';\n\ntype SingleSelect<T> = {\n value: T;\n multiSelect: false;\n updateValue: (newVal: T) => void;\n};\n\ntype MultiSelect<T> = {\n value: T[];\n multiSelect: true;\n updateValue: (newVal: T[]) => void;\n};\nexport type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;\n\nexport default createContext<MenuContextType<object>>(undefined);\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/MenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAM1D,UAAU,aAAa,CAAC,CAAC;IACrB,2BAA2B;IAC3B,KAAK,EAAE,CAAC,CAAC;CACZ;AA2BD,QAAA,MAAM,aAAa,GAAI,CAAC,SACb,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,iBAAiB,OAC5C,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,qDAkCpC,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAsC,CAAC,CAAC,EAClD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,iBAAiB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KACzF,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtC,eAAe,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../src/components/Menu/MenuItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,WAAgC,MAAM,eAAe,CAAC;AAO7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAuB;mBACnC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;;;;;+BAKnC,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC;;;;;;aAM9D,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;;;;;4BAK1B,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC;;;;;;CAMvE,CAAC;AAEF,MAAM,aAAa,GAAG,CAClB,KAAiD,EACjD,GAAiC,EACnC,EAAE;;IACA,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAuB,CAAC;IAC9D,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAApC,qBAA4B,CAAQ,CAAC;IAC3C,MAAM,YAAY,GAAG,CAAC,CAAiB,EAAE,EAAE;QACvC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,WAAW,CAAC,KAAgB,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW;QAChC,CAAC,CAAC,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,mDAAG,KAAK,CAAC;QAClC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IAE9B,OAAO,CACH,MAAC,SAAS,oBACF,IAAI,IACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,mBACE,QAAQ,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,aAEpB,OAAO,CAAC,WAAW,IAAI,CACpB,KAAC,QAAQ,IACL,OAAO,EAAE,QAAQ,EACjB,QAAQ,QACR,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,GACrC,CACL,EACA,QAAQ,KACD,CACf,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAEV,CAAC;AAEtC,eAAe,QAAQ,CAAC","sourcesContent":["import React, { SyntheticEvent, useContext } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Checkbox from '../Input/Checkbox';\nimport MenuContext, { MenuContextType } from './MenuContext';\n\ninterface MenuItemProps<T> {\n /** Value of the element */\n value: T;\n}\n\nconst Container = styled.button<{ selected: boolean }>`\n font-weight: ${(props) => (props.selected ? 'bold' : 'normal')};\n padding: 8px 6px;\n border: none;\n background-color: transparent;\n font-size: 16px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n min-height: 41px;\n display: flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:hover,\n &:focus,\n &:focus-within {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n }\n\n & > label {\n margin: 0 4px 0 0;\n }\n`;\n\nconst MenuItemInner = <T,>(\n props: MenuItemProps<T> & React.PropsWithChildren,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const context = useContext(MenuContext) as MenuContextType<T>;\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n context.updateValue(value as T & T[]);\n };\n\n const selected = context.multiSelect\n ? context.value?.includes?.(value)\n : context.value === value;\n\n return (\n <Container\n {...rest}\n ref={ref}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n selected={selected}\n onClick={clickHandler}\n >\n {context.multiSelect && (\n <Checkbox\n checked={selected}\n readOnly\n tabIndex={-1}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {children}\n </Container>\n );\n};\n\nconst MenuItem = React.forwardRef(MenuItemInner) as <T>(\n props: MenuItemProps<T> & React.PropsWithChildren & { ref?: React.Ref<HTMLButtonElement> },\n) => ReturnType<typeof MenuItemInner>;\n\nexport default MenuItem;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +0,0 @@
1
- export { default as Menu } from './Menu';
2
- export { default as MenuItem } from './MenuItem';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { default as Menu } from './Menu';\nexport { default as MenuItem } from './MenuItem';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EACH,MAAM,IAAI,WAAW,EACrB,IAAI,IAAI,SAAS,EACjB,MAAM,IAAI,WAAW,GACxB,MAAM,qBAAqB,CAAC;AAG7B,QAAA,MAAM,cAAc;IAChB,sBAAsB;;IAEtB,8BAA8B;;IAE9B,wCAAwC;;IAExC,uDAAuD;;CAE1D,CAAC;AAEF,KAAK,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAE9D,UAAU,UAAU;IAChB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,KAAK,CAAC,SAAS,CAC9C,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC,UAAU,CACb;IACG,KAAK;;MAEH;IAEF,MAAM,CAAC,SAAS;QApChB,sBAAsB;;QAEtB,8BAA8B;;QAE9B,wCAAwC;;QAExC,uDAAuD;;MA8BrB;IAElC,MAAM,CAAC,YAAY;;;MAGjB;IAEF;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU;;;IASjD,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,aAAa,CAA2B;IAEhD;;;OAGG;IACH,OAAO,CAAC,OAAO,CAQb;IAEF,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAqC;IAErD;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAO1B;IAEF;;;OAGG;IACH,OAAO,CAAC,aAAa,CAoBnB;IAEF;;OAEG;IACH,iBAAiB;IAMjB;;OAEG;IACH,oBAAoB;IAMpB;;OAEG;IACH,OAAO,CAAC,YAAY,CAWlB;IAEF;;;OAGG;IACH,OAAO,CAAC,WAAW,CAQjB;IAEF;;;OAGG;IACH,OAAO,CAAC,eAAe,CAoBrB;IAEF;;;OAGG;IACH,uBAAuB,CAAC,SAAS,EAAE,UAAU;IAuC7C;;OAEG;IACH,MAAM;CAQT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,YAAY,EAAE,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACH,MAAM,IAAI,WAAW,EACrB,IAAI,IAAI,SAAS,EACjB,MAAM,IAAI,WAAW,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,cAAc,GAAG;IACnB,sBAAsB;IACtB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAC/B,8BAA8B;IAC9B,UAAU,EAAE,SAAS,CAAC,IAAI;IAC1B,wCAAwC;IACxC,mBAAmB,EAAE,SAAS,CAAC,IAAI;IACnC,uDAAuD;IACvD,OAAO,EAAE,SAAS,CAAC,IAAI;CAC1B,CAAC;AAQF;;;;;;;;;;;GAWG;AACH,MAAqB,KAAM,SAAQ,KAAK,CAAC,SAGxC;IAHD;;QAII,UAAK,GAAG;YACJ,IAAI,EAAE,KAAK;SACd,CAAC;QAyBF;;;WAGG;QACK,YAAO,GAAG,GAAG,EAAE;;YACnB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,OAAO,kDAAI,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC;QAEM,uBAAkB,GAAuB,IAAI,CAAC;QAC9C,aAAQ,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAErD;;WAEG;QACK,yBAAoB,GAAG,GAAkB,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAClC,0EAA0E,CAC7E,CACa,CAAC;QACvB,CAAC,CAAC;QAEF;;;WAGG;QACK,kBAAa,GAAG,CAAC,CAAsB,EAAE,EAAE;YAC/C,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBACtD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAE3C,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEpE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACb,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;wBAC1C,WAAW,CAAC,KAAK,EAAE,CAAC;wBACpB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,QAAQ,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;wBACzC,YAAY,CAAC,KAAK,EAAE,CAAC;wBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAoBF;;WAEG;QACK,iBAAY,GAAG,GAAG,EAAE;YACxB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,gDAAgD;gBAChD,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBAC7C,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBAC/B,CAAC;gBACL,CAAC,EAAE,GAAG,CAAC,CAAC;YACZ,CAAC;QACL,CAAC,CAAC;QAEF;;;WAGG;QACK,gBAAW,GAAG,CAAC,IAA2B,EAAE,EAAE;YAClD,aAAa;YACZ,IAAI,CAAC,QAA0D,CAAC,OAAO,GAAG,IAAI,CAAC;YAEhF,IAAI,IAAI,EAAE,CAAC;gBACP,6CAA6C;gBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC;QAEF;;;WAGG;QACK,oBAAe,GAAG,CAAC,IAAiB,EAAE,EAAE;YAC5C,yDAAyD;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAgC,CAAC;YACzD,IAAI,UAAU,EAAE,CAAC;gBACb,wBAAwB;gBACxB,IAAI,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC/C,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC9C,CAAC;gBACD,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACX,CAAC;YAED,iCAAiC;YACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACtD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,wBAAwB;gBACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACL,CAAC,CAAC;IAwDN,CAAC;IAvMG;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,KAAiB;QAC7C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,OAAO;gBACH,IAAI,EAAE,IAAI;aACb,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IA6DD;;OAEG;IACH,iBAAiB;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAA4B,CAAC;QACpE,CAAC;IACL,CAAC;IAED;;OAEG;IACH,oBAAoB;QAChB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IA0DD;;;OAGG;IACH,uBAAuB,CAAC,SAAqB;;QACzC,MAAM,KAA+D,IAAI,CAAC,KAAK,EAAzE,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,OAAwB,EAAnB,IAAI,cAA1D,yDAA4D,CAAa,CAAC;QAEhF,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAA,IAAI,CAAC,aAAa,oDAAI,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YAC1B,qBAAqB;YACrB,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAA4B,CAAC;YAEhE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC;gBAClC,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,cAAc,CAAC,MAAM;gBAC/B,aAAa,EAAE,IAAI,CAAC,OAAO;gBAC3B,UAAU,EAAE,UAAU;gBACtB,mBAAmB,EAAE,mBAAmB;gBACxC,SAAS,EAAE,CACP,KAAC,cAAc,oBACP,IAAI,IACR,GAAG,EAAE,IAAI,CAAC,WAAW,EACrB,IAAI,EAAC,QAAQ,gBACF,MAAM,EACjB,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,QAAQ,kBAEP,QAAQ,IACI,CACpB;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,OAAO,KAAC,SAAS,KAAG,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;;AA7MM,eAAS,GAAG,cAAc,AAAjB,CAAkB;AAE3B,kBAAY,GAAG;IAClB,UAAU,EAAE,IAAI;IAChB,mBAAmB,EAAE,IAAI;CAC5B,AAHkB,CAGjB;eAbe,KAAK","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nexport {\n Header as ModalHeader,\n Body as ModalBody,\n Footer as ModalFooter,\n} from '../../shared/styles';\nimport { DialogContainer as ModalContainer } from '../Dialog/Dialog';\n\nconst modalPropTypes = {\n /** Opens the modal */\n open: PropTypes.bool.isRequired,\n /** Closes the modal on esc */\n closeOnEsc: PropTypes.bool,\n /** Closes the modal on overlay click */\n closeOnOverlayClick: PropTypes.bool,\n /** Call back function called when the modal closes. */\n onClose: PropTypes.func,\n};\n\ntype ModalProps = PropTypes.InferProps<typeof modalPropTypes>;\n\ninterface ModalState {\n open: boolean;\n}\n\n/**\n * Modal component\n *\n * A dialog window that sits on top of the main application content.\n * It disrupts the user's workflow to demand attention for a critical task or decision.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the modal while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Modal extends React.Component<\n React.PropsWithChildren<ModalProps>,\n ModalState\n> {\n state = {\n open: false,\n };\n\n static propTypes = modalPropTypes;\n\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: ModalProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = null;\n this.layer = null;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private modalRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the modal.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.modalRef.current) return [];\n return Array.from(\n this.modalRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the modal.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the modal mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n }\n }\n\n /**\n * Lifecycle method to restore focus when the modal unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n }\n\n /**\n * Restores focus to the element that was focused before the modal opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Modal DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setModalRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.modalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n };\n\n /**\n * Sets initial focus within the modal.\n * Tries to focus the header (first child) first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Modal updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n getSnapshotBeforeUpdate(prevProps: ModalProps) {\n const { open, closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n\n this.layer = LayerManager.renderLayer({\n overlay: true,\n exitDelay: 300,\n position: LAYER_POSITION.DIALOG,\n closeCallback: this.onClose,\n closeOnEsc: closeOnEsc,\n closeOnOverlayClick: closeOnOverlayClick,\n component: (\n <ModalContainer\n {...rest}\n ref={this.setModalRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </ModalContainer>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n }\n }\n\n /**\n * Renders the Modal component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component />;\n }\n\n return null;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -1,2 +0,0 @@
1
- export { default as Modal, ModalHeader, ModalBody, ModalFooter } from './Modal';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC","sourcesContent":["export { default as Modal, ModalHeader, ModalBody, ModalFooter } from './Modal';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/Notification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAExF,KAAK,iBAAiB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AAE3E,8DAA8D;AAC9D,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAC9D,MAAM,CAAC,SAAS;QACZ,gCAAgC;;QAEhC,+BAA+B;;QAE/B,wDAAwD;;QAExD,oDAAoD;;QAEpD,kCAAkC;;QAElC,2BAA2B;;QAO3B,yBAAyB;;QAEzB,mCAAmC;;QAEnC,mCAAmC;;QAEnC,4FAA4F;;MAE9F;IAEF,MAAM,CAAC,YAAY;;;;MAIjB;IAEF,MAAM,IAAI,KAAK,CAAC,SAAS;CAG5B;AAUD,yBAAyB;AACzB,cAAM,YAAY;IACd,oEAAoE;IACpE,OAAO,CAAC,UAAU,CAOJ;IAEd;;;;;;OAMG;IACI,GAAG,aACI,qBAAqB,WACtB,mBAAmB,cACjB,MAAM,qBA2DnB;IAEF;;;;;OAKG;IACI,MAAM,aAAc,qBAAqB,MAAM,MAAM,UAK1D;IAEF;;;;;OAKG;IACI,OAAO,aAAc,qBAAqB,UAS/C;CACL;AAED,kCAAkC;;AAClC,wBAAkC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Notification.js","sourceRoot":"","sources":["../../../src/components/Notification/Notification.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type RefCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { flushSync } from 'react-dom';\nimport { createRoot, type Root } from 'react-dom/client';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport NotificationManager from './NotificationManager';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ntype NotificationProps = PropTypes.InferProps<typeof StoryProps.propTypes>;\n\n/** This component is only used for storybook documentation */\nexport class StoryProps extends React.Component<NotificationProps> {\n static propTypes = {\n /** Title of the notification */\n title: PropTypes.string.isRequired,\n /** Body of the notification */\n description: PropTypes.string.isRequired,\n /** Id for the notification, helps in de-duplication. */\n id: PropTypes.string,\n /** Duration for the notification in milliseconds */\n duration: PropTypes.number,\n /** Creates sticky notification */\n sticky: PropTypes.bool,\n /** Type of notification */\n type: PropTypes.oneOf([\n NOTIFICATION_TYPE.INFO,\n NOTIFICATION_TYPE.SUCCESS,\n NOTIFICATION_TYPE.WARNING,\n NOTIFICATION_TYPE.DANGER,\n ]),\n /** Action button text */\n buttonText: PropTypes.string,\n /** Action button click callback */\n buttonClick: PropTypes.func,\n /** Notification close callback. */\n onClose: PropTypes.func,\n /** Aria label for the close button on the notification. Defaults to \"Close notification\" */\n closeButtonAriaLabel: PropTypes.string,\n };\n\n static defaultProps = {\n duration: 5000,\n sticky: false,\n type: NOTIFICATION_TYPE.INFO,\n };\n\n render(): React.ReactNode {\n return null;\n }\n}\n\n/** Maps notification position to layer position */\nconst positionMap = {\n [NOTIFICATION_POSITION.TOP_LEFT]: LAYER_POSITION.TOP_LEFT,\n [NOTIFICATION_POSITION.TOP_RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [NOTIFICATION_POSITION.BOTTOM_LEFT]: LAYER_POSITION.BOTTOM_LEFT,\n [NOTIFICATION_POSITION.BOTTOM_RIGHT]: LAYER_POSITION.BOTTOM_RIGHT,\n};\n\n/** Notification class */\nclass Notification {\n /** Helps in maintaining single instance for different positions. */\n private containers: Map<\n NOTIFICATION_POSITION,\n {\n manager: NotificationManager | null;\n root: Root;\n div: HTMLDivElement;\n }\n > = new Map();\n\n /**\n * Adds a notification\n *\n * @param position - The position where the notification should appear\n * @param options - Configuration options for the notification\n * @returns The notification ID or a promise that resolves to the notification ID\n */\n public add = (\n position: NOTIFICATION_POSITION,\n options: NotificationOptions,\n ariaLabel: string = 'Notifications',\n ) => {\n if (!this.containers.has(position)) {\n /** Callback ref to capture the NotificationManager instance when it mounts */\n const refCallback: RefCallback<NotificationManager> = (instance) => {\n if (instance) {\n const container = this.containers.get(position);\n if (container) {\n container.manager = instance;\n }\n }\n };\n\n const [Component] = LayerManager.renderLayer({\n closeOnEsc: false,\n closeOnOverlayClick: false,\n position: positionMap[position],\n alwaysOnTop: true,\n component: (\n <NotificationManager\n ref={refCallback}\n position={position}\n onEmpty={() => this.destroy(position)}\n ariaLabel={ariaLabel}\n />\n ),\n });\n\n // Create a div to mount the Component\n const div = document.createElement('div');\n document.body.appendChild(div);\n const root = createRoot(div);\n\n this.containers.set(position, {\n manager: null,\n root,\n div,\n });\n\n // Render the Component which will trigger the LayerManager's useEffect\n flushSync(() => {\n root.render(<Component />);\n });\n }\n\n const container = this.containers.get(position);\n if (container && container.manager) {\n return container.manager.add(options);\n }\n\n // If manager is not ready yet, wait a bit and retry\n return new Promise<string>((resolve) => {\n setTimeout(() => {\n const container = this.containers.get(position);\n if (container && container.manager) {\n resolve(container.manager.add(options));\n }\n }, 10);\n });\n };\n\n /**\n * Removes a notification\n *\n * @param position - The position of the notification container\n * @param id - The unique ID of the notification to remove\n */\n public remove = (position: NOTIFICATION_POSITION, id: string) => {\n const container = this.containers.get(position);\n if (container && container.manager) {\n container.manager.remove(id);\n }\n };\n\n /**\n * Destroys entire stack of notifications at a position.\n * Unmounts the React root and cleans up DOM elements.\n *\n * @param position - The position of the notification container to destroy\n */\n public destroy = (position: NOTIFICATION_POSITION) => {\n const container = this.containers.get(position);\n if (container) {\n container.root.unmount();\n if (document.body.contains(container.div)) {\n document.body.removeChild(container.div);\n }\n this.containers.delete(position);\n }\n };\n}\n\n/** Export a singleton instance */\nexport default new Notification();\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NotificationManager.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/NotificationManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EAAE,qBAAqB,EAAqB,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAExF,UAAU,wBAAwB;IAE9B,QAAQ,EAAE,qBAAqB,CAAC;IAEhC,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,UAAU,UAAW,SAAQ,mBAAmB;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAGD,UAAU,wBAAwB;IAC9B,OAAO,EAAE,UAAU,EAAE,CAAC;CACzB;AAQD;;GAEG;AACH,cAAM,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAC7C,wBAAwB,EACxB,wBAAwB,CAC3B;IACG,KAAK,EAAE,wBAAwB,CAE7B;IAGF,OAAO,CAAC,QAAQ,CAAgB;IAGhC,OAAO,CAAC,GAAG,CAAqB;IAGhC,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,kBAAkB,CAAqC;IAE/D;;;;OAIG;IACI,MAAM,OAAQ,MAAM,UAsCzB;IAEF;;;;OAIG;IACI,GAAG,WAAkB,mBAAmB,qBAyC7C;IAEF;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAWtB;IAEF;;;;OAIG;IACI,iBAAiB,OAAQ,MAAM,gBAEpC;IAEF;;;;OAIG;IACI,KAAK,OAAQ,MAAM,gBAExB;IAEF;;;;OAIG;IACI,MAAM,OAAQ,MAAM,gBAKzB;IAEF,MAAM;CA+ET;AAED,eAAe,mBAAmB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NotificationManager.js","sourceRoot":"","sources":["../../../src/components/Notification/NotificationManager.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Close, Info, ReportProblem, ErrorOutline, CheckCircle } from '../../icons';\nimport { ActionButton } from '../Button';\nimport {\n Container,\n Notice,\n Title,\n IconContainer,\n FillParent,\n Body,\n CloseButton,\n Footer,\n VisuallyHidden,\n} from './style';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ninterface NotificationManagerProps {\n // Notification Position\n position: NOTIFICATION_POSITION;\n // Callback for when stack is emptied\n onEmpty: () => void;\n // Aria label for the notification list\n ariaLabel?: string;\n}\n\n// Notice prop\ninterface NoticeProp extends NotificationOptions {\n leaving?: boolean;\n}\n\n// Manager state\ninterface NotificationManagerState {\n notices: NoticeProp[];\n}\n\ntype timeouts = {\n [id: string]: NodeJS.Timeout;\n};\n\nconst DEFAULT_DURATION = 5000;\n\n/**\n * Notification Manager class\n */\nclass NotificationManager extends React.Component<\n NotificationManagerProps,\n NotificationManagerState\n> {\n state: NotificationManagerState = {\n notices: [],\n };\n\n // bookkeeping for timeouts\n private timeouts: timeouts = {};\n\n // Set of notification ids\n private set = new Set<string>();\n\n // Refs for live regions to ensure they exist before updates\n private politeRegionRef = React.createRef<HTMLDivElement>();\n private assertiveRegionRef = React.createRef<HTMLDivElement>();\n\n /**\n * Removes a notification from stack if the notification with the given id is found.\n *\n * @param id\n */\n public remove = (id: string) => {\n // Trigger leaving animation.\n this.setState({\n notices: this.state.notices.map((notice) => ({\n ...notice,\n leaving: notice.id === id ? true : notice.leaving,\n })),\n });\n this.set.delete(id);\n\n // Remove notification on animation completion.\n setTimeout(() => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (notice) {\n // call close callback, ignore any errors in callback.\n if (notice.onClose) {\n try {\n notice.onClose();\n } catch (e) {\n console.warn('Error in notification close callback', e.message);\n }\n }\n\n // Remove the notification\n this.setState(\n {\n notices: this.state.notices.filter((notice) => notice.id !== id),\n },\n () => {\n // Check if the stack is empty and then call the\n // empty callback function.\n if (this.state.notices.length === 0) {\n this.props.onEmpty();\n }\n },\n );\n }\n }, 550);\n };\n\n /**\n * Adds a notification to stack.\n *\n * @param notice\n */\n public add = async (notice: NotificationOptions) => {\n // Generate unique id if not provided.\n const id = notice.id || (Math.random() * 10 ** 7).toFixed(0);\n\n // De-dupe on id\n if (!this.set.has(id)) {\n const type = notice.type || NOTIFICATION_TYPE.INFO;\n const isUrgent =\n type === NOTIFICATION_TYPE.WARNING || type === NOTIFICATION_TYPE.DANGER;\n\n // Add notice to the top of stack.\n this.setState(\n {\n notices: [\n {\n ...notice,\n id,\n },\n ...this.state.notices,\n ],\n },\n () => {\n // Update live region after state update\n const announcement = `${notice.title} ${notice.description}`;\n this.updateLiveRegion(announcement, isUrgent);\n },\n );\n\n // set timeout for closing the notification.\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(\n () => this.remove(id),\n notice.duration || DEFAULT_DURATION,\n );\n }\n\n // Add id to the set.\n this.set.add(id);\n }\n\n return id;\n };\n\n /**\n * Update live region content with clear-then-set pattern for reliable VoiceOver announcements.\n *\n * @param content - The text content to announce\n * @param isAssertive - Whether to use assertive (alert) or polite (log) live region\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegionRef.current : this.politeRegionRef.current;\n\n if (region) {\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 150);\n }\n };\n\n /**\n * Handler for close button click.\n *\n * @param id\n */\n public closeClickHandler = (id: string) => () => {\n this.remove(id);\n };\n\n /**\n * Pause notification when user is hovering over it.\n *\n * @param id\n */\n public pause = (id: string) => () => {\n clearTimeout(this.timeouts[id]);\n };\n\n /**\n * Restart the removal of notification.\n *\n * @param id\n */\n public resume = (id: string) => () => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(() => this.remove(id), DEFAULT_DURATION);\n }\n };\n\n render() {\n return (\n <Container position={this.props.position}>\n {/* Polite live region - uses role=\"log\" for better VoiceOver compatibility */}\n <VisuallyHidden\n ref={this.politeRegionRef}\n role=\"log\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n />\n\n {/* Assertive live region - pre-rendered and persistent */}\n <VisuallyHidden\n ref={this.assertiveRegionRef}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n />\n\n {/* Visual notifications with list semantics */}\n <div role=\"list\" aria-label={this.props.ariaLabel}>\n {this.state.notices.map((notice) => {\n const {\n id,\n title,\n description,\n leaving,\n type = NOTIFICATION_TYPE.INFO,\n buttonText,\n buttonClick,\n closeButtonAriaLabel,\n } = notice;\n\n return (\n <Notice\n key={id}\n {...notice}\n position={this.props.position}\n className={leaving ? 'leave' : ''}\n onMouseEnter={this.pause(id)}\n onMouseLeave={this.resume(id)}\n role=\"listitem\"\n >\n <IconContainer type={type} aria-hidden=\"true\">\n {type === NOTIFICATION_TYPE.INFO && <Info />}\n {type === NOTIFICATION_TYPE.SUCCESS && <CheckCircle />}\n {type === NOTIFICATION_TYPE.WARNING && <ReportProblem />}\n {type === NOTIFICATION_TYPE.DANGER && <ErrorOutline />}\n </IconContainer>\n <FillParent>\n <Title type={type}>{title}</Title>\n <Body>{description}</Body>\n {buttonText && (\n <Footer>\n <ActionButton\n onClick={() => {\n buttonClick?.();\n }}\n >\n {buttonText}\n </ActionButton>\n </Footer>\n )}\n </FillParent>\n <CloseButton\n onClick={this.closeClickHandler(id)}\n aria-label={closeButtonAriaLabel || 'Close notification'}\n tabIndex={0}\n >\n <Close />\n </CloseButton>\n </Notice>\n );\n })}\n </div>\n </Container>\n );\n }\n}\n\nexport default NotificationManager;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,3 +0,0 @@
1
- export { default as Notification } from './Notification';
2
- export { NOTIFICATION_POSITION, NOTIFICATION_TYPE } from './types';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Notification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC","sourcesContent":["export { default as Notification } from './Notification';\nexport { NOTIFICATION_POSITION, NOTIFICATION_TYPE } from './types';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/style.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA6DxF,UAAU,UAAW,SAAQ,mBAAmB;IAC5C,QAAQ,EAAE,qBAAqB,CAAC;CACnC;AAED,eAAO,MAAM,SAAS;;SAnDQ,MAAO,WAClC;;cAkD6C,qBAAqB;yGAOpE,CAAC;AAEF,eAAO,MAAM,MAAM;;SA5DW,MAAO,WAClC;;;uBAuIF,CAAC;AAEF,eAAO,MAAM,KAAK;;SA1IY,MAAO,WAClC;;UAyIqC,iBAAiB;yGAMxD,CAAC;AAEF,eAAO,MAAM,UAAU;;SAlJO,MAAO,WAClC;yGAmJF,CAAC;AAEF,eAAO,MAAM,WAAW;;SAtJM,MAAO,WAClC;qHAkKF,CAAC;AAEF,eAAO,MAAM,IAAI;;SArKa,MAAO,WAClC;yGAuKF,CAAC;AAEF,eAAO,MAAM,aAAa;;SA1KI,MAAO,WAClC;;UAyK6C,iBAAiB;yGAGhE,CAAC;AAEF,eAAO,MAAM,MAAM;;SA/KW,MAAO,WAClC;yGAkLF,CAAC;AAEF,eAAO,MAAM,cAAc;;SArLG,MAAO,WAClC;2GA8LF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/components/Notification/style.ts"],"names":[],"mappings":"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","sourcesContent":["import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Card } from '../Card';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\nconst getEntryAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'in-left';\n default:\n return 'in-right';\n }\n};\n\nconst getExitAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'out-left';\n default:\n return 'out-right';\n }\n};\n\nconst getBorderColor = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS_LIGHT);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR_LIGHT);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING_LIGHT);\n default:\n return getThemeValue(THEME_NAME.INFO_LIGHT);\n }\n};\n\nconst getTitleColor = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case NOTIFICATION_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n }\n};\n\nconst getTypeStyle = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.INFO:\n return `color: ${getThemeValue(THEME_NAME.INFO)}`;\n case NOTIFICATION_TYPE.SUCCESS:\n return `color: ${getThemeValue(THEME_NAME.SUCCESS)}`;\n case NOTIFICATION_TYPE.DANGER:\n return `color: ${getThemeValue(THEME_NAME.ERROR)}`;\n case NOTIFICATION_TYPE.WARNING:\n return `color: ${getThemeValue(THEME_NAME.WARNING)}`;\n }\n};\n\ninterface NoticeProp extends NotificationOptions {\n position: NOTIFICATION_POSITION;\n}\n\nexport const Container = styled.div<{ position: NOTIFICATION_POSITION }>`\n display: flex;\n flex-direction: ${(props) =>\n props.position === NOTIFICATION_POSITION.TOP_LEFT ||\n props.position === NOTIFICATION_POSITION.TOP_RIGHT\n ? 'column'\n : 'column-reverse'};\n`;\n\nexport const Notice = styled(Card)<NoticeProp>`\n position: relative;\n border-radius: 3px;\n border-left: 4px solid ${(props) => getBorderColor(props.type)};\n width: 300px;\n display: flex;\n padding: 0 5px 5px 0;\n overflow: hidden;\n animation: ${(props) => getEntryAnimation(props.position)} 0.6s ease;\n\n & svg {\n fill: currentColor;\n vertical-align: middle;\n width: 20px;\n height: 20px;\n }\n\n &.leave {\n animation: ${(props) => getExitAnimation(props.position)} 0.6s;\n }\n\n @keyframes in-right {\n from {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-right {\n to {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n\n @keyframes in-left {\n from {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-left {\n to {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n`;\n\nexport const Title = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 5px 0;\n font-size: 14px;\n color: ${(props) => getTitleColor(props.type)};\n display: flex;\n align-items: center;\n`;\n\nexport const FillParent = styled.div`\n flex: 1;\n`;\n\nexport const CloseButton = styled.button`\n position: absolute;\n background-color: transparent;\n border: none;\n padding: 0;\n top: 4px;\n right: 4px;\n cursor: pointer;\n\n &:focus {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-radius: 3px;\n }\n`;\n\nexport const Body = styled.div`\n padding: 5px 5px 5px 0;\n font-size: 14px;\n`;\n\nexport const IconContainer = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 6px 10px;\n ${(props) => getTypeStyle(props.type)};\n`;\n\nexport const Footer = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 5px;\n`;\n\nexport const VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/types.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,oBAAY,qBAAqB;IAC7B,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAChC;AAED,4BAA4B;AAC5B,oBAAY,iBAAiB;IACzB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/Notification/types.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC7B,8CAAqB,CAAA;IACrB,gDAAuB,CAAA;IACvB,oDAA2B,CAAA;IAC3B,sDAA6B,CAAA;AACjC,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,4BAA4B;AAC5B,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;AACvB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B","sourcesContent":["/** Position for Notification */\nexport enum NOTIFICATION_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\n/** Type of Notifications */\nexport enum NOTIFICATION_TYPE {\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n DANGER = 'DANGER',\n WARNING = 'WARNING',\n}\n\nexport interface NotificationOptions {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /** Duration for the notification in milliseconds */\n duration?: number;\n /** Creates sticky notification */\n sticky?: boolean;\n /** Type of notification */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** aria label for the close button on the notification */\n closeButtonAriaLabel?: string;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAC/E,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,oBAAY,gBAAgB;IACxB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAChC;AAgFD,iBAAwB,OAAO,CAC3B,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,oDA8JjF;kBA/JuB,OAAO;;QAkK3B,wBAAwB;;QAExB,qCAAqC;;QAErC,oDAAoD;;QAOpD,qDAAqD;;QAErD,6BAA6B;;;;;;;;eA/KT,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../../src/components/Popover/Popover.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useId, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { Card } from '../Card';\n\nexport enum POPOVER_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\ninterface translate {\n x: number;\n y: number;\n}\n\nconst positionMap = {\n [POPOVER_POSITION.TOP_LEFT]: `\n bottom: calc(100% - 10px);\n left: 0;\n `,\n [POPOVER_POSITION.TOP_RIGHT]: `\n bottom: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_RIGHT]: `\n top: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_LEFT]: `\n top: calc(100% - 10px);\n left: 0;\n `,\n};\n\nconst PopoverDiv = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nconst Popper = styled(Card)<{ position: POPOVER_POSITION; translateX: number; translateY: number }>`\n position: absolute;\n width: 100%;\n min-width: 200px;\n overflow: auto;\n animation: enter 0.3s linear;\n border-radius: 3px;\n z-index: 1;\n transform: translate(${(props) => props.translateX}px, ${(props) => props.translateY}px);\n ${(props) => positionMap[props.position]}\n\n &.closing {\n /* max-height: 0px;\n opacity: 0;\n overflow: hidden; */\n animation: exit 0.3s linear;\n }\n\n @keyframes enter {\n from {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n to {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n\n @keyframes exit {\n to {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n from {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n`;\n\nconst KEY_CODES = {\n ESC: 27,\n};\n\nexport default function Popover(\n props: React.PropsWithChildren<PropTypes.InferProps<typeof Popover.propTypes>>,\n) {\n const [open, setOpen] = useState(props.open);\n const [closing, setClosing] = useState(false);\n const [translate, setTranslate] = useState<translate>({ x: 0, y: 0 });\n const popperRef = useRef<HTMLDivElement>();\n const containerRef = useRef<HTMLDivElement>();\n const triggerRef = useRef<HTMLElement | null>(null);\n const popperId = useId();\n const triggerId = useId();\n\n const close = useCallback(() => {\n setClosing(true);\n setTimeout(() => {\n setOpen(false);\n setTranslate({ x: 0, y: 0 });\n\n if (props.onClose) {\n props.onClose();\n }\n setClosing(false);\n\n // Restore focus to the trigger element after animation completes\n setTimeout(() => {\n if (triggerRef.current) {\n triggerRef.current.focus();\n }\n }, 50);\n }, 280);\n }, [props]);\n\n const keyupEventHandler = useCallback(\n (e: KeyboardEvent) => {\n if (props.closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n },\n [close, props.closeOnEsc],\n );\n\n const clickOutsideHandler = useCallback(\n (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n close();\n }\n },\n [close],\n );\n\n /**\n * Get called on popover mount.\n */\n useEffect(() => {\n document.addEventListener('keyup', keyupEventHandler);\n\n return () => {\n document.removeEventListener('keyup', keyupEventHandler);\n document.removeEventListener('click', clickOutsideHandler);\n };\n }, [clickOutsideHandler, close, keyupEventHandler]);\n\n useEffect(() => {\n if (props.open) {\n setOpen(true);\n // Use requestAnimationFrame to add listener after current event loop\n requestAnimationFrame(() => {\n document.addEventListener('click', clickOutsideHandler);\n });\n } else {\n if (open) {\n close();\n }\n }\n\n return () => {\n document.removeEventListener('click', clickOutsideHandler);\n };\n }, [props.open, open, clickOutsideHandler, close]);\n\n useEffect(() => {\n if (open) {\n const { top, left, right } = popperRef.current.getBoundingClientRect();\n const height = popperRef.current.scrollHeight;\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n const translation = { x: 0, y: 0 };\n\n if (props.position === POPOVER_POSITION.BOTTOM_LEFT) {\n // overflow can happen at bottom and right\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else if (props.position == POPOVER_POSITION.BOTTOM_RIGHT) {\n // overflow can happen at bottom and left\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n } else if (props.position === POPOVER_POSITION.TOP_LEFT) {\n // overflow can happen at top and right\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else {\n // overflow can happen at top and left\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n }\n // Note it can still overflow, but in that case fitting popper inside the\n // window is not possible.\n setTranslate(translation);\n popperRef.current.focus();\n }\n }, [open, props.position]);\n\n return (\n <PopoverDiv ref={containerRef}>\n {React.createElement(props.element, {\n ref: triggerRef,\n id: triggerId,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n 'aria-controls': popperId,\n })}\n {open && (\n <Popper\n elevated\n tabIndex={0}\n role=\"dialog\"\n aria-labelledby={triggerId}\n id={popperId}\n position={props.position}\n translateX={translate.x}\n translateY={translate.y}\n className={closing && 'closing'}\n ref={popperRef}\n onClick={(e) => {\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n }}\n >\n {props.children}\n </Popper>\n )}\n </PopoverDiv>\n );\n}\n\nPopover.propTypes = {\n /** Opens the popover */\n open: PropTypes.bool.isRequired,\n /** Anchor element for the popover */\n element: PropTypes.func,\n /** Position of the popover around anchor element */\n position: PropTypes.oneOf([\n POPOVER_POSITION.TOP_LEFT,\n POPOVER_POSITION.TOP_RIGHT,\n POPOVER_POSITION.BOTTOM_LEFT,\n POPOVER_POSITION.BOTTOM_RIGHT,\n ]),\n /** If the popover should close on `esc` key press */\n closeOnEsc: PropTypes.bool,\n /** Popover close callback */\n onClose: PropTypes.func,\n};\n\nPopover.defaultProps = {\n closeOnEsc: true,\n position: POPOVER_POSITION.BOTTOM_LEFT,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,2 +0,0 @@
1
- export { default as Popover, POPOVER_POSITION } from './Popover';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export { default as Popover, POPOVER_POSITION } from './Popover';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAuBnC,iBAAS,OAAO,CAAC,KAAK,EAAE,WAAW,oDAWlC;kBAXQ,OAAO;;QAgBZ,qBAAqB;;QAErB,0CAA0C;;;;;;;;AAL9C,KAAK,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAclE,eAAe,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAa;wBAClB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;4BAC7B,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC;;aAE3D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI;cACpB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI;;;;;;;;;;;;CAYlC,CAAC;AAEF,SAAS,OAAO,CAAC,KAAkB;IAC/B,MAAM,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA1B,SAAkB,CAAQ,CAAC;IACjC,OAAO,CACH,KAAC,UAAU,oBACH,IAAI,IACR,IAAI,EAAC,QAAQ,gBACD,KAAK,eACP,QAAQ,eACR,MAAM,IAClB,CACL,CAAC;AACN,CAAC;AAID,OAAO,CAAC,SAAS,GAAG;IAChB,qBAAqB;IACrB,IAAI,EAAE,SAAS,CAAC,MAAM;IACtB,0CAA0C;IAC1C,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,OAAO,CAAC,YAAY,GAAG;IACnB,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,SAAS;CACnB,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst SpinnerDiv = styled.div<SpinnerProp>`\n border: 4px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n border-top: 4px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-radius: 50%;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n margin: 0 auto;\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nfunction Spinner(props: SpinnerProp) {\n const { label, ...rest } = props;\n return (\n <SpinnerDiv\n {...rest}\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n aria-busy=\"true\"\n />\n );\n}\n\ntype SpinnerProp = PropTypes.InferProps<typeof Spinner.propTypes>;\n\nSpinner.propTypes = {\n /** Spinner's size */\n size: PropTypes.number,\n /** Accessible label for screen readers */\n label: PropTypes.string,\n};\n\nSpinner.defaultProps = {\n size: 30,\n label: 'Loading',\n};\n\nexport default Spinner;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,2 +0,0 @@
1
- export { default as Spinner } from './Spinner';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export { default as Spinner } from './Spinner';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Step.d.ts","sourceRoot":"","sources":["../../../src/components/Stepper/Step.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,SAAS;IACf,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD,iBAAwB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,oDAIrE;kBAJuB,IAAI;;;;;;eAAJ,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Step.js","sourceRoot":"","sources":["../../../src/components/Stepper/Step.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAI3B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAyC;IAClE,6DAA6D;IAC7D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA9C,iCAAsC,CAAQ,CAAC;IACrD,OAAO,KAAC,SAAS,oBAAK,IAAI,EAAI,CAAC;AACnC,CAAC;AAED,IAAI,CAAC,YAAY,GAAG;IAChB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;CACnB,CAAC","sourcesContent":["import React from 'react';\nimport styled from '@emotion/styled';\n\ninterface StepProps {\n /** Name of the step to be displayed in the header */\n name: string;\n /** Disables the step */\n disabled?: boolean;\n /** Marks the step as completed */\n completed?: boolean;\n}\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\nexport default function Step(props: React.PropsWithChildren<StepProps>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} />;\n}\n\nStep.defaultProps = {\n disabled: false,\n completed: false,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Stepper.d.ts","sourceRoot":"","sources":["../../../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,iBAAiB,EAA4B,MAAM,OAAO,CAAC;AAC9E,OAAO,SAAS,MAAM,YAAY,CAAC;AAMnC,KAAK,YAAY,GAAG,iBAAiB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC,CAAC;AAmFH,iBAAwB,OAAO,CAAC,KAAK,EAAE,YAAY,oDAiFlD;kBAjFuB,OAAO;;QAoF3B,qCAAqC;;QAErC,kDAAkD;;;;;;;eAtF9B,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Stepper.js","sourceRoot":"","sources":["../../../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Children, PropsWithChildren, useState, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\ntype StepperProps = PropsWithChildren<{\n active: number;\n onStepClick?: (index: number) => void;\n}>;\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 400px;\n`;\n\nconst Header = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n\n @media (min-width: 601px) {\n &::before {\n position: absolute;\n top: 25px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n content: ' ';\n z-index: 0;\n }\n }\n\n & > * {\n z-index: 1;\n }\n`;\n\nconst HeaderButton = styled.button<{ active: boolean }>`\n border: none;\n padding: 16px 24px 16px 16px;\n font-size: 16px;\n cursor: pointer;\n background-color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)\n : getThemeValue(THEME_NAME.BACKGROUND)};\n font-weight: ${(props) => (props.active ? 'bold' : 'normal')};\n overflow: hidden;\n display: flex;\n align-items: center;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:disabled {\n cursor: not-allowed;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:enabled:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n }\n\n @media (max-width: 600px) {\n & {\n display: none;\n }\n }\n`;\n\nconst MobileHeader = styled.div`\n padding: 16px;\n font-size: 16px;\n line-height: 18px;\n align-items: center;\n font-weight: bold;\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n @media (min-width: 601px) {\n & {\n display: none;\n }\n }\n`;\n\nexport default function Stepper(props: StepperProps) {\n const [active, setActive] = useState(props.active);\n const { children, onStepClick } = props;\n const childrenArray = Children.toArray(children);\n const stepRefs = [] as Array<HTMLButtonElement | null>;\n\n const stepClickHandler = (index: number) => () => {\n setActive(index);\n onStepClick?.(index);\n // Move focus to the active step\n stepRefs[index]?.focus();\n };\n\n const getBadgeType = (index: number, completed: boolean, disabled: boolean) => {\n if (disabled) {\n return BADGE_TYPE.DISABLED;\n } else if (index === active) {\n return BADGE_TYPE.PRIMARY;\n } else if (completed) {\n return BADGE_TYPE.SUCCESS;\n }\n return BADGE_TYPE.DISABLED;\n };\n\n // Keyboard navigation for step buttons\n const onStepKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n stepRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n stepRefs[prev]?.focus();\n }\n };\n\n return (\n <Container>\n <Header role=\"tablist\" aria-label=\"Stepper Steps\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) return null;\n return (\n <HeaderButton\n ref={(el) => (stepRefs[index] = el)}\n active={index === active}\n type=\"button\"\n role=\"tab\"\n aria-selected={index === active}\n aria-disabled={!!child.props.disabled}\n tabIndex={index === active ? 0 : -1}\n disabled={child.props.disabled}\n onClick={stepClickHandler(index)}\n onKeyDown={onStepKeyDown(index)}\n >\n <Badge\n inline\n type={getBadgeType(\n index,\n child.props.completed,\n child.props.disabled,\n )}\n />\n <Ellipsis>{child.props.name}</Ellipsis>\n </HeaderButton>\n );\n })}\n <MobileHeader>\n <span>\n {isValidElement(childrenArray[active])\n ? childrenArray[active].props.name\n : ''}\n </span>\n <Badge inline type={BADGE_TYPE.PRIMARY}>\n {active + 1} of {Children.count(children)}\n </Badge>\n </MobileHeader>\n </Header>\n {childrenArray[active]}\n </Container>\n );\n}\n\nStepper.propTypes = {\n /** Index of currently active step */\n active: PropTypes.number,\n /** Callback function for click event on a step */\n onStepClick: PropTypes.func,\n};\n\nStepper.defaultProps = {\n active: 0,\n};\n"]}