@proef/common-ui 0.0.0-stage → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/dist/esm/assets/imagem-6ee08a37d9.png +0 -0
  2. package/dist/esm/assets/imagem-6fcae1b87b.png +0 -0
  3. package/dist/esm/index.js +324 -0
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/esm/legacy/assets/svgs/proef-footer-logo.svg.js +5 -0
  6. package/dist/esm/legacy/assets/svgs/proef-footer-logo.svg.js.map +1 -0
  7. package/dist/esm/legacy/components/atoms/Acronym/Acronym.css +43 -0
  8. package/dist/esm/legacy/components/atoms/Acronym/Acronym.js +31 -0
  9. package/dist/esm/legacy/components/atoms/Acronym/Acronym.js.map +1 -0
  10. package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.css +36 -0
  11. package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.js +57 -0
  12. package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.js.map +1 -0
  13. package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.css +218 -0
  14. package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.js +50 -0
  15. package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.js.map +1 -0
  16. package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.css +56 -0
  17. package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.js +34 -0
  18. package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.js.map +1 -0
  19. package/dist/esm/legacy/components/atoms/Button/variants/IconButton.css +74 -0
  20. package/dist/esm/legacy/components/atoms/Button/variants/IconButton.js +29 -0
  21. package/dist/esm/legacy/components/atoms/Button/variants/IconButton.js.map +1 -0
  22. package/dist/esm/legacy/components/atoms/Button/variants/MainButton.css +99 -0
  23. package/dist/esm/legacy/components/atoms/Button/variants/MainButton.js +36 -0
  24. package/dist/esm/legacy/components/atoms/Button/variants/MainButton.js.map +1 -0
  25. package/dist/esm/legacy/components/atoms/Button/variants/TabButton.css +63 -0
  26. package/dist/esm/legacy/components/atoms/Button/variants/TabButton.js +21 -0
  27. package/dist/esm/legacy/components/atoms/Button/variants/TabButton.js.map +1 -0
  28. package/dist/esm/legacy/components/atoms/Field/Field.css +171 -0
  29. package/dist/esm/legacy/components/atoms/Field/Field.js +70 -0
  30. package/dist/esm/legacy/components/atoms/Field/Field.js.map +1 -0
  31. package/dist/esm/legacy/components/atoms/IconText/IconText.css +10 -0
  32. package/dist/esm/legacy/components/atoms/IconText/IconText.js +25 -0
  33. package/dist/esm/legacy/components/atoms/IconText/IconText.js.map +1 -0
  34. package/dist/esm/legacy/components/atoms/Icone/Icone.js +24 -0
  35. package/dist/esm/legacy/components/atoms/Icone/Icone.js.map +1 -0
  36. package/dist/esm/legacy/components/atoms/Input/Input.css +12 -0
  37. package/dist/esm/legacy/components/atoms/Input/Input.js +28 -0
  38. package/dist/esm/legacy/components/atoms/Input/Input.js.map +1 -0
  39. package/dist/esm/legacy/components/atoms/InputData/InputData.js +25 -0
  40. package/dist/esm/legacy/components/atoms/InputData/InputData.js.map +1 -0
  41. package/dist/esm/legacy/components/atoms/Label/Label.css +192 -0
  42. package/dist/esm/legacy/components/atoms/Label/Label.js +13 -0
  43. package/dist/esm/legacy/components/atoms/Label/Label.js.map +1 -0
  44. package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.css +40 -0
  45. package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.js +21 -0
  46. package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.js.map +1 -0
  47. package/dist/esm/legacy/components/atoms/Select/Select.css +16 -0
  48. package/dist/esm/legacy/components/atoms/Select/Select.js +27 -0
  49. package/dist/esm/legacy/components/atoms/Select/Select.js.map +1 -0
  50. package/dist/esm/legacy/components/atoms/Stack/Stack.js +20 -0
  51. package/dist/esm/legacy/components/atoms/Stack/Stack.js.map +1 -0
  52. package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.css +36 -0
  53. package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.js +29 -0
  54. package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.js.map +1 -0
  55. package/dist/esm/legacy/components/charts/Charts.js +349 -0
  56. package/dist/esm/legacy/components/charts/Charts.js.map +1 -0
  57. package/dist/esm/legacy/components/layout/AppLauncher/AppLauncher.js +100 -0
  58. package/dist/esm/legacy/components/layout/AppLauncher/AppLauncher.js.map +1 -0
  59. package/dist/esm/legacy/components/layout/Error/Error.css +20 -0
  60. package/dist/esm/legacy/components/layout/Error/Error.js +12 -0
  61. package/dist/esm/legacy/components/layout/Error/Error.js.map +1 -0
  62. package/dist/esm/legacy/components/layout/Footer/Footer.css +42 -0
  63. package/dist/esm/legacy/components/layout/Footer/Footer.js +23 -0
  64. package/dist/esm/legacy/components/layout/Footer/Footer.js.map +1 -0
  65. package/dist/esm/legacy/components/layout/Header/Header.css +66 -0
  66. package/dist/esm/legacy/components/layout/Header/Header.js +37 -0
  67. package/dist/esm/legacy/components/layout/Header/Header.js.map +1 -0
  68. package/dist/esm/legacy/components/layout/Layout/Layout.js +31 -0
  69. package/dist/esm/legacy/components/layout/Layout/Layout.js.map +1 -0
  70. package/dist/esm/legacy/components/layout/Sidebar/Sidebar.js +38 -0
  71. package/dist/esm/legacy/components/layout/Sidebar/Sidebar.js.map +1 -0
  72. package/dist/esm/legacy/components/layout/Spinner/Spinner.css +10 -0
  73. package/dist/esm/legacy/components/layout/Spinner/Spinner.js +19 -0
  74. package/dist/esm/legacy/components/layout/Spinner/Spinner.js.map +1 -0
  75. package/dist/esm/legacy/components/layout/TopBar/TopBar.js +34 -0
  76. package/dist/esm/legacy/components/layout/TopBar/TopBar.js.map +1 -0
  77. package/dist/esm/legacy/components/layout/TopNavLayout/TopNavLayout.js +82 -0
  78. package/dist/esm/legacy/components/layout/TopNavLayout/TopNavLayout.js.map +1 -0
  79. package/dist/esm/legacy/components/molecules/BarraValor/BarraValor.js +25 -0
  80. package/dist/esm/legacy/components/molecules/BarraValor/BarraValor.js.map +1 -0
  81. package/dist/esm/legacy/components/molecules/ColumnPicker/ColumnPicker.js +246 -0
  82. package/dist/esm/legacy/components/molecules/ColumnPicker/ColumnPicker.js.map +1 -0
  83. package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.css +3 -0
  84. package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.js +33 -0
  85. package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.js.map +1 -0
  86. package/dist/esm/legacy/components/molecules/DataTable/DataTable.js +1259 -0
  87. package/dist/esm/legacy/components/molecules/DataTable/DataTable.js.map +1 -0
  88. package/dist/esm/legacy/components/molecules/FileDropzone/FileDropzone.js +68 -0
  89. package/dist/esm/legacy/components/molecules/FileDropzone/FileDropzone.js.map +1 -0
  90. package/dist/esm/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.js +96 -0
  91. package/dist/esm/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.js.map +1 -0
  92. package/dist/esm/legacy/components/molecules/Modal/Modal.css +54 -0
  93. package/dist/esm/legacy/components/molecules/Modal/Modal.js +64 -0
  94. package/dist/esm/legacy/components/molecules/Modal/Modal.js.map +1 -0
  95. package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.css +97 -0
  96. package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.js +113 -0
  97. package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.js.map +1 -0
  98. package/dist/esm/legacy/components/molecules/PhotoAvatar/PhotoAvatar.js +114 -0
  99. package/dist/esm/legacy/components/molecules/PhotoAvatar/PhotoAvatar.js.map +1 -0
  100. package/dist/esm/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.js +116 -0
  101. package/dist/esm/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.js.map +1 -0
  102. package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.css +69 -0
  103. package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.js +62 -0
  104. package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.js.map +1 -0
  105. package/dist/esm/legacy/components/molecules/UserAvatar/UserAvatar.js +23 -0
  106. package/dist/esm/legacy/components/molecules/UserAvatar/UserAvatar.js.map +1 -0
  107. package/dist/esm/legacy/components/organisms/GanttChart/GanttChart.js +162 -0
  108. package/dist/esm/legacy/components/organisms/GanttChart/GanttChart.js.map +1 -0
  109. package/dist/esm/legacy/components/organisms/Kanban/Kanban.js +88 -0
  110. package/dist/esm/legacy/components/organisms/Kanban/Kanban.js.map +1 -0
  111. package/dist/esm/legacy/components/organisms/LazyLoader/LazyLoader.js +87 -0
  112. package/dist/esm/legacy/components/organisms/LazyLoader/LazyLoader.js.map +1 -0
  113. package/dist/esm/legacy/components/organisms/MapaPontos/MapaPontos.js +427 -0
  114. package/dist/esm/legacy/components/organisms/MapaPontos/MapaPontos.js.map +1 -0
  115. package/dist/esm/legacy/components/organisms/PainelFiltros/PainelFiltros.js +218 -0
  116. package/dist/esm/legacy/components/organisms/PainelFiltros/PainelFiltros.js.map +1 -0
  117. package/dist/esm/legacy/components/organisms/PesquisaRapida/PesquisaRapida.js +147 -0
  118. package/dist/esm/legacy/components/organisms/PesquisaRapida/PesquisaRapida.js.map +1 -0
  119. package/dist/esm/legacy/components/organisms/Profile/Profile.css +26 -0
  120. package/dist/esm/legacy/components/organisms/Profile/Profile.js +26 -0
  121. package/dist/esm/legacy/components/organisms/Profile/Profile.js.map +1 -0
  122. package/dist/esm/legacy/components/organisms/RoleGuard/RoleGuard.js +79 -0
  123. package/dist/esm/legacy/components/organisms/RoleGuard/RoleGuard.js.map +1 -0
  124. package/dist/esm/legacy/components/organisms/Selector/Selector.css +87 -0
  125. package/dist/esm/legacy/components/organisms/Selector/Selector.js +181 -0
  126. package/dist/esm/legacy/components/organisms/Selector/Selector.js.map +1 -0
  127. package/dist/esm/legacy/components/organisms/StatusMatrix/StatusMatrix.js +115 -0
  128. package/dist/esm/legacy/components/organisms/StatusMatrix/StatusMatrix.js.map +1 -0
  129. package/dist/esm/legacy/components/ui/Avisos.js +33 -0
  130. package/dist/esm/legacy/components/ui/Avisos.js.map +1 -0
  131. package/dist/esm/legacy/components/ui/BarraAcoes.js +19 -0
  132. package/dist/esm/legacy/components/ui/BarraAcoes.js.map +1 -0
  133. package/dist/esm/legacy/components/ui/CabecalhoPagina.js +19 -0
  134. package/dist/esm/legacy/components/ui/CabecalhoPagina.js.map +1 -0
  135. package/dist/esm/legacy/components/ui/CaixaPesquisa.js +9 -0
  136. package/dist/esm/legacy/components/ui/CaixaPesquisa.js.map +1 -0
  137. package/dist/esm/legacy/components/ui/Confirmacao.js +34 -0
  138. package/dist/esm/legacy/components/ui/Confirmacao.js.map +1 -0
  139. package/dist/esm/legacy/components/ui/Escolha.js +41 -0
  140. package/dist/esm/legacy/components/ui/Escolha.js.map +1 -0
  141. package/dist/esm/legacy/components/ui/FaixaAviso.js +19 -0
  142. package/dist/esm/legacy/components/ui/FaixaAviso.js.map +1 -0
  143. package/dist/esm/legacy/components/ui/MenuAcoes.js +116 -0
  144. package/dist/esm/legacy/components/ui/MenuAcoes.js.map +1 -0
  145. package/dist/esm/legacy/components/ui/Passos.js +32 -0
  146. package/dist/esm/legacy/components/ui/Passos.js.map +1 -0
  147. package/dist/esm/legacy/components/ui/Separadores.js +17 -0
  148. package/dist/esm/legacy/components/ui/Separadores.js.map +1 -0
  149. package/dist/esm/legacy/components/ui/TextoAuto.js +33 -0
  150. package/dist/esm/legacy/components/ui/TextoAuto.js.map +1 -0
  151. package/dist/esm/legacy/components/ui/Ui.js +263 -0
  152. package/dist/esm/legacy/components/ui/Ui.js.map +1 -0
  153. package/dist/esm/legacy/components/ui/painelFlutuante.js +13 -0
  154. package/dist/esm/legacy/components/ui/painelFlutuante.js.map +1 -0
  155. package/dist/esm/legacy/constants/Colors.js +33 -0
  156. package/dist/esm/legacy/constants/Colors.js.map +1 -0
  157. package/dist/esm/legacy/constants/FontWeight.js +35 -0
  158. package/dist/esm/legacy/constants/FontWeight.js.map +1 -0
  159. package/dist/esm/legacy/contexts/apiContext.js +25 -0
  160. package/dist/esm/legacy/contexts/apiContext.js.map +1 -0
  161. package/dist/esm/legacy/contexts/authContext.js +85 -0
  162. package/dist/esm/legacy/contexts/authContext.js.map +1 -0
  163. package/dist/esm/legacy/contexts/socketContext.js +34 -0
  164. package/dist/esm/legacy/contexts/socketContext.js.map +1 -0
  165. package/dist/esm/legacy/hooks/useApi.js +62 -0
  166. package/dist/esm/legacy/hooks/useApi.js.map +1 -0
  167. package/dist/esm/legacy/pages/Error/ErrorPage.css +18 -0
  168. package/dist/esm/legacy/pages/Error/ErrorPage.js +50 -0
  169. package/dist/esm/legacy/pages/Error/ErrorPage.js.map +1 -0
  170. package/dist/esm/legacy/pages/Loading/Loading.css +46 -0
  171. package/dist/esm/legacy/pages/Loading/Loading.js +9 -0
  172. package/dist/esm/legacy/pages/Loading/Loading.js.map +1 -0
  173. package/dist/esm/legacy/pages/Login/LoginScreen.js +46 -0
  174. package/dist/esm/legacy/pages/Login/LoginScreen.js.map +1 -0
  175. package/dist/esm/legacy/pages/NotFound/NotFound.css +21 -0
  176. package/dist/esm/legacy/pages/NotFound/NotFound.js +24 -0
  177. package/dist/esm/legacy/pages/NotFound/NotFound.js.map +1 -0
  178. package/dist/esm/legacy/styles/themes/ButtonThemes.js +28 -0
  179. package/dist/esm/legacy/styles/themes/ButtonThemes.js.map +1 -0
  180. package/dist/esm/legacy/styles/utils/utils.js +7 -0
  181. package/dist/esm/legacy/styles/utils/utils.js.map +1 -0
  182. package/dist/esm/legacy/utils/stringUtils.js +35 -0
  183. package/dist/esm/legacy/utils/stringUtils.js.map +1 -0
  184. package/dist/esm/v1/capabilities/documents/QRScanning/scanQRCodes.js +157 -0
  185. package/dist/esm/v1/capabilities/documents/QRScanning/scanQRCodes.js.map +1 -0
  186. package/dist/esm/v1/capabilities/overlay/useFloatingPanel.js +52 -0
  187. package/dist/esm/v1/capabilities/overlay/useFloatingPanel.js.map +1 -0
  188. package/dist/esm/v1/capabilities/theme/useIsDark.js +15 -0
  189. package/dist/esm/v1/capabilities/theme/useIsDark.js.map +1 -0
  190. package/dist/esm/v1/capabilities/theme/useTheme.js +66 -0
  191. package/dist/esm/v1/capabilities/theme/useTheme.js.map +1 -0
  192. package/dist/esm/v1/components/data/Pagination/Pagination.js +66 -0
  193. package/dist/esm/v1/components/data/Pagination/Pagination.js.map +1 -0
  194. package/dist/esm/v1/components/documents/DocumentDropzone/DocumentDropzone.js +307 -0
  195. package/dist/esm/v1/components/documents/DocumentDropzone/DocumentDropzone.js.map +1 -0
  196. package/dist/esm/v1/components/feedback/Toast/Toast.js +105 -0
  197. package/dist/esm/v1/components/feedback/Toast/Toast.js.map +1 -0
  198. package/dist/esm/v1/components/forms/FormField/FormField.js +59 -0
  199. package/dist/esm/v1/components/forms/FormField/FormField.js.map +1 -0
  200. package/dist/esm/v1/components/forms/FormGrid/FormGrid.js +20 -0
  201. package/dist/esm/v1/components/forms/FormGrid/FormGrid.js.map +1 -0
  202. package/dist/esm/v1/components/layout/AppShell/AppShell.js +89 -0
  203. package/dist/esm/v1/components/layout/AppShell/AppShell.js.map +1 -0
  204. package/dist/esm/v1/components/layout/Page/Page.js +16 -0
  205. package/dist/esm/v1/components/layout/Page/Page.js.map +1 -0
  206. package/dist/esm/v1/components/layout/PageHeader/PageHeader.js +26 -0
  207. package/dist/esm/v1/components/layout/PageHeader/PageHeader.js.map +1 -0
  208. package/dist/esm/v1/components/layout/SideNav/SideNav.js +287 -0
  209. package/dist/esm/v1/components/layout/SideNav/SideNav.js.map +1 -0
  210. package/dist/esm/v1/components/layout/navTrail.js +19 -0
  211. package/dist/esm/v1/components/layout/navTrail.js.map +1 -0
  212. package/dist/esm/v1/components/lists/ListFinder/ListFinder.js +271 -0
  213. package/dist/esm/v1/components/lists/ListFinder/ListFinder.js.map +1 -0
  214. package/dist/esm/v1/components/lists/ListFinder/labels.js +18 -0
  215. package/dist/esm/v1/components/lists/ListFinder/labels.js.map +1 -0
  216. package/dist/esm/v1/components/overlays/ConfirmDialog/ConfirmDialog.js +95 -0
  217. package/dist/esm/v1/components/overlays/ConfirmDialog/ConfirmDialog.js.map +1 -0
  218. package/dist/esm/v1/components/overlays/Dialog/Dialog.js +141 -0
  219. package/dist/esm/v1/components/overlays/Dialog/Dialog.js.map +1 -0
  220. package/dist/esm/v1/components/overlays/Tooltip/Tooltip.js +98 -0
  221. package/dist/esm/v1/components/overlays/Tooltip/Tooltip.js.map +1 -0
  222. package/dist/esm/v1/components/overlays/Tooltip/TooltipLayer.js +84 -0
  223. package/dist/esm/v1/components/overlays/Tooltip/TooltipLayer.js.map +1 -0
  224. package/dist/esm/v1/components/overlays/Tooltip/TooltipPanel.js +33 -0
  225. package/dist/esm/v1/components/overlays/Tooltip/TooltipPanel.js.map +1 -0
  226. package/dist/esm/v1/components/overlays/topLayer.js +28 -0
  227. package/dist/esm/v1/components/overlays/topLayer.js.map +1 -0
  228. package/dist/esm/v1/components/tables/PaginatedTable/PaginatedTable.js +50 -0
  229. package/dist/esm/v1/components/tables/PaginatedTable/PaginatedTable.js.map +1 -0
  230. package/dist/esm/v1/components/tables/Table/ColumnFilter.js +292 -0
  231. package/dist/esm/v1/components/tables/Table/ColumnFilter.js.map +1 -0
  232. package/dist/esm/v1/components/tables/Table/OverlayScrollbar.js +129 -0
  233. package/dist/esm/v1/components/tables/Table/OverlayScrollbar.js.map +1 -0
  234. package/dist/esm/v1/components/tables/Table/Table.js +1410 -0
  235. package/dist/esm/v1/components/tables/Table/Table.js.map +1 -0
  236. package/dist/esm/v1/components/tables/Table/labels.js +44 -0
  237. package/dist/esm/v1/components/tables/Table/labels.js.map +1 -0
  238. package/dist/esm/v1/foundations/icons/icons.js +227 -0
  239. package/dist/esm/v1/foundations/icons/icons.js.map +1 -0
  240. package/dist/esm/v1/primitives/buttons/Button/Button.js +41 -0
  241. package/dist/esm/v1/primitives/buttons/Button/Button.js.map +1 -0
  242. package/dist/esm/v1/primitives/buttons/SegmentedControl/SegmentedControl.js +65 -0
  243. package/dist/esm/v1/primitives/buttons/SegmentedControl/SegmentedControl.js.map +1 -0
  244. package/dist/esm/v1/primitives/buttons/SegmentedControl/segmentedStyles.js +10 -0
  245. package/dist/esm/v1/primitives/buttons/SegmentedControl/segmentedStyles.js.map +1 -0
  246. package/dist/esm/v1/primitives/display/Avatar/Avatar.js +120 -0
  247. package/dist/esm/v1/primitives/display/Avatar/Avatar.js.map +1 -0
  248. package/dist/esm/v1/primitives/display/Badge/Badge.js +23 -0
  249. package/dist/esm/v1/primitives/display/Badge/Badge.js.map +1 -0
  250. package/dist/esm/v1/primitives/display/Card/Card.js +22 -0
  251. package/dist/esm/v1/primitives/display/Card/Card.js.map +1 -0
  252. package/dist/esm/v1/primitives/display/FilterChips/FilterChips.js +45 -0
  253. package/dist/esm/v1/primitives/display/FilterChips/FilterChips.js.map +1 -0
  254. package/dist/esm/v1/primitives/display/Kpi/Kpi.js +103 -0
  255. package/dist/esm/v1/primitives/display/Kpi/Kpi.js.map +1 -0
  256. package/dist/esm/v1/primitives/display/Notice/Notice.js +71 -0
  257. package/dist/esm/v1/primitives/display/Notice/Notice.js.map +1 -0
  258. package/dist/esm/v1/primitives/display/Person/Person.js +14 -0
  259. package/dist/esm/v1/primitives/display/Person/Person.js.map +1 -0
  260. package/dist/esm/v1/primitives/display/RichText/RichText.js +12 -0
  261. package/dist/esm/v1/primitives/display/RichText/RichText.js.map +1 -0
  262. package/dist/esm/v1/primitives/display/RichText/utils.js +56 -0
  263. package/dist/esm/v1/primitives/display/RichText/utils.js.map +1 -0
  264. package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js +137 -0
  265. package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js.map +1 -0
  266. package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js +26 -0
  267. package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js.map +1 -0
  268. package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js +37 -0
  269. package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js.map +1 -0
  270. package/dist/esm/v1/primitives/forms/DateInput/DateInput.js +150 -0
  271. package/dist/esm/v1/primitives/forms/DateInput/DateInput.js.map +1 -0
  272. package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js +37 -0
  273. package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js.map +1 -0
  274. package/dist/esm/v1/primitives/forms/RichTextEditor/RichTextEditor.js +253 -0
  275. package/dist/esm/v1/primitives/forms/RichTextEditor/RichTextEditor.js.map +1 -0
  276. package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js +43 -0
  277. package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js.map +1 -0
  278. package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js +207 -0
  279. package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js.map +1 -0
  280. package/dist/esm/v1/primitives/forms/TextArea/TextArea.js +75 -0
  281. package/dist/esm/v1/primitives/forms/TextArea/TextArea.js.map +1 -0
  282. package/dist/esm/v1/primitives/forms/TextInput/TextInput.js +21 -0
  283. package/dist/esm/v1/primitives/forms/TextInput/TextInput.js.map +1 -0
  284. package/dist/esm/v1/primitives/forms/field.js +14 -0
  285. package/dist/esm/v1/primitives/forms/field.js.map +1 -0
  286. package/dist/esm/v1/primitives/lists/ListItem/ListItem.js +73 -0
  287. package/dist/esm/v1/primitives/lists/ListItem/ListItem.js.map +1 -0
  288. package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js +96 -0
  289. package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js.map +1 -0
  290. package/dist/style.components.css +3 -0
  291. package/dist/style.css +2 -0
  292. package/dist/style.layered.css +2 -0
  293. package/dist/tailwind.css +24 -0
  294. package/dist/theme-boot.js +1 -0
  295. package/dist/theme.css +265 -0
  296. package/dist/tokens.css +121 -0
  297. package/dist/types/index.d.ts +14 -0
  298. package/dist/types/legacy/components/atoms/Acronym/Acronym.d.ts +11 -0
  299. package/dist/types/legacy/components/atoms/BreadCrumb/BreadCrumb.d.ts +9 -0
  300. package/dist/types/legacy/components/atoms/Button/variants/ActionButton.d.ts +14 -0
  301. package/dist/types/legacy/components/atoms/Button/variants/FilterButton.d.ts +12 -0
  302. package/dist/types/legacy/components/atoms/Button/variants/IconButton.d.ts +22 -0
  303. package/dist/types/legacy/components/atoms/Button/variants/MainButton.d.ts +17 -0
  304. package/dist/types/legacy/components/atoms/Button/variants/TabButton.d.ts +14 -0
  305. package/dist/types/legacy/components/atoms/Field/Field.d.ts +15 -0
  306. package/dist/types/legacy/components/atoms/IconText/IconText.d.ts +12 -0
  307. package/dist/types/legacy/components/atoms/Icone/Icone.d.ts +31 -0
  308. package/dist/types/legacy/components/atoms/Input/Input.d.ts +13 -0
  309. package/dist/types/legacy/components/atoms/InputData/InputData.d.ts +38 -0
  310. package/dist/types/legacy/components/atoms/Label/Label.d.ts +11 -0
  311. package/dist/types/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.d.ts +10 -0
  312. package/dist/types/legacy/components/atoms/SearchSelect/SearchSelect.d.ts +15 -0
  313. package/dist/types/legacy/components/atoms/Select/Select.d.ts +16 -0
  314. package/dist/types/legacy/components/atoms/Stack/Stack.d.ts +9 -0
  315. package/dist/types/legacy/components/atoms/Switch/CustomSwitch.d.ts +12 -0
  316. package/dist/types/legacy/components/charts/Charts.d.ts +149 -0
  317. package/dist/types/legacy/components/layout/AppLauncher/AppLauncher.d.ts +35 -0
  318. package/dist/types/legacy/components/layout/Error/Error.d.ts +8 -0
  319. package/dist/types/legacy/components/layout/Footer/Footer.d.ts +11 -0
  320. package/dist/types/legacy/components/layout/Header/Header.d.ts +16 -0
  321. package/dist/types/legacy/components/layout/Layout/Layout.d.ts +35 -0
  322. package/dist/types/legacy/components/layout/Sidebar/Sidebar.d.ts +56 -0
  323. package/dist/types/legacy/components/layout/Spinner/Spinner.d.ts +5 -0
  324. package/dist/types/legacy/components/layout/TopBar/TopBar.d.ts +10 -0
  325. package/dist/types/legacy/components/layout/TopNavLayout/TopNavLayout.d.ts +43 -0
  326. package/dist/types/legacy/components/molecules/BarraValor/BarraValor.d.ts +28 -0
  327. package/dist/types/legacy/components/molecules/ColumnPicker/ColumnPicker.d.ts +116 -0
  328. package/dist/types/legacy/components/molecules/ConfirmModal/ConfirmModal.d.ts +13 -0
  329. package/dist/types/legacy/components/molecules/DataTable/DataTable.d.ts +344 -0
  330. package/dist/types/legacy/components/molecules/FileDropzone/FileDropzone.d.ts +25 -0
  331. package/dist/types/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +33 -0
  332. package/dist/types/legacy/components/molecules/Modal/Modal.d.ts +22 -0
  333. package/dist/types/legacy/components/molecules/MultiTagPicker/MultiTagPicker.d.ts +25 -0
  334. package/dist/types/legacy/components/molecules/PhotoAvatar/PhotoAvatar.d.ts +34 -0
  335. package/dist/types/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.d.ts +48 -0
  336. package/dist/types/legacy/components/molecules/Sidebar/Sidebar.d.ts +12 -0
  337. package/dist/types/legacy/components/molecules/UserAvatar/UserAvatar.d.ts +19 -0
  338. package/dist/types/legacy/components/organisms/GanttChart/GanttChart.d.ts +62 -0
  339. package/dist/types/legacy/components/organisms/Kanban/Kanban.d.ts +44 -0
  340. package/dist/types/legacy/components/organisms/LazyLoader/LazyLoader.d.ts +16 -0
  341. package/dist/types/legacy/components/organisms/MapaPontos/MapaPontos.d.ts +206 -0
  342. package/dist/types/legacy/components/organisms/PainelFiltros/PainelFiltros.d.ts +69 -0
  343. package/dist/types/legacy/components/organisms/PesquisaRapida/PesquisaRapida.d.ts +53 -0
  344. package/dist/types/legacy/components/organisms/Profile/Profile.d.ts +12 -0
  345. package/dist/types/legacy/components/organisms/RoleGuard/RoleGuard.d.ts +37 -0
  346. package/dist/types/legacy/components/organisms/Selector/Selector.d.ts +20 -0
  347. package/dist/types/legacy/components/organisms/StatusMatrix/StatusMatrix.d.ts +54 -0
  348. package/dist/types/legacy/components/ui/Avisos.d.ts +33 -0
  349. package/dist/types/legacy/components/ui/BarraAcoes.d.ts +19 -0
  350. package/dist/types/legacy/components/ui/CabecalhoPagina.d.ts +23 -0
  351. package/dist/types/legacy/components/ui/CaixaPesquisa.d.ts +14 -0
  352. package/dist/types/legacy/components/ui/Confirmacao.d.ts +24 -0
  353. package/dist/types/legacy/components/ui/Escolha.d.ts +35 -0
  354. package/dist/types/legacy/components/ui/FaixaAviso.d.ts +19 -0
  355. package/dist/types/legacy/components/ui/MenuAcoes.d.ts +31 -0
  356. package/dist/types/legacy/components/ui/Passos.d.ts +31 -0
  357. package/dist/types/legacy/components/ui/Separadores.d.ts +19 -0
  358. package/dist/types/legacy/components/ui/TextoAuto.d.ts +23 -0
  359. package/dist/types/legacy/components/ui/Ui.d.ts +181 -0
  360. package/dist/types/legacy/components/ui/painelFlutuante.d.ts +16 -0
  361. package/dist/types/legacy/constants/Colors.d.ts +28 -0
  362. package/dist/types/legacy/constants/FontWeight.d.ts +9 -0
  363. package/dist/types/legacy/contexts/apiContext.d.ts +10 -0
  364. package/dist/types/legacy/contexts/authContext.d.ts +31 -0
  365. package/dist/types/legacy/contexts/socketContext.d.ts +16 -0
  366. package/dist/types/legacy/exports/assets.d.ts +0 -0
  367. package/dist/types/legacy/exports/atoms.d.ts +19 -0
  368. package/dist/types/legacy/exports/charts.d.ts +2 -0
  369. package/dist/types/legacy/exports/constants.d.ts +0 -0
  370. package/dist/types/legacy/exports/contexts.d.ts +3 -0
  371. package/dist/types/legacy/exports/hooks.d.ts +4 -0
  372. package/dist/types/legacy/exports/layout.d.ts +14 -0
  373. package/dist/types/legacy/exports/molecules.d.ts +21 -0
  374. package/dist/types/legacy/exports/organisms.d.ts +17 -0
  375. package/dist/types/legacy/exports/pages.d.ts +5 -0
  376. package/dist/types/legacy/exports/styles.d.ts +2 -0
  377. package/dist/types/legacy/exports/types.d.ts +7 -0
  378. package/dist/types/legacy/exports/ui.d.ts +24 -0
  379. package/dist/types/legacy/exports/utils.d.ts +1 -0
  380. package/dist/types/legacy/hooks/useApi.d.ts +19 -0
  381. package/dist/types/legacy/pages/Error/ErrorPage.d.ts +16 -0
  382. package/dist/types/legacy/pages/Loading/Loading.d.ts +8 -0
  383. package/dist/types/legacy/pages/Login/LoginScreen.d.ts +42 -0
  384. package/dist/types/legacy/pages/NotFound/NotFound.d.ts +8 -0
  385. package/dist/types/legacy/styles/themes/ButtonThemes.d.ts +6 -0
  386. package/dist/types/legacy/styles/utils/utils.d.ts +2 -0
  387. package/dist/types/legacy/types/Fetcher.d.ts +5 -0
  388. package/dist/types/legacy/types/LoggedUser.d.ts +10 -0
  389. package/dist/types/legacy/types/SelectableElement.d.ts +6 -0
  390. package/dist/types/legacy/types/SidebarMenu.d.ts +12 -0
  391. package/dist/types/legacy/types/themes/AcronymThemes.d.ts +4 -0
  392. package/dist/types/legacy/types/themes/ButtonThemes.d.ts +21 -0
  393. package/dist/types/legacy/types/themes/CustomSwitchThemes.d.ts +4 -0
  394. package/dist/types/legacy/types/themes/IconTextThemes.d.ts +6 -0
  395. package/dist/types/legacy/utils/keycloak.d.ts +0 -0
  396. package/dist/types/legacy/utils/stringUtils.d.ts +6 -0
  397. package/dist/types/v1/capabilities/documents/QRScanning/scanQRCodes.d.ts +25 -0
  398. package/dist/types/v1/capabilities/overlay/useFloatingPanel.d.ts +20 -0
  399. package/dist/types/v1/capabilities/theme/useIsDark.d.ts +10 -0
  400. package/dist/types/v1/capabilities/theme/useTheme.d.ts +29 -0
  401. package/dist/types/v1/components/data/Pagination/Pagination.d.ts +33 -0
  402. package/dist/types/v1/components/documents/DocumentDropzone/DocumentDropzone.d.ts +60 -0
  403. package/dist/types/v1/components/feedback/Toast/Toast.d.ts +51 -0
  404. package/dist/types/v1/components/forms/FormField/FormField.d.ts +44 -0
  405. package/dist/types/v1/components/forms/FormGrid/FormGrid.d.ts +23 -0
  406. package/dist/types/v1/components/layout/AppShell/AppShell.d.ts +35 -0
  407. package/dist/types/v1/components/layout/Page/Page.d.ts +23 -0
  408. package/dist/types/v1/components/layout/PageHeader/PageHeader.d.ts +35 -0
  409. package/dist/types/v1/components/layout/SideNav/SideNav.d.ts +92 -0
  410. package/dist/types/v1/components/layout/navTrail.d.ts +15 -0
  411. package/dist/types/v1/components/lists/ListFinder/ListFinder.d.ts +86 -0
  412. package/dist/types/v1/components/lists/ListFinder/labels.d.ts +24 -0
  413. package/dist/types/v1/components/overlays/ConfirmDialog/ConfirmDialog.d.ts +59 -0
  414. package/dist/types/v1/components/overlays/Dialog/Dialog.d.ts +66 -0
  415. package/dist/types/v1/components/overlays/Tooltip/Tooltip.d.ts +34 -0
  416. package/dist/types/v1/components/overlays/Tooltip/TooltipLayer.d.ts +18 -0
  417. package/dist/types/v1/components/overlays/Tooltip/TooltipPanel.d.ts +23 -0
  418. package/dist/types/v1/components/overlays/topLayer.d.ts +23 -0
  419. package/dist/types/v1/components/tables/PaginatedTable/PaginatedTable.d.ts +41 -0
  420. package/dist/types/v1/components/tables/Table/ColumnFilter.d.ts +48 -0
  421. package/dist/types/v1/components/tables/Table/OverlayScrollbar.d.ts +34 -0
  422. package/dist/types/v1/components/tables/Table/Table.d.ts +250 -0
  423. package/dist/types/v1/components/tables/Table/labels.d.ts +54 -0
  424. package/dist/types/v1/foundations/icons/icons.d.ts +81 -0
  425. package/dist/types/v1/index.d.ts +86 -0
  426. package/dist/types/v1/primitives/buttons/Button/Button.d.ts +35 -0
  427. package/dist/types/v1/primitives/buttons/SegmentedControl/SegmentedControl.d.ts +28 -0
  428. package/dist/types/v1/primitives/buttons/SegmentedControl/segmentedStyles.d.ts +16 -0
  429. package/dist/types/v1/primitives/display/Avatar/Avatar.d.ts +30 -0
  430. package/dist/types/v1/primitives/display/Badge/Badge.d.ts +25 -0
  431. package/dist/types/v1/primitives/display/Card/Card.d.ts +22 -0
  432. package/dist/types/v1/primitives/display/FilterChips/FilterChips.d.ts +33 -0
  433. package/dist/types/v1/primitives/display/Kpi/Kpi.d.ts +68 -0
  434. package/dist/types/v1/primitives/display/Notice/Notice.d.ts +29 -0
  435. package/dist/types/v1/primitives/display/Person/Person.d.ts +15 -0
  436. package/dist/types/v1/primitives/display/RichText/RichText.d.ts +17 -0
  437. package/dist/types/v1/primitives/display/RichText/utils.d.ts +22 -0
  438. package/dist/types/v1/primitives/documents/PdfPreview/PdfPreview.d.ts +17 -0
  439. package/dist/types/v1/primitives/documents/PdfPreview/pdfjs.d.ts +11 -0
  440. package/dist/types/v1/primitives/forms/Checkbox/Checkbox.d.ts +25 -0
  441. package/dist/types/v1/primitives/forms/DateInput/DateInput.d.ts +43 -0
  442. package/dist/types/v1/primitives/forms/LookupInput/LookupInput.d.ts +28 -0
  443. package/dist/types/v1/primitives/forms/RichTextEditor/RichTextEditor.d.ts +64 -0
  444. package/dist/types/v1/primitives/forms/SearchInput/SearchInput.d.ts +23 -0
  445. package/dist/types/v1/primitives/forms/SelectInput/SelectInput.d.ts +70 -0
  446. package/dist/types/v1/primitives/forms/TextArea/TextArea.d.ts +40 -0
  447. package/dist/types/v1/primitives/forms/TextInput/TextInput.d.ts +16 -0
  448. package/dist/types/v1/primitives/forms/field.d.ts +22 -0
  449. package/dist/types/v1/primitives/lists/ListItem/ListItem.d.ts +67 -0
  450. package/dist/types/v1/primitives/navigation/Tabs/Tabs.d.ts +58 -0
  451. package/package.json +125 -6
  452. package/README.md +0 -3
