@proef/common-ui 0.0.0-stage → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) 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 +301 -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 +214 -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 +178 -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/documents/PdfPreview/PdfPreview.js +137 -0
  261. package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js.map +1 -0
  262. package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js +26 -0
  263. package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js.map +1 -0
  264. package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js +37 -0
  265. package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js.map +1 -0
  266. package/dist/esm/v1/primitives/forms/DateInput/DateInput.js +150 -0
  267. package/dist/esm/v1/primitives/forms/DateInput/DateInput.js.map +1 -0
  268. package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js +37 -0
  269. package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js.map +1 -0
  270. package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js +43 -0
  271. package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js.map +1 -0
  272. package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js +207 -0
  273. package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js.map +1 -0
  274. package/dist/esm/v1/primitives/forms/TextArea/TextArea.js +75 -0
  275. package/dist/esm/v1/primitives/forms/TextArea/TextArea.js.map +1 -0
  276. package/dist/esm/v1/primitives/forms/TextInput/TextInput.js +21 -0
  277. package/dist/esm/v1/primitives/forms/TextInput/TextInput.js.map +1 -0
  278. package/dist/esm/v1/primitives/forms/field.js +14 -0
  279. package/dist/esm/v1/primitives/forms/field.js.map +1 -0
  280. package/dist/esm/v1/primitives/lists/ListItem/ListItem.js +39 -0
  281. package/dist/esm/v1/primitives/lists/ListItem/ListItem.js.map +1 -0
  282. package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js +96 -0
  283. package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js.map +1 -0
  284. package/dist/style.components.css +3 -0
  285. package/dist/style.css +2 -0
  286. package/dist/style.layered.css +2 -0
  287. package/dist/tailwind.css +24 -0
  288. package/dist/theme-boot.js +1 -0
  289. package/dist/theme.css +265 -0
  290. package/dist/tokens.css +121 -0
  291. package/dist/types/index.d.ts +14 -0
  292. package/dist/types/legacy/components/atoms/Acronym/Acronym.d.ts +11 -0
  293. package/dist/types/legacy/components/atoms/BreadCrumb/BreadCrumb.d.ts +9 -0
  294. package/dist/types/legacy/components/atoms/Button/variants/ActionButton.d.ts +14 -0
  295. package/dist/types/legacy/components/atoms/Button/variants/FilterButton.d.ts +12 -0
  296. package/dist/types/legacy/components/atoms/Button/variants/IconButton.d.ts +22 -0
  297. package/dist/types/legacy/components/atoms/Button/variants/MainButton.d.ts +17 -0
  298. package/dist/types/legacy/components/atoms/Button/variants/TabButton.d.ts +14 -0
  299. package/dist/types/legacy/components/atoms/Field/Field.d.ts +15 -0
  300. package/dist/types/legacy/components/atoms/IconText/IconText.d.ts +12 -0
  301. package/dist/types/legacy/components/atoms/Icone/Icone.d.ts +31 -0
  302. package/dist/types/legacy/components/atoms/Input/Input.d.ts +13 -0
  303. package/dist/types/legacy/components/atoms/InputData/InputData.d.ts +38 -0
  304. package/dist/types/legacy/components/atoms/Label/Label.d.ts +11 -0
  305. package/dist/types/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.d.ts +10 -0
  306. package/dist/types/legacy/components/atoms/SearchSelect/SearchSelect.d.ts +15 -0
  307. package/dist/types/legacy/components/atoms/Select/Select.d.ts +16 -0
  308. package/dist/types/legacy/components/atoms/Stack/Stack.d.ts +9 -0
  309. package/dist/types/legacy/components/atoms/Switch/CustomSwitch.d.ts +12 -0
  310. package/dist/types/legacy/components/charts/Charts.d.ts +149 -0
  311. package/dist/types/legacy/components/layout/AppLauncher/AppLauncher.d.ts +35 -0
  312. package/dist/types/legacy/components/layout/Error/Error.d.ts +8 -0
  313. package/dist/types/legacy/components/layout/Footer/Footer.d.ts +11 -0
  314. package/dist/types/legacy/components/layout/Header/Header.d.ts +16 -0
  315. package/dist/types/legacy/components/layout/Layout/Layout.d.ts +35 -0
  316. package/dist/types/legacy/components/layout/Sidebar/Sidebar.d.ts +56 -0
  317. package/dist/types/legacy/components/layout/Spinner/Spinner.d.ts +5 -0
  318. package/dist/types/legacy/components/layout/TopBar/TopBar.d.ts +10 -0
  319. package/dist/types/legacy/components/layout/TopNavLayout/TopNavLayout.d.ts +43 -0
  320. package/dist/types/legacy/components/molecules/BarraValor/BarraValor.d.ts +28 -0
  321. package/dist/types/legacy/components/molecules/ColumnPicker/ColumnPicker.d.ts +116 -0
  322. package/dist/types/legacy/components/molecules/ConfirmModal/ConfirmModal.d.ts +13 -0
  323. package/dist/types/legacy/components/molecules/DataTable/DataTable.d.ts +344 -0
  324. package/dist/types/legacy/components/molecules/FileDropzone/FileDropzone.d.ts +25 -0
  325. package/dist/types/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +33 -0
  326. package/dist/types/legacy/components/molecules/Modal/Modal.d.ts +22 -0
  327. package/dist/types/legacy/components/molecules/MultiTagPicker/MultiTagPicker.d.ts +25 -0
  328. package/dist/types/legacy/components/molecules/PhotoAvatar/PhotoAvatar.d.ts +34 -0
  329. package/dist/types/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.d.ts +48 -0
  330. package/dist/types/legacy/components/molecules/Sidebar/Sidebar.d.ts +12 -0
  331. package/dist/types/legacy/components/molecules/UserAvatar/UserAvatar.d.ts +19 -0
  332. package/dist/types/legacy/components/organisms/GanttChart/GanttChart.d.ts +62 -0
  333. package/dist/types/legacy/components/organisms/Kanban/Kanban.d.ts +44 -0
  334. package/dist/types/legacy/components/organisms/LazyLoader/LazyLoader.d.ts +16 -0
  335. package/dist/types/legacy/components/organisms/MapaPontos/MapaPontos.d.ts +206 -0
  336. package/dist/types/legacy/components/organisms/PainelFiltros/PainelFiltros.d.ts +69 -0
  337. package/dist/types/legacy/components/organisms/PesquisaRapida/PesquisaRapida.d.ts +53 -0
  338. package/dist/types/legacy/components/organisms/Profile/Profile.d.ts +12 -0
  339. package/dist/types/legacy/components/organisms/RoleGuard/RoleGuard.d.ts +37 -0
  340. package/dist/types/legacy/components/organisms/Selector/Selector.d.ts +20 -0
  341. package/dist/types/legacy/components/organisms/StatusMatrix/StatusMatrix.d.ts +54 -0
  342. package/dist/types/legacy/components/ui/Avisos.d.ts +33 -0
  343. package/dist/types/legacy/components/ui/BarraAcoes.d.ts +19 -0
  344. package/dist/types/legacy/components/ui/CabecalhoPagina.d.ts +23 -0
  345. package/dist/types/legacy/components/ui/CaixaPesquisa.d.ts +14 -0
  346. package/dist/types/legacy/components/ui/Confirmacao.d.ts +24 -0
  347. package/dist/types/legacy/components/ui/Escolha.d.ts +35 -0
  348. package/dist/types/legacy/components/ui/FaixaAviso.d.ts +19 -0
  349. package/dist/types/legacy/components/ui/MenuAcoes.d.ts +31 -0
  350. package/dist/types/legacy/components/ui/Passos.d.ts +31 -0
  351. package/dist/types/legacy/components/ui/Separadores.d.ts +19 -0
  352. package/dist/types/legacy/components/ui/TextoAuto.d.ts +23 -0
  353. package/dist/types/legacy/components/ui/Ui.d.ts +181 -0
  354. package/dist/types/legacy/components/ui/painelFlutuante.d.ts +16 -0
  355. package/dist/types/legacy/constants/Colors.d.ts +28 -0
  356. package/dist/types/legacy/constants/FontWeight.d.ts +9 -0
  357. package/dist/types/legacy/contexts/apiContext.d.ts +10 -0
  358. package/dist/types/legacy/contexts/authContext.d.ts +31 -0
  359. package/dist/types/legacy/contexts/socketContext.d.ts +16 -0
  360. package/dist/types/legacy/exports/assets.d.ts +0 -0
  361. package/dist/types/legacy/exports/atoms.d.ts +19 -0
  362. package/dist/types/legacy/exports/charts.d.ts +2 -0
  363. package/dist/types/legacy/exports/constants.d.ts +0 -0
  364. package/dist/types/legacy/exports/contexts.d.ts +3 -0
  365. package/dist/types/legacy/exports/hooks.d.ts +4 -0
  366. package/dist/types/legacy/exports/layout.d.ts +14 -0
  367. package/dist/types/legacy/exports/molecules.d.ts +21 -0
  368. package/dist/types/legacy/exports/organisms.d.ts +17 -0
  369. package/dist/types/legacy/exports/pages.d.ts +5 -0
  370. package/dist/types/legacy/exports/styles.d.ts +2 -0
  371. package/dist/types/legacy/exports/types.d.ts +7 -0
  372. package/dist/types/legacy/exports/ui.d.ts +24 -0
  373. package/dist/types/legacy/exports/utils.d.ts +1 -0
  374. package/dist/types/legacy/hooks/useApi.d.ts +19 -0
  375. package/dist/types/legacy/pages/Error/ErrorPage.d.ts +16 -0
  376. package/dist/types/legacy/pages/Loading/Loading.d.ts +8 -0
  377. package/dist/types/legacy/pages/Login/LoginScreen.d.ts +42 -0
  378. package/dist/types/legacy/pages/NotFound/NotFound.d.ts +8 -0
  379. package/dist/types/legacy/styles/themes/ButtonThemes.d.ts +6 -0
  380. package/dist/types/legacy/styles/utils/utils.d.ts +2 -0
  381. package/dist/types/legacy/types/Fetcher.d.ts +5 -0
  382. package/dist/types/legacy/types/LoggedUser.d.ts +10 -0
  383. package/dist/types/legacy/types/SelectableElement.d.ts +6 -0
  384. package/dist/types/legacy/types/SidebarMenu.d.ts +12 -0
  385. package/dist/types/legacy/types/themes/AcronymThemes.d.ts +4 -0
  386. package/dist/types/legacy/types/themes/ButtonThemes.d.ts +21 -0
  387. package/dist/types/legacy/types/themes/CustomSwitchThemes.d.ts +4 -0
  388. package/dist/types/legacy/types/themes/IconTextThemes.d.ts +6 -0
  389. package/dist/types/legacy/utils/keycloak.d.ts +0 -0
  390. package/dist/types/legacy/utils/stringUtils.d.ts +6 -0
  391. package/dist/types/v1/capabilities/documents/QRScanning/scanQRCodes.d.ts +25 -0
  392. package/dist/types/v1/capabilities/overlay/useFloatingPanel.d.ts +20 -0
  393. package/dist/types/v1/capabilities/theme/useIsDark.d.ts +10 -0
  394. package/dist/types/v1/capabilities/theme/useTheme.d.ts +29 -0
  395. package/dist/types/v1/components/data/Pagination/Pagination.d.ts +33 -0
  396. package/dist/types/v1/components/documents/DocumentDropzone/DocumentDropzone.d.ts +60 -0
  397. package/dist/types/v1/components/feedback/Toast/Toast.d.ts +51 -0
  398. package/dist/types/v1/components/forms/FormField/FormField.d.ts +44 -0
  399. package/dist/types/v1/components/forms/FormGrid/FormGrid.d.ts +23 -0
  400. package/dist/types/v1/components/layout/AppShell/AppShell.d.ts +35 -0
  401. package/dist/types/v1/components/layout/Page/Page.d.ts +23 -0
  402. package/dist/types/v1/components/layout/PageHeader/PageHeader.d.ts +35 -0
  403. package/dist/types/v1/components/layout/SideNav/SideNav.d.ts +92 -0
  404. package/dist/types/v1/components/layout/navTrail.d.ts +15 -0
  405. package/dist/types/v1/components/lists/ListFinder/ListFinder.d.ts +60 -0
  406. package/dist/types/v1/components/lists/ListFinder/labels.d.ts +24 -0
  407. package/dist/types/v1/components/overlays/ConfirmDialog/ConfirmDialog.d.ts +59 -0
  408. package/dist/types/v1/components/overlays/Dialog/Dialog.d.ts +66 -0
  409. package/dist/types/v1/components/overlays/Tooltip/Tooltip.d.ts +34 -0
  410. package/dist/types/v1/components/overlays/Tooltip/TooltipLayer.d.ts +18 -0
  411. package/dist/types/v1/components/overlays/Tooltip/TooltipPanel.d.ts +23 -0
  412. package/dist/types/v1/components/overlays/topLayer.d.ts +23 -0
  413. package/dist/types/v1/components/tables/PaginatedTable/PaginatedTable.d.ts +41 -0
  414. package/dist/types/v1/components/tables/Table/ColumnFilter.d.ts +48 -0
  415. package/dist/types/v1/components/tables/Table/OverlayScrollbar.d.ts +34 -0
  416. package/dist/types/v1/components/tables/Table/Table.d.ts +250 -0
  417. package/dist/types/v1/components/tables/Table/labels.d.ts +54 -0
  418. package/dist/types/v1/foundations/icons/icons.d.ts +61 -0
  419. package/dist/types/v1/index.d.ts +81 -0
  420. package/dist/types/v1/primitives/buttons/Button/Button.d.ts +35 -0
  421. package/dist/types/v1/primitives/buttons/SegmentedControl/SegmentedControl.d.ts +28 -0
  422. package/dist/types/v1/primitives/buttons/SegmentedControl/segmentedStyles.d.ts +16 -0
  423. package/dist/types/v1/primitives/display/Avatar/Avatar.d.ts +30 -0
  424. package/dist/types/v1/primitives/display/Badge/Badge.d.ts +25 -0
  425. package/dist/types/v1/primitives/display/Card/Card.d.ts +22 -0
  426. package/dist/types/v1/primitives/display/FilterChips/FilterChips.d.ts +33 -0
  427. package/dist/types/v1/primitives/display/Kpi/Kpi.d.ts +68 -0
  428. package/dist/types/v1/primitives/display/Notice/Notice.d.ts +29 -0
  429. package/dist/types/v1/primitives/display/Person/Person.d.ts +15 -0
  430. package/dist/types/v1/primitives/documents/PdfPreview/PdfPreview.d.ts +17 -0
  431. package/dist/types/v1/primitives/documents/PdfPreview/pdfjs.d.ts +11 -0
  432. package/dist/types/v1/primitives/forms/Checkbox/Checkbox.d.ts +25 -0
  433. package/dist/types/v1/primitives/forms/DateInput/DateInput.d.ts +43 -0
  434. package/dist/types/v1/primitives/forms/LookupInput/LookupInput.d.ts +28 -0
  435. package/dist/types/v1/primitives/forms/SearchInput/SearchInput.d.ts +23 -0
  436. package/dist/types/v1/primitives/forms/SelectInput/SelectInput.d.ts +70 -0
  437. package/dist/types/v1/primitives/forms/TextArea/TextArea.d.ts +40 -0
  438. package/dist/types/v1/primitives/forms/TextInput/TextInput.d.ts +16 -0
  439. package/dist/types/v1/primitives/forms/field.d.ts +22 -0
  440. package/dist/types/v1/primitives/lists/ListItem/ListItem.d.ts +36 -0
  441. package/dist/types/v1/primitives/navigation/Tabs/Tabs.d.ts +58 -0
  442. package/package.json +120 -6
  443. package/README.md +0 -3
