@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,100 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
function AppLauncher({
|
|
3
|
+
apps,
|
|
4
|
+
heading,
|
|
5
|
+
emptyLabel,
|
|
6
|
+
bgColor = "#001b63",
|
|
7
|
+
bgImage,
|
|
8
|
+
accentColor1 = "#0076ce",
|
|
9
|
+
accentColor2 = "#00d28d",
|
|
10
|
+
navHeight = "3.0625rem"
|
|
11
|
+
}) {
|
|
12
|
+
const useSolidBg = !bgImage;
|
|
13
|
+
return /* @__PURE__ */ jsxs(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
style: {
|
|
17
|
+
position: "relative",
|
|
18
|
+
display: "flex",
|
|
19
|
+
flexDirection: "column",
|
|
20
|
+
justifyContent: "center",
|
|
21
|
+
overflow: "hidden",
|
|
22
|
+
// Full-bleed dentro do <main> do TopNavLayout (px-3 sm:px-5 py-4).
|
|
23
|
+
margin: "-1rem -0.75rem",
|
|
24
|
+
minHeight: `calc(100dvh - ${navHeight})`,
|
|
25
|
+
backgroundRepeat: "no-repeat",
|
|
26
|
+
backgroundAttachment: "fixed",
|
|
27
|
+
backgroundSize: "cover",
|
|
28
|
+
...useSolidBg ? { backgroundColor: bgColor } : { backgroundImage: `url(${bgImage})` }
|
|
29
|
+
},
|
|
30
|
+
children: [
|
|
31
|
+
useSolidBg && /* @__PURE__ */ jsxs("div", { style: { position: "absolute", inset: 0, overflow: "hidden", pointerEvents: "none" }, children: [
|
|
32
|
+
/* @__PURE__ */ jsx("div", { style: { position: "absolute", width: "34rem", height: "34rem", borderRadius: "50%", filter: "blur(90px)", top: "-12rem", right: "-10rem", opacity: 0.22, backgroundColor: accentColor1 } }),
|
|
33
|
+
/* @__PURE__ */ jsx("div", { style: { position: "absolute", width: "34rem", height: "34rem", borderRadius: "50%", filter: "blur(90px)", bottom: "-14rem", left: "-12rem", opacity: 0.28, backgroundColor: accentColor2 } })
|
|
34
|
+
] }),
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { style: { position: "relative", zIndex: 1, width: "min(1500px, 92%)", margin: "0 auto", padding: "clamp(1.5rem, 4vh, 3rem) 0" }, children: [
|
|
36
|
+
heading && /* @__PURE__ */ jsx("h2", { style: { margin: "0 0 clamp(1.5rem, 3vh, 2.5rem)", textAlign: "center", color: "#fff", fontSize: "clamp(1.35rem, 1.6vw + 0.6rem, 2.25rem)", fontWeight: 700, letterSpacing: "-0.02em" }, className: "[&_strong]:text-proef-turquoise", children: heading }),
|
|
37
|
+
/* @__PURE__ */ jsx(
|
|
38
|
+
"div",
|
|
39
|
+
{
|
|
40
|
+
style: {
|
|
41
|
+
display: "grid",
|
|
42
|
+
gridTemplateColumns: "repeat(auto-fit, minmax(clamp(280px, 22vw, 340px), 340px))",
|
|
43
|
+
justifyContent: "center",
|
|
44
|
+
gap: "clamp(0.875rem, 1vw, 1.25rem)"
|
|
45
|
+
},
|
|
46
|
+
children: apps.map((app, i) => /* @__PURE__ */ jsxs(
|
|
47
|
+
"button",
|
|
48
|
+
{
|
|
49
|
+
type: "button",
|
|
50
|
+
onClick: app.onClick,
|
|
51
|
+
title: app.title2 ?? app.description ?? app.title,
|
|
52
|
+
className: "group",
|
|
53
|
+
style: {
|
|
54
|
+
position: "relative",
|
|
55
|
+
display: "flex",
|
|
56
|
+
alignItems: "center",
|
|
57
|
+
gap: "clamp(0.875rem, 0.8vw, 1.125rem)",
|
|
58
|
+
width: "100%",
|
|
59
|
+
padding: "clamp(1.125rem, 1.1vw, 1.5rem) clamp(1.25rem, 1.3vw, 1.75rem)",
|
|
60
|
+
textAlign: "left",
|
|
61
|
+
cursor: "pointer",
|
|
62
|
+
color: "#fff",
|
|
63
|
+
background: "rgba(255,255,255,0.07)",
|
|
64
|
+
border: "1px solid rgba(255,255,255,0.14)",
|
|
65
|
+
borderRadius: "10px",
|
|
66
|
+
backdropFilter: "blur(10px)",
|
|
67
|
+
transition: "transform .15s ease, background .15s ease, border-color .15s ease"
|
|
68
|
+
},
|
|
69
|
+
onMouseEnter: (e) => {
|
|
70
|
+
e.currentTarget.style.transform = "translateY(-2px)";
|
|
71
|
+
e.currentTarget.style.background = "rgba(255,255,255,0.13)";
|
|
72
|
+
e.currentTarget.style.borderColor = "#00d28d";
|
|
73
|
+
},
|
|
74
|
+
onMouseLeave: (e) => {
|
|
75
|
+
e.currentTarget.style.transform = "translateY(0)";
|
|
76
|
+
e.currentTarget.style.background = "rgba(255,255,255,0.07)";
|
|
77
|
+
e.currentTarget.style.borderColor = "rgba(255,255,255,0.14)";
|
|
78
|
+
},
|
|
79
|
+
children: [
|
|
80
|
+
app.icon != null && /* @__PURE__ */ jsx("span", { style: { display: "flex", alignItems: "center", justifyContent: "center", flexShrink: 0, width: "clamp(2.5rem, 2.4vw, 3.25rem)", height: "clamp(2.5rem, 2.4vw, 3.25rem)", fontSize: "clamp(1.05rem, 1vw, 1.35rem)", color: "#00d28d", background: "rgba(0,210,141,0.12)", borderRadius: "8px" }, children: app.icon }),
|
|
81
|
+
/* @__PURE__ */ jsxs("span", { style: { minWidth: 0 }, children: [
|
|
82
|
+
/* @__PURE__ */ jsx("span", { style: { display: "block", fontSize: "clamp(0.95rem, 0.85vw, 1.15rem)", fontWeight: 600, lineHeight: 1.25 }, children: app.title }),
|
|
83
|
+
app.description && /* @__PURE__ */ jsx("span", { style: { display: "block", marginTop: "0.2rem", fontSize: "clamp(0.78rem, 0.7vw, 0.92rem)", lineHeight: 1.3, color: "rgba(255,255,255,0.6)" }, children: app.description })
|
|
84
|
+
] })
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
i
|
|
88
|
+
))
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
apps.length === 0 && emptyLabel && /* @__PURE__ */ jsx("p", { style: { textAlign: "center", color: "rgba(255,255,255,0.6)", fontSize: "0.9rem" }, children: emptyLabel })
|
|
92
|
+
] })
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
export {
|
|
98
|
+
AppLauncher as default
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=AppLauncher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppLauncher.js","sources":["../../../../../../src/legacy/components/layout/AppLauncher/AppLauncher.tsx"],"sourcesContent":["import React from 'react'\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface LauncherApp {\r\n /** Título da app (linha principal). */\r\n title: string\r\n /** Subtítulo opcional. */\r\n description?: string\r\n /** Ícone (ReactNode) — a app passa o seu (ex: <FontAwesomeIcon .../>). */\r\n icon?: React.ReactNode\r\n onClick: () => void\r\n /** Tooltip opcional; default = description || title. */\r\n title2?: string\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface AppLauncherProps {\r\n apps: LauncherApp[]\r\n /** Cabeçalho (ex: <>Bem-vindo <strong>Vinst</strong></>). O <strong> fica turquesa. */\r\n heading?: React.ReactNode\r\n /** Texto quando não há apps. */\r\n emptyLabel?: string\r\n /** Fundo: cor sólida (default) ou imagem. */\r\n bgColor?: string\r\n bgImage?: string | null\r\n accentColor1?: string\r\n accentColor2?: string\r\n /** Altura da nav do TopNavLayout para o cálculo de min-height. */\r\n navHeight?: string\r\n}\r\n\r\n/**\r\n * Ecrã de launcher de aplicações (grid centrado de cartões em vidro sobre fundo\r\n * escuro). Feito para viver dentro do <main> do TopNavLayout — cancela o padding\r\n * dele com margens negativas para ficar full-bleed. Ícones vêm da app (ReactNode).\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport default function AppLauncher({\r\n apps,\r\n heading,\r\n emptyLabel,\r\n bgColor = '#001b63',\r\n bgImage,\r\n accentColor1 = '#0076ce',\r\n accentColor2 = '#00d28d',\r\n navHeight = '3.0625rem',\r\n}: AppLauncherProps) {\r\n const useSolidBg = !bgImage\r\n\r\n return (\r\n <div\r\n style={{\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n // Full-bleed dentro do <main> do TopNavLayout (px-3 sm:px-5 py-4).\r\n margin: '-1rem -0.75rem',\r\n minHeight: `calc(100dvh - ${navHeight})`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundAttachment: 'fixed',\r\n backgroundSize: 'cover',\r\n ...(useSolidBg ? { backgroundColor: bgColor } : { backgroundImage: `url(${bgImage})` }),\r\n }}\r\n >\r\n {useSolidBg && (\r\n <div style={{ position: 'absolute', inset: 0, overflow: 'hidden', pointerEvents: 'none' }}>\r\n <div style={{ position: 'absolute', width: '34rem', height: '34rem', borderRadius: '50%', filter: 'blur(90px)', top: '-12rem', right: '-10rem', opacity: 0.22, backgroundColor: accentColor1 }} />\r\n <div style={{ position: 'absolute', width: '34rem', height: '34rem', borderRadius: '50%', filter: 'blur(90px)', bottom: '-14rem', left: '-12rem', opacity: 0.28, backgroundColor: accentColor2 }} />\r\n </div>\r\n )}\r\n\r\n <div style={{ position: 'relative', zIndex: 1, width: 'min(1500px, 92%)', margin: '0 auto', padding: 'clamp(1.5rem, 4vh, 3rem) 0' }}>\r\n {heading && (\r\n <h2 style={{ margin: '0 0 clamp(1.5rem, 3vh, 2.5rem)', textAlign: 'center', color: '#fff', fontSize: 'clamp(1.35rem, 1.6vw + 0.6rem, 2.25rem)', fontWeight: 700, letterSpacing: '-0.02em' }} className=\"[&_strong]:text-proef-turquoise\">\r\n {heading}\r\n </h2>\r\n )}\r\n\r\n <div\r\n style={{\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(auto-fit, minmax(clamp(280px, 22vw, 340px), 340px))',\r\n justifyContent: 'center',\r\n gap: 'clamp(0.875rem, 1vw, 1.25rem)',\r\n }}\r\n >\r\n {apps.map((app, i) => (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n onClick={app.onClick}\r\n title={app.title2 ?? app.description ?? app.title}\r\n className=\"group\"\r\n style={{\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 'clamp(0.875rem, 0.8vw, 1.125rem)',\r\n width: '100%',\r\n padding: 'clamp(1.125rem, 1.1vw, 1.5rem) clamp(1.25rem, 1.3vw, 1.75rem)',\r\n textAlign: 'left',\r\n cursor: 'pointer',\r\n color: '#fff',\r\n background: 'rgba(255,255,255,0.07)',\r\n border: '1px solid rgba(255,255,255,0.14)',\r\n borderRadius: '10px',\r\n backdropFilter: 'blur(10px)',\r\n transition: 'transform .15s ease, background .15s ease, border-color .15s ease',\r\n }}\r\n onMouseEnter={(e) => { e.currentTarget.style.transform = 'translateY(-2px)'; e.currentTarget.style.background = 'rgba(255,255,255,0.13)'; e.currentTarget.style.borderColor = '#00d28d' }}\r\n onMouseLeave={(e) => { e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.background = 'rgba(255,255,255,0.07)'; e.currentTarget.style.borderColor = 'rgba(255,255,255,0.14)' }}\r\n >\r\n {app.icon != null && (\r\n <span style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0, width: 'clamp(2.5rem, 2.4vw, 3.25rem)', height: 'clamp(2.5rem, 2.4vw, 3.25rem)', fontSize: 'clamp(1.05rem, 1vw, 1.35rem)', color: '#00d28d', background: 'rgba(0,210,141,0.12)', borderRadius: '8px' }}>\r\n {app.icon}\r\n </span>\r\n )}\r\n <span style={{ minWidth: 0 }}>\r\n <span style={{ display: 'block', fontSize: 'clamp(0.95rem, 0.85vw, 1.15rem)', fontWeight: 600, lineHeight: 1.25 }}>{app.title}</span>\r\n {app.description && (\r\n <span style={{ display: 'block', marginTop: '0.2rem', fontSize: 'clamp(0.78rem, 0.7vw, 0.92rem)', lineHeight: 1.3, color: 'rgba(255,255,255,0.6)' }}>{app.description}</span>\r\n )}\r\n </span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {apps.length === 0 && emptyLabel && (\r\n <p style={{ textAlign: 'center', color: 'rgba(255,255,255,0.6)', fontSize: '0.9rem' }}>{emptyLabel}</p>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":[],"mappings":";AAqCA,SAAwB,YAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AACd,GAAqB;AACnB,QAAM,aAAa,CAAC;AAEpB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,UAAU;AAAA;AAAA,QAEV,QAAQ;AAAA,QACR,WAAW,iBAAiB,SAAS;AAAA,QACrC,kBAAkB;AAAA,QAClB,sBAAsB;AAAA,QACtB,gBAAgB;AAAA,QAChB,GAAI,aAAa,EAAE,iBAAiB,QAAA,IAAY,EAAE,iBAAiB,OAAO,OAAO,IAAA;AAAA,MAAI;AAAA,MAGtF,UAAA;AAAA,QAAA,cACC,qBAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,OAAO,GAAG,UAAU,UAAU,eAAe,OAAA,GAC/E,UAAA;AAAA,UAAA,oBAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,OAAO,SAAS,QAAQ,SAAS,cAAc,OAAO,QAAQ,cAAc,KAAK,UAAU,OAAO,UAAU,SAAS,MAAM,iBAAiB,aAAA,EAAa,CAAG;AAAA,UAChM,oBAAC,SAAI,OAAO,EAAE,UAAU,YAAY,OAAO,SAAS,QAAQ,SAAS,cAAc,OAAO,QAAQ,cAAc,QAAQ,UAAU,MAAM,UAAU,SAAS,MAAM,iBAAiB,eAAa,CAAG;AAAA,QAAA,GACpM;AAAA,QAGF,qBAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,QAAQ,GAAG,OAAO,oBAAoB,QAAQ,UAAU,SAAS,gCAClG,UAAA;AAAA,UAAA,+BACE,MAAA,EAAG,OAAO,EAAE,QAAQ,kCAAkC,WAAW,UAAU,OAAO,QAAQ,UAAU,2CAA2C,YAAY,KAAK,eAAe,aAAa,WAAU,mCACpM,UAAA,SACH;AAAA,UAGF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,qBAAqB;AAAA,gBACrB,gBAAgB;AAAA,gBAChB,KAAK;AAAA,cAAA;AAAA,cAGN,UAAA,KAAK,IAAI,CAAC,KAAK,MACd;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,SAAS,IAAI;AAAA,kBACb,OAAO,IAAI,UAAU,IAAI,eAAe,IAAI;AAAA,kBAC5C,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,KAAK;AAAA,oBACL,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,WAAW;AAAA,oBACX,QAAQ;AAAA,oBACR,OAAO;AAAA,oBACP,YAAY;AAAA,oBACZ,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,gBAAgB;AAAA,oBAChB,YAAY;AAAA,kBAAA;AAAA,kBAEd,cAAc,CAAC,MAAM;AAAE,sBAAE,cAAc,MAAM,YAAY;AAAoB,sBAAE,cAAc,MAAM,aAAa;AAA0B,sBAAE,cAAc,MAAM,cAAc;AAAA,kBAAU;AAAA,kBACxL,cAAc,CAAC,MAAM;AAAE,sBAAE,cAAc,MAAM,YAAY;AAAiB,sBAAE,cAAc,MAAM,aAAa;AAA0B,sBAAE,cAAc,MAAM,cAAc;AAAA,kBAAyB;AAAA,kBAEnM,UAAA;AAAA,oBAAA,IAAI,QAAQ,QACX,oBAAC,QAAA,EAAK,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,UAAU,YAAY,GAAG,OAAO,iCAAiC,QAAQ,iCAAiC,UAAU,gCAAgC,OAAO,WAAW,YAAY,wBAAwB,cAAc,MAAA,GAC3R,UAAA,IAAI,MACP;AAAA,yCAED,QAAA,EAAK,OAAO,EAAE,UAAU,KACvB,UAAA;AAAA,sBAAA,oBAAC,QAAA,EAAK,OAAO,EAAE,SAAS,SAAS,UAAU,mCAAmC,YAAY,KAAK,YAAY,KAAA,GAAS,cAAI,OAAM;AAAA,sBAC7H,IAAI,eACH,oBAAC,UAAK,OAAO,EAAE,SAAS,SAAS,WAAW,UAAU,UAAU,kCAAkC,YAAY,KAAK,OAAO,2BAA4B,cAAI,YAAA,CAAY;AAAA,oBAAA,EAAA,CAE1K;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAlCK;AAAA,cAAA,CAoCR;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF,KAAK,WAAW,KAAK,kCACnB,KAAA,EAAE,OAAO,EAAE,WAAW,UAAU,OAAO,yBAAyB,UAAU,SAAA,GAAa,UAAA,WAAA,CAAW;AAAA,QAAA,EAAA,CAEvG;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.error .cui-error {
|
|
2
|
+
color: red;
|
|
3
|
+
background-color: #f8d7da;
|
|
4
|
+
border: 1px solid #f5c6cb;
|
|
5
|
+
margin: 1rem;
|
|
6
|
+
padding: 1rem;
|
|
7
|
+
border-radius: 25px;
|
|
8
|
+
}
|
|
9
|
+
.error .cui-error-heading {
|
|
10
|
+
font-size: 1.2rem;
|
|
11
|
+
font-weight: bold;
|
|
12
|
+
}
|
|
13
|
+
.error .cui-error-list {
|
|
14
|
+
list-style: none;
|
|
15
|
+
padding: 0;
|
|
16
|
+
margin: 0;
|
|
17
|
+
}
|
|
18
|
+
.error .cui-error-message {
|
|
19
|
+
white-space: break-spaces;
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import './Error.css';/* empty css */
|
|
3
|
+
const Error = ({ messages }) => {
|
|
4
|
+
return /* @__PURE__ */ jsx("div", { className: "error", children: /* @__PURE__ */ jsxs("div", { className: "cui-error", children: [
|
|
5
|
+
/* @__PURE__ */ jsx("h4", { children: "Ooops...." }),
|
|
6
|
+
/* @__PURE__ */ jsx("ul", { className: "cui-error-list", children: messages ? messages.map((message, index) => /* @__PURE__ */ jsx("li", { className: "cui-error-message", children: message }, index)) : /* @__PURE__ */ jsx("li", { children: "An unexpected error occurred." }) })
|
|
7
|
+
] }) });
|
|
8
|
+
};
|
|
9
|
+
export {
|
|
10
|
+
Error as default
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=Error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Error.js","sources":["../../../../../../src/legacy/components/layout/Error/Error.tsx"],"sourcesContent":["import React from 'react'\r\n\r\nimport './Error.scss'\r\n\r\ninterface ErrorProps {\r\n messages: string[]\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst Error: React.FC<ErrorProps> = ({ messages }) => {\r\n return (\r\n <div className=\"error\">\r\n <div className=\"cui-error\">\r\n <h4>Ooops....</h4>\r\n <ul className=\"cui-error-list\">\r\n {messages ? (\r\n messages.map((message, index) => (\r\n <li key={index} className=\"cui-error-message\">\r\n {message}\r\n </li>\r\n ))\r\n ) : (\r\n <li>An unexpected error occurred.</li>\r\n )}\r\n </ul>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Error\r\n"],"names":[],"mappings":";;AASA,MAAM,QAA8B,CAAC,EAAE,eAAe;AACpD,6BACG,OAAA,EAAI,WAAU,SACb,UAAA,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,IAAA,oBAAC,QAAG,UAAA,YAAA,CAAS;AAAA,IACb,oBAAC,QAAG,WAAU,kBACX,qBACC,SAAS,IAAI,CAAC,SAAS,8BACpB,MAAA,EAAe,WAAU,qBACvB,UAAA,QAAA,GADM,KAET,CACD,IAED,oBAAC,MAAA,EAAG,UAAA,gCAAA,CAA6B,EAAA,CAErC;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* Intencionalmente VAZIO.
|
|
3
|
+
*
|
|
4
|
+
* As atoms antigas faziam `@import url('.../styles/index.scss')`, e este ficheiro
|
|
5
|
+
* injetava no CONSUMIDOR (via style-loader do bundle) um reset global agressivo
|
|
6
|
+
* (`* { margin:0; padding:0 }`), `@font-face` Urbanist (.ttf → 404 sob subpaths),
|
|
7
|
+
* `canvas { height:auto }` (partia o sizing dos charts) e `body { font-family;
|
|
8
|
+
* background }`. Uma LIB não pode impor nada disto — nukeava o spacing/fonte/fundo
|
|
9
|
+
* de qualquer app que importasse o common-ui (visível sobretudo em apps com
|
|
10
|
+
* utilities layered, que perdem ao `*` injetado).
|
|
11
|
+
*
|
|
12
|
+
* Cada app define o seu próprio reset/fonte/fundo. Mantido como no-op p/ os
|
|
13
|
+
* imports existentes não partirem. */
|
|
14
|
+
.cui-footer {
|
|
15
|
+
height: 5vh;
|
|
16
|
+
width: 100%;
|
|
17
|
+
margin: auto 0 0 0;
|
|
18
|
+
}
|
|
19
|
+
.cui-footer__container {
|
|
20
|
+
max-width: 90vw;
|
|
21
|
+
margin: 0 auto;
|
|
22
|
+
font-size: 10px;
|
|
23
|
+
font-weight: 600;
|
|
24
|
+
padding: 1vh;
|
|
25
|
+
color: var(--light-gray-02);
|
|
26
|
+
border-top: 1px solid var(--light-gray-02);
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
}
|
|
30
|
+
.cui-footer__title {
|
|
31
|
+
width: 30%;
|
|
32
|
+
display: flex;
|
|
33
|
+
justify-content: right;
|
|
34
|
+
font-size: 13px;
|
|
35
|
+
}
|
|
36
|
+
.cui-footer__icon {
|
|
37
|
+
width: 10%;
|
|
38
|
+
height: 20px;
|
|
39
|
+
}
|
|
40
|
+
.cui-footer__text {
|
|
41
|
+
width: 60%;
|
|
42
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import logoIcon from "../../../assets/svgs/proef-footer-logo.svg.js";
|
|
3
|
+
import './Footer.css';/* empty css */
|
|
4
|
+
const Footer = ({
|
|
5
|
+
companyName = "the data controller",
|
|
6
|
+
contactEmail
|
|
7
|
+
}) => {
|
|
8
|
+
return /* @__PURE__ */ jsx("div", { className: "cui-footer", children: /* @__PURE__ */ jsxs("div", { className: "cui-footer__container", children: [
|
|
9
|
+
/* @__PURE__ */ jsx("p", { className: "cui-footer__title", children: "Developed By" }),
|
|
10
|
+
/* @__PURE__ */ jsx("img", { className: "cui-footer__icon", src: logoIcon, alt: "logo" }),
|
|
11
|
+
/* @__PURE__ */ jsxs("p", { className: "cui-footer__text", children: [
|
|
12
|
+
"In accordance with the provisions of the Personal Data Protection Legislation, we inform you that your personal data will be incorporated into our Personal Data File, for the purpose of managing our company's contact diary, the party responsible for processing your data is ",
|
|
13
|
+
companyName,
|
|
14
|
+
". You can exercise your rights of access, rectification, opposition and erasure through this email address",
|
|
15
|
+
contactEmail ? `, or through the email ${contactEmail}` : "",
|
|
16
|
+
"."
|
|
17
|
+
] })
|
|
18
|
+
] }) });
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
Footer as default
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=Footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.js","sources":["../../../../../../src/legacy/components/layout/Footer/Footer.tsx"],"sourcesContent":["import React from 'react'\r\n\r\nimport logoIcon from '../../../assets/svgs/proef-footer-logo.svg'\r\n\r\nimport './Footer.scss'\r\n\r\nexport interface FooterProps {\r\n /** Nome do responsável pelo tratamento de dados (aviso RGPD). */\r\n companyName?: string\r\n /** Email de contacto para exercer direitos RGPD. */\r\n contactEmail?: string\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst Footer: React.FC<FooterProps> = ({\r\n companyName = 'the data controller',\r\n contactEmail,\r\n}) => {\r\n return (\r\n <div className=\"cui-footer\">\r\n <div className=\"cui-footer__container\">\r\n <p className=\"cui-footer__title\">Developed By</p>\r\n <img className=\"cui-footer__icon\" src={logoIcon} alt=\"logo\" />\r\n <p className=\"cui-footer__text\">\r\n In accordance with the provisions of the Personal Data Protection\r\n Legislation, we inform you that your personal data will be\r\n incorporated into our Personal Data File, for the purpose of managing\r\n our company's contact diary, the party responsible for processing\r\n your data is {companyName}. You can exercise your rights of access,\r\n rectification, opposition and erasure through this email address\r\n {contactEmail ? `, or through the email ${contactEmail}` : ''}.\r\n </p>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Footer\r\n"],"names":[],"mappings":";;;AAcA,MAAM,SAAgC,CAAC;AAAA,EACrC,cAAc;AAAA,EACd;AACF,MAAM;AACJ,6BACG,OAAA,EAAI,WAAU,cACb,UAAA,qBAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,IAAA,oBAAC,KAAA,EAAE,WAAU,qBAAoB,UAAA,gBAAY;AAAA,wBAC5C,OAAA,EAAI,WAAU,oBAAmB,KAAK,UAAU,KAAI,QAAO;AAAA,IAC5D,qBAAC,KAAA,EAAE,WAAU,oBAAmB,UAAA;AAAA,MAAA;AAAA,MAKhB;AAAA,MAAY;AAAA,MAEzB,eAAe,0BAA0B,YAAY,KAAK;AAAA,MAAG;AAAA,IAAA,EAAA,CAChE;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* Intencionalmente VAZIO.
|
|
3
|
+
*
|
|
4
|
+
* As atoms antigas faziam `@import url('.../styles/index.scss')`, e este ficheiro
|
|
5
|
+
* injetava no CONSUMIDOR (via style-loader do bundle) um reset global agressivo
|
|
6
|
+
* (`* { margin:0; padding:0 }`), `@font-face` Urbanist (.ttf → 404 sob subpaths),
|
|
7
|
+
* `canvas { height:auto }` (partia o sizing dos charts) e `body { font-family;
|
|
8
|
+
* background }`. Uma LIB não pode impor nada disto — nukeava o spacing/fonte/fundo
|
|
9
|
+
* de qualquer app que importasse o common-ui (visível sobretudo em apps com
|
|
10
|
+
* utilities layered, que perdem ao `*` injetado).
|
|
11
|
+
*
|
|
12
|
+
* Cada app define o seu próprio reset/fonte/fundo. Mantido como no-op p/ os
|
|
13
|
+
* imports existentes não partirem. */
|
|
14
|
+
.cui-header__wrapper {
|
|
15
|
+
background: var(--cui-header-bg, url("../../../../assets/imagem-6ee08a37d9.png") no-repeat fixed);
|
|
16
|
+
background-size: cover;
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 11vh;
|
|
19
|
+
max-height: 6rem;
|
|
20
|
+
}
|
|
21
|
+
.cui-header__container {
|
|
22
|
+
height: 100%;
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: space-between;
|
|
26
|
+
max-width: 90vw;
|
|
27
|
+
margin: 0 auto;
|
|
28
|
+
}
|
|
29
|
+
.cui-header__left, .cui-header__right {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
}
|
|
33
|
+
.cui-header__icon {
|
|
34
|
+
font-size: 1.8rem;
|
|
35
|
+
color: var(--light-gray-01);
|
|
36
|
+
transition: color 0.3s ease;
|
|
37
|
+
}
|
|
38
|
+
.cui-header__sidebar {
|
|
39
|
+
margin: 0 3rem 0 0;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
}
|
|
42
|
+
.cui-header__sidebar:hover .header__icon {
|
|
43
|
+
color: var(--light-gray-02);
|
|
44
|
+
}
|
|
45
|
+
.cui-header__title {
|
|
46
|
+
display: flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
gap: 1rem;
|
|
49
|
+
color: var(--light-gray-01);
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
transition: all 0.3s ease;
|
|
52
|
+
}
|
|
53
|
+
.cui-header__title:hover {
|
|
54
|
+
color: var(--light-gray-02);
|
|
55
|
+
}
|
|
56
|
+
.cui-header__title:hover .header__icon {
|
|
57
|
+
color: var(--light-gray-02);
|
|
58
|
+
}
|
|
59
|
+
.cui-header__subtitle {
|
|
60
|
+
color: var(--light-gray-01);
|
|
61
|
+
margin: 0 3rem;
|
|
62
|
+
}
|
|
63
|
+
.cui-header__subtitle h2 {
|
|
64
|
+
font-weight: 400;
|
|
65
|
+
font-size: 1.3rem;
|
|
66
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
3
|
+
import { faBars } from "@fortawesome/free-solid-svg-icons";
|
|
4
|
+
import './Header.css';/* empty css */
|
|
5
|
+
const Header = ({
|
|
6
|
+
title,
|
|
7
|
+
subTitle,
|
|
8
|
+
icon,
|
|
9
|
+
sideBar,
|
|
10
|
+
handleSideBar,
|
|
11
|
+
profile,
|
|
12
|
+
handleHome,
|
|
13
|
+
background
|
|
14
|
+
}) => {
|
|
15
|
+
return /* @__PURE__ */ jsx("div", { className: "cui-header", children: /* @__PURE__ */ jsx(
|
|
16
|
+
"header",
|
|
17
|
+
{
|
|
18
|
+
className: "cui-header__wrapper",
|
|
19
|
+
style: background ? { "--cui-header-bg": background } : void 0,
|
|
20
|
+
children: /* @__PURE__ */ jsxs("div", { className: "cui-header__container", children: [
|
|
21
|
+
/* @__PURE__ */ jsxs("div", { className: "cui-header__left", children: [
|
|
22
|
+
sideBar && /* @__PURE__ */ jsx("div", { className: "cui-header__sidebar", onClick: handleSideBar, children: /* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faBars, className: "cui-header__icon" }) }),
|
|
23
|
+
/* @__PURE__ */ jsxs("div", { className: "cui-header__title", onClick: handleHome, children: [
|
|
24
|
+
icon && /* @__PURE__ */ jsx(FontAwesomeIcon, { icon, className: "cui-header__icon" }),
|
|
25
|
+
/* @__PURE__ */ jsx("h1", { children: title })
|
|
26
|
+
] }),
|
|
27
|
+
subTitle && /* @__PURE__ */ jsx("div", { className: "cui-header__subtitle", children: /* @__PURE__ */ jsx("h2", { children: subTitle }) })
|
|
28
|
+
] }),
|
|
29
|
+
/* @__PURE__ */ jsx("div", { className: "cui-header__right", children: /* @__PURE__ */ jsx("div", { className: "cui-header__profile", children: profile }) })
|
|
30
|
+
] })
|
|
31
|
+
}
|
|
32
|
+
) });
|
|
33
|
+
};
|
|
34
|
+
export {
|
|
35
|
+
Header as default
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../../src/legacy/components/layout/Header/Header.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faBars, faHouse } from '@fortawesome/free-solid-svg-icons'\r\nimport './Header.scss'\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\r\n\r\ntype Props = {\r\n title: string\r\n subTitle?: string\r\n icon?: IconProp\r\n sideBar: boolean\r\n handleSideBar: () => void\r\n profile: ReactNode\r\n handleHome: () => void\r\n // Sobrepõe o fundo (gradiente/imagem) por defeito. Aceita qualquer valor\r\n // válido da propriedade CSS \"background\" (cor sólida, gradiente, url(...)).\r\n background?: string\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst Header = ({\r\n title,\r\n subTitle,\r\n icon,\r\n sideBar,\r\n handleSideBar,\r\n profile,\r\n handleHome,\r\n background,\r\n}: Props) => {\r\n return (\r\n <div className=\"cui-header\">\r\n <header\r\n className=\"cui-header__wrapper\"\r\n style={background ? ({ '--cui-header-bg': background } as React.CSSProperties) : undefined}\r\n >\r\n <div className=\"cui-header__container\">\r\n <div className=\"cui-header__left\">\r\n {sideBar && (\r\n <div className=\"cui-header__sidebar\" onClick={handleSideBar}>\r\n <FontAwesomeIcon icon={faBars} className=\"cui-header__icon\" />\r\n </div>\r\n )}\r\n <div className=\"cui-header__title\" onClick={handleHome}>\r\n {icon && (\r\n <FontAwesomeIcon icon={icon} className=\"cui-header__icon\" />\r\n )}\r\n <h1>{title}</h1>\r\n </div>\r\n {subTitle && (\r\n <div className=\"cui-header__subtitle\">\r\n <h2>{subTitle}</h2>\r\n </div>\r\n )}\r\n </div>\r\n <div className=\"cui-header__right\">\r\n <div className=\"cui-header__profile\">{profile}</div>\r\n </div>\r\n </div>\r\n </header>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Header\r\n"],"names":[],"mappings":";;;;AAoBA,MAAM,SAAS,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAa;AACX,SACE,oBAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,aAAc,EAAE,mBAAmB,eAAuC;AAAA,MAEjF,UAAA,qBAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,oBACZ,UAAA;AAAA,UAAA,WACC,oBAAC,OAAA,EAAI,WAAU,uBAAsB,SAAS,eAC5C,UAAA,oBAAC,iBAAA,EAAgB,MAAM,QAAQ,WAAU,mBAAA,CAAmB,GAC9D;AAAA,UAEF,qBAAC,OAAA,EAAI,WAAU,qBAAoB,SAAS,YACzC,UAAA;AAAA,YAAA,QACC,oBAAC,iBAAA,EAAgB,MAAY,WAAU,oBAAmB;AAAA,YAE5D,oBAAC,QAAI,UAAA,MAAA,CAAM;AAAA,UAAA,GACb;AAAA,UACC,gCACE,OAAA,EAAI,WAAU,wBACb,UAAA,oBAAC,MAAA,EAAI,oBAAS,EAAA,CAChB;AAAA,QAAA,GAEJ;AAAA,QACA,oBAAC,SAAI,WAAU,qBACb,8BAAC,OAAA,EAAI,WAAU,uBAAuB,UAAA,QAAA,CAAQ,EAAA,CAChD;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import AppShell from "../../../../v1/components/layout/AppShell/AppShell.js";
|
|
3
|
+
import { labelsV1, menuV1 } from "../Sidebar/Sidebar.js";
|
|
4
|
+
const Layout = ({
|
|
5
|
+
children,
|
|
6
|
+
menus,
|
|
7
|
+
currentLang,
|
|
8
|
+
logoutLabel,
|
|
9
|
+
themeLabels,
|
|
10
|
+
deployedAtLabel,
|
|
11
|
+
footer,
|
|
12
|
+
sidebarOpen,
|
|
13
|
+
onSidebarOpenChange,
|
|
14
|
+
...rest
|
|
15
|
+
}) => /* @__PURE__ */ jsx(
|
|
16
|
+
AppShell,
|
|
17
|
+
{
|
|
18
|
+
...rest,
|
|
19
|
+
menu: menuV1(menus),
|
|
20
|
+
currentLanguage: currentLang,
|
|
21
|
+
labels: labelsV1({ logoutLabel, themeLabels, deployedAtLabel }),
|
|
22
|
+
sidebarFooter: footer,
|
|
23
|
+
defaultOpen: sidebarOpen,
|
|
24
|
+
onOpenChange: onSidebarOpenChange,
|
|
25
|
+
children
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
export {
|
|
29
|
+
Layout as default
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=Layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.js","sources":["../../../../../../src/legacy/components/layout/Layout/Layout.tsx"],"sourcesContent":["import React from 'react'\r\nimport AppShell from '../../../../v1/components/layout/AppShell/AppShell'\r\nimport { labelsV1, menuV1, type SidebarMenuItem, type SidebarLanguage, type SidebarTheme } from '../Sidebar/Sidebar'\r\n\r\n/*\r\n * Migrado para o V1: a moldura da app é o `AppShell` do V1. Este ficheiro só\r\n * mantém a API antiga, e os seus textos por omissão, para as apps que ainda a\r\n * usam.\r\n */\r\n\r\n/** @deprecated Legacy — usar `AppShellProps` do V1. */\r\nexport interface LayoutProps {\r\n children: React.ReactNode\r\n menus: SidebarMenuItem[]\r\n groupLabels?: Record<string, string>\r\n appTitle?: string\r\n /** Barra superior opcional (título/alertas), sticky acima do conteúdo. */\r\n topBar?: React.ReactNode\r\n avatar?: React.ReactNode\r\n onLogout?: () => void\r\n logoutLabel?: string\r\n languages?: SidebarLanguage[]\r\n currentLang?: string\r\n onLanguageChange?: (code: string) => void\r\n theme?: SidebarTheme\r\n onThemeChange?: (theme: SidebarTheme) => void\r\n themeLabels?: { label?: string; light?: string; dark?: string; system?: string }\r\n footer?: (isExpanded: boolean) => React.ReactNode\r\n deployedAt?: string | number | Date\r\n deployedAtLabel?: string\r\n /** Estado inicial da sidebar (aberta/fechada). */\r\n sidebarOpen?: boolean\r\n /** Chamado quando a pessoa abre/fecha a sidebar. */\r\n onSidebarOpenChange?: (open: boolean) => void\r\n}\r\n\r\n/** @deprecated Legacy — usar `AppShell` do V1. */\r\nconst Layout = ({\r\n children,\r\n menus,\r\n currentLang,\r\n logoutLabel,\r\n themeLabels,\r\n deployedAtLabel,\r\n footer,\r\n sidebarOpen,\r\n onSidebarOpenChange,\r\n ...rest\r\n}: LayoutProps) => (\r\n <AppShell\r\n {...rest}\r\n menu={menuV1(menus)}\r\n currentLanguage={currentLang}\r\n labels={labelsV1({ logoutLabel, themeLabels, deployedAtLabel })}\r\n sidebarFooter={footer}\r\n defaultOpen={sidebarOpen}\r\n onOpenChange={onSidebarOpenChange}\r\n >\r\n {children}\r\n </AppShell>\r\n)\r\n\r\nexport default Layout\r\n"],"names":[],"mappings":";;;AAqCA,MAAM,SAAS,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAG;AAAA,IACJ,MAAM,OAAO,KAAK;AAAA,IAClB,iBAAiB;AAAA,IACjB,QAAQ,SAAS,EAAE,aAAa,aAAa,iBAAiB;AAAA,IAC9D,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IAEb;AAAA,EAAA;AACH;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import SideNav from "../../../../v1/components/layout/SideNav/SideNav.js";
|
|
3
|
+
const menuV1 = (menus) => menus.map(({ badge, ...item }) => ({ ...item, end: item.end ?? item.to === "/", badges: badge ? [{ count: badge }] : void 0 }));
|
|
4
|
+
const labelsV1 = (p) => ({
|
|
5
|
+
logout: p.logoutLabel ?? "Logout",
|
|
6
|
+
theme: p.themeLabels?.label ?? "Theme",
|
|
7
|
+
light: p.themeLabels?.light ?? "Light",
|
|
8
|
+
dark: p.themeLabels?.dark ?? "Dark",
|
|
9
|
+
system: p.themeLabels?.system ?? "System",
|
|
10
|
+
deployedAt: p.deployedAtLabel ?? "Último deploy"
|
|
11
|
+
});
|
|
12
|
+
const Sidebar = ({
|
|
13
|
+
isOpen = true,
|
|
14
|
+
setIsOpen,
|
|
15
|
+
menus,
|
|
16
|
+
currentLang,
|
|
17
|
+
logoutLabel,
|
|
18
|
+
themeLabels,
|
|
19
|
+
deployedAtLabel,
|
|
20
|
+
...rest
|
|
21
|
+
}) => /* @__PURE__ */ jsx(
|
|
22
|
+
SideNav,
|
|
23
|
+
{
|
|
24
|
+
...rest,
|
|
25
|
+
menu: menuV1(menus),
|
|
26
|
+
currentLanguage: currentLang,
|
|
27
|
+
labels: labelsV1({ logoutLabel, themeLabels, deployedAtLabel }),
|
|
28
|
+
open: isOpen,
|
|
29
|
+
onOpenChange: setIsOpen ?? (() => {
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
export {
|
|
34
|
+
Sidebar as default,
|
|
35
|
+
labelsV1,
|
|
36
|
+
menuV1
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sources":["../../../../../../src/legacy/components/layout/Sidebar/Sidebar.tsx"],"sourcesContent":["import React from 'react'\r\nimport SideNav, { type SideNavItem, type SideNavLabels } from '../../../../v1/components/layout/SideNav/SideNav'\r\n\r\n/*\r\n * Migrado para o V1: o menu lateral é o `SideNav` do V1 (normalmente dentro do\r\n * `AppShell`). Este ficheiro só mantém a API antiga, e os seus textos por\r\n * omissão, para as apps que ainda a usam.\r\n */\r\n\r\n/** @deprecated Legacy — usar `SideNavTheme` do V1. */\r\nexport type SidebarTheme = 'light' | 'dark' | 'system'\r\n\r\n/** @deprecated Legacy — usar `languages` do `SideNav` do V1. */\r\nexport interface SidebarLanguage {\r\n code: string\r\n label: string\r\n}\r\n\r\n/** @deprecated Legacy — usar `SideNavItem` do V1. */\r\nexport interface SidebarMenuItem {\r\n to: string\r\n icon: React.ComponentType<{ size?: number; className?: string }>\r\n label: string\r\n group?: string\r\n end?: boolean\r\n /** Contador opcional (ex: aprovações pendentes). */\r\n badge?: number\r\n /** Destino fora da aplicação: abre em separador novo. */\r\n external?: boolean\r\n}\r\n\r\n/** @deprecated Legacy — usar `SideNavProps` do V1. */\r\nexport interface SidebarProps {\r\n isOpen?: boolean\r\n setIsOpen?: (isOpen: boolean) => void\r\n menus: SidebarMenuItem[]\r\n groupLabels?: Record<string, string>\r\n appTitle?: string\r\n avatar?: React.ReactNode\r\n onLogout?: () => void\r\n logoutLabel?: string\r\n languages?: SidebarLanguage[]\r\n currentLang?: string\r\n onLanguageChange?: (code: string) => void\r\n theme?: SidebarTheme\r\n onThemeChange?: (theme: SidebarTheme) => void\r\n themeLabels?: { label?: string; light?: string; dark?: string; system?: string }\r\n footer?: (isExpanded: boolean) => React.ReactNode\r\n deployedAt?: string | number | Date\r\n deployedAtLabel?: string\r\n}\r\n\r\n/** Itens do menu antigo no formato do V1 (`badge` → `badges`). */\r\nexport const menuV1 = (menus: SidebarMenuItem[]): SideNavItem[] =>\r\n menus.map(({ badge, ...item }) => ({ ...item, end: item.end ?? item.to === '/', badges: badge ? [{ count: badge }] : undefined }))\r\n\r\n/** Os textos por omissão do menu antigo, para não mudarem nas apps que ainda o usam. */\r\nexport const labelsV1 = (\r\n p: Pick<SidebarProps, 'logoutLabel' | 'themeLabels' | 'deployedAtLabel'>,\r\n): Partial<SideNavLabels> => ({\r\n logout: p.logoutLabel ?? 'Logout',\r\n theme: p.themeLabels?.label ?? 'Theme',\r\n light: p.themeLabels?.light ?? 'Light',\r\n dark: p.themeLabels?.dark ?? 'Dark',\r\n system: p.themeLabels?.system ?? 'System',\r\n deployedAt: p.deployedAtLabel ?? 'Último deploy',\r\n})\r\n\r\n/** @deprecated Legacy — usar `SideNav` (ou `AppShell`) do V1. */\r\nconst Sidebar = ({\r\n isOpen = true,\r\n setIsOpen,\r\n menus,\r\n currentLang,\r\n logoutLabel,\r\n themeLabels,\r\n deployedAtLabel,\r\n ...rest\r\n}: SidebarProps) => (\r\n <SideNav\r\n {...rest}\r\n menu={menuV1(menus)}\r\n currentLanguage={currentLang}\r\n labels={labelsV1({ logoutLabel, themeLabels, deployedAtLabel })}\r\n open={isOpen}\r\n onOpenChange={setIsOpen ?? (() => {})}\r\n />\r\n)\r\n\r\nexport default Sidebar\r\n"],"names":[],"mappings":";;AAqDO,MAAM,SAAS,CAAC,UACrB,MAAM,IAAI,CAAC,EAAE,OAAO,GAAG,KAAA,OAAY,EAAE,GAAG,MAAM,KAAK,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,QAAQ,CAAC,EAAE,OAAO,OAAO,IAAI,SAAY;AAG5H,MAAM,WAAW,CACtB,OAC4B;AAAA,EAC5B,QAAQ,EAAE,eAAe;AAAA,EACzB,OAAO,EAAE,aAAa,SAAS;AAAA,EAC/B,OAAO,EAAE,aAAa,SAAS;AAAA,EAC/B,MAAM,EAAE,aAAa,QAAQ;AAAA,EAC7B,QAAQ,EAAE,aAAa,UAAU;AAAA,EACjC,YAAY,EAAE,mBAAmB;AACnC;AAGA,MAAM,UAAU,CAAC;AAAA,EACf,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAG;AAAA,IACJ,MAAM,OAAO,KAAK;AAAA,IAClB,iBAAiB;AAAA,IACjB,QAAQ,SAAS,EAAE,aAAa,aAAa,iBAAiB;AAAA,IAC9D,MAAM;AAAA,IACN,cAAc,cAAc,MAAM;AAAA,IAAC;AAAA,EAAA;AACrC;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
3
|
+
import { faSpinner } from "@fortawesome/free-solid-svg-icons";
|
|
4
|
+
import './Spinner.css';/* empty css */
|
|
5
|
+
const Spinner = () => {
|
|
6
|
+
return /* @__PURE__ */ jsx("div", { className: "cui-spinner", children: /* @__PURE__ */ jsx(
|
|
7
|
+
FontAwesomeIcon,
|
|
8
|
+
{
|
|
9
|
+
icon: faSpinner,
|
|
10
|
+
className: "cui-icon",
|
|
11
|
+
spin: true,
|
|
12
|
+
"aria-hidden": "true"
|
|
13
|
+
}
|
|
14
|
+
) });
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
Spinner as default
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=Spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../../../../../../src/legacy/components/layout/Spinner/Spinner.tsx"],"sourcesContent":["import React from 'react'\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons'\r\nimport './Spinner.scss'\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst Spinner: React.FC = () => {\r\n return (\r\n <div className=\"cui-spinner\">\r\n <FontAwesomeIcon\r\n icon={faSpinner}\r\n className={'cui-icon'}\r\n spin\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default Spinner\r\n"],"names":[],"mappings":";;;;AAOA,MAAM,UAAoB,MAAM;AAC9B,SACE,oBAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAI;AAAA,MACJ,eAAY;AAAA,IAAA;AAAA,EAAA,GAEhB;AAEJ;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const Search = ({ size = 24, className }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: [
|
|
3
|
+
/* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8" }),
|
|
4
|
+
/* @__PURE__ */ jsx("path", { d: "m21 21-4.3-4.3" })
|
|
5
|
+
] });
|
|
6
|
+
const Bell = ({ size = 24, className }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: [
|
|
7
|
+
/* @__PURE__ */ jsx("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }),
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" })
|
|
9
|
+
] });
|
|
10
|
+
const TopBar = ({ searchPlaceholder, onSearch, right }) => {
|
|
11
|
+
return /* @__PURE__ */ jsxs("header", { className: "h-16 bg-white border-b border-slate-100 dark:bg-slate-900 dark:border-slate-800 fixed top-0 right-0 left-0 sm:left-64 z-30 flex items-center justify-between px-4 sm:px-12", children: [
|
|
12
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 flex-1 max-w-xl", children: /* @__PURE__ */ jsxs("div", { className: "relative group w-full", children: [
|
|
13
|
+
/* @__PURE__ */ jsx(Search, { size: 16, className: "absolute left-0 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within:text-proef-blue transition-colors" }),
|
|
14
|
+
/* @__PURE__ */ jsx(
|
|
15
|
+
"input",
|
|
16
|
+
{
|
|
17
|
+
type: "text",
|
|
18
|
+
placeholder: searchPlaceholder,
|
|
19
|
+
onChange: (e) => onSearch?.(e.target.value),
|
|
20
|
+
className: "w-full bg-transparent border-none py-2.5 pl-8 pr-4 text-sm focus:ring-0 outline-none placeholder:text-slate-400 font-medium"
|
|
21
|
+
}
|
|
22
|
+
),
|
|
23
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-1 left-0 right-4 h-0.5 bg-slate-100 scale-x-0 group-focus-within:scale-x-100 transition-transform origin-left duration-300" })
|
|
24
|
+
] }) }),
|
|
25
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-4", children: right ?? /* @__PURE__ */ jsxs("button", { className: "relative p-2 text-slate-400 hover:text-proef-navy transition-colors", children: [
|
|
26
|
+
/* @__PURE__ */ jsx(Bell, { size: 20 }),
|
|
27
|
+
/* @__PURE__ */ jsx("span", { className: "absolute top-2 right-2 w-1.5 h-1.5 bg-proef-turquoise rounded-full" })
|
|
28
|
+
] }) })
|
|
29
|
+
] });
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
TopBar as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=TopBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopBar.js","sources":["../../../../../../src/legacy/components/layout/TopBar/TopBar.tsx"],"sourcesContent":["import React from 'react'\r\n\r\n// ── Inline icons (no lucide-react dependency in common-ui) ────────────────\r\ntype IconProps = { size?: number; className?: string }\r\n\r\nconst Search = ({ size = 24, className }: IconProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"m21 21-4.3-4.3\" />\r\n </svg>\r\n)\r\n\r\nconst Bell = ({ size = 24, className }: IconProps) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\r\n <path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" />\r\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\r\n </svg>\r\n)\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface TopBarProps {\r\n searchPlaceholder?: string\r\n onSearch?: (value: string) => void\r\n right?: React.ReactNode\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nconst TopBar = ({ searchPlaceholder, onSearch, right }: TopBarProps) => {\r\n return (\r\n <header className=\"h-16 bg-white border-b border-slate-100 dark:bg-slate-900 dark:border-slate-800 fixed top-0 right-0 left-0 sm:left-64 z-30 flex items-center justify-between px-4 sm:px-12\">\r\n <div className=\"flex items-center gap-4 flex-1 max-w-xl\">\r\n <div className=\"relative group w-full\">\r\n <Search size={16} className=\"absolute left-0 top-1/2 -translate-y-1/2 text-slate-400 group-focus-within:text-proef-blue transition-colors\" />\r\n <input\r\n type=\"text\"\r\n placeholder={searchPlaceholder}\r\n onChange={(e) => onSearch?.(e.target.value)}\r\n className=\"w-full bg-transparent border-none py-2.5 pl-8 pr-4 text-sm focus:ring-0 outline-none placeholder:text-slate-400 font-medium\"\r\n />\r\n <div className=\"absolute bottom-1 left-0 right-4 h-0.5 bg-slate-100 scale-x-0 group-focus-within:scale-x-100 transition-transform origin-left duration-300\" />\r\n </div>\r\n </div>\r\n <div className=\"flex items-center gap-4\">\r\n {right ?? (\r\n <button className=\"relative p-2 text-slate-400 hover:text-proef-navy transition-colors\">\r\n <Bell size={20} />\r\n <span className=\"absolute top-2 right-2 w-1.5 h-1.5 bg-proef-turquoise rounded-full\" />\r\n </button>\r\n )}\r\n </div>\r\n </header>\r\n )\r\n}\r\n\r\nexport default TopBar\r\n"],"names":[],"mappings":";AAKA,MAAM,SAAS,CAAC,EAAE,OAAO,IAAI,UAAA,MACzB,qBAAC,OAAA,EAAI,OAAM,8BAA6B,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,gBAAe,SAAQ,WAClL,UAAA;AAAA,EAAA,oBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,EAC9B,oBAAC,QAAA,EAAK,GAAE,iBAAA,CAAiB;AAAA,GAC7B;AAGJ,MAAM,OAAO,CAAC,EAAE,OAAO,IAAI,UAAA,MACvB,qBAAC,OAAA,EAAI,OAAM,8BAA6B,OAAO,MAAM,QAAQ,MAAM,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,gBAAe,SAAQ,WAClL,UAAA;AAAA,EAAA,oBAAC,QAAA,EAAK,GAAE,4CAAA,CAA4C;AAAA,EACpD,oBAAC,QAAA,EAAK,GAAE,iCAAA,CAAiC;AAAA,GAC7C;AAWJ,MAAM,SAAS,CAAC,EAAE,mBAAmB,UAAU,YAAyB;AACpE,SACI,qBAAC,UAAA,EAAO,WAAU,8KACd,UAAA;AAAA,IAAA,oBAAC,SAAI,WAAU,2CACX,UAAA,qBAAC,OAAA,EAAI,WAAU,yBACX,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAO,MAAM,IAAI,WAAU,gHAA+G;AAAA,MAC3I;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,aAAa;AAAA,UACb,UAAU,CAAC,MAAM,WAAW,EAAE,OAAO,KAAK;AAAA,UAC1C,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,oBAAC,OAAA,EAAI,WAAU,6IAAA,CAA6I;AAAA,IAAA,EAAA,CAChK,EAAA,CACJ;AAAA,IACA,oBAAC,SAAI,WAAU,2BACV,mBACG,qBAAC,UAAA,EAAO,WAAU,uEACd,UAAA;AAAA,MAAA,oBAAC,MAAA,EAAK,MAAM,GAAA,CAAI;AAAA,MAChB,oBAAC,QAAA,EAAK,WAAU,qEAAA,CAAqE;AAAA,IAAA,EAAA,CACzF,EAAA,CAER;AAAA,EAAA,GACJ;AAER;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { NavLink } from "react-router-dom";
|
|
3
|
+
const LogOut = ({ size = 16, className }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: [
|
|
4
|
+
/* @__PURE__ */ jsx("path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" }),
|
|
5
|
+
/* @__PURE__ */ jsx("polyline", { points: "16 17 21 12 16 7" }),
|
|
6
|
+
/* @__PURE__ */ jsx("line", { x1: "21", x2: "9", y1: "12", y2: "12" })
|
|
7
|
+
] });
|
|
8
|
+
const Sun = ({ size = 16, className }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: [
|
|
9
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "4" }),
|
|
10
|
+
/* @__PURE__ */ jsx("path", { d: "M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41" })
|
|
11
|
+
] });
|
|
12
|
+
const Moon = ({ size = 16, className }) => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: /* @__PURE__ */ jsx("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z" }) });
|
|
13
|
+
const Monitor = ({ size = 16, className }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, children: [
|
|
14
|
+
/* @__PURE__ */ jsx("rect", { width: "20", height: "14", x: "2", y: "3", rx: "2" }),
|
|
15
|
+
/* @__PURE__ */ jsx("path", { d: "M8 21h8M12 17v4" })
|
|
16
|
+
] });
|
|
17
|
+
const TopNavLayout = ({
|
|
18
|
+
children,
|
|
19
|
+
menus,
|
|
20
|
+
appTitle,
|
|
21
|
+
appSubtitle,
|
|
22
|
+
logo,
|
|
23
|
+
avatar,
|
|
24
|
+
userName,
|
|
25
|
+
onLogout,
|
|
26
|
+
logoutLabel = "Logout",
|
|
27
|
+
languages,
|
|
28
|
+
currentLang,
|
|
29
|
+
onLanguageChange,
|
|
30
|
+
theme,
|
|
31
|
+
onThemeChange,
|
|
32
|
+
themeLabels,
|
|
33
|
+
maxWidth = 1400
|
|
34
|
+
}) => {
|
|
35
|
+
const ThemeIcon = theme === "light" ? Sun : theme === "dark" ? Moon : Monitor;
|
|
36
|
+
const cycleTheme = () => {
|
|
37
|
+
if (!onThemeChange) return;
|
|
38
|
+
const order = ["light", "dark", "system"];
|
|
39
|
+
onThemeChange(order[(order.indexOf(theme ?? "system") + 1) % order.length]);
|
|
40
|
+
};
|
|
41
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen dark:bg-slate-950", children: [
|
|
42
|
+
/* @__PURE__ */ jsx("nav", { className: "bg-white border-b border-slate-200 dark:bg-slate-900 dark:border-slate-700 sticky top-0 z-50 shadow-sm", children: /* @__PURE__ */ jsx("div", { style: { maxWidth }, className: "mx-auto px-5", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-5 h-12", children: [
|
|
43
|
+
/* @__PURE__ */ jsx("div", { className: "shrink-0", children: logo ?? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
|
|
44
|
+
/* @__PURE__ */ jsx("div", { className: "w-1 h-7 bg-proef-turquoise" }),
|
|
45
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
46
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm font-black tracking-tighter text-proef-navy uppercase leading-none", children: appTitle }),
|
|
47
|
+
appSubtitle && /* @__PURE__ */ jsx("div", { className: "text-[9px] font-bold uppercase tracking-[0.15em] text-slate-400 mt-0.5", children: appSubtitle })
|
|
48
|
+
] })
|
|
49
|
+
] }) }),
|
|
50
|
+
/* @__PURE__ */ jsx("div", { className: "flex gap-0.5 flex-1 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", children: menus.map((item) => /* @__PURE__ */ jsx(
|
|
51
|
+
NavLink,
|
|
52
|
+
{
|
|
53
|
+
to: item.to,
|
|
54
|
+
end: item.end,
|
|
55
|
+
className: ({ isActive }) => `px-3 py-1.5 text-[12px] font-bold whitespace-nowrap transition-colors border-b-2 ${isActive ? "text-proef-blue border-proef-blue" : "text-slate-500 hover:text-proef-navy border-transparent"}`,
|
|
56
|
+
children: item.label
|
|
57
|
+
},
|
|
58
|
+
item.to
|
|
59
|
+
)) }),
|
|
60
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [
|
|
61
|
+
languages && languages.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex gap-1", children: languages.map((l) => /* @__PURE__ */ jsx(
|
|
62
|
+
"button",
|
|
63
|
+
{
|
|
64
|
+
onClick: () => onLanguageChange?.(l.code),
|
|
65
|
+
className: `appearance-none bg-transparent border-0 cursor-pointer px-1 text-[10px] font-black uppercase tracking-widest transition-colors ${currentLang === l.code ? "text-proef-blue" : "text-slate-400 hover:text-proef-navy"}`,
|
|
66
|
+
children: l.label
|
|
67
|
+
},
|
|
68
|
+
l.code
|
|
69
|
+
)) }),
|
|
70
|
+
onThemeChange && /* @__PURE__ */ jsx("button", { onClick: cycleTheme, title: themeLabels?.label ?? "Theme", className: "appearance-none bg-transparent border-0 cursor-pointer p-1.5 text-slate-400 hover:text-proef-navy transition-colors", children: /* @__PURE__ */ jsx(ThemeIcon, { size: 16 }) }),
|
|
71
|
+
avatar,
|
|
72
|
+
userName && /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold text-slate-500 hidden sm:block", children: userName }),
|
|
73
|
+
onLogout && /* @__PURE__ */ jsx("button", { onClick: onLogout, title: logoutLabel, className: "appearance-none bg-transparent border-0 cursor-pointer p-1.5 text-slate-400 hover:text-incumprido transition-colors", children: /* @__PURE__ */ jsx(LogOut, { size: 16 }) })
|
|
74
|
+
] })
|
|
75
|
+
] }) }) }),
|
|
76
|
+
/* @__PURE__ */ jsx("main", { style: { maxWidth }, className: "mx-auto px-3 sm:px-5 py-4", children })
|
|
77
|
+
] });
|
|
78
|
+
};
|
|
79
|
+
export {
|
|
80
|
+
TopNavLayout as default
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=TopNavLayout.js.map
|