@@ -0,0 +1,40 @@
1
+ .cui-multitag-container {
2
+ display: flex;
3
+ align-items: center;
4
+ width: 100%;
5
+ height: 45px;
6
+ background-color: var(--light-gray-01);
7
+ border-radius: 100px;
8
+ gap: 10px;
9
+ justify-content: space-between;
10
+ box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
11
+ }
12
+ .cui-multitag-container.selected {
13
+ background-color: var(--dark-blue);
14
+ }
15
+ .cui-multitag-container .cui-icon {
16
+ margin-right: 20px;
17
+ cursor: pointer;
18
+ }
19
+
20
+ .cui-multitag-name-container {
21
+ flex: 1;
22
+ min-width: 0;
23
+ padding-left: 20px;
24
+ }
25
+
26
+ .cui-multitag-name {
27
+ color: var(--dark-blue);
28
+ font-family: var(--primary-font);
29
+ font-size: 16px;
30
+ width: 100%;
31
+ max-width: 100%;
32
+ text-wrap: nowrap;
33
+ text-align: start;
34
+ text-overflow: ellipsis;
35
+ overflow: hidden;
36
+ white-space: nowrap;
37
+ }
38
+ .cui-multitag-name.selected {
39
+ color: var(--almost-white);
40
+ }
@@ -0,0 +1,21 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import './MultiTagPickerTag.css';/* empty css */
3
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
+ import { faMinus, faPlus } from "@fortawesome/free-solid-svg-icons";
5
+ const Select = (props) => {
6
+ const { id, label, selected, handleTagChange } = props;
7
+ if (selected)
8
+ return /* @__PURE__ */ jsxs("div", { title: label, className: "cui-multitag-container selected", children: [
9
+ /* @__PURE__ */ jsx("div", { className: "cui-multitag-name-container", children: /* @__PURE__ */ jsx("p", { className: "cui-multitag-name selected", children: label }) }),
10
+ /* @__PURE__ */ jsx(FontAwesomeIcon, { size: "xl", icon: faMinus, className: "cui-icon", color: "#F8F8F8", onClick: () => handleTagChange(false) })
11
+ ] });
12
+ else
13
+ return /* @__PURE__ */ jsxs("div", { title: label, className: "cui-multitag-container", children: [
14
+ /* @__PURE__ */ jsx("div", { className: "cui-multitag-name-container", children: /* @__PURE__ */ jsx("p", { className: "cui-multitag-name", children: label }) }),
15
+ /* @__PURE__ */ jsx(FontAwesomeIcon, { size: "xl", icon: faPlus, className: "cui-icon", color: "#010060", onClick: () => handleTagChange(true) })
16
+ ] });
17
+ };
18
+ export {
19
+ Select as default
20
+ };
21
+ //# sourceMappingURL=MultiTagPickerTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiTagPickerTag.js","sources":["../../../../../../src/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.tsx"],"sourcesContent":["import React from 'react'\r\nimport './MultiTagPickerTag.scss'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons'\r\n\r\ninterface TagProps {\r\n id: string,\r\n label: string,\r\n selected: boolean,\r\n handleTagChange: (changedTo: boolean) => void\r\n}\r\n\r\nconst Select: React.FC<TagProps> = (props: TagProps) => {\r\n\r\n const { id, label, selected, handleTagChange } = props\r\n\r\n if (selected)\r\n return (\r\n <div title={label} className='cui-multitag-container selected'>\r\n <div className='cui-multitag-name-container'>\r\n <p className='cui-multitag-name selected'>{label}</p>\r\n </div>\r\n <FontAwesomeIcon size='xl' icon={faMinus} className=\"cui-icon\" color='#F8F8F8' onClick={() => handleTagChange(false)}/>\r\n </div>\r\n )\r\n else\r\n return (\r\n <div title={label} className=\"cui-multitag-container\">\r\n <div className='cui-multitag-name-container'>\r\n <p className='cui-multitag-name'>{label}</p>\r\n </div>\r\n <FontAwesomeIcon size='xl' icon={faPlus} className=\"cui-icon\" color='#010060' onClick={() => handleTagChange(true)}/>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Select\r\n"],"names":[],"mappings":";;;;AAYA,MAAM,SAA6B,CAAC,UAAoB;AAEpD,QAAM,EAAE,IAAI,OAAO,UAAU,oBAAoB;AAEjD,MAAI;AACA,WACI,qBAAC,OAAA,EAAI,OAAO,OAAO,WAAU,mCACzB,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,WAAU,+BACX,UAAA,oBAAC,OAAE,WAAU,8BAA8B,iBAAM,EAAA,CACrD;AAAA,MACA,oBAAC,iBAAA,EAAgB,MAAK,MAAK,MAAM,SAAS,WAAU,YAAW,OAAM,WAAU,SAAS,MAAM,gBAAgB,KAAK,EAAA,CAAE;AAAA,IAAA,GACzH;AAAA;AAGJ,WACI,qBAAC,OAAA,EAAI,OAAO,OAAO,WAAU,0BACzB,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,WAAU,+BACX,UAAA,oBAAC,OAAE,WAAU,qBAAqB,iBAAM,EAAA,CAC5C;AAAA,MACA,oBAAC,iBAAA,EAAgB,MAAK,MAAK,MAAM,QAAQ,WAAU,YAAW,OAAM,WAAU,SAAS,MAAM,gBAAgB,IAAI,EAAA,CAAE;AAAA,IAAA,GACvH;AAEZ;"}
@@ -0,0 +1,16 @@
1
+ .cui-select {
2
+ padding: clamp(6px, 1vw, 8px);
3
+ border: 1px solid var(--light-gray-02);
4
+ border-radius: clamp(8px, 2vw, 12px);
5
+ font-size: clamp(14px, 1.5vw, 16px);
6
+ background-color: var(--almost-white);
7
+ cursor: pointer;
8
+ width: 100%; /* Takes full width of container */
9
+ max-width: clamp(150px, 20vw, 300px); /* Optional max-width constraint */
10
+ box-sizing: border-box; /* Ensures padding/border don't add to width */
11
+ }
12
+
13
+ .cui-select:disabled {
14
+ background-color: var(--almost-gray);
15
+ cursor: not-allowed;
16
+ }
@@ -0,0 +1,27 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import './Select.css';/* empty css */
3
+ const Select = ({
4
+ placeholder,
5
+ options,
6
+ value,
7
+ onChange,
8
+ disabled = false
9
+ }) => {
10
+ return /* @__PURE__ */ jsxs(
11
+ "select",
12
+ {
13
+ value,
14
+ onChange: (e) => onChange(e.target.value),
15
+ disabled,
16
+ className: "cui-select",
17
+ children: [
18
+ /* @__PURE__ */ jsx("option", { value: "", disabled: true, children: placeholder }),
19
+ options.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: option.label }, option.value))
20
+ ]
21
+ }
22
+ );
23
+ };
24
+ export {
25
+ Select as default
26
+ };
27
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sources":["../../../../../../src/legacy/components/atoms/Select/Select.tsx"],"sourcesContent":["import React from 'react'\r\nimport './Select.scss'\r\n\r\ninterface SelectOption {\r\n value: string\r\n label: string\r\n}\r\n\r\ninterface SelectProps {\r\n placeholder: string\r\n options: SelectOption[]\r\n value: string\r\n onChange: (value: string) => void\r\n disabled?: boolean\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst Select: React.FC<SelectProps> = ({\r\n placeholder,\r\n options,\r\n value,\r\n onChange,\r\n disabled = false,\r\n}) => {\r\n return (\r\n <select\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n disabled={disabled}\r\n className=\"cui-select\"\r\n >\r\n <option value=\"\" disabled>\r\n {placeholder}\r\n </option>\r\n {options.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n )\r\n}\r\n\r\nexport default Select\r\n"],"names":[],"mappings":";;AAiBA,MAAM,SAAgC,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,MAAM;AACJ,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,MACxC;AAAA,MACA,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,oBAAC,UAAA,EAAO,OAAM,IAAG,UAAQ,MACtB,UAAA,aACH;AAAA,QACC,QAAQ,IAAI,CAAC,WACZ,oBAAC,UAAA,EAA0B,OAAO,OAAO,OACtC,UAAA,OAAO,MAAA,GADG,OAAO,KAEpB,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,20 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ const Stack = ({
3
+ children,
4
+ spacing = 2,
5
+ direction = "row",
6
+ wrap = false
7
+ }) => {
8
+ const style = {
9
+ display: "flex",
10
+ gap: `${spacing * 0.25}rem`,
11
+ flexDirection: direction,
12
+ flexWrap: wrap ? "wrap" : "nowrap",
13
+ justifyContent: "center"
14
+ };
15
+ return /* @__PURE__ */ jsx("div", { style, children });
16
+ };
17
+ export {
18
+ Stack as default
19
+ };
20
+ //# sourceMappingURL=Stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.js","sources":["../../../../../../src/legacy/components/atoms/Stack/Stack.tsx"],"sourcesContent":["import React, { CSSProperties, PropsWithChildren } from 'react'\r\n\r\ntype Props = PropsWithChildren<{\r\n spacing?: number\r\n direction: 'row' | 'column'\r\n wrap: boolean\r\n}>\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst Stack = ({\r\n children,\r\n spacing = 2,\r\n direction = 'row',\r\n wrap = false,\r\n}: Props) => {\r\n const style: CSSProperties = {\r\n display: 'flex',\r\n gap: `${spacing * 0.25}rem`,\r\n flexDirection: direction,\r\n flexWrap: wrap ? 'wrap' : 'nowrap',\r\n justifyContent: 'center',\r\n }\r\n\r\n return <div style={style}>{children}</div>\r\n}\r\n\r\nexport default Stack\r\n"],"names":[],"mappings":";AASA,MAAM,QAAQ,CAAC;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AACT,MAAa;AACX,QAAM,QAAuB;AAAA,IAC3B,SAAS;AAAA,IACT,KAAK,GAAG,UAAU,IAAI;AAAA,IACtB,eAAe;AAAA,IACf,UAAU,OAAO,SAAS;AAAA,IAC1B,gBAAgB;AAAA,EAAA;AAGlB,SAAO,oBAAC,OAAA,EAAI,OAAe,SAAA,CAAS;AACtC;"}
@@ -0,0 +1,36 @@
1
+ .cui-container {
2
+ color: var(--dark-blue);
3
+ display: flex;
4
+ align-items: center;
5
+ }
6
+ .cui-container .cui-label {
7
+ white-space: nowrap;
8
+ }
9
+
10
+ .cui-switch {
11
+ display: inline-block;
12
+ }
13
+
14
+ .cui-switch-size-default {
15
+ font-size: 0.95rem;
16
+ gap: 0.4rem;
17
+ }
18
+ .cui-switch-size-default .cui-switch {
19
+ transform: scale(1);
20
+ }
21
+
22
+ .cui-switch-size-compact {
23
+ font-size: 0.85rem;
24
+ gap: 0.2rem;
25
+ }
26
+ .cui-switch-size-compact .cui-switch {
27
+ transform: scale(0.85);
28
+ }
29
+
30
+ .cui-switch-size-large {
31
+ font-size: 1.1rem;
32
+ gap: 0.7rem;
33
+ }
34
+ .cui-switch-size-large .cui-switch {
35
+ transform: scale(1.15);
36
+ }
@@ -0,0 +1,29 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import Switch from "react-switch";
3
+ import './CustomSwitch.css';/* empty css */
4
+ const CustomSwitch = ({
5
+ label,
6
+ activated,
7
+ onChange,
8
+ theme
9
+ }) => {
10
+ return /* @__PURE__ */ jsxs("div", { className: `cui-container cui-switch-size-${theme.size}`, children: [
11
+ /* @__PURE__ */ jsx("label", { className: "cui-label", children: label }),
12
+ /* @__PURE__ */ jsx(
13
+ Switch,
14
+ {
15
+ onChange,
16
+ checked: activated,
17
+ offColor: "#888",
18
+ onColor: "#010060",
19
+ uncheckedIcon: false,
20
+ checkedIcon: false,
21
+ className: "cui-switch"
22
+ }
23
+ )
24
+ ] });
25
+ };
26
+ export {
27
+ CustomSwitch as default
28
+ };
29
+ //# sourceMappingURL=CustomSwitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomSwitch.js","sources":["../../../../../../src/legacy/components/atoms/Switch/CustomSwitch.tsx"],"sourcesContent":["import React from 'react'\r\nimport Switch from 'react-switch'\r\nimport { CustomSwitchTheme } from '../../../types/themes/CustomSwitchThemes'\r\n\r\nimport './CustomSwitch.scss'\r\n\r\ntype CustomSwitchProps = {\r\n label: string\r\n activated: boolean\r\n onChange: () => void\r\n theme: CustomSwitchTheme\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst CustomSwitch: React.FC<CustomSwitchProps> = ({\r\n label,\r\n activated,\r\n onChange,\r\n theme,\r\n}) => {\r\n return (\r\n <div className={`cui-container cui-switch-size-${theme.size}`}>\r\n <label className={'cui-label'}>{label}</label>\r\n <Switch\r\n onChange={onChange}\r\n checked={activated}\r\n offColor=\"#888\"\r\n onColor=\"#010060\"\r\n uncheckedIcon={false}\r\n checkedIcon={false}\r\n className={'cui-switch'}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default CustomSwitch\r\n"],"names":[],"mappings":";;;AAcA,MAAM,eAA4C,CAAC;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,8BACG,OAAA,EAAI,WAAW,iCAAiC,MAAM,IAAI,IACzD,UAAA;AAAA,IAAA,oBAAC,SAAA,EAAM,WAAW,aAAc,UAAA,OAAM;AAAA,IACtC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,QACT,UAAS;AAAA,QACT,SAAQ;AAAA,QACR,eAAe;AAAA,QACf,aAAa;AAAA,QACb,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACb,GACF;AAEJ;"}
@@ -0,0 +1,349 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Chart, registerables } from "chart.js";
3
+ import ChartDataLabels from "chartjs-plugin-datalabels";
4
+ import { Doughnut, Bar, Bubble, Line } from "react-chartjs-2";
5
+ import { useIsDark } from "../../../v1/capabilities/theme/useIsDark.js";
6
+ function euros(v) {
7
+ if (v == null) return "—";
8
+ const negativo = v < 0;
9
+ const [inteiro, decimal] = Math.abs(v).toFixed(2).split(".");
10
+ const comMilhares = inteiro.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
11
+ return `${negativo ? "-" : ""}${comMilhares},${decimal} €`;
12
+ }
13
+ function labelBucket(b) {
14
+ if (/^\d{4}-S\d{2}$/.test(b)) return `S${b.slice(6)}/${b.slice(2, 4)}`;
15
+ if (/^\d{4}-\d{2}$/.test(b)) return `${b.slice(5)}/${b.slice(0, 4)}`;
16
+ if (/^\d{4}-\d{2}-\d{2}$/.test(b)) return `${b.slice(8)}/${b.slice(5, 7)}`;
17
+ return b;
18
+ }
19
+ Chart.register(...registerables, ChartDataLabels);
20
+ Chart.defaults.set("plugins.datalabels", { display: false });
21
+ Chart.defaults.font.family = "'Montserrat', sans-serif";
22
+ Chart.defaults.color = "#5B6577";
23
+ const PALETA = [
24
+ "#1868B0",
25
+ "#1F8A55",
26
+ "#B96E00",
27
+ "#C23B34",
28
+ "#7C3AED",
29
+ "#0891B2",
30
+ "#DB2777",
31
+ "#65A30D",
32
+ "#4B5563",
33
+ "#D97706",
34
+ "#2563EB",
35
+ "#059669"
36
+ ];
37
+ function cor(i) {
38
+ return PALETA[i % PALETA.length];
39
+ }
40
+ function useTema() {
41
+ const escuro = useIsDark();
42
+ return escuro ? { texto: "#CBD5E1", forte: "#E2E8F0", grelha: "#1E293B" } : { texto: "#5B6577", forte: "#182238", grelha: "#EEF1F5" };
43
+ }
44
+ function legendaBaixo(tema) {
45
+ return {
46
+ position: "bottom",
47
+ labels: { boxWidth: 10, font: { size: 11 }, color: tema.forte, usePointStyle: true, pointStyle: "circle" }
48
+ };
49
+ }
50
+ function clique(labels, series, onClick) {
51
+ if (!onClick) return {};
52
+ return {
53
+ onClick: (_e, els) => {
54
+ const el = els[0];
55
+ if (!el) return;
56
+ onClick(labels[el.index], el.index, series?.[el.datasetIndex]?.nome);
57
+ },
58
+ onHover: (e, els) => {
59
+ const alvo = e.native?.target;
60
+ if (alvo) alvo.style.cursor = els.length ? "pointer" : "default";
61
+ }
62
+ };
63
+ }
64
+ function Barras({
65
+ labels: todas,
66
+ series: todasSeries,
67
+ horizontal = false,
68
+ empilhado = false,
69
+ altura,
70
+ limite,
71
+ cores,
72
+ formatar = (v) => String(v),
73
+ valores = true,
74
+ percentagem = false,
75
+ legenda,
76
+ formatarEtiqueta = labelBucket,
77
+ onClick
78
+ }) {
79
+ const tema = useTema();
80
+ const labels = limite ? todas.slice(0, limite) : todas;
81
+ const series = todasSeries.map((s) => ({ ...s, valores: limite ? s.valores.slice(0, limite) : s.valores }));
82
+ const uma = series.length === 1;
83
+ const total = uma ? todasSeries[0].valores.reduce((a, b) => a + (b || 0), 0) : 0;
84
+ const etiqueta = (v) => percentagem && uma && total > 0 ? `${formatar(v)} (${Math.round(v / total * 100)}%)` : formatar(v);
85
+ const alturaFinal = altura ?? (horizontal ? Math.max(200, labels.length * 30 + 40) : 260);
86
+ const eixoValor = { beginAtZero: true, stacked: empilhado, grid: { color: tema.grelha }, ticks: { color: tema.texto, callback: (v) => formatar(Number(v)) } };
87
+ const eixoEtiqueta = { stacked: empilhado, grid: { display: false }, ticks: { color: tema.texto } };
88
+ return /* @__PURE__ */ jsx("div", { style: { height: alturaFinal }, children: /* @__PURE__ */ jsx(
89
+ Bar,
90
+ {
91
+ data: {
92
+ labels: labels.map(formatarEtiqueta),
93
+ datasets: series.map((s, i) => ({
94
+ label: s.nome,
95
+ data: s.valores,
96
+ backgroundColor: uma && cores ? labels.map((_, j) => cores[j % cores.length]) : s.cor ?? cor(i),
97
+ borderRadius: 4,
98
+ maxBarThickness: 40
99
+ }))
100
+ },
101
+ options: {
102
+ indexAxis: horizontal ? "y" : "x",
103
+ maintainAspectRatio: false,
104
+ responsive: true,
105
+ ...clique(labels, series, onClick),
106
+ plugins: {
107
+ legend: legenda ?? !uma ? legendaBaixo(tema) : { display: false },
108
+ tooltip: { callbacks: { label: (c) => `${c.dataset.label ? `${c.dataset.label}: ` : ""}${etiqueta(Number(c.parsed[horizontal ? "x" : "y"]))}` } },
109
+ datalabels: {
110
+ display: (c) => valores && !empilhado && Number(c.dataset.data[c.dataIndex]) > 0,
111
+ anchor: "end",
112
+ align: "end",
113
+ color: tema.forte,
114
+ font: { size: 10, weight: 600 },
115
+ formatter: (v) => etiqueta(v)
116
+ }
117
+ },
118
+ scales: horizontal ? { x: eixoValor, y: eixoEtiqueta } : { x: eixoEtiqueta, y: eixoValor },
119
+ layout: { padding: horizontal ? { right: valores ? percentagem ? 56 : 32 : 8 } : { top: valores ? 18 : 4 } }
120
+ }
121
+ }
122
+ ) });
123
+ }
124
+ function BarrasEmpilhadas({ serie, altura = 280, onClick }) {
125
+ return /* @__PURE__ */ jsx(Barras, { labels: serie.labels, series: serie.series, empilhado: true, altura, onClick, legenda: true });
126
+ }
127
+ function BarrasHorizontais({
128
+ dados,
129
+ altura = 280,
130
+ limite = 12,
131
+ onClick
132
+ }) {
133
+ const n = Math.min(limite, dados.labels.length);
134
+ return /* @__PURE__ */ jsx(
135
+ Barras,
136
+ {
137
+ horizontal: true,
138
+ labels: dados.labels,
139
+ series: [{ nome: "", valores: dados.valores }],
140
+ cores: Array.from({ length: n }, (_, i) => cor(i)),
141
+ limite,
142
+ altura,
143
+ onClick
144
+ }
145
+ );
146
+ }
147
+ function Anel({
148
+ dados,
149
+ altura = 260,
150
+ cores,
151
+ formatar = (v) => String(v),
152
+ onClick
153
+ }) {
154
+ const tema = useTema();
155
+ const total = dados.valores.reduce((a, b) => a + (b || 0), 0);
156
+ return /* @__PURE__ */ jsx("div", { style: { height: altura }, children: /* @__PURE__ */ jsx(
157
+ Doughnut,
158
+ {
159
+ data: {
160
+ labels: dados.labels,
161
+ datasets: [
162
+ {
163
+ data: dados.valores,
164
+ backgroundColor: cores ?? dados.labels.map((_, i) => cor(i)),
165
+ borderWidth: 0
166
+ }
167
+ ]
168
+ },
169
+ options: {
170
+ maintainAspectRatio: false,
171
+ responsive: true,
172
+ cutout: "58%",
173
+ ...clique(dados.labels, void 0, onClick),
174
+ plugins: {
175
+ legend: legendaBaixo(tema),
176
+ tooltip: {
177
+ callbacks: {
178
+ label: (c) => {
179
+ const v = Number(c.parsed);
180
+ return ` ${c.label}: ${formatar(v)}${total > 0 ? ` (${Math.round(v / total * 100)}%)` : ""}`;
181
+ }
182
+ }
183
+ },
184
+ datalabels: {
185
+ // Só nas fatias que têm espaço para o número.
186
+ display: (c) => total > 0 && Number(c.dataset.data[c.dataIndex]) / total >= 0.05,
187
+ color: "#FFFFFF",
188
+ font: { size: 11, weight: 700 },
189
+ formatter: (v) => formatar(v)
190
+ }
191
+ }
192
+ }
193
+ }
194
+ ) });
195
+ }
196
+ function Linha({
197
+ dados,
198
+ altura = 260,
199
+ euros: emEuros = false,
200
+ onClick
201
+ }) {
202
+ const tema = useTema();
203
+ return /* @__PURE__ */ jsx("div", { style: { height: altura }, children: /* @__PURE__ */ jsx(
204
+ Line,
205
+ {
206
+ data: {
207
+ labels: dados.labels.map(labelBucket),
208
+ datasets: [
209
+ {
210
+ label: "",
211
+ data: dados.valores,
212
+ borderColor: "#C23B34",
213
+ backgroundColor: "rgba(194,59,52,0.12)",
214
+ fill: true,
215
+ tension: 0.25,
216
+ pointRadius: 3
217
+ }
218
+ ]
219
+ },
220
+ options: {
221
+ maintainAspectRatio: false,
222
+ responsive: true,
223
+ ...clique(dados.labels, void 0, onClick),
224
+ plugins: {
225
+ legend: { display: false },
226
+ tooltip: {
227
+ callbacks: {
228
+ label: (c) => emEuros ? euros(Number(c.parsed.y)) : String(c.parsed.y)
229
+ }
230
+ }
231
+ },
232
+ scales: {
233
+ x: { grid: { display: false }, ticks: { color: tema.texto } },
234
+ y: {
235
+ beginAtZero: true,
236
+ grid: { color: tema.grelha },
237
+ ticks: { color: tema.texto, callback: (v) => emEuros ? euros(Number(v)) : String(v) }
238
+ }
239
+ }
240
+ }
241
+ }
242
+ ) });
243
+ }
244
+ function Linhas({
245
+ serie,
246
+ altura = 280,
247
+ area = false,
248
+ cores,
249
+ formatar = (v) => String(v),
250
+ formatarEtiqueta = labelBucket,
251
+ onClick
252
+ }) {
253
+ const tema = useTema();
254
+ const corDe = (i) => cores?.[i] ?? cor(i);
255
+ return /* @__PURE__ */ jsx("div", { style: { height: altura }, children: /* @__PURE__ */ jsx(
256
+ Line,
257
+ {
258
+ data: {
259
+ labels: serie.labels.map(formatarEtiqueta),
260
+ datasets: serie.series.map((s, i) => ({
261
+ label: s.nome,
262
+ data: s.valores,
263
+ borderColor: corDe(i),
264
+ backgroundColor: area ? `${corDe(i)}22` : corDe(i),
265
+ fill: area,
266
+ tension: 0.25,
267
+ pointRadius: serie.labels.length > 24 ? 0 : 3,
268
+ pointHoverRadius: 4
269
+ }))
270
+ },
271
+ options: {
272
+ maintainAspectRatio: false,
273
+ responsive: true,
274
+ interaction: { mode: "index", intersect: false },
275
+ ...clique(serie.labels, serie.series, onClick),
276
+ plugins: {
277
+ legend: legendaBaixo(tema),
278
+ tooltip: { callbacks: { label: (c) => `${c.dataset.label}: ${formatar(Number(c.parsed.y))}` } }
279
+ },
280
+ scales: {
281
+ x: { grid: { display: false }, ticks: { color: tema.texto, autoSkip: true, maxRotation: 0 } },
282
+ y: { beginAtZero: true, grid: { color: tema.grelha }, ticks: { color: tema.texto, callback: (v) => formatar(Number(v)) } }
283
+ }
284
+ }
285
+ }
286
+ ) });
287
+ }
288
+ function Bolhas({
289
+ pontos,
290
+ altura = 280,
291
+ onClick,
292
+ xTitle = "Active OTs",
293
+ yTitle = "% overdue",
294
+ tooltipLabel = (p) => `${p.responsavel}: ${p.otsAtivas} active, ${p.percentagemForaPrazo}% overdue, ${euros(p.valorPenalizado)}`
295
+ }) {
296
+ const tema = useTema();
297
+ const maxValor = Math.max(1, ...pontos.map((p) => p.valorPenalizado));
298
+ return /* @__PURE__ */ jsx("div", { style: { height: altura }, children: /* @__PURE__ */ jsx(
299
+ Bubble,
300
+ {
301
+ data: {
302
+ datasets: pontos.map((p, i) => ({
303
+ label: p.responsavel,
304
+ data: [
305
+ {
306
+ x: p.otsAtivas,
307
+ y: p.percentagemForaPrazo,
308
+ r: 6 + p.valorPenalizado / maxValor * 18
309
+ }
310
+ ],
311
+ backgroundColor: `${cor(i)}CC`,
312
+ borderColor: cor(i)
313
+ }))
314
+ },
315
+ options: {
316
+ maintainAspectRatio: false,
317
+ responsive: true,
318
+ onClick: (_e, elements) => {
319
+ const idx = elements[0]?.datasetIndex;
320
+ if (idx != null && onClick) onClick(pontos[idx]);
321
+ },
322
+ plugins: {
323
+ legend: { display: false },
324
+ tooltip: {
325
+ callbacks: {
326
+ label: (c) => tooltipLabel(pontos[c.datasetIndex])
327
+ }
328
+ }
329
+ },
330
+ scales: {
331
+ x: { beginAtZero: true, title: { display: true, text: xTitle, color: tema.texto }, grid: { color: tema.grelha }, ticks: { color: tema.texto } },
332
+ y: { beginAtZero: true, title: { display: true, text: yTitle, color: tema.texto }, grid: { color: tema.grelha }, ticks: { color: tema.texto } }
333
+ }
334
+ }
335
+ }
336
+ ) });
337
+ }
338
+ export {
339
+ Anel,
340
+ Barras,
341
+ BarrasEmpilhadas,
342
+ BarrasHorizontais,
343
+ Bolhas,
344
+ Linha,
345
+ Linhas,
346
+ PALETA,
347
+ cor
348
+ };
349
+ //# sourceMappingURL=Charts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Charts.js","sources":["../../../../../src/legacy/components/charts/Charts.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Chart as ChartJS, registerables, type ActiveElement, type ChartEvent } from 'chart.js'\r\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\r\nimport { Bar, Doughnut, Line, Bubble } from 'react-chartjs-2'\r\nimport { useIsDark } from '../../../v1/capabilities/theme/useIsDark'\r\n\r\n// ---------------------------------------------------------------------------\r\n// Local types (inlined — originally imported from CRE `../types`).\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * Stacked series over a set of shared labels (e.g. a dimension over time).\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport interface SerieEmpilhada {\r\n labels: string[]\r\n series: { nome: string; valores: number[] }[]\r\n}\r\n\r\n/**\r\n * A simple distribution: parallel arrays of labels and values.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport interface Distribuicao {\r\n labels: string[]\r\n valores: number[]\r\n}\r\n\r\n/**\r\n * Clique num elemento do gráfico: a etiqueta (ex: \"Incidente\"), a posição dela\r\n * e o nome da série (quando há várias). Serve para filtrar ao clicar.\r\n */\r\nexport type CliqueGrafico = (label: string, indice: number, serie?: string) => void\r\n\r\n// ---------------------------------------------------------------------------\r\n// Local formatting helpers (inlined — originally imported from CRE `../lib/format`).\r\n// Behavior kept close to the originals; the library stays self-contained.\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * Currency formatter. Thousands separated by '.', decimals by ',', suffixed ' €'.\r\n * Independent of Intl/ICU so the thousands separator is stable across browsers.\r\n */\r\nfunction euros(v: number | null | undefined): string {\r\n if (v == null) return '—'\r\n const negativo = v < 0\r\n const [inteiro, decimal] = Math.abs(v).toFixed(2).split('.')\r\n const comMilhares = inteiro.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\r\n return `${negativo ? '-' : ''}${comMilhares},${decimal} €`\r\n}\r\n\r\n/** 'YYYY-Sxx' / 'YYYY-MM' / 'YYYY-MM-DD' → short axis label. */\r\nfunction labelBucket(b: string): string {\r\n if (/^\\d{4}-S\\d{2}$/.test(b)) return `S${b.slice(6)}/${b.slice(2, 4)}`\r\n if (/^\\d{4}-\\d{2}$/.test(b)) return `${b.slice(5)}/${b.slice(0, 4)}`\r\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(b)) return `${b.slice(8)}/${b.slice(5, 7)}`\r\n return b\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Chart.js registration (once, at module load).\r\n// ---------------------------------------------------------------------------\r\n\r\n// Regista TUDO (registerables inclui Filler, controllers, scales) + o plugin de\r\n// datalabels. O registo parcial degenerava a geometria (doughnut colapsado) e o\r\n// aviso \"fill sem Filler\". registerables = equivalente a chart.js/auto.\r\nChartJS.register(...registerables, ChartDataLabels)\r\n// Datalabels off by default — enabled only where it improves readability.\r\nChartJS.defaults.set('plugins.datalabels', { display: false })\r\nChartJS.defaults.font.family = \"'Montserrat', sans-serif\"\r\nChartJS.defaults.color = '#5B6577'\r\n\r\n/**\r\n * Categorical palette. Stable order so the same dimension always maps to the same color.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport const PALETA = [\r\n '#1868B0',\r\n '#1F8A55',\r\n '#B96E00',\r\n '#C23B34',\r\n '#7C3AED',\r\n '#0891B2',\r\n '#DB2777',\r\n '#65A30D',\r\n '#4B5563',\r\n '#D97706',\r\n '#2563EB',\r\n '#059669',\r\n]\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport function cor(i: number): string {\r\n return PALETA[i % PALETA.length]!\r\n}\r\n\r\n/**\r\n * Cores do texto e da grelha conforme o tema: as do claro sobre o fundo escuro\r\n * deixavam os eixos e os valores ilegíveis.\r\n */\r\nfunction useTema() {\r\n const escuro = useIsDark()\r\n return escuro\r\n ? { texto: '#CBD5E1', forte: '#E2E8F0', grelha: '#1E293B' }\r\n : { texto: '#5B6577', forte: '#182238', grelha: '#EEF1F5' }\r\n}\r\n\r\nfunction legendaBaixo(tema: ReturnType<typeof useTema>) {\r\n return {\r\n position: 'bottom' as const,\r\n labels: { boxWidth: 10, font: { size: 11 }, color: tema.forte, usePointStyle: true, pointStyle: 'circle' as const },\r\n }\r\n}\r\n\r\n/** Liga o clique do Chart.js ao `onClick` da biblioteca, com a mão por cima dos elementos. */\r\nfunction clique(labels: string[], series: { nome: string }[] | undefined, onClick?: CliqueGrafico) {\r\n if (!onClick) return {}\r\n return {\r\n onClick: (_e: ChartEvent, els: ActiveElement[]) => {\r\n const el = els[0]\r\n if (!el) return\r\n onClick(labels[el.index]!, el.index, series?.[el.datasetIndex]?.nome)\r\n },\r\n onHover: (e: ChartEvent, els: ActiveElement[]) => {\r\n const alvo = e.native?.target as HTMLElement | undefined\r\n if (alvo) alvo.style.cursor = els.length ? 'pointer' : 'default'\r\n },\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Barras — o componente geral; BarrasEmpilhadas e BarrasHorizontais são atalhos.\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface BarrasProps {\r\n labels: string[]\r\n /** Uma ou várias séries (ex: \"Atribuídos\" e \"Resolvidos\"), lado a lado ou empilhadas. */\r\n series: { nome: string; valores: number[]; cor?: string }[]\r\n /** Barras deitadas, com as etiquetas à esquerda (bom para nomes compridos e rankings). */\r\n horizontal?: boolean\r\n /** Séries empilhadas em vez de lado a lado. */\r\n empilhado?: boolean\r\n /** Altura em px. Nas horizontais, por omissão cresce com o número de barras. */\r\n altura?: number\r\n /** Só as primeiras N (ex: top 10). */\r\n limite?: number\r\n /** Cor de cada barra, quando há uma só série (ex: a cor de cada estado). */\r\n cores?: string[]\r\n /** Formato dos valores no tooltip, nas etiquetas e no eixo (ex: minutos → \"7h30\"). */\r\n formatar?: (v: number) => string\r\n /** Mostra o valor na ponta de cada barra. */\r\n valores?: boolean\r\n /** Junta a percentagem do total ao valor (ex: \"12 (34%)\"); só com uma série. */\r\n percentagem?: boolean\r\n /** Legenda das séries. Por omissão, só quando há mais do que uma. */\r\n legenda?: boolean\r\n /** Formato das etiquetas do eixo (ex: datas). Por omissão, datas ISO ficam curtas. */\r\n formatarEtiqueta?: (label: string) => string\r\n /** Clique numa barra: devolve a etiqueta, a posição e a série. */\r\n onClick?: CliqueGrafico\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport function Barras({\r\n labels: todas,\r\n series: todasSeries,\r\n horizontal = false,\r\n empilhado = false,\r\n altura,\r\n limite,\r\n cores,\r\n formatar = (v) => String(v),\r\n valores = true,\r\n percentagem = false,\r\n legenda,\r\n formatarEtiqueta = labelBucket,\r\n onClick,\r\n}: BarrasProps) {\r\n const tema = useTema()\r\n const labels = limite ? todas.slice(0, limite) : todas\r\n const series = todasSeries.map((s) => ({ ...s, valores: limite ? s.valores.slice(0, limite) : s.valores }))\r\n const uma = series.length === 1\r\n // A percentagem é do total, não só das barras mostradas (com `limite` seria das top N).\r\n const total = uma ? todasSeries[0]!.valores.reduce((a, b) => a + (b || 0), 0) : 0\r\n const etiqueta = (v: number) => (percentagem && uma && total > 0 ? `${formatar(v)} (${Math.round((v / total) * 100)}%)` : formatar(v))\r\n const alturaFinal = altura ?? (horizontal ? Math.max(200, labels.length * 30 + 40) : 260)\r\n const eixoValor = { beginAtZero: true, stacked: empilhado, grid: { color: tema.grelha }, ticks: { color: tema.texto, callback: (v: string | number) => formatar(Number(v)) } }\r\n const eixoEtiqueta = { stacked: empilhado, grid: { display: false }, ticks: { color: tema.texto } }\r\n\r\n return (\r\n <div style={{ height: alturaFinal }}>\r\n <Bar\r\n data={{\r\n labels: labels.map(formatarEtiqueta),\r\n datasets: series.map((s, i) => ({\r\n label: s.nome,\r\n data: s.valores,\r\n backgroundColor: uma && cores ? labels.map((_, j) => cores[j % cores.length]!) : (s.cor ?? cor(i)),\r\n borderRadius: 4,\r\n maxBarThickness: 40,\r\n })),\r\n }}\r\n options={{\r\n indexAxis: horizontal ? 'y' : 'x',\r\n maintainAspectRatio: false,\r\n responsive: true,\r\n ...clique(labels, series, onClick),\r\n plugins: {\r\n legend: legenda ?? !uma ? legendaBaixo(tema) : { display: false },\r\n tooltip: { callbacks: { label: (c) => `${c.dataset.label ? `${c.dataset.label}: ` : ''}${etiqueta(Number(c.parsed[horizontal ? 'x' : 'y']))}` } },\r\n datalabels: {\r\n display: (c) => valores && !empilhado && Number(c.dataset.data[c.dataIndex]) > 0,\r\n anchor: 'end',\r\n align: 'end',\r\n color: tema.forte,\r\n font: { size: 10, weight: 600 },\r\n formatter: (v: number) => etiqueta(v),\r\n },\r\n },\r\n scales: horizontal ? { x: eixoValor, y: eixoEtiqueta } : { x: eixoEtiqueta, y: eixoValor },\r\n layout: { padding: horizontal ? { right: valores ? (percentagem ? 56 : 32) : 8 } : { top: valores ? 18 : 4 } },\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n/**\r\n * Stacked bars for a dimension over time.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport function BarrasEmpilhadas({ serie, altura = 280, onClick }: { serie: SerieEmpilhada; altura?: number; onClick?: CliqueGrafico }) {\r\n return <Barras labels={serie.labels} series={serie.series} empilhado altura={altura} onClick={onClick} legenda />\r\n}\r\n\r\n/**\r\n * Horizontal bars of a distribution (top N).\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport function BarrasHorizontais({\r\n dados,\r\n altura = 280,\r\n limite = 12,\r\n onClick,\r\n}: {\r\n dados: Distribuicao\r\n altura?: number\r\n limite?: number\r\n onClick?: CliqueGrafico\r\n}) {\r\n const n = Math.min(limite, dados.labels.length)\r\n return (\r\n <Barras\r\n horizontal\r\n labels={dados.labels}\r\n series={[{ nome: '', valores: dados.valores }]}\r\n cores={Array.from({ length: n }, (_, i) => cor(i))}\r\n limite={limite}\r\n altura={altura}\r\n onClick={onClick}\r\n />\r\n )\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport function Anel({\r\n dados,\r\n altura = 260,\r\n cores,\r\n formatar = (v) => String(v),\r\n onClick,\r\n}: {\r\n dados: Distribuicao\r\n altura?: number\r\n cores?: string[]\r\n /** Formato dos valores no tooltip. */\r\n formatar?: (v: number) => string\r\n /** Clique numa fatia: devolve a etiqueta e a posição. */\r\n onClick?: CliqueGrafico\r\n}) {\r\n const tema = useTema()\r\n const total = dados.valores.reduce((a, b) => a + (b || 0), 0)\r\n return (\r\n <div style={{ height: altura }}>\r\n <Doughnut\r\n data={{\r\n labels: dados.labels,\r\n datasets: [\r\n {\r\n data: dados.valores,\r\n backgroundColor: cores ?? dados.labels.map((_, i) => cor(i)),\r\n borderWidth: 0,\r\n },\r\n ],\r\n }}\r\n options={{\r\n maintainAspectRatio: false,\r\n responsive: true,\r\n cutout: '58%',\r\n ...clique(dados.labels, undefined, onClick),\r\n plugins: {\r\n legend: legendaBaixo(tema),\r\n tooltip: {\r\n callbacks: {\r\n label: (c) => {\r\n const v = Number(c.parsed)\r\n return ` ${c.label}: ${formatar(v)}${total > 0 ? ` (${Math.round((v / total) * 100)}%)` : ''}`\r\n },\r\n },\r\n },\r\n datalabels: {\r\n // Só nas fatias que têm espaço para o número.\r\n display: (c) => total > 0 && Number(c.dataset.data[c.dataIndex]) / total >= 0.05,\r\n color: '#FFFFFF',\r\n font: { size: 11, weight: 700 },\r\n formatter: (v: number) => formatar(v),\r\n },\r\n },\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n/**\r\n * Simple line chart — optionally formats values as currency.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport function Linha({\r\n dados,\r\n altura = 260,\r\n euros: emEuros = false,\r\n onClick,\r\n}: {\r\n dados: Distribuicao\r\n altura?: number\r\n euros?: boolean\r\n onClick?: CliqueGrafico\r\n}) {\r\n const tema = useTema()\r\n return (\r\n <div style={{ height: altura }}>\r\n <Line\r\n data={{\r\n labels: dados.labels.map(labelBucket),\r\n datasets: [\r\n {\r\n label: '',\r\n data: dados.valores,\r\n borderColor: '#C23B34',\r\n backgroundColor: 'rgba(194,59,52,0.12)',\r\n fill: true,\r\n tension: 0.25,\r\n pointRadius: 3,\r\n },\r\n ],\r\n }}\r\n options={{\r\n maintainAspectRatio: false,\r\n responsive: true,\r\n ...clique(dados.labels, undefined, onClick),\r\n plugins: {\r\n legend: { display: false },\r\n tooltip: {\r\n callbacks: {\r\n label: (c) => (emEuros ? euros(Number(c.parsed.y)) : String(c.parsed.y)),\r\n },\r\n },\r\n },\r\n scales: {\r\n x: { grid: { display: false }, ticks: { color: tema.texto } },\r\n y: {\r\n beginAtZero: true,\r\n grid: { color: tema.grelha },\r\n ticks: { color: tema.texto, callback: (v) => (emEuros ? euros(Number(v)) : String(v)) },\r\n },\r\n },\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n/**\r\n * Several lines over the same labels — NOT stacked.\r\n *\r\n * Separate from `BarrasEmpilhadas` on purpose: two series that measure the same\r\n * thing at two moments (created vs closed) must be read against each other, and\r\n * stacking them would draw their sum, which means nothing.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport function Linhas({\r\n serie,\r\n altura = 280,\r\n area = false,\r\n cores,\r\n formatar = (v) => String(v),\r\n formatarEtiqueta = labelBucket,\r\n onClick,\r\n}: {\r\n serie: SerieEmpilhada\r\n altura?: number\r\n /// Fill under each line. Only legible with one or two series.\r\n area?: boolean\r\n /** Cor de cada série, pela ordem. */\r\n cores?: string[]\r\n /** Formato dos valores no tooltip e no eixo. */\r\n formatar?: (v: number) => string\r\n /** Formato das etiquetas do eixo (ex: datas). */\r\n formatarEtiqueta?: (label: string) => string\r\n /** Clique num ponto: devolve a etiqueta (ex: o dia) e a série. */\r\n onClick?: CliqueGrafico\r\n}) {\r\n const tema = useTema()\r\n const corDe = (i: number) => cores?.[i] ?? cor(i)\r\n return (\r\n <div style={{ height: altura }}>\r\n <Line\r\n data={{\r\n labels: serie.labels.map(formatarEtiqueta),\r\n datasets: serie.series.map((s, i) => ({\r\n label: s.nome,\r\n data: s.valores,\r\n borderColor: corDe(i),\r\n backgroundColor: area ? `${corDe(i)}22` : corDe(i),\r\n fill: area,\r\n tension: 0.25,\r\n pointRadius: serie.labels.length > 24 ? 0 : 3,\r\n pointHoverRadius: 4,\r\n })),\r\n }}\r\n options={{\r\n maintainAspectRatio: false,\r\n responsive: true,\r\n interaction: { mode: 'index', intersect: false },\r\n ...clique(serie.labels, serie.series, onClick),\r\n plugins: {\r\n legend: legendaBaixo(tema),\r\n tooltip: { callbacks: { label: (c) => `${c.dataset.label}: ${formatar(Number(c.parsed.y))}` } },\r\n },\r\n scales: {\r\n x: { grid: { display: false }, ticks: { color: tema.texto, autoSkip: true, maxRotation: 0 } },\r\n y: { beginAtZero: true, grid: { color: tema.grelha }, ticks: { color: tema.texto, callback: (v) => formatar(Number(v)) } },\r\n },\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface PontoRisco {\r\n responsavel: string\r\n otsAtivas: number\r\n percentagemForaPrazo: number\r\n valorPenalizado: number\r\n}\r\n\r\n/**\r\n * Risk-map bubbles: x = active OTs, y = % overdue, r = penalized value.\r\n * The radius is normalized against the max so bubbles stay readable at any scale.\r\n *\r\n * Axis titles and the tooltip formatter are exposed as optional props with\r\n * neutral English defaults (previously hardcoded Portuguese) so the component\r\n * carries no locale of its own.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport function Bolhas({\r\n pontos,\r\n altura = 280,\r\n onClick,\r\n xTitle = 'Active OTs',\r\n yTitle = '% overdue',\r\n tooltipLabel = (p) => `${p.responsavel}: ${p.otsAtivas} active, ${p.percentagemForaPrazo}% overdue, ${euros(p.valorPenalizado)}`,\r\n}: {\r\n pontos: PontoRisco[]\r\n altura?: number\r\n onClick?: (p: PontoRisco) => void\r\n xTitle?: string\r\n yTitle?: string\r\n tooltipLabel?: (p: PontoRisco) => string\r\n}) {\r\n const tema = useTema()\r\n const maxValor = Math.max(1, ...pontos.map((p) => p.valorPenalizado))\r\n return (\r\n <div style={{ height: altura }}>\r\n <Bubble\r\n data={{\r\n datasets: pontos.map((p, i) => ({\r\n label: p.responsavel,\r\n data: [\r\n {\r\n x: p.otsAtivas,\r\n y: p.percentagemForaPrazo,\r\n r: 6 + (p.valorPenalizado / maxValor) * 18,\r\n },\r\n ],\r\n backgroundColor: `${cor(i)}CC`,\r\n borderColor: cor(i),\r\n })),\r\n }}\r\n options={{\r\n maintainAspectRatio: false,\r\n responsive: true,\r\n onClick: (_e, elements) => {\r\n const idx = elements[0]?.datasetIndex\r\n if (idx != null && onClick) onClick(pontos[idx]!)\r\n },\r\n plugins: {\r\n legend: { display: false },\r\n tooltip: {\r\n callbacks: {\r\n label: (c) => tooltipLabel(pontos[c.datasetIndex]!),\r\n },\r\n },\r\n },\r\n scales: {\r\n x: { beginAtZero: true, title: { display: true, text: xTitle, color: tema.texto }, grid: { color: tema.grelha }, ticks: { color: tema.texto } },\r\n y: { beginAtZero: true, title: { display: true, text: yTitle, color: tema.texto }, grid: { color: tema.grelha }, ticks: { color: tema.texto } },\r\n },\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n"],"names":["ChartJS"],"mappings":"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"}