@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.
- package/dist/esm/assets/imagem-6ee08a37d9.png +0 -0
- package/dist/esm/assets/imagem-6fcae1b87b.png +0 -0
- package/dist/esm/index.js +324 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/legacy/assets/svgs/proef-footer-logo.svg.js +5 -0
- package/dist/esm/legacy/assets/svgs/proef-footer-logo.svg.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Acronym/Acronym.css +43 -0
- package/dist/esm/legacy/components/atoms/Acronym/Acronym.js +31 -0
- package/dist/esm/legacy/components/atoms/Acronym/Acronym.js.map +1 -0
- package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.css +36 -0
- package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.js +57 -0
- package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.css +218 -0
- package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.js +50 -0
- package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.css +56 -0
- package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.js +34 -0
- package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/IconButton.css +74 -0
- package/dist/esm/legacy/components/atoms/Button/variants/IconButton.js +29 -0
- package/dist/esm/legacy/components/atoms/Button/variants/IconButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/MainButton.css +99 -0
- package/dist/esm/legacy/components/atoms/Button/variants/MainButton.js +36 -0
- package/dist/esm/legacy/components/atoms/Button/variants/MainButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/TabButton.css +63 -0
- package/dist/esm/legacy/components/atoms/Button/variants/TabButton.js +21 -0
- package/dist/esm/legacy/components/atoms/Button/variants/TabButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Field/Field.css +171 -0
- package/dist/esm/legacy/components/atoms/Field/Field.js +70 -0
- package/dist/esm/legacy/components/atoms/Field/Field.js.map +1 -0
- package/dist/esm/legacy/components/atoms/IconText/IconText.css +10 -0
- package/dist/esm/legacy/components/atoms/IconText/IconText.js +25 -0
- package/dist/esm/legacy/components/atoms/IconText/IconText.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Icone/Icone.js +24 -0
- package/dist/esm/legacy/components/atoms/Icone/Icone.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Input/Input.css +12 -0
- package/dist/esm/legacy/components/atoms/Input/Input.js +28 -0
- package/dist/esm/legacy/components/atoms/Input/Input.js.map +1 -0
- package/dist/esm/legacy/components/atoms/InputData/InputData.js +25 -0
- package/dist/esm/legacy/components/atoms/InputData/InputData.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Label/Label.css +192 -0
- package/dist/esm/legacy/components/atoms/Label/Label.js +13 -0
- package/dist/esm/legacy/components/atoms/Label/Label.js.map +1 -0
- package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.css +40 -0
- package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.js +21 -0
- package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Select/Select.css +16 -0
- package/dist/esm/legacy/components/atoms/Select/Select.js +27 -0
- package/dist/esm/legacy/components/atoms/Select/Select.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Stack/Stack.js +20 -0
- package/dist/esm/legacy/components/atoms/Stack/Stack.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.css +36 -0
- package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.js +29 -0
- package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.js.map +1 -0
- package/dist/esm/legacy/components/charts/Charts.js +349 -0
- package/dist/esm/legacy/components/charts/Charts.js.map +1 -0
- package/dist/esm/legacy/components/layout/AppLauncher/AppLauncher.js +100 -0
- package/dist/esm/legacy/components/layout/AppLauncher/AppLauncher.js.map +1 -0
- package/dist/esm/legacy/components/layout/Error/Error.css +20 -0
- package/dist/esm/legacy/components/layout/Error/Error.js +12 -0
- package/dist/esm/legacy/components/layout/Error/Error.js.map +1 -0
- package/dist/esm/legacy/components/layout/Footer/Footer.css +42 -0
- package/dist/esm/legacy/components/layout/Footer/Footer.js +23 -0
- package/dist/esm/legacy/components/layout/Footer/Footer.js.map +1 -0
- package/dist/esm/legacy/components/layout/Header/Header.css +66 -0
- package/dist/esm/legacy/components/layout/Header/Header.js +37 -0
- package/dist/esm/legacy/components/layout/Header/Header.js.map +1 -0
- package/dist/esm/legacy/components/layout/Layout/Layout.js +31 -0
- package/dist/esm/legacy/components/layout/Layout/Layout.js.map +1 -0
- package/dist/esm/legacy/components/layout/Sidebar/Sidebar.js +38 -0
- package/dist/esm/legacy/components/layout/Sidebar/Sidebar.js.map +1 -0
- package/dist/esm/legacy/components/layout/Spinner/Spinner.css +10 -0
- package/dist/esm/legacy/components/layout/Spinner/Spinner.js +19 -0
- package/dist/esm/legacy/components/layout/Spinner/Spinner.js.map +1 -0
- package/dist/esm/legacy/components/layout/TopBar/TopBar.js +34 -0
- package/dist/esm/legacy/components/layout/TopBar/TopBar.js.map +1 -0
- package/dist/esm/legacy/components/layout/TopNavLayout/TopNavLayout.js +82 -0
- package/dist/esm/legacy/components/layout/TopNavLayout/TopNavLayout.js.map +1 -0
- package/dist/esm/legacy/components/molecules/BarraValor/BarraValor.js +25 -0
- package/dist/esm/legacy/components/molecules/BarraValor/BarraValor.js.map +1 -0
- package/dist/esm/legacy/components/molecules/ColumnPicker/ColumnPicker.js +246 -0
- package/dist/esm/legacy/components/molecules/ColumnPicker/ColumnPicker.js.map +1 -0
- package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.css +3 -0
- package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.js +33 -0
- package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.js.map +1 -0
- package/dist/esm/legacy/components/molecules/DataTable/DataTable.js +1259 -0
- package/dist/esm/legacy/components/molecules/DataTable/DataTable.js.map +1 -0
- package/dist/esm/legacy/components/molecules/FileDropzone/FileDropzone.js +68 -0
- package/dist/esm/legacy/components/molecules/FileDropzone/FileDropzone.js.map +1 -0
- package/dist/esm/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.js +96 -0
- package/dist/esm/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.js.map +1 -0
- package/dist/esm/legacy/components/molecules/Modal/Modal.css +54 -0
- package/dist/esm/legacy/components/molecules/Modal/Modal.js +64 -0
- package/dist/esm/legacy/components/molecules/Modal/Modal.js.map +1 -0
- package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.css +97 -0
- package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.js +113 -0
- package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.js.map +1 -0
- package/dist/esm/legacy/components/molecules/PhotoAvatar/PhotoAvatar.js +114 -0
- package/dist/esm/legacy/components/molecules/PhotoAvatar/PhotoAvatar.js.map +1 -0
- package/dist/esm/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.js +116 -0
- package/dist/esm/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.js.map +1 -0
- package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.css +69 -0
- package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.js +62 -0
- package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.js.map +1 -0
- package/dist/esm/legacy/components/molecules/UserAvatar/UserAvatar.js +23 -0
- package/dist/esm/legacy/components/molecules/UserAvatar/UserAvatar.js.map +1 -0
- package/dist/esm/legacy/components/organisms/GanttChart/GanttChart.js +162 -0
- package/dist/esm/legacy/components/organisms/GanttChart/GanttChart.js.map +1 -0
- package/dist/esm/legacy/components/organisms/Kanban/Kanban.js +88 -0
- package/dist/esm/legacy/components/organisms/Kanban/Kanban.js.map +1 -0
- package/dist/esm/legacy/components/organisms/LazyLoader/LazyLoader.js +87 -0
- package/dist/esm/legacy/components/organisms/LazyLoader/LazyLoader.js.map +1 -0
- package/dist/esm/legacy/components/organisms/MapaPontos/MapaPontos.js +427 -0
- package/dist/esm/legacy/components/organisms/MapaPontos/MapaPontos.js.map +1 -0
- package/dist/esm/legacy/components/organisms/PainelFiltros/PainelFiltros.js +218 -0
- package/dist/esm/legacy/components/organisms/PainelFiltros/PainelFiltros.js.map +1 -0
- package/dist/esm/legacy/components/organisms/PesquisaRapida/PesquisaRapida.js +147 -0
- package/dist/esm/legacy/components/organisms/PesquisaRapida/PesquisaRapida.js.map +1 -0
- package/dist/esm/legacy/components/organisms/Profile/Profile.css +26 -0
- package/dist/esm/legacy/components/organisms/Profile/Profile.js +26 -0
- package/dist/esm/legacy/components/organisms/Profile/Profile.js.map +1 -0
- package/dist/esm/legacy/components/organisms/RoleGuard/RoleGuard.js +79 -0
- package/dist/esm/legacy/components/organisms/RoleGuard/RoleGuard.js.map +1 -0
- package/dist/esm/legacy/components/organisms/Selector/Selector.css +87 -0
- package/dist/esm/legacy/components/organisms/Selector/Selector.js +181 -0
- package/dist/esm/legacy/components/organisms/Selector/Selector.js.map +1 -0
- package/dist/esm/legacy/components/organisms/StatusMatrix/StatusMatrix.js +115 -0
- package/dist/esm/legacy/components/organisms/StatusMatrix/StatusMatrix.js.map +1 -0
- package/dist/esm/legacy/components/ui/Avisos.js +33 -0
- package/dist/esm/legacy/components/ui/Avisos.js.map +1 -0
- package/dist/esm/legacy/components/ui/BarraAcoes.js +19 -0
- package/dist/esm/legacy/components/ui/BarraAcoes.js.map +1 -0
- package/dist/esm/legacy/components/ui/CabecalhoPagina.js +19 -0
- package/dist/esm/legacy/components/ui/CabecalhoPagina.js.map +1 -0
- package/dist/esm/legacy/components/ui/CaixaPesquisa.js +9 -0
- package/dist/esm/legacy/components/ui/CaixaPesquisa.js.map +1 -0
- package/dist/esm/legacy/components/ui/Confirmacao.js +34 -0
- package/dist/esm/legacy/components/ui/Confirmacao.js.map +1 -0
- package/dist/esm/legacy/components/ui/Escolha.js +41 -0
- package/dist/esm/legacy/components/ui/Escolha.js.map +1 -0
- package/dist/esm/legacy/components/ui/FaixaAviso.js +19 -0
- package/dist/esm/legacy/components/ui/FaixaAviso.js.map +1 -0
- package/dist/esm/legacy/components/ui/MenuAcoes.js +116 -0
- package/dist/esm/legacy/components/ui/MenuAcoes.js.map +1 -0
- package/dist/esm/legacy/components/ui/Passos.js +32 -0
- package/dist/esm/legacy/components/ui/Passos.js.map +1 -0
- package/dist/esm/legacy/components/ui/Separadores.js +17 -0
- package/dist/esm/legacy/components/ui/Separadores.js.map +1 -0
- package/dist/esm/legacy/components/ui/TextoAuto.js +33 -0
- package/dist/esm/legacy/components/ui/TextoAuto.js.map +1 -0
- package/dist/esm/legacy/components/ui/Ui.js +263 -0
- package/dist/esm/legacy/components/ui/Ui.js.map +1 -0
- package/dist/esm/legacy/components/ui/painelFlutuante.js +13 -0
- package/dist/esm/legacy/components/ui/painelFlutuante.js.map +1 -0
- package/dist/esm/legacy/constants/Colors.js +33 -0
- package/dist/esm/legacy/constants/Colors.js.map +1 -0
- package/dist/esm/legacy/constants/FontWeight.js +35 -0
- package/dist/esm/legacy/constants/FontWeight.js.map +1 -0
- package/dist/esm/legacy/contexts/apiContext.js +25 -0
- package/dist/esm/legacy/contexts/apiContext.js.map +1 -0
- package/dist/esm/legacy/contexts/authContext.js +85 -0
- package/dist/esm/legacy/contexts/authContext.js.map +1 -0
- package/dist/esm/legacy/contexts/socketContext.js +34 -0
- package/dist/esm/legacy/contexts/socketContext.js.map +1 -0
- package/dist/esm/legacy/hooks/useApi.js +62 -0
- package/dist/esm/legacy/hooks/useApi.js.map +1 -0
- package/dist/esm/legacy/pages/Error/ErrorPage.css +18 -0
- package/dist/esm/legacy/pages/Error/ErrorPage.js +50 -0
- package/dist/esm/legacy/pages/Error/ErrorPage.js.map +1 -0
- package/dist/esm/legacy/pages/Loading/Loading.css +46 -0
- package/dist/esm/legacy/pages/Loading/Loading.js +9 -0
- package/dist/esm/legacy/pages/Loading/Loading.js.map +1 -0
- package/dist/esm/legacy/pages/Login/LoginScreen.js +46 -0
- package/dist/esm/legacy/pages/Login/LoginScreen.js.map +1 -0
- package/dist/esm/legacy/pages/NotFound/NotFound.css +21 -0
- package/dist/esm/legacy/pages/NotFound/NotFound.js +24 -0
- package/dist/esm/legacy/pages/NotFound/NotFound.js.map +1 -0
- package/dist/esm/legacy/styles/themes/ButtonThemes.js +28 -0
- package/dist/esm/legacy/styles/themes/ButtonThemes.js.map +1 -0
- package/dist/esm/legacy/styles/utils/utils.js +7 -0
- package/dist/esm/legacy/styles/utils/utils.js.map +1 -0
- package/dist/esm/legacy/utils/stringUtils.js +35 -0
- package/dist/esm/legacy/utils/stringUtils.js.map +1 -0
- package/dist/esm/v1/capabilities/documents/QRScanning/scanQRCodes.js +157 -0
- package/dist/esm/v1/capabilities/documents/QRScanning/scanQRCodes.js.map +1 -0
- package/dist/esm/v1/capabilities/overlay/useFloatingPanel.js +52 -0
- package/dist/esm/v1/capabilities/overlay/useFloatingPanel.js.map +1 -0
- package/dist/esm/v1/capabilities/theme/useIsDark.js +15 -0
- package/dist/esm/v1/capabilities/theme/useIsDark.js.map +1 -0
- package/dist/esm/v1/capabilities/theme/useTheme.js +66 -0
- package/dist/esm/v1/capabilities/theme/useTheme.js.map +1 -0
- package/dist/esm/v1/components/data/Pagination/Pagination.js +66 -0
- package/dist/esm/v1/components/data/Pagination/Pagination.js.map +1 -0
- package/dist/esm/v1/components/documents/DocumentDropzone/DocumentDropzone.js +307 -0
- package/dist/esm/v1/components/documents/DocumentDropzone/DocumentDropzone.js.map +1 -0
- package/dist/esm/v1/components/feedback/Toast/Toast.js +105 -0
- package/dist/esm/v1/components/feedback/Toast/Toast.js.map +1 -0
- package/dist/esm/v1/components/forms/FormField/FormField.js +59 -0
- package/dist/esm/v1/components/forms/FormField/FormField.js.map +1 -0
- package/dist/esm/v1/components/forms/FormGrid/FormGrid.js +20 -0
- package/dist/esm/v1/components/forms/FormGrid/FormGrid.js.map +1 -0
- package/dist/esm/v1/components/layout/AppShell/AppShell.js +89 -0
- package/dist/esm/v1/components/layout/AppShell/AppShell.js.map +1 -0
- package/dist/esm/v1/components/layout/Page/Page.js +16 -0
- package/dist/esm/v1/components/layout/Page/Page.js.map +1 -0
- package/dist/esm/v1/components/layout/PageHeader/PageHeader.js +26 -0
- package/dist/esm/v1/components/layout/PageHeader/PageHeader.js.map +1 -0
- package/dist/esm/v1/components/layout/SideNav/SideNav.js +287 -0
- package/dist/esm/v1/components/layout/SideNav/SideNav.js.map +1 -0
- package/dist/esm/v1/components/layout/navTrail.js +19 -0
- package/dist/esm/v1/components/layout/navTrail.js.map +1 -0
- package/dist/esm/v1/components/lists/ListFinder/ListFinder.js +271 -0
- package/dist/esm/v1/components/lists/ListFinder/ListFinder.js.map +1 -0
- package/dist/esm/v1/components/lists/ListFinder/labels.js +18 -0
- package/dist/esm/v1/components/lists/ListFinder/labels.js.map +1 -0
- package/dist/esm/v1/components/overlays/ConfirmDialog/ConfirmDialog.js +95 -0
- package/dist/esm/v1/components/overlays/ConfirmDialog/ConfirmDialog.js.map +1 -0
- package/dist/esm/v1/components/overlays/Dialog/Dialog.js +141 -0
- package/dist/esm/v1/components/overlays/Dialog/Dialog.js.map +1 -0
- package/dist/esm/v1/components/overlays/Tooltip/Tooltip.js +98 -0
- package/dist/esm/v1/components/overlays/Tooltip/Tooltip.js.map +1 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipLayer.js +84 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipLayer.js.map +1 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipPanel.js +33 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipPanel.js.map +1 -0
- package/dist/esm/v1/components/overlays/topLayer.js +28 -0
- package/dist/esm/v1/components/overlays/topLayer.js.map +1 -0
- package/dist/esm/v1/components/tables/PaginatedTable/PaginatedTable.js +50 -0
- package/dist/esm/v1/components/tables/PaginatedTable/PaginatedTable.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/ColumnFilter.js +292 -0
- package/dist/esm/v1/components/tables/Table/ColumnFilter.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/OverlayScrollbar.js +129 -0
- package/dist/esm/v1/components/tables/Table/OverlayScrollbar.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/Table.js +1410 -0
- package/dist/esm/v1/components/tables/Table/Table.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/labels.js +44 -0
- package/dist/esm/v1/components/tables/Table/labels.js.map +1 -0
- package/dist/esm/v1/foundations/icons/icons.js +227 -0
- package/dist/esm/v1/foundations/icons/icons.js.map +1 -0
- package/dist/esm/v1/primitives/buttons/Button/Button.js +41 -0
- package/dist/esm/v1/primitives/buttons/Button/Button.js.map +1 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/SegmentedControl.js +65 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/segmentedStyles.js +10 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/segmentedStyles.js.map +1 -0
- package/dist/esm/v1/primitives/display/Avatar/Avatar.js +120 -0
- package/dist/esm/v1/primitives/display/Avatar/Avatar.js.map +1 -0
- package/dist/esm/v1/primitives/display/Badge/Badge.js +23 -0
- package/dist/esm/v1/primitives/display/Badge/Badge.js.map +1 -0
- package/dist/esm/v1/primitives/display/Card/Card.js +22 -0
- package/dist/esm/v1/primitives/display/Card/Card.js.map +1 -0
- package/dist/esm/v1/primitives/display/FilterChips/FilterChips.js +45 -0
- package/dist/esm/v1/primitives/display/FilterChips/FilterChips.js.map +1 -0
- package/dist/esm/v1/primitives/display/Kpi/Kpi.js +103 -0
- package/dist/esm/v1/primitives/display/Kpi/Kpi.js.map +1 -0
- package/dist/esm/v1/primitives/display/Notice/Notice.js +71 -0
- package/dist/esm/v1/primitives/display/Notice/Notice.js.map +1 -0
- package/dist/esm/v1/primitives/display/Person/Person.js +14 -0
- package/dist/esm/v1/primitives/display/Person/Person.js.map +1 -0
- package/dist/esm/v1/primitives/display/RichText/RichText.js +12 -0
- package/dist/esm/v1/primitives/display/RichText/RichText.js.map +1 -0
- package/dist/esm/v1/primitives/display/RichText/utils.js +56 -0
- package/dist/esm/v1/primitives/display/RichText/utils.js.map +1 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js +137 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js.map +1 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js +26 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js.map +1 -0
- package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js +37 -0
- package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js.map +1 -0
- package/dist/esm/v1/primitives/forms/DateInput/DateInput.js +150 -0
- package/dist/esm/v1/primitives/forms/DateInput/DateInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js +37 -0
- package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/RichTextEditor/RichTextEditor.js +253 -0
- package/dist/esm/v1/primitives/forms/RichTextEditor/RichTextEditor.js.map +1 -0
- package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js +43 -0
- package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js +207 -0
- package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/TextArea/TextArea.js +75 -0
- package/dist/esm/v1/primitives/forms/TextArea/TextArea.js.map +1 -0
- package/dist/esm/v1/primitives/forms/TextInput/TextInput.js +21 -0
- package/dist/esm/v1/primitives/forms/TextInput/TextInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/field.js +14 -0
- package/dist/esm/v1/primitives/forms/field.js.map +1 -0
- package/dist/esm/v1/primitives/lists/ListItem/ListItem.js +73 -0
- package/dist/esm/v1/primitives/lists/ListItem/ListItem.js.map +1 -0
- package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js +96 -0
- package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js.map +1 -0
- package/dist/style.components.css +3 -0
- package/dist/style.css +2 -0
- package/dist/style.layered.css +2 -0
- package/dist/tailwind.css +24 -0
- package/dist/theme-boot.js +1 -0
- package/dist/theme.css +265 -0
- package/dist/tokens.css +121 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/legacy/components/atoms/Acronym/Acronym.d.ts +11 -0
- package/dist/types/legacy/components/atoms/BreadCrumb/BreadCrumb.d.ts +9 -0
- package/dist/types/legacy/components/atoms/Button/variants/ActionButton.d.ts +14 -0
- package/dist/types/legacy/components/atoms/Button/variants/FilterButton.d.ts +12 -0
- package/dist/types/legacy/components/atoms/Button/variants/IconButton.d.ts +22 -0
- package/dist/types/legacy/components/atoms/Button/variants/MainButton.d.ts +17 -0
- package/dist/types/legacy/components/atoms/Button/variants/TabButton.d.ts +14 -0
- package/dist/types/legacy/components/atoms/Field/Field.d.ts +15 -0
- package/dist/types/legacy/components/atoms/IconText/IconText.d.ts +12 -0
- package/dist/types/legacy/components/atoms/Icone/Icone.d.ts +31 -0
- package/dist/types/legacy/components/atoms/Input/Input.d.ts +13 -0
- package/dist/types/legacy/components/atoms/InputData/InputData.d.ts +38 -0
- package/dist/types/legacy/components/atoms/Label/Label.d.ts +11 -0
- package/dist/types/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.d.ts +10 -0
- package/dist/types/legacy/components/atoms/SearchSelect/SearchSelect.d.ts +15 -0
- package/dist/types/legacy/components/atoms/Select/Select.d.ts +16 -0
- package/dist/types/legacy/components/atoms/Stack/Stack.d.ts +9 -0
- package/dist/types/legacy/components/atoms/Switch/CustomSwitch.d.ts +12 -0
- package/dist/types/legacy/components/charts/Charts.d.ts +149 -0
- package/dist/types/legacy/components/layout/AppLauncher/AppLauncher.d.ts +35 -0
- package/dist/types/legacy/components/layout/Error/Error.d.ts +8 -0
- package/dist/types/legacy/components/layout/Footer/Footer.d.ts +11 -0
- package/dist/types/legacy/components/layout/Header/Header.d.ts +16 -0
- package/dist/types/legacy/components/layout/Layout/Layout.d.ts +35 -0
- package/dist/types/legacy/components/layout/Sidebar/Sidebar.d.ts +56 -0
- package/dist/types/legacy/components/layout/Spinner/Spinner.d.ts +5 -0
- package/dist/types/legacy/components/layout/TopBar/TopBar.d.ts +10 -0
- package/dist/types/legacy/components/layout/TopNavLayout/TopNavLayout.d.ts +43 -0
- package/dist/types/legacy/components/molecules/BarraValor/BarraValor.d.ts +28 -0
- package/dist/types/legacy/components/molecules/ColumnPicker/ColumnPicker.d.ts +116 -0
- package/dist/types/legacy/components/molecules/ConfirmModal/ConfirmModal.d.ts +13 -0
- package/dist/types/legacy/components/molecules/DataTable/DataTable.d.ts +344 -0
- package/dist/types/legacy/components/molecules/FileDropzone/FileDropzone.d.ts +25 -0
- package/dist/types/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +33 -0
- package/dist/types/legacy/components/molecules/Modal/Modal.d.ts +22 -0
- package/dist/types/legacy/components/molecules/MultiTagPicker/MultiTagPicker.d.ts +25 -0
- package/dist/types/legacy/components/molecules/PhotoAvatar/PhotoAvatar.d.ts +34 -0
- package/dist/types/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.d.ts +48 -0
- package/dist/types/legacy/components/molecules/Sidebar/Sidebar.d.ts +12 -0
- package/dist/types/legacy/components/molecules/UserAvatar/UserAvatar.d.ts +19 -0
- package/dist/types/legacy/components/organisms/GanttChart/GanttChart.d.ts +62 -0
- package/dist/types/legacy/components/organisms/Kanban/Kanban.d.ts +44 -0
- package/dist/types/legacy/components/organisms/LazyLoader/LazyLoader.d.ts +16 -0
- package/dist/types/legacy/components/organisms/MapaPontos/MapaPontos.d.ts +206 -0
- package/dist/types/legacy/components/organisms/PainelFiltros/PainelFiltros.d.ts +69 -0
- package/dist/types/legacy/components/organisms/PesquisaRapida/PesquisaRapida.d.ts +53 -0
- package/dist/types/legacy/components/organisms/Profile/Profile.d.ts +12 -0
- package/dist/types/legacy/components/organisms/RoleGuard/RoleGuard.d.ts +37 -0
- package/dist/types/legacy/components/organisms/Selector/Selector.d.ts +20 -0
- package/dist/types/legacy/components/organisms/StatusMatrix/StatusMatrix.d.ts +54 -0
- package/dist/types/legacy/components/ui/Avisos.d.ts +33 -0
- package/dist/types/legacy/components/ui/BarraAcoes.d.ts +19 -0
- package/dist/types/legacy/components/ui/CabecalhoPagina.d.ts +23 -0
- package/dist/types/legacy/components/ui/CaixaPesquisa.d.ts +14 -0
- package/dist/types/legacy/components/ui/Confirmacao.d.ts +24 -0
- package/dist/types/legacy/components/ui/Escolha.d.ts +35 -0
- package/dist/types/legacy/components/ui/FaixaAviso.d.ts +19 -0
- package/dist/types/legacy/components/ui/MenuAcoes.d.ts +31 -0
- package/dist/types/legacy/components/ui/Passos.d.ts +31 -0
- package/dist/types/legacy/components/ui/Separadores.d.ts +19 -0
- package/dist/types/legacy/components/ui/TextoAuto.d.ts +23 -0
- package/dist/types/legacy/components/ui/Ui.d.ts +181 -0
- package/dist/types/legacy/components/ui/painelFlutuante.d.ts +16 -0
- package/dist/types/legacy/constants/Colors.d.ts +28 -0
- package/dist/types/legacy/constants/FontWeight.d.ts +9 -0
- package/dist/types/legacy/contexts/apiContext.d.ts +10 -0
- package/dist/types/legacy/contexts/authContext.d.ts +31 -0
- package/dist/types/legacy/contexts/socketContext.d.ts +16 -0
- package/dist/types/legacy/exports/assets.d.ts +0 -0
- package/dist/types/legacy/exports/atoms.d.ts +19 -0
- package/dist/types/legacy/exports/charts.d.ts +2 -0
- package/dist/types/legacy/exports/constants.d.ts +0 -0
- package/dist/types/legacy/exports/contexts.d.ts +3 -0
- package/dist/types/legacy/exports/hooks.d.ts +4 -0
- package/dist/types/legacy/exports/layout.d.ts +14 -0
- package/dist/types/legacy/exports/molecules.d.ts +21 -0
- package/dist/types/legacy/exports/organisms.d.ts +17 -0
- package/dist/types/legacy/exports/pages.d.ts +5 -0
- package/dist/types/legacy/exports/styles.d.ts +2 -0
- package/dist/types/legacy/exports/types.d.ts +7 -0
- package/dist/types/legacy/exports/ui.d.ts +24 -0
- package/dist/types/legacy/exports/utils.d.ts +1 -0
- package/dist/types/legacy/hooks/useApi.d.ts +19 -0
- package/dist/types/legacy/pages/Error/ErrorPage.d.ts +16 -0
- package/dist/types/legacy/pages/Loading/Loading.d.ts +8 -0
- package/dist/types/legacy/pages/Login/LoginScreen.d.ts +42 -0
- package/dist/types/legacy/pages/NotFound/NotFound.d.ts +8 -0
- package/dist/types/legacy/styles/themes/ButtonThemes.d.ts +6 -0
- package/dist/types/legacy/styles/utils/utils.d.ts +2 -0
- package/dist/types/legacy/types/Fetcher.d.ts +5 -0
- package/dist/types/legacy/types/LoggedUser.d.ts +10 -0
- package/dist/types/legacy/types/SelectableElement.d.ts +6 -0
- package/dist/types/legacy/types/SidebarMenu.d.ts +12 -0
- package/dist/types/legacy/types/themes/AcronymThemes.d.ts +4 -0
- package/dist/types/legacy/types/themes/ButtonThemes.d.ts +21 -0
- package/dist/types/legacy/types/themes/CustomSwitchThemes.d.ts +4 -0
- package/dist/types/legacy/types/themes/IconTextThemes.d.ts +6 -0
- package/dist/types/legacy/utils/keycloak.d.ts +0 -0
- package/dist/types/legacy/utils/stringUtils.d.ts +6 -0
- package/dist/types/v1/capabilities/documents/QRScanning/scanQRCodes.d.ts +25 -0
- package/dist/types/v1/capabilities/overlay/useFloatingPanel.d.ts +20 -0
- package/dist/types/v1/capabilities/theme/useIsDark.d.ts +10 -0
- package/dist/types/v1/capabilities/theme/useTheme.d.ts +29 -0
- package/dist/types/v1/components/data/Pagination/Pagination.d.ts +33 -0
- package/dist/types/v1/components/documents/DocumentDropzone/DocumentDropzone.d.ts +60 -0
- package/dist/types/v1/components/feedback/Toast/Toast.d.ts +51 -0
- package/dist/types/v1/components/forms/FormField/FormField.d.ts +44 -0
- package/dist/types/v1/components/forms/FormGrid/FormGrid.d.ts +23 -0
- package/dist/types/v1/components/layout/AppShell/AppShell.d.ts +35 -0
- package/dist/types/v1/components/layout/Page/Page.d.ts +23 -0
- package/dist/types/v1/components/layout/PageHeader/PageHeader.d.ts +35 -0
- package/dist/types/v1/components/layout/SideNav/SideNav.d.ts +92 -0
- package/dist/types/v1/components/layout/navTrail.d.ts +15 -0
- package/dist/types/v1/components/lists/ListFinder/ListFinder.d.ts +86 -0
- package/dist/types/v1/components/lists/ListFinder/labels.d.ts +24 -0
- package/dist/types/v1/components/overlays/ConfirmDialog/ConfirmDialog.d.ts +59 -0
- package/dist/types/v1/components/overlays/Dialog/Dialog.d.ts +66 -0
- package/dist/types/v1/components/overlays/Tooltip/Tooltip.d.ts +34 -0
- package/dist/types/v1/components/overlays/Tooltip/TooltipLayer.d.ts +18 -0
- package/dist/types/v1/components/overlays/Tooltip/TooltipPanel.d.ts +23 -0
- package/dist/types/v1/components/overlays/topLayer.d.ts +23 -0
- package/dist/types/v1/components/tables/PaginatedTable/PaginatedTable.d.ts +41 -0
- package/dist/types/v1/components/tables/Table/ColumnFilter.d.ts +48 -0
- package/dist/types/v1/components/tables/Table/OverlayScrollbar.d.ts +34 -0
- package/dist/types/v1/components/tables/Table/Table.d.ts +250 -0
- package/dist/types/v1/components/tables/Table/labels.d.ts +54 -0
- package/dist/types/v1/foundations/icons/icons.d.ts +81 -0
- package/dist/types/v1/index.d.ts +86 -0
- package/dist/types/v1/primitives/buttons/Button/Button.d.ts +35 -0
- package/dist/types/v1/primitives/buttons/SegmentedControl/SegmentedControl.d.ts +28 -0
- package/dist/types/v1/primitives/buttons/SegmentedControl/segmentedStyles.d.ts +16 -0
- package/dist/types/v1/primitives/display/Avatar/Avatar.d.ts +30 -0
- package/dist/types/v1/primitives/display/Badge/Badge.d.ts +25 -0
- package/dist/types/v1/primitives/display/Card/Card.d.ts +22 -0
- package/dist/types/v1/primitives/display/FilterChips/FilterChips.d.ts +33 -0
- package/dist/types/v1/primitives/display/Kpi/Kpi.d.ts +68 -0
- package/dist/types/v1/primitives/display/Notice/Notice.d.ts +29 -0
- package/dist/types/v1/primitives/display/Person/Person.d.ts +15 -0
- package/dist/types/v1/primitives/display/RichText/RichText.d.ts +17 -0
- package/dist/types/v1/primitives/display/RichText/utils.d.ts +22 -0
- package/dist/types/v1/primitives/documents/PdfPreview/PdfPreview.d.ts +17 -0
- package/dist/types/v1/primitives/documents/PdfPreview/pdfjs.d.ts +11 -0
- package/dist/types/v1/primitives/forms/Checkbox/Checkbox.d.ts +25 -0
- package/dist/types/v1/primitives/forms/DateInput/DateInput.d.ts +43 -0
- package/dist/types/v1/primitives/forms/LookupInput/LookupInput.d.ts +28 -0
- package/dist/types/v1/primitives/forms/RichTextEditor/RichTextEditor.d.ts +64 -0
- package/dist/types/v1/primitives/forms/SearchInput/SearchInput.d.ts +23 -0
- package/dist/types/v1/primitives/forms/SelectInput/SelectInput.d.ts +70 -0
- package/dist/types/v1/primitives/forms/TextArea/TextArea.d.ts +40 -0
- package/dist/types/v1/primitives/forms/TextInput/TextInput.d.ts +16 -0
- package/dist/types/v1/primitives/forms/field.d.ts +22 -0
- package/dist/types/v1/primitives/lists/ListItem/ListItem.d.ts +67 -0
- package/dist/types/v1/primitives/navigation/Tabs/Tabs.d.ts +58 -0
- package/package.json +125 -6
- package/README.md +0 -3
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './ErrorPage.scss';
|
|
3
|
+
interface ErrorProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
messages: string[];
|
|
6
|
+
/**
|
|
7
|
+
* clientId MSAL da app. Passa-o sempre que várias apps partilhem o origin
|
|
8
|
+
* (ex: todas as do proefai): o "Repor sessão" passa a apagar só as chaves
|
|
9
|
+
* desta app em vez de `localStorage.clear()`, que derruba a sessão de todas
|
|
10
|
+
* as vizinhas. Sem ele mantém-se o comportamento antigo (limpeza total).
|
|
11
|
+
*/
|
|
12
|
+
clientId?: string;
|
|
13
|
+
}
|
|
14
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
15
|
+
declare const ErrorPage: React.FC<ErrorProps>;
|
|
16
|
+
export default ErrorPage;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Loading.scss';
|
|
3
|
+
type Props = {
|
|
4
|
+
logo?: string;
|
|
5
|
+
};
|
|
6
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
7
|
+
declare const LoadingPage: ({ logo }: Props) => React.JSX.Element;
|
|
8
|
+
export default LoadingPage;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
3
|
+
export interface LoginScreenProps {
|
|
4
|
+
/** Título da app (ex: nome do portal). */
|
|
5
|
+
appTitle?: string;
|
|
6
|
+
/** Subtítulo/descrição curta. */
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
/** Ação do botão de entrar (ex: MSAL loginRedirect). */
|
|
9
|
+
onSignIn: () => void;
|
|
10
|
+
signInLabel?: string;
|
|
11
|
+
/** Rodapé — empresa. O ano é acrescentado automaticamente. */
|
|
12
|
+
companyLabel?: string;
|
|
13
|
+
/** Logo custom. Sem isto mostra a marca "proef" + ponto turquesa. */
|
|
14
|
+
logo?: React.ReactNode;
|
|
15
|
+
/** Mensagem de erro opcional (ex: falha de login). */
|
|
16
|
+
error?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Canto superior direito — tipicamente o seletor de idioma.
|
|
19
|
+
*
|
|
20
|
+
* Existe porque quem ainda não entrou pode não perceber a língua em que o
|
|
21
|
+
* ecrã está, e é precisamente aí que mais precisa de a poder trocar.
|
|
22
|
+
*/
|
|
23
|
+
topoDireita?: React.ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* Dois quadrados rodados em marca-d'água nos cantos opostos.
|
|
26
|
+
*
|
|
27
|
+
* A maioria dos portais tinha-os no seu ecrã de login próprio, e sem isto a
|
|
28
|
+
* passagem para o componente partilhado tirava-lhos. Default `false` para
|
|
29
|
+
* não mexer em quem já usa o componente.
|
|
30
|
+
*
|
|
31
|
+
* Herdam `--color-proef-turquoise` e `--color-proef-blue`, por isso um
|
|
32
|
+
* portal que redefina essas variáveis vê os acentos acompanharem.
|
|
33
|
+
*/
|
|
34
|
+
acentos?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Ecrã de login partilhado (design system proef): fundo navy, marca "proef",
|
|
38
|
+
* título/subtítulo da app e botão de entrar. Agnóstico ao provider — a app passa
|
|
39
|
+
* `onSignIn` (MSAL/Keycloak/…). Requer o CSS do common-ui.
|
|
40
|
+
* @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.
|
|
41
|
+
*/
|
|
42
|
+
export default function LoginScreen({ appTitle, subtitle, onSignIn, signInLabel, companyLabel, logo, error, topoDireita, acentos, }: LoginScreenProps): React.JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './NotFound.scss';
|
|
3
|
+
interface NotFoundProps {
|
|
4
|
+
handleHome: () => void;
|
|
5
|
+
}
|
|
6
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
7
|
+
declare const NotFound: React.FC<NotFoundProps>;
|
|
8
|
+
export default NotFound;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IconTextTheme } from '../../exports/types';
|
|
2
|
+
import { ActionButtonTheme, IconButtonTheme } from '../../types/themes/ButtonThemes';
|
|
3
|
+
export declare const ActionButtonThemeStyled: ActionButtonTheme;
|
|
4
|
+
export declare const IconButtonThemeStyled: IconButtonTheme;
|
|
5
|
+
export declare const IconTextDarkThemeStyled: IconTextTheme;
|
|
6
|
+
export declare const IconTextLightThemeStyled: IconTextTheme;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
2
|
+
export interface Submenu {
|
|
3
|
+
name: string;
|
|
4
|
+
path: string;
|
|
5
|
+
external: boolean;
|
|
6
|
+
icon?: string;
|
|
7
|
+
}
|
|
8
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
9
|
+
export interface Menu {
|
|
10
|
+
name: string;
|
|
11
|
+
submenus: Submenu[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FontWeight } from '../../constants/FontWeight';
|
|
2
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
3
|
+
export interface ActionButtonTheme {
|
|
4
|
+
backgroundColor: string;
|
|
5
|
+
fontColor: string;
|
|
6
|
+
iconColor: string;
|
|
7
|
+
fontWeight?: FontWeight;
|
|
8
|
+
hoverBackgroundColor?: string;
|
|
9
|
+
size: 'default' | 'compact' | 'large';
|
|
10
|
+
}
|
|
11
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
12
|
+
export interface IconButtonTheme {
|
|
13
|
+
backgroundColor: string;
|
|
14
|
+
iconColor: string;
|
|
15
|
+
size: 'default' | 'compact' | 'large' | 'ultra-compact';
|
|
16
|
+
}
|
|
17
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
18
|
+
export interface MainButtonTheme {
|
|
19
|
+
backgroundColor: string;
|
|
20
|
+
color: string;
|
|
21
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
2
|
+
export declare function getAcronym(str: string): string;
|
|
3
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
4
|
+
export declare function getFirstAndLastName(str: string): string;
|
|
5
|
+
/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */
|
|
6
|
+
export declare function partialMatchWithUsername(search: string, username: string): boolean;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ScanQRCodesOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Continuar a procurar até um código satisfazer esta condição (ex: ser o QR
|
|
4
|
+
* de uma fatura). Um documento pode ter vários QR codes e o primeiro a ser
|
|
5
|
+
* lido é arbitrário. Por omissão, pára no primeiro código encontrado.
|
|
6
|
+
*/
|
|
7
|
+
until?: (code: string) => boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Indica onde está o `zxing_reader.wasm` servido pela app. Chamar uma vez no
|
|
11
|
+
* arranque, antes da primeira leitura. Sem isto, o ficheiro é descarregado da
|
|
12
|
+
* CDN jsDelivr (pode ser bloqueado por redes ou políticas de segurança).
|
|
13
|
+
*/
|
|
14
|
+
export declare function configureQRScanner(options: {
|
|
15
|
+
wasmUrl: string;
|
|
16
|
+
}): void;
|
|
17
|
+
/**
|
|
18
|
+
* Lê os QR codes de uma imagem ou PDF (1.ª página).
|
|
19
|
+
*
|
|
20
|
+
* Devolve o texto de cada código encontrado, sem repetidos, pela ordem em que
|
|
21
|
+
* foram lidos; vazio se não houver nenhum ou se o ficheiro não se puder ler.
|
|
22
|
+
* Depois de encontrar o que procura, faz ainda uma passagem para recolher os
|
|
23
|
+
* outros códigos da página (ex: QR do banco ao lado do QR fiscal).
|
|
24
|
+
*/
|
|
25
|
+
export declare function scanQRCodes(file: File, options?: ScanQRCodesOptions): Promise<string[]>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Aspeto comum das listas suspensas (SelectInput, MenuAcoes): cartão arredondado com sombra, nos dois temas.
|
|
4
|
+
* Um só sítio para ficarem iguais.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PANEL_CLASS = "fixed z-[60] min-w-[10rem] max-h-72 overflow-auto rounded-xl border border-slate-200 bg-white py-1 text-sm shadow-lg dark:border-slate-700 dark:bg-slate-900";
|
|
7
|
+
/** Item de uma lista suspensa; `active` = o que o teclado tem selecionado. */
|
|
8
|
+
export declare const itemClass: (active: boolean, danger?: boolean) => string;
|
|
9
|
+
/**
|
|
10
|
+
* Painel flutuante preso a um botão: posição fixa (não é cortado por tabelas ou janelas com scroll), abre para
|
|
11
|
+
* cima quando não cabe por baixo, fecha ao clicar fora, ao fazer scroll fora dele ou ao redimensionar.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useFloatingPanel(align?: 'left' | 'right'): {
|
|
14
|
+
open: boolean;
|
|
15
|
+
setOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
16
|
+
close: () => void;
|
|
17
|
+
triggerRef: import("react").RefObject<HTMLButtonElement | null>;
|
|
18
|
+
panelRef: import("react").RefObject<HTMLDivElement | null>;
|
|
19
|
+
style: CSSProperties;
|
|
20
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Se a app está em escuro agora (a classe `.dark` no `<html>`), e muda quando o
|
|
3
|
+
* tema muda.
|
|
4
|
+
*
|
|
5
|
+
* Para o que não pode usar o `dark:` do Tailwind e precisa das cores em
|
|
6
|
+
* JavaScript: gráficos, `<iframe>`, SVG com cores por props. O componente volta
|
|
7
|
+
* a desenhar quando o tema muda.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useIsDark(): boolean;
|
|
10
|
+
export default useIsDark;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type Theme = 'light' | 'dark' | 'system';
|
|
2
|
+
/** Chave da escolha no localStorage. A mesma nos portais (Tickets, AuditoriasIT). */
|
|
3
|
+
export declare const THEME_STORAGE_KEY = "theme";
|
|
4
|
+
/** Põe ou tira a classe `.dark` no `<html>`: é a ela que os componentes e os tokens reagem. */
|
|
5
|
+
export declare function applyTheme(theme: Theme): void;
|
|
6
|
+
/**
|
|
7
|
+
* Script para pôr no `<head>` do `index.html`, antes do CSS: aplica o tema
|
|
8
|
+
* guardado antes da primeira pintura (sem o clarão branco ao abrir em escuro).
|
|
9
|
+
*
|
|
10
|
+
* O build também o põe em `dist/theme-boot.js`, para a app o injetar no
|
|
11
|
+
* `index.html` sem o copiar (ex: num plugin `transformIndexHtml` do Vite).
|
|
12
|
+
*/
|
|
13
|
+
export declare const themeBootScript = "(function(){try{var k='theme',o='proef-theme',v=localStorage.getItem(k)||localStorage.getItem(o)||'system';if(v==='dark'||(v==='system'&&window.matchMedia('(prefers-color-scheme: dark)').matches))document.documentElement.classList.add('dark')}catch(e){}})();";
|
|
14
|
+
/**
|
|
15
|
+
* Tema da app: claro, escuro ou o do sistema. Guarda a escolha (sozinho, a cada
|
|
16
|
+
* mudança), aplica a classe `.dark` no `<html>`, segue o sistema em `system` e
|
|
17
|
+
* acompanha a escolha feita noutro separador.
|
|
18
|
+
*
|
|
19
|
+
* const { theme, setTheme } = useTheme()
|
|
20
|
+
* <AppShell theme={theme} onThemeChange={setTheme} …/>
|
|
21
|
+
*
|
|
22
|
+
* Para não haver clarão ao abrir, pôr o `themeBootScript` no `index.html`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function useTheme(): {
|
|
25
|
+
theme: Theme;
|
|
26
|
+
setTheme: (t: Theme) => void;
|
|
27
|
+
cycle: () => void;
|
|
28
|
+
};
|
|
29
|
+
export default useTheme;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface PaginationLabels {
|
|
3
|
+
/** "{page}" e "{pages}" são substituídos (ex: "Página {page} de {pages}"). */
|
|
4
|
+
page: string;
|
|
5
|
+
/** "{count}" é substituído pelo total de registos (ex: "{count} resultados"). */
|
|
6
|
+
total: string;
|
|
7
|
+
perPage: string;
|
|
8
|
+
prev: string;
|
|
9
|
+
next: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const DEFAULT_PAGINATION_LABELS: PaginationLabels;
|
|
12
|
+
export interface PaginationProps {
|
|
13
|
+
/** Página atual, a contar de 1. */
|
|
14
|
+
page: number;
|
|
15
|
+
/** Número de páginas. */
|
|
16
|
+
pages: number;
|
|
17
|
+
onPageChange: (page: number) => void;
|
|
18
|
+
/** Total de registos (mostrado à esquerda). */
|
|
19
|
+
total?: number;
|
|
20
|
+
/** Registos por página e as opções do seletor (sem opções, não há seletor). */
|
|
21
|
+
pageSize?: number;
|
|
22
|
+
pageSizeOptions?: number[];
|
|
23
|
+
onPageSizeChange?: (size: number) => void;
|
|
24
|
+
labels?: Partial<PaginationLabels>;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Paginação por baixo de uma lista: "Página 1 de 4", o total, quantos por página e
|
|
29
|
+
* Anterior/Seguinte. É a mesma que a `DataTable` mostra; usar esta quando a app pagina
|
|
30
|
+
* no servidor (a tabela recebe só a página atual).
|
|
31
|
+
*/
|
|
32
|
+
export default function Pagination({ page, pages, onPageChange, total, pageSize, pageSizeOptions, onPageSizeChange, labels, className, }: PaginationProps): React.JSX.Element;
|
|
33
|
+
export { Pagination };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface DocumentDropzoneLabels {
|
|
3
|
+
title: string;
|
|
4
|
+
hint?: string;
|
|
5
|
+
change: string;
|
|
6
|
+
remove: string;
|
|
7
|
+
/** Texto enquanto procura QR codes (só com `onQRCodes`), ex: "A procurar QR codes…". */
|
|
8
|
+
scanningQR?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Mensagem quando um ficheiro não é permitido pelo `accept`, ex: "Formato não
|
|
11
|
+
* permitido. Aceita PDF, JPG ou PNG." Aparece logo ao arrastar e depois de largar.
|
|
12
|
+
*/
|
|
13
|
+
rejected: string;
|
|
14
|
+
}
|
|
15
|
+
export interface DocumentDropzoneProps {
|
|
16
|
+
file: File | null;
|
|
17
|
+
onFileChange: (file: File | null) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Tipos permitidos: extensões e/ou tipos MIME, separados por vírgulas, ex:
|
|
20
|
+
* ".pdf,.jpg,.jpeg,.png". Os restantes são recusados (ver `labels.rejected` e
|
|
21
|
+
* `onReject`). Sem `accept`, aceita qualquer ficheiro.
|
|
22
|
+
*
|
|
23
|
+
* - `image/*` inclui SVG (que pode conter código) e HEIC (sem pré-visualização
|
|
24
|
+
* na maioria dos browsers). Para documentos, prefira uma lista explícita.
|
|
25
|
+
* - Só se verificam o nome e o tipo declarado, não o conteúdo: um ficheiro
|
|
26
|
+
* renomeado passa. O servidor deve validar o que recebe.
|
|
27
|
+
*/
|
|
28
|
+
accept?: string;
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
labels: DocumentDropzoneLabels;
|
|
31
|
+
/** Pré-visualização própria. Se devolver null/undefined, usa a de omissão (imagem, PDF ou ícone). */
|
|
32
|
+
renderPreview?: (file: File, url: string) => React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Procura QR codes em cada ficheiro escolhido (imagem ou 1.ª página do PDF) e
|
|
35
|
+
* entrega o texto de todos os encontrados (vazio se nenhum). Sem esta prop não
|
|
36
|
+
* se procura nada. Usa a capacidade [QR Scanning](?path=/docs/v1-capabilities-documents-qr-scanning--docs).
|
|
37
|
+
*/
|
|
38
|
+
onQRCodes?: (codes: string[], file: File) => void;
|
|
39
|
+
/** Chamado com os ficheiros recusados pelo `accept` (quando nenhum dos largados/escolhidos serve). */
|
|
40
|
+
onReject?: (files: File[]) => void;
|
|
41
|
+
/** Continuar a procurar até um QR code satisfazer isto (ex: ser o QR de uma fatura). Por omissão, pára no primeiro. */
|
|
42
|
+
qrCodeWanted?: (code: string) => boolean;
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Se um ficheiro deste tipo é permitido, sabendo só o tipo (durante o arrastar).
|
|
47
|
+
* `null` quando não dá para saber (tipo desconhecido, ou extensão fora da tabela).
|
|
48
|
+
*/
|
|
49
|
+
export declare function acceptsType(type: string, accept?: string): boolean | null;
|
|
50
|
+
export declare function accepts(file: File, accept?: string): boolean;
|
|
51
|
+
/** Folhas de cálculo (Excel, CSV): pela extensão ou pelo tipo, que o browser às vezes não conhece. */
|
|
52
|
+
export declare const isSpreadsheet: (file: File) => boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Caixa para anexar um ficheiro a um formulário: arrastar ou clicar para
|
|
55
|
+
* escolher. Mostra o nome, o tamanho e uma pré-visualização do ficheiro.
|
|
56
|
+
*
|
|
57
|
+
* **Usa:** [PdfPreview](?path=/docs/v1-primitives-documents-pdfpreview--docs) para mostrar PDFs; imagens com `<img>`.
|
|
58
|
+
* Com `onQRCodes`, a capacidade [QR Scanning](?path=/docs/v1-capabilities-documents-qr-scanning--docs).
|
|
59
|
+
*/
|
|
60
|
+
export default function DocumentDropzone({ file, onFileChange, accept, disabled, labels, renderPreview, onQRCodes, qrCodeWanted, onReject, className, }: DocumentDropzoneProps): React.JSX.Element;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type ToastTone = 'success' | 'error' | 'warning' | 'info';
|
|
3
|
+
export interface ToastOptions {
|
|
4
|
+
/** Linha em negrito por cima da mensagem. */
|
|
5
|
+
title?: string;
|
|
6
|
+
/** Botão no aviso (ex: Desfazer, Tentar de novo). Fecha o aviso depois de correr. */
|
|
7
|
+
action?: {
|
|
8
|
+
label: string;
|
|
9
|
+
onClick: () => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Quanto tempo fica visível, em ms. `0`: fica até ser fechado. Por omissão
|
|
13
|
+
* depende do tipo: ler um erro demora mais do que um "Guardado".
|
|
14
|
+
*/
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ToastApi {
|
|
18
|
+
success: (message: React.ReactNode, options?: ToastOptions) => number;
|
|
19
|
+
error: (message: React.ReactNode, options?: ToastOptions) => number;
|
|
20
|
+
warning: (message: React.ReactNode, options?: ToastOptions) => number;
|
|
21
|
+
info: (message: React.ReactNode, options?: ToastOptions) => number;
|
|
22
|
+
/** Fecha um aviso pelo número que as funções acima devolvem. */
|
|
23
|
+
dismiss: (id: number) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface ToastProviderProps {
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
/** Nome do botão × de cada aviso, para leitores de ecrã. Por omissão: "Fechar aviso". */
|
|
28
|
+
closeLabel?: string;
|
|
29
|
+
/** Nome da zona dos avisos, para leitores de ecrã. Por omissão: "Avisos". */
|
|
30
|
+
regionLabel?: string;
|
|
31
|
+
/** Máximo de avisos visíveis ao mesmo tempo; os mais antigos saem. Por omissão 4. */
|
|
32
|
+
max?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Avisos da app. Fora de um ToastProvider dá erro, para não se perderem
|
|
36
|
+
* avisos sem ninguém reparar.
|
|
37
|
+
*/
|
|
38
|
+
export declare function useToast(): ToastApi;
|
|
39
|
+
/**
|
|
40
|
+
* Avisos do resultado de uma ação, no canto inferior direito (ex: "Ticket
|
|
41
|
+
* guardado", "Não foi possível apagar").
|
|
42
|
+
*
|
|
43
|
+
* Monta-se uma vez à volta da app; em qualquer ecrã, `useToast()` dá
|
|
44
|
+
* `success`, `error`, `warning` e `info`. Desaparecem sozinhos (os erros
|
|
45
|
+
* ficam mais tempo); com o rato por cima ficam até ele sair. Aparecem por cima
|
|
46
|
+
* de uma janela (Dialog) aberta.
|
|
47
|
+
*
|
|
48
|
+
* Substituem o `alert()` do browser. Erros de validação de um formulário não
|
|
49
|
+
* vão aqui: ficam junto aos campos.
|
|
50
|
+
*/
|
|
51
|
+
export default function ToastProvider({ children, closeLabel, regionLabel, max }: ToastProviderProps): React.JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FormFieldProps {
|
|
3
|
+
label: string;
|
|
4
|
+
/** Asterisco vermelho na etiqueta; o campo lá dentro fica `required`. */
|
|
5
|
+
required?: boolean;
|
|
6
|
+
/** Texto pequeno por baixo da etiqueta. */
|
|
7
|
+
hint?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Marcas antes da etiqueta, a dizer de onde veio o valor (ex: lido do QR,
|
|
10
|
+
* identificado pela IA). Usar [FieldMark](#fieldmark).
|
|
11
|
+
*/
|
|
12
|
+
marks?: React.ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Lugares reservados para marcas, mesmo sem nenhuma. Assim a etiqueta não
|
|
15
|
+
* salta quando uma marca aparece depois (ex: ao ler o QR).
|
|
16
|
+
*/
|
|
17
|
+
markSlots?: number;
|
|
18
|
+
/** Algo junto à etiqueta, depois das marcas (ex: o valor máximo permitido). */
|
|
19
|
+
aside?: React.ReactNode;
|
|
20
|
+
/** Depois do campo, na mesma linha (ex: cadeado, ícone de informação). */
|
|
21
|
+
end?: React.ReactNode;
|
|
22
|
+
/** Ocupa a linha toda (ex: observações, anexo). */
|
|
23
|
+
wide?: boolean;
|
|
24
|
+
/** Etiqueta alinhada ao topo em vez de ao meio (campos altos, como o [TextArea](?path=/docs/v1-primitives-forms-textarea--docs)). */
|
|
25
|
+
alignTop?: boolean;
|
|
26
|
+
/** O campo: [TextInput](?path=/docs/v1-primitives-forms-textinput--docs), [SelectInput](?path=/docs/v1-primitives-forms-selectinput--docs), [TextArea](?path=/docs/v1-primitives-forms-textarea--docs), [LookupInput](?path=/docs/v1-primitives-forms-lookupinput--docs) ou outro. */
|
|
27
|
+
children: React.ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Uma linha do formulário: etiqueta e campo. Vai dentro de um
|
|
31
|
+
* [FormGrid](?path=/docs/v1-components-forms-formgrid--docs).
|
|
32
|
+
*
|
|
33
|
+
* Liga a etiqueta ao campo (clicar na etiqueta foca o campo) e passa-lhe o
|
|
34
|
+
* `required`, se o campo for [TextInput](?path=/docs/v1-primitives-forms-textinput--docs), [SelectInput](?path=/docs/v1-primitives-forms-selectinput--docs), [TextArea](?path=/docs/v1-primitives-forms-textarea--docs) ou [LookupInput](?path=/docs/v1-primitives-forms-lookupinput--docs).
|
|
35
|
+
*/
|
|
36
|
+
export default function FormField({ label, required, hint, marks, markSlots, aside, end, wide, alignTop, children }: FormFieldProps): React.JSX.Element;
|
|
37
|
+
export interface FieldMarkProps {
|
|
38
|
+
/** De onde veio o valor (ex: "Lido do QR Code"). Mostrado ao passar o rato e lido pelos leitores de ecrã. */
|
|
39
|
+
title: string;
|
|
40
|
+
/** O ícone, a 11 px (ex: `<QrCodeIcon size={11} />`). */
|
|
41
|
+
icon: React.ReactNode;
|
|
42
|
+
}
|
|
43
|
+
/** Marca pequena antes da etiqueta de um FormField, a dizer de onde veio o valor. */
|
|
44
|
+
export declare function FieldMark({ title, icon }: FieldMarkProps): React.JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FormGridProps {
|
|
3
|
+
/** Campos por linha: 2 (etiqueta · campo · etiqueta · campo) ou 1. */
|
|
4
|
+
columns?: 1 | 2;
|
|
5
|
+
className?: string;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const useFormGrid: () => {
|
|
9
|
+
columns: 1 | 2;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Grelha de um formulário: etiquetas à esquerda, alinhadas à direita, e os
|
|
13
|
+
* campos ao lado. Os filhos são [FormField](?path=/docs/v1-components-forms-formfield--docs)
|
|
14
|
+
* e, entre grupos, `FormDivider`.
|
|
15
|
+
*
|
|
16
|
+
* Adapta-se à largura do sítio onde está (não à do ecrã): abaixo de 680 px as
|
|
17
|
+
* etiquetas estreitam; abaixo de 500 px cada etiqueta fica por cima do campo.
|
|
18
|
+
*
|
|
19
|
+
* **Exemplo completo:** [Formulário em modal](?path=/docs/v1-patterns-forms-formulário-em-modal--docs).
|
|
20
|
+
*/
|
|
21
|
+
export default function FormGrid({ columns, className, children }: FormGridProps): React.JSX.Element;
|
|
22
|
+
/** Linha de separação entre grupos de campos, a toda a largura. */
|
|
23
|
+
export declare function FormDivider(): React.JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type SideNavLabels, type SideNavProps } from '../SideNav/SideNav';
|
|
3
|
+
export interface AppShellLabels extends SideNavLabels {
|
|
4
|
+
openMenu: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AppShellProps extends Omit<SideNavProps, 'open' | 'onOpenChange' | 'footer' | 'labels'> {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/** Conteúdo extra no rodapé do menu, por cima do tema (ex: um filtro global). */
|
|
9
|
+
sidebarFooter?: (expanded: boolean) => React.ReactNode;
|
|
10
|
+
/** Barras no topo, com a largura toda (ex: "A ver como…", "A sincronizar…"). Empurram o menu e a página para baixo. */
|
|
11
|
+
banners?: React.ReactNode;
|
|
12
|
+
/** Barra fixa por cima da página, à direita do menu (ex: título e alertas). Traz o seu próprio fundo. */
|
|
13
|
+
topBar?: React.ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* A página ocupa a altura que sobra do ecrã, sem scroll da página (ex:
|
|
16
|
+
* quadros e listas que fazem scroll por dentro, com o `Page` em `fill`).
|
|
17
|
+
* As margens são as mesmas das outras páginas.
|
|
18
|
+
*/
|
|
19
|
+
fullHeight?: boolean;
|
|
20
|
+
/** Menu aberto ao entrar (ecrãs grandes). Por omissão sim; fechado fica só com os ícones. */
|
|
21
|
+
defaultOpen?: boolean;
|
|
22
|
+
/** A pessoa abriu ou fechou o menu (para a app guardar a escolha, se quiser). */
|
|
23
|
+
onOpenChange?: (open: boolean) => void;
|
|
24
|
+
labels?: Partial<AppShellLabels>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A moldura da app: o menu lateral (`SideNav`) à esquerda e a página à
|
|
28
|
+
* direita, com barras opcionais no topo.
|
|
29
|
+
*
|
|
30
|
+
* Em ecrãs pequenos (< 1024px) o menu é uma gaveta, aberta pelo botão no canto,
|
|
31
|
+
* que fecha ao mudar de página.
|
|
32
|
+
*
|
|
33
|
+
* Precisa de estar dentro de um Router do react-router.
|
|
34
|
+
*/
|
|
35
|
+
export default function AppShell({ children, sidebarFooter, banners, topBar, fullHeight, defaultOpen, onOpenChange, labels, ...sideNav }: AppShellProps): React.JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PageHeaderProps } from '../PageHeader/PageHeader';
|
|
3
|
+
export interface PageProps extends PageHeaderProps {
|
|
4
|
+
/** Separadores da página (ex: `<Tabs …/>`), entre o cabeçalho e o conteúdo. */
|
|
5
|
+
tabs?: React.ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* A página ocupa a altura que sobra e o conteúdo faz scroll por dentro (ex:
|
|
8
|
+
* quadros e listas compridas). Usar com o `fullHeight` do `AppShell`.
|
|
9
|
+
*/
|
|
10
|
+
fill?: boolean;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Uma página da app: cabeçalho (`PageHeader`), separadores opcionais e o
|
|
15
|
+
* conteúdo, sempre com os mesmos espaços entre eles. As margens à volta vêm do
|
|
16
|
+
* `AppShell`; a página não põe as suas.
|
|
17
|
+
*
|
|
18
|
+
* **Caminho automático**: dentro do `AppShell`, numa página que está num grupo
|
|
19
|
+
* do menu, o caminho por cima do título é "grupo › página" (ex: "App & Dev ›
|
|
20
|
+
* Sprints"), com os nomes do menu. Passar `breadcrumb` substitui-o (ex: no
|
|
21
|
+
* detalhe de um registo); `breadcrumb={[]}` tira-o.
|
|
22
|
+
*/
|
|
23
|
+
export default function Page({ tabs, fill, children, breadcrumb, ...header }: PageProps): React.JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/** Um nível do caminho por cima do título. */
|
|
3
|
+
export interface BreadcrumbItem {
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
/** Ligação normal. Para o router da app, usar `onClick` (ex: `() => navigate('/x')`). */
|
|
6
|
+
href?: string;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface PageHeaderProps {
|
|
10
|
+
title: React.ReactNode;
|
|
11
|
+
description?: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Caminho até à página (área › lista › registo). O último nível é a página
|
|
14
|
+
* atual e não leva ligação, mesmo que a traga.
|
|
15
|
+
*/
|
|
16
|
+
breadcrumb?: BreadcrumbItem[];
|
|
17
|
+
/** Botões da página (ex: "Novo", "Editar"). Ficam à direita e descem em ecrã estreito. */
|
|
18
|
+
actions?: React.ReactNode;
|
|
19
|
+
/** Linha extra por baixo da descrição (etiquetas de estado, responsável…). */
|
|
20
|
+
extra?: React.ReactNode;
|
|
21
|
+
/** Nome da navegação do caminho, para leitores de ecrã. Por omissão: "Caminho". */
|
|
22
|
+
breadcrumbLabel?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Cabeçalho comum a todas as páginas: caminho, título com a barra turquesa,
|
|
26
|
+
* descrição e ações.
|
|
27
|
+
*
|
|
28
|
+
* Existe para o título deixar de ser desenhado à mão em cada ecrã — com
|
|
29
|
+
* tamanhos, cores e posições diferentes de página para página. O nome no menu,
|
|
30
|
+
* o título e o último nível do caminho devem ser o mesmo texto.
|
|
31
|
+
*
|
|
32
|
+
* Normalmente usa-se através do `Page`, que também arruma os separadores e o
|
|
33
|
+
* conteúdo por baixo.
|
|
34
|
+
*/
|
|
35
|
+
export default function PageHeader({ title, description, breadcrumb, actions, extra, breadcrumbLabel }: PageHeaderProps): React.JSX.Element;
|