@@ -0,0 +1,344 @@
1
+ import React from 'react';
2
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
3
+ export interface DataTableColumn<T> {
4
+ key: string;
5
+ label: string;
6
+ /** Valor usado p/ ordenar, filtrar e exportar. Sem isto usa-se row[key]. */
7
+ value?: (row: T) => string | number | null | undefined;
8
+ /** Conteúdo apresentado. Sem isto mostra o value. */
9
+ render?: (row: T) => React.ReactNode;
10
+ sortType?: 'text' | 'number' | 'date';
11
+ /**
12
+ * Fixa a coluna no scroll horizontal (position: sticky).
13
+ * `true` ou `'left'` prende à esquerda; `'right'` prende à direita — útil para
14
+ * a coluna de ações, que de outro modo fica fora de vista (e com os botões
15
+ * cortados) assim que a tabela e mais larga do que o espaço disponível.
16
+ */
17
+ sticky?: boolean | 'left' | 'right';
18
+ align?: 'left' | 'right' | 'center';
19
+ /** minWidth em px. */
20
+ width?: number;
21
+ /** Largura máxima em px (o conteúdo corta com "…" e mostra o valor completo no tooltip). Sobrepõe-se a `defaultMaxColumnWidth`. */
22
+ maxWidth?: number;
23
+ /**
24
+ * Filtro por coluna (distinct dos valores, multi-seleção; intervalo nas colunas number/date).
25
+ * Por omissão LIGADO em todas as colunas com dados — `false` desliga. Colunas sem dados (ex.: ações) não o mostram.
26
+ */
27
+ filterable?: boolean;
28
+ /** Desliga a ordenação nesta coluna (default: ordenável). */
29
+ sortable?: boolean;
30
+ /**
31
+ * Agrupar por esta coluna. Por omissão LIGADO nas colunas de texto com dados e DESLIGADO nas de valor contínuo
32
+ * (`sortType` number/date, ou com `groupAggregate`), onde cada linha daria o seu próprio grupo. `true`/`false` forçam.
33
+ */
34
+ groupable?: boolean;
35
+ /** Chave usada só para ORDENAR os grupos (sobrepõe-se a `value` ao agrupar por esta coluna). */
36
+ groupSortKey?: (row: T) => string | number | null | undefined;
37
+ /**
38
+ * Filtros extra no cabeçalho desta coluna — para filtrar por um campo que não tem coluna
39
+ * própria (ex: filtrar a coluna "Obra" por concelho). Partilham o funil da coluna: o popup
40
+ * mostra no topo um seletor (coluna + cada filtro extra) para escolher a lista a filtrar.
41
+ */
42
+ extraFilters?: {
43
+ key: string;
44
+ label: string;
45
+ value: (row: T) => string | number | null | undefined;
46
+ }[];
47
+ headerClassName?: string;
48
+ cellClassName?: string;
49
+ /** Conteúdo extra por baixo do título da coluna (ex: somatório). Recebe as linhas já filtradas. */
50
+ headerExtra?: (rows: T[]) => React.ReactNode;
51
+ /**
52
+ * Valor desta coluna na linha de cada grupo (ex: soma em €), alinhado com a coluna. Recebe as linhas do grupo
53
+ * (já filtradas). Também é usado na linha de total (`totalRow`), com todas as linhas filtradas.
54
+ */
55
+ groupAggregate?: (rows: T[]) => React.ReactNode;
56
+ /**
57
+ * Cores por valor para os chips de filtro ativo (valor → classes tailwind). Com isto, cada
58
+ * valor escolhido ganha o seu chip, removível à parte.
59
+ */
60
+ valueChipColors?: Record<string, string>;
61
+ /**
62
+ * Vários valores de filtro por linha (ex.: um equipamento com várias aplicações). Alimenta a lista do funil,
63
+ * o filtro (a linha passa se QUALQUER um dos seus valores estiver escolhido) e os chips. Sem isto, um valor
64
+ * por linha (`value`). Ao agrupar, usa o `value` da linha (a combinação de valores, ex.: "Hardware, Rede").
65
+ */
66
+ filterValues?: (row: T) => ReadonlyArray<string | number | null | undefined>;
67
+ /**
68
+ * Escondida à partida no layout de colunas (`useColumnLayout` e o "Repor" do `ColumnPicker`). A tabela em
69
+ * si desenha as colunas que recebe.
70
+ */
71
+ defaultHidden?: boolean;
72
+ }
73
+ /**
74
+ * Ordenação, filtros e agrupamento do cabeçalho vivem dentro da tabela. Quem está por fora
75
+ * (ex: exportar para Excel, guardar uma vista) precisa deles — daí este handle, preenchido
76
+ * em `viewRef`.
77
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
78
+ */
79
+ export interface DataTableView<T> {
80
+ /** Aplica ordenação + filtros de coluna a qualquer lista (ex: ao dataset completo). */
81
+ apply: (rows: T[]) => T[];
82
+ /** Linhas à vista, já filtradas e ordenadas (todas as páginas). */
83
+ rows: T[];
84
+ hasFilters: boolean;
85
+ /**
86
+ * Há filtros, ordenação ou agrupamento ativos — tudo do lado do cliente. Quem alimenta a
87
+ * tabela usa isto para não largar o dataset completo: sem ele, filtrar sobre a página dá
88
+ * uma lista vazia com o total nos milhares.
89
+ */
90
+ precisaDataset: boolean;
91
+ /** Estado guardável da vista. */
92
+ estado: () => DataTableEstado;
93
+ /** Repõe um estado guardado (ex: ao aplicar uma vista do utilizador). */
94
+ repor: (e: DataTableEstado | undefined) => void;
95
+ }
96
+ /**
97
+ * O que uma vista guardada leva da tabela. Sets viram arrays porque isto é serializado
98
+ * para JSON.
99
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
100
+ */
101
+ export interface DataTableEstado {
102
+ columnFilters?: Record<string, string[]>;
103
+ rangeFilters?: Record<string, {
104
+ min?: number;
105
+ max?: number;
106
+ }>;
107
+ sortKey?: string | null;
108
+ sortDir?: 'asc' | 'desc';
109
+ /** Colunas por que se agrupa, pela ordem dos níveis. */
110
+ groupBy?: string[];
111
+ }
112
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
113
+ export interface DataTableLabels {
114
+ /** {count} é substituído pelo total (após filtros). */
115
+ results: string;
116
+ /** Tooltip da pega de redimensionar coluna. */
117
+ resizeColumn?: string;
118
+ export: string;
119
+ loading: string;
120
+ empty: string;
121
+ error: string;
122
+ search: string;
123
+ clear: string;
124
+ clearAll: string;
125
+ noOptions: string;
126
+ /** {count} = nº de valores selecionados (quando > 2, mostra "N sel."). */
127
+ selected: string;
128
+ /** {shown}/{total} — aparece quando o distinct da coluna tem mais valores do que os mostrados. */
129
+ moreOptions: string;
130
+ /** Aviso no popup enquanto `allData` não chegou — as opções ainda são só as de `data`. */
131
+ loadingOptions: string;
132
+ /** Placeholders dos dois campos do filtro por intervalo nas colunas numéricas. */
133
+ min: string;
134
+ max: string;
135
+ /** Rótulos dos dois campos do filtro por intervalo nas colunas de datas (default 'From'/'To'). */
136
+ from?: string;
137
+ to?: string;
138
+ /** {page}/{pages} são substituídos. */
139
+ page: string;
140
+ prev: string;
141
+ next: string;
142
+ /** Ordenação a partir do popup de filtro, nas colunas de texto (A→Z / Z→A). */
143
+ sortAsc: string;
144
+ sortDesc: string;
145
+ /** Ordenação a partir do popup nas colunas de datas (default 'Oldest first'/'Newest first'). */
146
+ sortOldest?: string;
147
+ sortNewest?: string;
148
+ /** Ordenação a partir do popup nas colunas numéricas (default 'Smallest first'/'Largest first'). */
149
+ sortSmallest?: string;
150
+ sortLargest?: string;
151
+ /** Agrupamento. {label} é o nome da coluna. */
152
+ groupBy: string;
153
+ ungroup: string;
154
+ clearGroups: string;
155
+ /** Selector de linhas por página (só com `pageSizeOptions`). */
156
+ perPage: string;
157
+ /** `filterMode: 'excel'`: primeira linha da lista de valores, o "(Selecionar tudo)" do Excel. */
158
+ selectAll: string;
159
+ /** O mesmo, com pesquisa activa — aí só abrange os valores que correspondem. */
160
+ selectAllResults: string;
161
+ /** Rótulo da linha de total (`totalRow`). */
162
+ total: string;
163
+ /** Nome acessível da zona com scroll horizontal (só com `scrollAffordance`). */
164
+ scrollRegion?: string;
165
+ }
166
+ interface DataTableProps<T> {
167
+ columns: DataTableColumn<T>[];
168
+ data: T[];
169
+ /**
170
+ * Dataset completo, para o distinct dos filtros e para filtrar/ordenar/agrupar sobre ele.
171
+ *
172
+ * Sem isto a tabela só conhece `data` — e numa app que pagina no servidor isso são as
173
+ * linhas da página, pelo que o funil de cada coluna listava só esses valores (e filtrar
174
+ * por um valor que só existe noutra página dava zero linhas).
175
+ */
176
+ allData?: T[];
177
+ /**
178
+ * Chamado quando a tabela precisa de `allData` e ainda não o tem: ao abrir um funil, ao
179
+ * ordenar, ao agrupar, ou quando já há filtros ativos. É o sinal para a app ir buscar o
180
+ * dataset completo — uma vez, e só se alguém mexer.
181
+ */
182
+ onDataNeeded?: () => void;
183
+ /** `allData` a caminho — mostra um aviso no popup em vez de opções silenciosamente incompletas. */
184
+ isAllDataLoading?: boolean;
185
+ /** Força o modo cliente mesmo sem interação (desde que `allData` exista). */
186
+ alwaysClient?: boolean;
187
+ /**
188
+ * Total de linhas no servidor (paginação de servidor). Fora do modo cliente, `data` é só a página à
189
+ * vista — o texto de resultados da toolbar usa então este total em vez do nº de linhas de `data`.
190
+ * Em modo cliente (ou com filtros ativos) conta-se, como sempre, as linhas filtradas.
191
+ */
192
+ totalCount?: number;
193
+ /**
194
+ * Avisa quando a tabela passa (ou deixa) de trabalhar sobre `allData`. Quem tem paginação
195
+ * de servidor por fora usa isto para a esconder: em modo cliente as linhas à vista já não
196
+ * são a página que esse controlo diz estar a mostrar.
197
+ */
198
+ onClientModeChange?: (active: boolean) => void;
199
+ /** Chave estável por linha. Obrigatória para a seleção; sem ela usa-se o índice. */
200
+ rowKey?: (row: T, index: number) => string | number;
201
+ onRowClick?: (row: T) => void;
202
+ /** Duplo clique — atalho para o detalhe sem roubar o clique simples (seleção, edição inline). */
203
+ onRowDoubleClick?: (row: T) => void;
204
+ /**
205
+ * Classes extra por linha, a partir dos dados — estado de risco, linha desactivada, etc.
206
+ * Vem depois das classes da tabela, por isso ganha em caso de conflito.
207
+ */
208
+ rowClassName?: (row: T) => string | undefined;
209
+ /**
210
+ * Chamado quando as linhas à vista mudam (filtros do cabeçalho, ordenação ou dados), com todas as páginas.
211
+ * Serve para indicadores fora da tabela (ex.: cartões no topo da página) acompanharem os filtros.
212
+ */
213
+ onVisibleRowsChange?: (rows: T[]) => void;
214
+ isLoading?: boolean;
215
+ isError?: boolean;
216
+ /** max-height do viewport com scroll (default 70vh). */
217
+ maxHeight?: string;
218
+ /**
219
+ * Linhas por página. Sem isto, mostra tudo (pode ser lento com muitas linhas).
220
+ *
221
+ * Com `allData` quem pagina `data` é a app (paginação de servidor): a tabela só pagina em modo cliente
222
+ * (filtros/ordenação/agrupamento ativos), senão paginava outra vez a página que já recebeu.
223
+ * Com `storageKey`, o tamanho escolhido no selector fica na sessão (`dt_pagesize_<storageKey>`).
224
+ */
225
+ pageSize?: number;
226
+ /** Mostra um selector de linhas por página com estas opções. */
227
+ pageSizeOptions?: number[];
228
+ /** Caixa de seleção por linha + no cabeçalho. */
229
+ selectable?: boolean;
230
+ onSelectionChange?: (selectedKeys: Set<string>) => void;
231
+ /** Linhas que se podem selecionar (default: todas). As outras mostram a caixa desativada e ficam fora do "selecionar todas". */
232
+ isRowSelectable?: (row: T) => boolean;
233
+ /**
234
+ * Seleção inicial (chaves de `rowKey`). Volta a ser aplicada quando muda por valor (não por identidade) —
235
+ * ex.: uma pré-seleção vinda de outro ecrã. Não chama `onSelectionChange`: quem a passa já a conhece.
236
+ */
237
+ initialSelectedKeys?: Iterable<string | number>;
238
+ /** Mudar este número limpa a seleção (ex: depois de uma ação em massa). */
239
+ clearSelectionTrigger?: number;
240
+ /** Guarda filtros e intervalos no sessionStorage com esta chave (e as larguras das colunas no localStorage). */
241
+ storageKey?: string;
242
+ /** Largura máxima por defeito das colunas, em px (default 360). `0` desliga o limite. */
243
+ defaultMaxColumnWidth?: number;
244
+ /** Colunas redimensionáveis arrastando o limite do cabeçalho; duplo clique repõe (default true). */
245
+ resizableColumns?: boolean;
246
+ /**
247
+ * "Ordenar A→Z / Z→A" no topo do popup de filtro. Ligado por omissão (o cabeçalho é o mesmo em todos os
248
+ * portais); `false` desliga. Os textos dependem do `sortType`: `labels.sortAsc`/`sortDesc` no texto,
249
+ * `sortOldest`/`sortNewest` nas datas e `sortSmallest`/`sortLargest` nos números (por omissão em inglês).
250
+ */
251
+ sortFromFilter?: boolean;
252
+ /**
253
+ * Semântica do filtro por coluna.
254
+ *
255
+ * - `'simple'`: abre com tudo **desmarcado** e marcar um valor quer dizer "só este".
256
+ * Conjunto vazio = sem filtro.
257
+ * - `'excel'` (default): abre com tudo **marcado** e desmarca-se o que se quer excluir, com uma linha
258
+ * `(Selecionar tudo)` no topo e curingas (`*`, `?`, `~`) na pesquisa. É o que a folha de
259
+ * cálculo faz, e o que quem vem de lá espera. Conjunto vazio = **nada seleccionado**, e a
260
+ * tabela fica sem linhas.
261
+ *
262
+ * No modo Excel o distinto da coluna aberta deixa de respeitar os filtros das outras: o que a
263
+ * lista mostra tem de ser exactamente o que a selecção materializa, senão marcar "tudo"
264
+ * apagaria em silêncio os valores que outra coluna escondeu.
265
+ */
266
+ filterMode?: 'simple' | 'excel';
267
+ /** Ordenação inicial. */
268
+ defaultSortKey?: string;
269
+ defaultSortDir?: 'asc' | 'desc';
270
+ /** Recebe o estado da vista (ordenação + filtros + agrupamento) para uso externo. */
271
+ viewRef?: React.MutableRefObject<DataTableView<T> | null>;
272
+ /** Mostra o botão de exportar. Sem `onExport`, faz download CSV nativo. */
273
+ exportFileName?: string;
274
+ /** Export custom (ex: XLSX na app). Recebe as linhas filtradas + ordenadas. */
275
+ onExport?: (rows: T[]) => void;
276
+ /** Conteúdo extra na toolbar (à direita, antes do export). */
277
+ extraToolbar?: React.ReactNode;
278
+ /** Texto por baixo do estado vazio. */
279
+ emptySubLabel?: string;
280
+ /** Ilustração do estado vazio. */
281
+ emptyIcon?: React.ReactNode;
282
+ labels?: Partial<DataTableLabels>;
283
+ /** Linha de total no fim (fica fixa em baixo), com o `groupAggregate` de cada coluna sobre as linhas filtradas. */
284
+ totalRow?: boolean;
285
+ /** Agrupamento inicial (chaves de colunas, por ordem de nível). A pessoa pode mudá-lo depois. */
286
+ defaultGroupBy?: string[];
287
+ /**
288
+ * Agrupamento controlado (chaves de colunas, por ordem de nível). Com isto a tabela usa este valor (ignora
289
+ * `defaultGroupBy` e a sessão) e as mudanças da pessoa chegam por `onGroupByChange`.
290
+ */
291
+ groupBy?: string[];
292
+ /** Chamado quando a pessoa muda o agrupamento (também sem `groupBy`, só para acompanhar). */
293
+ onGroupByChange?: (keys: string[]) => void;
294
+ /** Chamado quando a ordenação muda (`null` = sem ordenação). Também ao montar, se a inicial não for nenhuma. */
295
+ onSortChange?: (sort: {
296
+ key: string;
297
+ dir: 'asc' | 'desc';
298
+ } | null) => void;
299
+ /**
300
+ * Chamado quando os filtros por valor das colunas mudam (chave → valores escolhidos). Também ao montar, se
301
+ * vierem filtros da sessão. Só os ativos; os intervalos ficam de fora (ver `viewRef`).
302
+ */
303
+ onColumnFiltersChange?: (filters: Record<string, string[]>) => void;
304
+ /**
305
+ * Torna focável a zona com scroll horizontal (`role="region"`, nome em `labels.scrollRegion`) e deixa
306
+ * deslizá-la com ←/→/Home/End. Default desligado.
307
+ */
308
+ scrollAffordance?: boolean;
309
+ }
310
+ /**
311
+ * Timestamp de um valor de coluna de data. As apps passam a data já formatada (`value:
312
+ * dataPt(...)` → "14/08/2026"), e `new Date("14/08/2026")` devolve `Invalid Date` — ou, pior,
313
+ * lê "06/03/2026" como 3 de junho, à americana. Daí o parse explícito de dd/mm/aaaa antes do
314
+ * fallback para o `Date` nativo (que trata do ISO).
315
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
316
+ */
317
+ export declare function timestampDeData(v: unknown): number;
318
+ /**
319
+ * Predicado da caixa de pesquisa do filtro por coluna, com os curingas do Excel.
320
+ *
321
+ * `*` = qualquer sequência, `?` = exactamente um carácter, `~` escapa qualquer um dos três. Sem
322
+ * curinga nenhum é "contém"; **com** curinga o padrão passa a ser comparado com o valor **inteiro**,
323
+ * e é daí que sai o "começa por" (`25VCT*`), o "termina em" (`*.fbo`) e o "tem isto no meio"
324
+ * (`*RA2*`).
325
+ *
326
+ * No Excel esse ancorar vive nos Filtros de Texto (Começa por/Termina em) e não na caixa de
327
+ * pesquisa, que é sempre "contém" — juntar os dois na caixa evita ter de trazer também o submenu, e
328
+ * sem curingas o comportamento é o mesmo dos dois lados.
329
+ *
330
+ * Tudo em minúsculas: quem chama passa a pesquisa e o valor já em minúsculas.
331
+ */
332
+ export declare function pesquisaCuringa(q: string): (v: string) => boolean;
333
+ /**
334
+ * Tabela genérica: ordenação, filtro por coluna com distinct (multi-seleção) e por intervalo,
335
+ * agrupamento multi-nível, seleção de linhas, colunas fixas (sticky), align/width, export
336
+ * (CSV nativo ou custom) e estados loading/vazio/erro. Sem dependências de ícones/i18n —
337
+ * textos via `labels`.
338
+ *
339
+ * Com paginação de servidor, passa também `allData`/`onDataNeeded`: sem o dataset completo,
340
+ * filtrar, ordenar e agrupar só olhariam para a página à vista.
341
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
342
+ */
343
+ export default function DataTable<T>({ columns, data, allData, onDataNeeded, isAllDataLoading, alwaysClient, totalCount, onClientModeChange, rowKey, onRowClick, onRowDoubleClick, rowClassName, onVisibleRowsChange, isLoading, isError, maxHeight, pageSize, pageSizeOptions, selectable, onSelectionChange, isRowSelectable, initialSelectedKeys, clearSelectionTrigger, storageKey, defaultMaxColumnWidth, resizableColumns, sortFromFilter, filterMode, defaultSortKey, defaultSortDir, viewRef, exportFileName, onExport, extraToolbar, emptySubLabel, emptyIcon, labels, totalRow, defaultGroupBy, groupBy, onGroupByChange, onSortChange, onColumnFiltersChange, scrollAffordance, }: DataTableProps<T>): React.JSX.Element;
344
+ export {};
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
3
+ export interface FileDropzoneLabels {
4
+ /** Texto principal (ex: "Arraste os ficheiros para aqui ou clique para escolher"). */
5
+ title: string;
6
+ /** Texto secundário (ex: "Excel .xlsx, vários ficheiros"). */
7
+ hint?: string;
8
+ /** Mostrado enquanto `loading`. */
9
+ loading?: string;
10
+ /** Mostrado quando há ficheiros rejeitados pela extensão. {n} = quantidade. */
11
+ rejected?: string;
12
+ }
13
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
14
+ export interface FileDropzoneProps {
15
+ /** Extensões aceites, ex: ".xlsx" ou ".xlsx,.xls". */
16
+ accept?: string;
17
+ multiple?: boolean;
18
+ disabled?: boolean;
19
+ loading?: boolean;
20
+ onFiles: (files: File[]) => void;
21
+ labels: FileDropzoneLabels;
22
+ className?: string;
23
+ }
24
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
25
+ export default function FileDropzone({ accept, multiple, disabled, loading, onFiles, labels, className }: FileDropzoneProps): React.JSX.Element;
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import type { SidebarLanguage } from '../../layout/Sidebar/Sidebar';
3
+ /**
4
+ * Seletor de idioma.
5
+ *
6
+ * Não conhece o i18next: recebe os idiomas, o actual e o que fazer na escolha.
7
+ * É o que permite usá-lo com qualquer gestor de traduções — e testá-lo sem
8
+ * montar um.
9
+ */
10
+ /**
11
+ * Idioma, compatível com o `SidebarLanguage` que o Layout já recebe.
12
+ *
13
+ * Estende-o em vez de criar um tipo paralelo: a mesma lista serve a sidebar e
14
+ * este seletor, e duas formas do mesmo conceito acabariam a divergir.
15
+ * `name` é o nome por extenso, que só este mostra.
16
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
17
+ */
18
+ export interface Idioma extends SidebarLanguage {
19
+ /** Nome por extenso na lista (ex: 'Português'). Sem isto usa-se o `label`. */
20
+ name?: string;
21
+ }
22
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
23
+ export interface LanguageSwitcherProps {
24
+ idiomas: Idioma[];
25
+ /** Código do idioma activo. Aceita 'pt-PT' — compara pelo prefixo. */
26
+ actual: string;
27
+ onEscolher: (code: string) => void;
28
+ /** `dark` para fundos escuros (ecrã de login), `pill` para botões lado a lado. */
29
+ variant?: 'dark' | 'light' | 'pill';
30
+ compact?: boolean;
31
+ }
32
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
33
+ export default function LanguageSwitcher({ idiomas, actual, onEscolher, variant, compact, }: LanguageSwitcherProps): React.JSX.Element;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import './Modal.scss';
3
+ /**
4
+ * Largura do modal.
5
+ *
6
+ * Sem `size` o modal mede-se pelo conteúdo (entre `min-width: 500px` e
7
+ * `max-width: 90%`), que é o comportamento histórico — não se define um
8
+ * default para não mexer na aparência dos portais que já o usam.
9
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
10
+ */
11
+ export type ModalSize = 'sm' | 'md' | 'lg' | 'xl';
12
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
13
+ declare const Modal: React.ForwardRefExoticComponent<{
14
+ title: string;
15
+ modalOnly?: boolean;
16
+ onClose: () => void;
17
+ /** Largura fixa. Omitir mantém a largura pelo conteúdo. */
18
+ size?: ModalSize;
19
+ } & {
20
+ children?: React.ReactNode | undefined;
21
+ } & React.RefAttributes<HTMLDivElement>>;
22
+ export default Modal;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import './MultiTagPicker.scss';
3
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
4
+ export interface Option {
5
+ id: string;
6
+ label: string;
7
+ }
8
+ export interface MultiTagPickerProps {
9
+ placeholder?: string;
10
+ noOptionsLabel?: string;
11
+ searchInput: string;
12
+ editable: boolean;
13
+ loading: boolean;
14
+ optionsSelected: Option[];
15
+ options: Option[];
16
+ hasMoreItems: boolean;
17
+ handleInputKeyDown?: () => void;
18
+ handleInputChange?: (input: string) => void;
19
+ handleRemoveItem: (itemId: string) => void;
20
+ handleAddItem: (item: Option) => void;
21
+ loadMore?: () => void;
22
+ }
23
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
24
+ declare const MultiTagPicker: React.FC<MultiTagPickerProps>;
25
+ export default MultiTagPicker;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ export declare const SCOPE_PROPRIO: string[];
3
+ export declare const SCOPE_OUTROS: string[];
4
+ export interface GraphProfile {
5
+ name?: string | null;
6
+ email?: string | null;
7
+ company?: string | null;
8
+ department?: string | null;
9
+ jobTitle?: string | null;
10
+ }
11
+ interface Props {
12
+ oid?: string | null;
13
+ name?: string | null;
14
+ email?: string | null;
15
+ className?: string;
16
+ /** Passa para UserAvatar: cartão de detalhes em hover. Default: off. */
17
+ showCard?: boolean;
18
+ /**
19
+ * Fornece um token do Graph (scope `User.Read`) usando o MSAL DA APP.
20
+ * PREFERIR isto: evita o `useMsal` interno, que pode ler um `MsalContext`
21
+ * diferente quando o bundler duplica o `@azure/msal-react` (→ account null →
22
+ * sem foto). Com `getToken`, a foto do próprio (/me) resolve sempre.
23
+ * Ex.: `getToken={() => msalInstance.acquireTokenSilent({scopes:['User.Read'],account}).then(r=>r.accessToken)}`
24
+ */
25
+ getToken?: () => Promise<string>;
26
+ }
27
+ /**
28
+ * Avatar com a foto real do MS Graph. Fallback: iniciais (UserAvatar).
29
+ * Token: via `getToken` (recomendado) ou, em alternativa, via `useMsal` interno.
30
+ * Peers: @azure/msal-react, @azure/msal-browser.
31
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
32
+ */
33
+ export default function PhotoAvatar({ oid, name, email, className, showCard, getToken }: Props): React.JSX.Element;
34
+ export {};
@@ -0,0 +1,48 @@
1
+ import React, { type ReactNode } from 'react';
2
+ /**
3
+ * Seletor com pesquisa, para listas grandes vindas de outro sistema.
4
+ *
5
+ * Difere do `SearchSelect` em três coisas que o tornavam inutilizável nesses
6
+ * casos: cada opção pode ter uma **segunda linha** (contexto — projeto, cliente,
7
+ * plano), a pesquisa corre sobre esse contexto e não só sobre o título, e pode
8
+ * aceitar **texto livre** quando o que a pessoa quer não está na lista.
9
+ *
10
+ * Fecha ao clicar fora e com Escape. Parece detalhe, mas dentro de um modal uma
11
+ * lista que não fecha tapa o resto do formulário.
12
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
13
+ */
14
+ export interface OpcaoPesquisa {
15
+ valor: string;
16
+ titulo: string;
17
+ /** Segunda linha: contexto que distingue homónimos. Também é pesquisável. */
18
+ contexto?: string;
19
+ }
20
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
21
+ export interface SeletorPesquisaProps {
22
+ opcoes: OpcaoPesquisa[];
23
+ /** Opção escolhida (`valor`), ou null. */
24
+ valor: string | null;
25
+ onChange: (valor: string | null) => void;
26
+ /**
27
+ * Permite escolher o que foi escrito, mesmo sem estar na lista. Recebe o
28
+ * texto; quem usa decide o que fazer com ele.
29
+ */
30
+ onTextoLivre?: (texto: string) => void;
31
+ aCarregar?: boolean;
32
+ erro?: boolean;
33
+ /** Máximo de opções mostradas — listas longas tornam o painel inútil. */
34
+ maximo?: number;
35
+ labels: {
36
+ placeholder: string;
37
+ semResultados: string;
38
+ aCarregar: string;
39
+ erro: string;
40
+ limpar: string;
41
+ /** Recebe o texto escrito, ex: `Registar sem tarefa: "{texto}"`. */
42
+ textoLivre?: (texto: string) => string;
43
+ };
44
+ /** Ícone opcional à esquerda do campo. */
45
+ icone?: ReactNode;
46
+ }
47
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
48
+ export default function SeletorPesquisa({ opcoes, valor, onChange, onTextoLivre, aCarregar, erro, maximo, labels, icone, }: SeletorPesquisaProps): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ import React, { ReactNode } from 'react';
2
+ import './Sidebar.scss';
3
+ interface SidebarProps {
4
+ title: string;
5
+ isHome: boolean;
6
+ isOpen: boolean;
7
+ onClose: () => void;
8
+ children: ReactNode;
9
+ }
10
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
11
+ declare const Sidebar: React.FC<SidebarProps>;
12
+ export default Sidebar;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ interface UserAvatarProps {
3
+ name?: string | null;
4
+ photo?: string | null;
5
+ email?: string | null;
6
+ company?: string | null;
7
+ jobTitle?: string | null;
8
+ department?: string | null;
9
+ /** Tamanho, forma e cores das iniciais (classes Tailwind), como antes. */
10
+ className?: string;
11
+ /** Mostra o cartão de detalhes em hover (foto ampliada + nome/email). Default: off. */
12
+ showCard?: boolean;
13
+ }
14
+ /**
15
+ * Migrado para o V1: adaptador do `Avatar` (nomes antigos; o tamanho e as cores vêm do `className`).
16
+ * @deprecated Legacy — usar o `Avatar` (ou o `Person`, com o nome ao lado) do V1. Ver Storybook › Legacy.
17
+ */
18
+ export default function UserAvatar({ name, photo, email, company, jobTitle, department, className, showCard }: UserAvatarProps): React.JSX.Element;
19
+ export {};
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
3
+ export interface GanttRow {
4
+ id: string;
5
+ label: string;
6
+ /** Texto pequeno à direita do rótulo (ex: "12 dias"). */
7
+ sublabel?: string;
8
+ /** Mostra ⚠ com este texto no title. */
9
+ warning?: string;
10
+ /** Cor dos blocos (CSS). Nas linhas-pai sem cor usa-se a cor de destaque. */
11
+ color?: string;
12
+ /** Cor do texto do rótulo (CSS) — ex.: verde para tarefas concluídas. */
13
+ labelColor?: string;
14
+ /** Dias com atividade (ISO yyyy-mm-dd). Nas linhas-pai, se omitido, agrega os dias dos filhos. */
15
+ days?: string[];
16
+ /** Dias marcados com losango (ex: conclusão). */
17
+ markers?: string[];
18
+ /** Cabeçalho de secção mostrado antes da linha quando muda (ex: "Ramal 1"). */
19
+ section?: string;
20
+ children?: GanttRow[];
21
+ }
22
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
23
+ export interface GanttLegendItem {
24
+ label: string;
25
+ color: string;
26
+ kind?: 'block' | 'marker';
27
+ }
28
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
29
+ export interface GanttChartProps {
30
+ rows: GanttRow[];
31
+ /** Início e fim do eixo (ISO). */
32
+ start: string;
33
+ end: string;
34
+ /** Largura de cada dia em px (zoom). Default 14. */
35
+ dayWidth?: number;
36
+ labelWidth?: number;
37
+ /** Título da coluna de rótulos. */
38
+ labelHeader?: string;
39
+ legend?: GanttLegendItem[];
40
+ /** Linhas-pai abertas (controlado). Sem isto o componente gere o estado. */
41
+ expanded?: Set<string>;
42
+ onExpandedChange?: (ids: Set<string>) => void;
43
+ /** Conteúdo do tooltip de um dia. `parent` = linha-pai (dia agregado). */
44
+ renderTooltip?: (info: {
45
+ row: GanttRow;
46
+ day: string;
47
+ kind: 'day' | 'marker';
48
+ count?: number;
49
+ parent?: GanttRow;
50
+ }) => React.ReactNode;
51
+ /** Nomes dos meses (i18n). Default PT. */
52
+ monthNames?: string[];
53
+ emptyText?: string;
54
+ className?: string;
55
+ }
56
+ /** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
57
+ export default function GanttChart({ rows, start, end, dayWidth, labelWidth, labelHeader, legend, expanded: expandedProp, onExpandedChange, renderTooltip, monthNames, emptyText, className, }: GanttChartProps): React.JSX.Element;
58
+ /**
59
+ * Utilitário: ISO de um dia do eixo (para quem precisa de formatar tooltips).
60
+ * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
61
+ */
62
+ export declare const ganttDiaIso: (start: string, offset: number) => string;