From 43e75db1f9a9d187a99d5470fd50823a117aaf4f Mon Sep 17 00:00:00 2001 From: Maina Wycliffe Date: Thu, 18 Jul 2024 21:20:06 +0300 Subject: [PATCH] chore: add prettier plugin for tailwind to sort tailwind classes This sorts the classes consistently making it easy to figure what classes that have been applied https://tailwindcss.com/blog/automatic-class-sorting-with-prettier --- .prettierrc | 3 +- development.md | 4 +- package-lock.json | 134 ++++++++++- package.json | 3 +- pages/_app.tsx | 2 +- pages/global.css | 61 +++-- pages/login/[[...index]].tsx | 2 +- .../[[...profile-settings]].tsx | 4 +- pages/registration/[[...registration]].tsx | 4 +- public/mockServiceWorker.js | 222 +++++++++--------- src/__tests__/Canary/Rows/lib.test.js | 10 +- src/api/services/configs.ts | 18 +- src/api/traits.ts | 2 +- src/components/Agents/Add/AddAgentForm.tsx | 10 +- src/components/Agents/AgentNamesDropdown.tsx | 2 +- src/components/Agents/AgentPage.tsx | 2 +- .../CLIInstallAgent.tsx | 2 +- .../FluxInstallAgent.tsx | 2 +- .../InstallAgentModal.tsx | 10 +- .../Agents/List/AgentsTableColumns.tsx | 2 +- .../Authentication/Clerk/ClerkAuthErrors.tsx | 12 +- .../Clerk/ClerkLogoutButton.tsx | 2 +- .../Authentication/Clerk/ClerkOrgModal.tsx | 28 +-- .../Clerk/ClerkRegistration.tsx | 4 +- .../Authentication/Clerk/ClerkUserProfile.tsx | 2 +- .../Clerk/InstanceCreationInProgress.tsx | 28 +-- .../Authentication/Kratos/KratosLogin.tsx | 6 +- .../Kratos/KratosLogoutButton.tsx | 2 +- .../Kratos/KratosProfileSettings.tsx | 8 +- .../Authentication/Kratos/KratosRecovery.tsx | 8 +- .../Kratos/KratosRegistration.tsx | 6 +- .../Kratos/KratosUserProfileDropdown.tsx | 10 +- .../Authentication/Kratos/ory/ui/Flow.tsx | 2 +- .../Kratos/ory/ui/NodeInputDefault.tsx | 2 +- .../Kratos/ory/ui/NodeInputSubmit.tsx | 4 +- src/components/Canary/CanaryCards.tsx | 10 +- .../Canary/CanaryFilters/LabelFilterList.tsx | 6 +- .../CanaryFilters/TopBar/CanaryFiltersBar.tsx | 10 +- .../TopBar/CanarySearchField.tsx | 8 +- .../Canary/CanaryFilters/TristateLabels.tsx | 2 +- .../Canary/CanaryPopup/CheckDetails.tsx | 10 +- .../Canary/CanaryPopup/CheckDetailsTabs.tsx | 2 +- .../Canary/CanaryPopup/CheckLabels.tsx | 12 +- .../Canary/CanaryPopup/CheckRelationships.tsx | 2 +- .../Canary/CanaryPopup/CheckTitle.tsx | 16 +- .../Canary/CanaryPopup/ChecksDetailsModal.tsx | 8 +- .../Canary/CanaryPopup/DetailField.tsx | 6 +- .../StatusHistory/StatusHistory.tsx | 6 +- .../StatusHistory/StatusHistoryFilters.tsx | 4 +- src/components/Canary/CanaryStatusChart.tsx | 6 +- src/components/Canary/CanaryTable.tsx | 4 +- src/components/Canary/CanaryTableColumns.tsx | 2 +- src/components/Canary/Columns/index.tsx | 24 +- src/components/Canary/FilterForm/index.jsx | 4 +- src/components/Canary/HealthCheckEdit.tsx | 2 +- .../Canary/HealthChecks/CheckLink.tsx | 10 +- src/components/Canary/HealthChecksSummary.tsx | 2 +- src/components/Canary/Rows/lib.ts | 25 +- .../Canary/Sidebar/CanarySidebar.tsx | 18 +- .../Canary/Sidebar/CanaryStickySidebar.tsx | 12 +- src/components/Canary/index.tsx | 10 +- src/components/Canary/renderers.tsx | 6 +- src/components/Canary/state/index.js | 4 +- .../Configs/Changes/ConfigChangeTable.tsx | 2 +- .../ChangeTypesDropdown.tsx | 2 +- .../ConfigChangeSeverity.tsx | 2 +- .../ConfigChangesFilters.tsx | 2 +- .../ConfigTagsDropdown.tsx | 2 +- .../ConfigChangeDetailsSection.tsx | 6 +- .../ConfigDetailsChanges.tsx | 16 +- .../ConfigChangesToggledDeletedItems.tsx | 2 +- .../FilterBar/ConfigRelatedChangesFilters.tsx | 2 +- .../Configs/ConfigBreadcrumb/index.tsx | 2 +- .../Configs/ConfigComponents/index.tsx | 8 +- .../Configs/ConfigCosts/ConfigCostValue.tsx | 4 +- .../ConfigDetailsSelectedLinesControls.tsx | 2 +- src/components/Configs/ConfigDetailsTabs.tsx | 4 +- .../Configs/ConfigItem/ConfigItem.stories.tsx | 22 +- src/components/Configs/ConfigItem/index.tsx | 12 +- .../Configs/ConfigLink/ConfigLink.tsx | 2 +- .../Cells/ConfigListAnalysisCell.tsx | 8 +- .../ConfigList/Cells/ConfigListChangeCell.tsx | 5 +- .../ConfigList/Cells/ConfigListDateCell.tsx | 2 +- .../ConfigList/Cells/ConfigListNameCell.tsx | 2 +- .../ConfigList/Cells/ConfigListTagsCell.tsx | 4 +- .../Configs/ConfigList/ConfigListColumn.tsx | 2 +- .../Configs/ConfigList/ConfigsTable.tsx | 13 +- .../ConfigListToggledDeletedItems.tsx | 4 +- src/components/Configs/ConfigPageTabs.tsx | 4 +- .../Cells/ConfigSummaryHealthCells.tsx | 21 +- ...nfigSummaryTableVirtualAggregateColumn.tsx | 2 +- .../Cells/ConfigSummaryVirtualColumnCell.tsx | 2 +- .../ConfigSummary/ConfigSummaryList.tsx | 23 +- .../ConfigGraphDirectionToggle.tsx | 2 +- .../ConfigGraphTableToggle.tsx | 2 +- .../ConfigGroupByDropdown.tsx | 2 +- .../ConfigLabelsDropdown.tsx | 2 +- .../ConfigTypesDropdown.tsx | 2 +- .../ConfigsListFilters/ConfigsListFilters.tsx | 2 +- src/components/Configs/ConfigsTypeIcon.tsx | 2 +- .../ConfigIntermediaryNodeReactFlowNode.tsx | 10 +- .../Configs/Graph/ConfigItemReactFlowNode.tsx | 12 +- .../Configs/Graph/formatConfigsForGraph.ts | 19 +- .../Configs/Insights/AnalysisIcon.stories.tsx | 4 - .../Insights/AnalysisTypesDropdown.tsx | 2 +- .../ConfigAnalysisLink/ConfigAnalysisLink.tsx | 8 +- .../ConfigInsightsDetailsModal.tsx | 8 +- .../Insights/ConfigInsightsColumns.tsx | 4 +- .../Configs/Insights/ConfigInsightsIcon.tsx | 20 +- .../ConfigInsightsAnalyzerDropdown.tsx | 2 +- .../Filters/ConfigInsightsFilters.tsx | 12 +- .../ConfigInsightsSeverityDropdown.tsx | 2 +- .../Filters/ConfigInsightsTypeDropdown.tsx | 2 +- src/components/Configs/QueryBuilder/index.tsx | 22 +- .../Cells/ConfigChangeNameCell.tsx | 2 +- .../Configs/Sidebar/ConfigChanges/index.tsx | 6 +- .../Configs/Sidebar/ConfigDetails.tsx | 8 +- .../Configs/Sidebar/ConfigInsights/index.tsx | 4 +- .../Configs/Sidebar/ConfigSidebar.tsx | 2 +- .../Configs/Sidebar/ConfigsPanel.tsx | 16 +- .../Configs/Sidebar/Insights/Insights.tsx | 4 +- .../Insights/cells/ConfigInsightNameCell.tsx | 2 +- src/components/Connections/ConnectionForm.tsx | 21 +- .../Connections/ConnectionFormModal.tsx | 4 +- .../Connections/ConnectionListView.tsx | 6 +- .../Connections/ConnectionsList.tsx | 4 +- .../FormikConnectionOptionsSwitchField.tsx | 2 +- .../RenderConnectionFormFields.tsx | 4 +- .../Connections/connectionTypes.tsx | 4 +- src/components/CostDetails/CostDetails.tsx | 8 +- src/components/DescriptionCard/index.tsx | 18 +- src/components/Dropdown/ComboboxInput.tsx | 4 +- .../Dropdown/DropdownWithActions.stories.tsx | 2 +- src/components/Dropdown/SubtleDropdown.tsx | 8 +- src/components/Dropdown/index.tsx | 12 +- .../DropdownMenu/DropdownMenu.stories.tsx | 2 +- src/components/DropdownMenu/index.tsx | 2 +- src/components/EmptyState/index.tsx | 4 +- src/components/Errors/ErrorPage.tsx | 6 +- .../EventQueueStatus/EventQueueStatusList.tsx | 2 +- .../FeatureFlags/FeatureFlagForm.tsx | 14 +- .../Forms/Configs/AWSConfigsFormEditor.tsx | 10 +- .../Forms/Configs/ConfigRentionSpec.tsx | 6 +- .../Forms/Configs/FileConfigsFormEditor.tsx | 4 +- .../Forms/Configs/HttpConfigsFormEditor.tsx | 4 +- .../KubernetesFileConfigsFormEditor.tsx | 8 +- .../Forms/Configs/SQLConfigsFormEditor.tsx | 2 +- .../Forms/Configs/TrivyConfigsFormEditor.tsx | 4 +- .../Connection/AWSConnectionFormEditor.tsx | 4 +- .../Connection/GCPConnectionFormEditor.tsx | 2 +- src/components/Forms/Connection/index.tsx | 4 +- .../Forms/Formik/FormikAuthFields.tsx | 4 +- .../Forms/Formik/FormikAuthFieldsGroup.tsx | 4 +- .../Formik/FormikAutocompleteDropdown.tsx | 4 +- .../Formik/FormikBytesTextField.stories.tsx | 4 +- .../Forms/Formik/FormikBytesTextField.tsx | 6 +- .../Forms/Formik/FormikCheckbox.tsx | 4 +- .../Formik/FormikCompactEnvVarSource.tsx | 8 +- .../Forms/Formik/FormikConfigEnvVarFields.tsx | 36 +-- .../Formik/FormikConfigEnvVarFieldsArray.tsx | 6 +- .../Formik/FormikConfigFormFieldsArray.tsx | 8 +- .../Formik/FormikConfigFormFormsArray.tsx | 2 +- .../Forms/Formik/FormikConnectionField.tsx | 2 +- .../Forms/Formik/FormikEnvVarSource.tsx | 6 +- .../Forms/Formik/FormikIconPicker.tsx | 2 +- .../Forms/Formik/FormikJSONCheckFields.tsx | 2 +- .../Forms/Formik/FormikKeyValueMapField.tsx | 4 +- .../FormikMillicoresTextField.stories.tsx | 4 +- .../Formik/FormikMillicoresTextField.tsx | 6 +- .../Formik/FormikMultiSelectListField.tsx | 2 +- .../FormikNotificationEventsDropdown.tsx | 2 +- .../FormikNotificationsTemplateField.tsx | 2 +- .../Forms/Formik/FormikNumberInput.tsx | 4 +- .../Formik/FormikResourceSelectorDropdown.tsx | 4 +- src/components/Forms/Formik/FormikSelect.tsx | 2 +- .../Forms/Formik/FormikSelectDropdown.tsx | 12 +- .../Forms/Formik/FormikSwitchField.tsx | 6 +- .../Forms/Formik/FormikTemplateFields.tsx | 6 +- .../Forms/Formik/FormikTextArea.tsx | 4 +- .../Forms/Formik/FormikTextInput.tsx | 8 +- .../FormikBytesTextField.unit.test.tsx | 4 +- .../FormikMillicoresTextField.unit.test.tsx | 4 +- .../Formik/utils/FormikEnvVarStaticView.tsx | 2 +- src/components/Forms/FormikFilterForm.tsx | 13 +- .../Health/AlertmanagerHealthFormEditor.tsx | 4 +- .../Health/ElasticsearchHealthFormEditor.tsx | 4 +- .../Forms/Health/ExecHealthFormEditor.tsx | 6 +- .../Forms/Health/FolderHealthFilterGroup.tsx | 8 +- .../Forms/Health/FolderHealthFormEditor.tsx | 16 +- .../Forms/Health/HTTPHealthFormEditor.tsx | 4 +- .../Forms/Health/HTTPMethodFieldsGroup.tsx | 4 +- .../Forms/Health/ICMPHealthFormEditor.tsx | 4 +- .../Forms/Health/MongoHealthFormEditor.tsx | 4 +- .../Forms/Health/RedisHealthFormEditor.tsx | 4 +- .../Forms/Health/TCPHealthFormEditor.tsx | 4 +- .../NotificationsRecipientsTabs.tsx | 4 +- .../Forms/SpecEditorForm.stories.tsx | 2 +- src/components/Forms/SpecEditorForm.tsx | 10 +- src/components/Gauge/index.tsx | 4 +- .../Incidents/AttachEvidenceDialog/index.tsx | 26 +- .../Incidents/Changelog/IncidentChangelog.tsx | 12 +- .../Changelog/IncidentChangelogItems.tsx | 8 +- .../IncidentHistoryItemTypeContent.tsx | 2 +- .../components/EvidenceStepper/index.js | 23 +- .../Incidents/EvidenceBuilder/index.tsx | 8 +- .../EvidenceLogList/EvidenceLogList.js | 6 +- .../FilterIncidents/FilterIncidents.tsx | 12 +- .../FilterIncidentsByComponents.tsx | 2 +- .../FilterIncidentsByOwner.tsx | 2 +- .../Incidents/Hypothesis/Comments/index.tsx | 2 +- .../Hypothesis/CreateHypothesis/index.tsx | 14 +- .../EvidenceSection.stories.tsx | 2 +- .../Hypothesis/EvidenceSection/index.tsx | 68 +++--- .../HypothesisActionPlanViewContainer.tsx | 6 +- .../Hypothesis/HypothesisBar/index.tsx | 12 +- .../HypothesisBarMenu.stories.tsx | 2 +- .../Hypothesis/HypothesisBarMenu/index.tsx | 8 +- .../HypothesisCommentsViewContainer.tsx | 24 +- .../HypothesisDeleteDialog/index.tsx | 4 +- .../Hypothesis/HypothesisNode/index.tsx | 12 +- .../Hypothesis/ResponseLine/index.tsx | 24 +- .../StatusDropdownContainer/index.tsx | 2 +- .../Incidents/IncidentCard/IncidentCard.tsx | 6 +- .../Incidents/IncidentCreate/index.tsx | 20 +- .../AddAutoDefinitionOfDone.tsx | 14 +- .../AddDefinitionOfDoneHome.tsx | 6 +- .../AddManualDefinitionOfDone.tsx | 12 +- .../steps/EvidenceSelectorStep.tsx | 16 +- .../AddDefinitionOfDone/steps/ScriptStep.tsx | 4 +- .../AddResponders/ActionButtonGroup.tsx | 6 +- .../AddResponders/AddResponder.tsx | 28 +-- .../AddResponders/AddResponderModal.tsx | 26 +- .../SelectPeopleResponderDropdown.tsx | 6 +- .../SelectTeamResponderDropdown.tsx | 6 +- .../EditEvidenceDefinitionOfDoneComment.tsx | 4 +- .../EditEvidenceDefinitionOfDoneScript.tsx | 4 +- .../EvidenceSelectionModal.tsx | 16 +- .../DefinitionOfDone/EvidenceView/index.tsx | 28 +-- .../IncidentsDefinitionOfDone.tsx | 20 +- .../IncidentsDefinitionOfDoneItem.tsx | 16 +- .../EditableIncidentTitleBreadcrumb.tsx | 4 +- .../IncidentDetails/IncidentDetailsPanel.tsx | 14 +- .../ResponderDetailsDialog/index.tsx | 76 +++--- .../ResponderDetailsToolTip/index.tsx | 14 +- .../AwsServiceRequest.stories.tsx | 4 +- .../AwsServiceRequest/index.tsx | 6 +- .../AwsSupport/AwsSupport.stories.tsx | 4 +- .../ResponderTypes/AwsSupport/index.tsx | 6 +- .../ResponderTypes/CA/CA.stories.tsx | 4 +- .../ResponderTypes/CA/index.tsx | 6 +- .../ResponderTypes/Email/Email.stories.tsx | 4 +- .../ResponderTypes/Email/index.tsx | 6 +- .../ResponderTypes/Jira/Jira.stories.tsx | 4 +- .../ResponderTypes/Jira/index.tsx | 12 +- .../MicrosoftPlanner.stories.tsx | 4 +- .../ResponderTypes/MicrosoftPlanner/index.tsx | 12 +- .../ResponderTypes/Oracle/Oracle.stories.tsx | 4 +- .../ResponderTypes/Oracle/index.tsx | 8 +- .../ResponderTypes/Person/Person.stories.tsx | 4 +- .../ResponderTypes/Person/index.tsx | 2 +- .../ResponderTypes/Redhat/Redhat.stories.tsx | 4 +- .../ResponderTypes/Redhat/index.tsx | 8 +- .../ServiceNow/ServiceNow.stories.tsx | 4 +- .../ResponderTypes/ServiceNow/index.tsx | 6 +- .../ResponderTypes/VMWare/VWWare.stories.tsx | 4 +- .../ResponderTypes/VMWare/index.tsx | 8 +- .../Incidents/IncidentDetails/Responders.tsx | 32 +-- .../Incidents/IncidentList/index.tsx | 2 +- .../Incidents/IncidentSeverityTag/index.tsx | 2 +- .../Incidents/IncidentsFilterBar/index.tsx | 2 +- .../Incidents/Sidebars/incidents.tsx | 8 +- .../Incidents/incidentTypeTag/index.tsx | 4 +- .../InfiniteTable/InfiniteTable.tsx | 8 +- src/components/InfoMessage/index.tsx | 2 +- .../Add/steps/AddIntegrationOptionsList.tsx | 12 +- .../Add/steps/CatalogFormOption.tsx | 2 +- .../steps/MissionControlRegistryOptions.tsx | 10 +- .../FluxAddIntegrationCommand.tsx | 2 +- .../HelmCLIAddIntegrationCommand.tsx | 2 +- .../RegistryInstallationInstructions.tsx | 10 +- .../Integrations/EditIntegrationPage.tsx | 14 +- .../Integrations/IntegrationsPage.tsx | 2 +- .../Table/IntegrationsTableColumns.tsx | 2 +- .../Topology/EditTopologyResource.tsx | 2 +- .../Topology/TopologyResourceForm.tsx | 8 +- .../Filters/JobHistoryDurationDropdown.tsx | 2 +- .../JobsHistory/Filters/JobHistoryNames.tsx | 2 +- .../Filters/JobsHistoryFilters.tsx | 2 +- .../JobsHistory/JobHistoryStatusColumn.tsx | 2 +- .../JobsHistory/JobsHistoryDetails.tsx | 16 +- .../JobsHistory/JobsHistorySettingsPage.tsx | 2 +- .../JobsHistory/JobsHistoryTableColumn.tsx | 10 +- src/components/Layout/SearchLayout.tsx | 10 +- .../Logs/FilterLogs/FilterLogsByComponent.tsx | 2 +- .../Logs/FilterLogs/LogsFilterBar.tsx | 2 +- .../Logs/FilterLogs/LogsSearchInput.tsx | 6 +- .../Logs/LogBackends/LogBackendsForm.tsx | 8 +- src/components/Logs/Table/LogsTable.tsx | 14 +- src/components/Logs/Table/LogsTableCells.tsx | 8 +- .../MultiSelectList/MultiSelectList.tsx | 8 +- src/components/Notification/index.js | 10 +- .../Notifications/NotificationsForm.tsx | 12 +- .../NotificationsSettingsPage.tsx | 2 +- .../notificationsTableColumns.tsx | 8 +- .../Playbooks/PlaybookSpecModalTitle.tsx | 2 +- .../Runs/Actions/PlaybookRunActionFetch.tsx | 2 +- .../Runs/Actions/PlaybookRunsActionItem.tsx | 6 +- .../Runs/Actions/PlaybookRunsActions.tsx | 22 +- .../ViewPlaybookParamsModal.tsx | 4 +- .../Runs/Filter/PlaybookRunsFilterBar.tsx | 2 +- .../Runs/Filter/PlaybookSpecsDropdown.tsx | 4 +- .../Runs/Filter/PlaybookStatusDropdown.tsx | 2 +- .../Playbooks/Runs/PlaybookRunsList.tsx | 2 +- .../Playbooks/Runs/PlaybookRunsSidePanel.tsx | 10 +- .../Runs/Submit/PlaybookRunParams.tsx | 8 +- .../Runs/Submit/PlaybookSelectResource.tsx | 6 +- .../Runs/Submit/PlaybooksDropdownMenu.tsx | 6 +- .../Runs/Submit/SubmitPlaybookRunForm.tsx | 16 +- .../Playbooks/Settings/PlaybookCardMenu.tsx | 14 +- .../Playbooks/Settings/PlaybookSpecCard.tsx | 10 +- .../Playbooks/Settings/PlaybookSpecIcon.tsx | 2 +- .../Playbooks/Settings/PlaybookSpecsForm.tsx | 12 +- .../Playbooks/Settings/PlaybookSpecsList.tsx | 6 +- src/components/RadioOptionsGroup/index.tsx | 4 +- src/components/ReactSelectDropdown/index.tsx | 16 +- src/components/RefreshDropdown/index.tsx | 6 +- .../SchemaResourcePage/ConfigScrapperIcon.tsx | 2 +- .../SchemaResourcePage/SchemaResource.tsx | 2 +- .../SchemaResourcePage/SchemaResourceEdit.tsx | 26 +- .../SchemaResourceEditJobsTab.tsx | 2 +- .../SchemaResourcePage/SchemaResourceList.tsx | 34 +-- src/components/SchemaResourcePage/index.tsx | 2 +- .../SearchSelect/SearchSelect.stories.tsx | 2 +- src/components/SearchSelect/index.tsx | 8 +- src/components/SearchSelectTag/index.tsx | 2 +- src/components/Select/Select.stories.jsx | 2 +- src/components/Settings/CRDSource.tsx | 4 +- src/components/Settings/CanEditResource.tsx | 6 +- .../SpecEditor/ConfigScrapperSpecEditor.tsx | 4 +- .../SpecEditor/HealthSpecEditor.tsx | 2 +- .../SpecEditor/SpecEditor.stories.tsx | 2 +- src/components/SpecEditor/SpecEditor.tsx | 16 +- src/components/StatCard/index.tsx | 10 +- src/components/Status/HealthCheckStatus.tsx | 6 +- src/components/Status/index.tsx | 4 +- src/components/StatusLine/StatusLine.tsx | 14 +- src/components/TeamMembers/TeamMembers.tsx | 18 +- src/components/Title/title.tsx | 6 +- .../Dropdowns/ComponentLabelsDropdown.tsx | 4 +- .../Dropdowns/ComponentNamesDropdown.tsx | 2 +- .../Dropdowns/ComponentTypesDropdown.tsx | 4 +- .../Topology/Sidebar/ComponentChecks.tsx | 6 +- .../Topology/Sidebar/ComponentTeamLink.tsx | 4 +- .../Topology/Sidebar/ComponentTeams.tsx | 6 +- .../Topology/Sidebar/TopologyActionBar.tsx | 2 +- .../Sidebar/TopologyConfigChanges/index.tsx | 18 +- .../Topology/Sidebar/TopologyDetails.tsx | 10 +- .../Topology/Sidebar/TopologyInsights.tsx | 4 +- .../Topology/Sidebar/TopologySidebar.tsx | 2 +- .../Utils/TopologyConfigsActionsDropdown.tsx | 10 +- .../Topology/TopologyBreadcrumbs/index.tsx | 2 +- .../Topology/TopologyCard/CardMetrics.tsx | 8 +- .../Topology/TopologyCard/FormatProperty.tsx | 2 +- .../Topology/TopologyCard/Property.tsx | 4 +- .../TopologyConfigAnalysisLine.tsx | 4 +- .../TopologyCard/TopologyDropdownMenu.tsx | 2 +- .../TopologyCard/TopologySnapshotModal.tsx | 4 +- .../TopologyCard/Utils/FormatProperties.tsx | 10 +- .../Topology/TopologyCard/index.tsx | 28 +-- .../TopologyConfigLinkModal.tsx | 8 +- .../Topology/TopologyLink/index.tsx | 6 +- .../TopologyPage/TopologyFilterBar.tsx | 6 +- .../Topology/TopologyPopover/index.tsx | 2 +- .../TopologyPopover/topologyPreference.tsx | 14 +- .../Topology/TopologyPopover/topologySort.tsx | 24 +- src/components/Users/InviteUserForm.tsx | 18 +- src/components/Users/ManageUserRoles.tsx | 10 +- src/components/Users/UserList.tsx | 10 +- src/components/Utils/DisplayDetailsRow.tsx | 6 +- .../Utils/DisplayGroupedProperties.tsx | 6 +- src/components/VersionInfo/VersionInfo.tsx | 2 +- src/data/checks.json | 4 +- src/data/responders.json | 6 +- src/hooks/useFlanksourceUISnippet.tsx | 2 +- src/pages/LogsPage.tsx | 4 +- src/pages/Settings/ConnectionsPage.tsx | 4 +- src/pages/Settings/EventQueueStatus.tsx | 4 +- src/pages/Settings/FeatureFlagsPage.tsx | 2 +- src/pages/Settings/LogBackendsPage.tsx | 2 +- src/pages/TopologyPage.tsx | 8 +- src/pages/UsersPage.tsx | 2 +- src/pages/config/ConfigChangesPage.tsx | 2 +- src/pages/config/ConfigInsightsList.tsx | 2 +- src/pages/config/ConfigList.tsx | 2 +- .../details/ConfigDetailsChangesPage.tsx | 8 +- .../details/ConfigDetailsChecksPage.tsx | 4 +- .../details/ConfigDetailsInsightsPage.tsx | 4 +- .../config/details/ConfigDetailsPage.tsx | 6 +- .../config/details/ConfigDetailsPlaybooks.tsx | 4 +- .../ConfigDetailsRelationshipsPage.tsx | 4 +- src/pages/health.tsx | 8 +- src/pages/incident/IncidentDetails.tsx | 10 +- src/pages/incident/IncidentListPage.tsx | 8 +- src/pages/playbooks/PlaybookRunsDetails.tsx | 2 +- src/pages/playbooks/PlaybookRunsPage.tsx | 6 +- src/pages/playbooks/PlaybooksList.tsx | 2 +- src/types/utility.d.ts | 11 +- src/ui/AccordionBox/index.tsx | 4 +- src/ui/AlertDialog/AlertMessageDialog.tsx | 2 +- .../AlertDialog/ConfirmationPromptDialog.tsx | 4 +- .../AutoCompleteDropdown.tsx | 4 +- src/ui/Avatar/index.tsx | 5 +- src/ui/Badge/ClosableBadge.tsx | 2 +- src/ui/Badge/CountBadge.tsx | 2 +- src/ui/Badge/PillBadge.tsx | 2 +- .../BannerMessage/BannerMessage.stories.tsx | 2 +- src/ui/BannerMessage/index.tsx | 6 +- .../BreadcrumbNav/BreadcrumbNav.stories.tsx | 4 +- src/ui/BreadcrumbNav/index.tsx | 16 +- src/ui/Buttons/CardButton.tsx | 4 +- src/ui/Buttons/DialogButton.tsx | 4 +- src/ui/Buttons/IconButton.stories.tsx | 2 +- src/ui/Buttons/RefreshButton.tsx | 2 +- .../CheckboxCollapsibleGroup.stories.tsx | 2 +- .../CheckboxCollapsibleGroup.tsx | 4 +- src/ui/Code/CodeBlock.tsx | 4 +- src/ui/Code/CodeEditor.tsx | 6 +- src/ui/Code/JSONViewer.tsx | 8 +- src/ui/CollapsiblePanel/CollapsiblePanel.tsx | 12 +- src/ui/Comment/CommentInput.tsx | 2 +- src/ui/Comment/CommentText.tsx | 2 +- src/ui/DataTable/Cells/DateCells.tsx | 6 +- src/ui/DataTable/Cells/TagCell.tsx | 2 +- src/ui/DataTable/DataTableRow.tsx | 2 +- src/ui/DataTable/FilterByCellValue.tsx | 4 +- src/ui/DataTable/Pagination/Pagination.tsx | 16 +- src/ui/DataTable/index.tsx | 20 +- src/ui/Dates/DateTimeRangerPicker.tsx | 8 +- src/ui/DetailsTable/DetailsTable.tsx | 4 +- src/ui/Dropdowns/MultiSelectDropdown.tsx | 18 +- src/ui/Dropdowns/SelectDropdown.tsx | 4 +- src/ui/Dropdowns/TristateReactSelect.tsx | 20 +- src/ui/FormControls/EditableText.tsx | 12 +- src/ui/FormControls/Hint.tsx | 4 +- src/ui/FormControls/IndeterminateCheckbox.tsx | 2 +- src/ui/FormControls/OptionsList.tsx | 8 +- src/ui/FormControls/Switch.tsx | 4 +- src/ui/FormControls/TextArea.tsx | 2 +- src/ui/FormControls/TextInput.tsx | 2 +- src/ui/FormControls/TextInputClearable.tsx | 4 +- src/ui/FormControls/TextWithDivider.tsx | 4 +- src/ui/FormControls/Toggle.tsx | 6 +- src/ui/FormControls/TristateToggle.tsx | 16 +- .../Graphs/Controls/GraphEdgeTypeToggle.tsx | 2 +- src/ui/Graphs/RelationshipGraph.tsx | 4 +- src/ui/Icons/ChangeCount.stories.tsx | 5 +- src/ui/Icons/ChangeCount.tsx | 6 +- src/ui/Icons/CountBar.stories.tsx | 39 ++- src/ui/Icons/Icon.tsx | 4 +- src/ui/Icons/IconPicker.tsx | 4 +- src/ui/Icons/PlaybookStatusIcon.tsx | 16 +- src/ui/Layout/MinimalLayout.tsx | 8 +- src/ui/Layout/SearchLayout.tsx | 10 +- src/ui/Layout/SidebarLayout.tsx | 30 +-- src/ui/Loading/index.tsx | 6 +- src/ui/Menu/index.tsx | 6 +- src/ui/MenuBar/HelpDropdown.tsx | 8 +- src/ui/Modal/Modal.stories.tsx | 1 - src/ui/Modal/ModalTitleListItems.tsx | 2 +- src/ui/Modal/index.tsx | 12 +- src/ui/Popover/Popover.tsx | 4 +- src/ui/SkeletonLoader/CardsSkeletonLoader.tsx | 26 +- src/ui/SkeletonLoader/FormSkeletonLoader.tsx | 12 +- .../SkeletonLoader/FullPageSkeletonLoader.tsx | 48 ++-- .../HealthPageSkeletonLoader.tsx | 18 +- .../IncidentDetailsPageSkeletonLoader.tsx | 82 +++---- .../IncidentListSkeletonLoader.tsx | 12 +- src/ui/SkeletonLoader/TableSkeletonLoader.tsx | 8 +- src/ui/SkeletonLoader/TextSkeletonLoader.tsx | 2 +- .../TopologyCardSkeletonLoader.tsx | 18 +- .../FloatableSlidingSideBar.tsx | 8 +- src/ui/SlidingSideBar/SlidingSideBar.tsx | 8 +- src/ui/StepProgressBar.tsx | 28 +-- src/ui/Tabs/TabbedLinks.tsx | 8 +- src/ui/Tabs/Tabs.tsx | 8 +- src/ui/Tags/Chip.tsx | 2 +- src/ui/Tags/TagList.tsx | 6 +- src/ui/TimeRangePicker/RecentlyRanges.tsx | 6 +- src/ui/TimeRangePicker/TimePickerCalendar.tsx | 6 +- src/ui/TimeRangePicker/TimePickerInput.tsx | 10 +- src/ui/TimeRangePicker/TimeRangeList.tsx | 8 +- src/ui/TimeRangePicker/TimeRangePicker.tsx | 8 +- .../TimeRangePicker/TimeRangePickerBody.tsx | 20 +- src/ui/TimeRangePicker/helpers.ts | 4 +- src/ui/description/VerticalDescription.tsx | 4 +- src/ui/stats/Percentage.tsx | 4 +- src/ui/stats/ProgressBar.tsx | 2 +- 497 files changed, 2147 insertions(+), 2034 deletions(-) diff --git a/.prettierrc b/.prettierrc index aa88c7adca..2a2705b8ba 100644 --- a/.prettierrc +++ b/.prettierrc @@ -2,5 +2,6 @@ "semi": true, "singleQuote": false, "trailingComma": "none", - "endOfLine": "auto" + "endOfLine": "auto", + "plugins": ["prettier-plugin-tailwindcss"] } diff --git a/development.md b/development.md index f54a355201..bd5cb0d3a5 100644 --- a/development.md +++ b/development.md @@ -11,6 +11,7 @@ typescript: { check: false, } ``` + With CRA it's more complicated. ### css prop type @@ -21,11 +22,10 @@ For type information related to css prop types (see: [issue-comment](https://git "jsxImportSource": "@emotion/react", ``` - ## Packages ### @headlressui/react -We are using incsider (master) version of headlessui/react, for the `by` property on `Combobox`. Without `by`, selected item logic was difficult to achieve. +We are using incsider (master) version of headlessui/react, for the `by` property on `Combobox`. Without `by`, selected item logic was difficult to achieve. Be careful about updating this package. diff --git a/package-lock.json b/package-lock.json index 39f8e85676..fa71975f9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "@flanksource/flanksource-ui", - "version": "1.0.704", + "version": "1.0.709", "dependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@clerk/nextjs": "^5.2.2", @@ -140,7 +140,8 @@ "postcss": "^8", "postcss-loader": "^7.0.1", "postcss-nesting": "^12.1.2", - "prettier": "^2.3.2", + "prettier": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.5", "semantic-release": "^22.0.12", "source-map-explorer": "^2.5.2", "storybook": "^7.6.17", @@ -10150,6 +10151,21 @@ "node": ">=10" } }, + "node_modules/@storybook/cli/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@storybook/cli/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -10234,6 +10250,21 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/codemod/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@storybook/components": { "version": "7.6.17", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.17.tgz", @@ -27064,6 +27095,20 @@ "monaco-editor": ">=0.36" } }, + "node_modules/monaco-yaml/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -33404,19 +33449,94 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.5.tgz", + "integrity": "sha512-axfeOArc/RiGHjOIy9HytehlC0ZLeMaqY09mm8YCkMzznKiDkwFzOpBvtuhuv3xG5qB73+Mj7OCe2j/L1ryfuQ==", + "dev": true, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig-melody": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig-melody": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", diff --git a/package.json b/package.json index c380ace543..7374fc0161 100644 --- a/package.json +++ b/package.json @@ -195,7 +195,8 @@ "postcss": "^8", "postcss-loader": "^7.0.1", "postcss-nesting": "^12.1.2", - "prettier": "^2.3.2", + "prettier": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.5", "semantic-release": "^22.0.12", "source-map-explorer": "^2.5.2", "storybook": "^7.6.17", diff --git a/pages/_app.tsx b/pages/_app.tsx index dee2b52ab2..7c2ad56421 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -16,7 +16,7 @@ export default function MyApp({ Component, pageProps }: AppProps) {
{authProvider === "clerk" ? ( diff --git a/pages/global.css b/pages/global.css index e4714a0b9b..a42a5845b5 100644 --- a/pages/global.css +++ b/pages/global.css @@ -35,11 +35,11 @@ @layer components { .form-label { - @apply block text-sm font-semibold text-gray-700 mb-2; + @apply mb-2 block text-sm font-semibold text-gray-700; } .table-auto { - @apply shadow-lg bg-white rounded-md; + @apply rounded-md bg-white shadow-lg; } .table-auto tbody tr { @@ -48,7 +48,7 @@ .table-auto thead tr { border-bottom-width: 1px; - @apply border-gray-200 uppercase text-gray-600 font-bold text-sm items-center text-left px-4 py-1; + @apply items-center border-gray-200 px-4 py-1 text-left text-sm font-bold uppercase text-gray-600; } .table-auto thead tr th { @@ -70,11 +70,11 @@ } .btn-primary { - @apply inline-flex items-center justify-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-blue-600 hover:bg-blue-700 focus:outline-none; + @apply inline-flex items-center justify-center rounded-md border border-transparent bg-blue-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-blue-700 focus:outline-none; } .btn-icon { - @apply text-gray-600 hover:text-gray-900 inline-flex items-center justify-center px-0 pl-0 border-none text-sm font-medium bg-white focus:outline-none; + @apply inline-flex items-center justify-center border-none bg-white px-0 pl-0 text-sm font-medium text-gray-600 hover:text-gray-900 focus:outline-none; } .btn-icon > svg * { @@ -86,51 +86,51 @@ } .link { - @apply text-blue-500 hover:text-blue-800 visited:text-blue-500 cursor-pointer; + @apply cursor-pointer text-blue-500 visited:text-blue-500 hover:text-blue-800; } .btn-white { - @apply inline-flex items-center justify-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md shadow-sm text-gray-700 bg-white hover:bg-gray-100 focus:outline-none; + @apply inline-flex items-center justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-100 focus:outline-none; } .btn-danger { - @apply inline-flex items-center justify-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-red-600 hover:bg-red-700 focus:outline-none; + @apply inline-flex items-center justify-center rounded-md border border-transparent bg-red-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-red-700 focus:outline-none; } .btn-disabled { - @apply inline-flex items-center justify-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-gray-300; + @apply inline-flex items-center justify-center rounded-md border border-transparent bg-gray-300 px-4 py-2 text-sm font-medium text-white shadow-sm; } .btn-secondary { - @apply inline-flex items-center justify-center border-none shadow-sm font-medium rounded-md text-blue-500 bg-blue-100 hover:bg-blue-200 focus:ring-offset-white focus:ring-blue-500 focus:outline-none; + @apply inline-flex items-center justify-center rounded-md border-none bg-blue-100 font-medium text-blue-500 shadow-sm hover:bg-blue-200 focus:outline-none focus:ring-blue-500 focus:ring-offset-white; } .btn-secondary-disabled { - @apply inline-flex items-center justify-center border-none shadow-sm font-medium rounded-md text-blue-100 bg-gray-100 opacity-50 cursor-not-allowed; + @apply inline-flex cursor-not-allowed items-center justify-center rounded-md border-none bg-gray-100 font-medium text-blue-100 opacity-50 shadow-sm; } .btn-secondary-xs { - @apply px-2.5 py-1.5 rounded-sm text-xs leading-4 font-medium; + @apply rounded-sm px-2.5 py-1.5 text-xs font-medium leading-4; } .btn-secondary-sm { - @apply px-3.5 py-2.5 rounded-sm text-sm leading-4 font-medium; + @apply rounded-sm px-3.5 py-2.5 text-sm font-medium leading-4; } .btn-secondary-base { - @apply px-4 py-2 rounded text-sm leading-5 font-medium; + @apply rounded px-4 py-2 text-sm font-medium leading-5; } .btn-secondary-l { - @apply px-4 py-2 rounded-l text-base leading-6 font-medium; + @apply rounded-l px-4 py-2 text-base font-medium leading-6; } .btn-secondary-xl { - @apply px-6 py-3 rounded-xl text-base leading-6 font-medium; + @apply rounded-xl px-6 py-3 text-base font-medium leading-6; } .checkbox { - @apply h-4 w-4 border border-gray-300 rounded bg-white focus:outline-none transition duration-200 bg-no-repeat bg-center bg-contain float-left cursor-pointer; + @apply float-left h-4 w-4 cursor-pointer rounded border border-gray-300 bg-white bg-contain bg-center bg-no-repeat transition duration-200 focus:outline-none; } nav a.active { @@ -157,12 +157,12 @@ } .comfortable-table td { - @apply text-gray-900 text-sm py-2 px-4; + @apply px-4 py-2 text-sm text-gray-900; } .comfortable-table th { border-bottom-width: 1px; - @apply text-gray-500 text-xs leading-4 font-medium tracking-wider uppercase text-left px-6; + @apply px-6 text-left text-xs font-medium uppercase leading-4 tracking-wider text-gray-500; } .comfortable-table th:first-of-type { @@ -200,7 +200,7 @@ } .compact-table td { - @apply text-gray-900 text-sm font-medium py-2 px-1; + @apply px-1 py-2 text-sm font-medium text-gray-900; } .compact-table th { @@ -216,7 +216,7 @@ } .btn-round-primary { - @apply bg-blue-600 text-white inline-flex items-center justify-center p-1 border-transparent hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-blue-500; + @apply inline-flex items-center justify-center border-transparent bg-blue-600 p-1 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 focus:ring-offset-gray-100; } .btn-round-xs { @@ -256,22 +256,21 @@ } .menu-items { - @apply absolute bg-white focus:outline-none mt-2 opacity-100 origin-top-right right-0 ring-1 ring-black ring-opacity-5 rounded-md scale-100 shadow-md transform w-64 z-50; + @apply absolute right-0 z-50 mt-2 w-64 origin-top-right scale-100 transform rounded-md bg-white opacity-100 shadow-md ring-1 ring-black ring-opacity-5 focus:outline-none; } .menu-item { - @apply block w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-50 hover:text-gray-900 divide-gray-300 text-left; + @apply block w-full divide-gray-300 px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 hover:text-gray-900; } } - .admonition { - border-radius: 0.4rem; - box-shadow: 0 1px 2px 0 #0000001a; - padding: 0.7rem 0.7rem + border-radius: 0.4rem; + box-shadow: 0 1px 2px 0 #0000001a; + padding: 0.7rem 0.7rem; } -.admonition.info { +.admonition.info { background-color: #eef9fd; border: 0px solid #4cb3d4; border-left-width: 5px; @@ -279,8 +278,6 @@ .admonition.warning { border: 0px solid #e6a700; - background-color: #fff8e6; + background-color: #fff8e6; border-left-width: 5px; - - } - +} diff --git a/pages/login/[[...index]].tsx b/pages/login/[[...index]].tsx index 55e6a137d0..639413a338 100644 --- a/pages/login/[[...index]].tsx +++ b/pages/login/[[...index]].tsx @@ -9,7 +9,7 @@ export default function Signin() { return ( <> -
+
{authSystem === "kratos" && } {authSystem === "clerk" && } diff --git a/pages/profile-settings/[[...profile-settings]].tsx b/pages/profile-settings/[[...profile-settings]].tsx index 398f4ed6c6..7cddfd3b34 100644 --- a/pages/profile-settings/[[...profile-settings]].tsx +++ b/pages/profile-settings/[[...profile-settings]].tsx @@ -9,8 +9,8 @@ export default function ProfileSettings() { return ( <> -
-
+
+
{authSystem === "kratos" && } {authSystem === "clerk" && }
diff --git a/pages/registration/[[...registration]].tsx b/pages/registration/[[...registration]].tsx index de9fe393ce..f8fc8d5ec3 100644 --- a/pages/registration/[[...registration]].tsx +++ b/pages/registration/[[...registration]].tsx @@ -10,8 +10,8 @@ export default function Registration() { return ( <> -
-
+
+
{authSystem === "kratos" && } {authSystem === "clerk" && }
diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js index 51d85eeebf..f7c6e5f52f 100644 --- a/public/mockServiceWorker.js +++ b/public/mockServiceWorker.js @@ -8,121 +8,121 @@ * - Please do NOT serve this file on production. */ -const INTEGRITY_CHECKSUM = '3d6b9f06410d179a7f7404d4bf4c3c70' -const activeClientIds = new Set() +const INTEGRITY_CHECKSUM = "3d6b9f06410d179a7f7404d4bf4c3c70"; +const activeClientIds = new Set(); -self.addEventListener('install', function () { - self.skipWaiting() -}) +self.addEventListener("install", function () { + self.skipWaiting(); +}); -self.addEventListener('activate', function (event) { - event.waitUntil(self.clients.claim()) -}) +self.addEventListener("activate", function (event) { + event.waitUntil(self.clients.claim()); +}); -self.addEventListener('message', async function (event) { - const clientId = event.source.id +self.addEventListener("message", async function (event) { + const clientId = event.source.id; if (!clientId || !self.clients) { - return + return; } - const client = await self.clients.get(clientId) + const client = await self.clients.get(clientId); if (!client) { - return + return; } const allClients = await self.clients.matchAll({ - type: 'window', - }) + type: "window" + }); switch (event.data) { - case 'KEEPALIVE_REQUEST': { + case "KEEPALIVE_REQUEST": { sendToClient(client, { - type: 'KEEPALIVE_RESPONSE', - }) - break + type: "KEEPALIVE_RESPONSE" + }); + break; } - case 'INTEGRITY_CHECK_REQUEST': { + case "INTEGRITY_CHECK_REQUEST": { sendToClient(client, { - type: 'INTEGRITY_CHECK_RESPONSE', - payload: INTEGRITY_CHECKSUM, - }) - break + type: "INTEGRITY_CHECK_RESPONSE", + payload: INTEGRITY_CHECKSUM + }); + break; } - case 'MOCK_ACTIVATE': { - activeClientIds.add(clientId) + case "MOCK_ACTIVATE": { + activeClientIds.add(clientId); sendToClient(client, { - type: 'MOCKING_ENABLED', - payload: true, - }) - break + type: "MOCKING_ENABLED", + payload: true + }); + break; } - case 'MOCK_DEACTIVATE': { - activeClientIds.delete(clientId) - break + case "MOCK_DEACTIVATE": { + activeClientIds.delete(clientId); + break; } - case 'CLIENT_CLOSED': { - activeClientIds.delete(clientId) + case "CLIENT_CLOSED": { + activeClientIds.delete(clientId); const remainingClients = allClients.filter((client) => { - return client.id !== clientId - }) + return client.id !== clientId; + }); // Unregister itself when there are no more clients if (remainingClients.length === 0) { - self.registration.unregister() + self.registration.unregister(); } - break + break; } } -}) +}); -self.addEventListener('fetch', function (event) { - const { request } = event - const accept = request.headers.get('accept') || '' +self.addEventListener("fetch", function (event) { + const { request } = event; + const accept = request.headers.get("accept") || ""; // Bypass server-sent events. - if (accept.includes('text/event-stream')) { - return + if (accept.includes("text/event-stream")) { + return; } // Bypass navigation requests. - if (request.mode === 'navigate') { - return + if (request.mode === "navigate") { + return; } // Opening the DevTools triggers the "only-if-cached" request // that cannot be handled by the worker. Bypass such requests. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - return + if (request.cache === "only-if-cached" && request.mode !== "same-origin") { + return; } // Bypass all requests when there are no active clients. // Prevents the self-unregistered worked from handling requests // after it's been deleted (still remains active until the next reload). if (activeClientIds.size === 0) { - return + return; } // Generate unique request ID. - const requestId = Math.random().toString(16).slice(2) + const requestId = Math.random().toString(16).slice(2); event.respondWith( handleRequest(event, requestId).catch((error) => { - if (error.name === 'NetworkError') { + if (error.name === "NetworkError") { console.warn( '[MSW] Successfully emulated a network error for the "%s %s" request.', request.method, - request.url, - ) - return + request.url + ); + return; } // At this point, any exception indicates an issue with the original request/response. @@ -131,24 +131,24 @@ self.addEventListener('fetch', function (event) { [MSW] Caught an exception from the "%s %s" request (%s). This is probably not a problem with Mock Service Worker. There is likely an additional logging output above.`, request.method, request.url, - `${error.name}: ${error.message}`, - ) - }), - ) -}) + `${error.name}: ${error.message}` + ); + }) + ); +}); async function handleRequest(event, requestId) { - const client = await resolveMainClient(event) - const response = await getResponse(event, client, requestId) + const client = await resolveMainClient(event); + const response = await getResponse(event, client, requestId); // Send back the response clone for the "response:*" life-cycle events. // Ensure MSW is active and ready to handle the message, otherwise // this message will pend indefinitely. if (client && activeClientIds.has(client.id)) { - ;(async function () { - const clonedResponse = response.clone() + (async function () { + const clonedResponse = response.clone(); sendToClient(client, { - type: 'RESPONSE', + type: "RESPONSE", payload: { requestId, type: clonedResponse.type, @@ -158,13 +158,13 @@ async function handleRequest(event, requestId) { body: clonedResponse.body === null ? null : await clonedResponse.text(), headers: Object.fromEntries(clonedResponse.headers.entries()), - redirected: clonedResponse.redirected, - }, - }) - })() + redirected: clonedResponse.redirected + } + }); + })(); } - return response + return response; } // Resolve the main client for the given event. @@ -172,49 +172,49 @@ async function handleRequest(event, requestId) { // that registered the worker. It's with the latter the worker should // communicate with during the response resolving phase. async function resolveMainClient(event) { - const client = await self.clients.get(event.clientId) + const client = await self.clients.get(event.clientId); - if (client?.frameType === 'top-level') { - return client + if (client?.frameType === "top-level") { + return client; } const allClients = await self.clients.matchAll({ - type: 'window', - }) + type: "window" + }); return allClients .filter((client) => { // Get only those clients that are currently visible. - return client.visibilityState === 'visible' + return client.visibilityState === "visible"; }) .find((client) => { // Find the client ID that's recorded in the // set of clients that have registered the worker. - return activeClientIds.has(client.id) - }) + return activeClientIds.has(client.id); + }); } async function getResponse(event, client, requestId) { - const { request } = event - const clonedRequest = request.clone() + const { request } = event; + const clonedRequest = request.clone(); function passthrough() { // Clone the request because it might've been already used // (i.e. its body has been read and sent to the client). - const headers = Object.fromEntries(clonedRequest.headers.entries()) + const headers = Object.fromEntries(clonedRequest.headers.entries()); // Remove MSW-specific request headers so the bypassed requests // comply with the server's CORS preflight check. // Operate with the headers as an object because request "Headers" // are immutable. - delete headers['x-msw-bypass'] + delete headers["x-msw-bypass"]; - return fetch(clonedRequest, { headers }) + return fetch(clonedRequest, { headers }); } // Bypass mocking when the client is not active. if (!client) { - return passthrough() + return passthrough(); } // Bypass initial page load requests (i.e. static assets). @@ -222,18 +222,18 @@ async function getResponse(event, client, requestId) { // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet // and is not ready to handle requests. if (!activeClientIds.has(client.id)) { - return passthrough() + return passthrough(); } // Bypass requests with the explicit bypass header. // Such requests can be issued by "ctx.fetch()". - if (request.headers.get('x-msw-bypass') === 'true') { - return passthrough() + if (request.headers.get("x-msw-bypass") === "true") { + return passthrough(); } // Notify the client that a request has been intercepted. const clientMessage = await sendToClient(client, { - type: 'REQUEST', + type: "REQUEST", payload: { id: requestId, url: request.url, @@ -249,55 +249,55 @@ async function getResponse(event, client, requestId) { referrerPolicy: request.referrerPolicy, body: await request.text(), bodyUsed: request.bodyUsed, - keepalive: request.keepalive, - }, - }) + keepalive: request.keepalive + } + }); switch (clientMessage.type) { - case 'MOCK_RESPONSE': { - return respondWithMock(clientMessage.data) + case "MOCK_RESPONSE": { + return respondWithMock(clientMessage.data); } - case 'MOCK_NOT_FOUND': { - return passthrough() + case "MOCK_NOT_FOUND": { + return passthrough(); } - case 'NETWORK_ERROR': { - const { name, message } = clientMessage.data - const networkError = new Error(message) - networkError.name = name + case "NETWORK_ERROR": { + const { name, message } = clientMessage.data; + const networkError = new Error(message); + networkError.name = name; // Rejecting a "respondWith" promise emulates a network error. - throw networkError + throw networkError; } } - return passthrough() + return passthrough(); } function sendToClient(client, message) { return new Promise((resolve, reject) => { - const channel = new MessageChannel() + const channel = new MessageChannel(); channel.port1.onmessage = (event) => { if (event.data && event.data.error) { - return reject(event.data.error) + return reject(event.data.error); } - resolve(event.data) - } + resolve(event.data); + }; - client.postMessage(message, [channel.port2]) - }) + client.postMessage(message, [channel.port2]); + }); } function sleep(timeMs) { return new Promise((resolve) => { - setTimeout(resolve, timeMs) - }) + setTimeout(resolve, timeMs); + }); } async function respondWithMock(response) { - await sleep(response.delay) - return new Response(response.body, response) + await sleep(response.delay); + return new Response(response.body, response); } diff --git a/src/__tests__/Canary/Rows/lib.test.js b/src/__tests__/Canary/Rows/lib.test.js index 4f45bd7991..f560e96f47 100644 --- a/src/__tests__/Canary/Rows/lib.test.js +++ b/src/__tests__/Canary/Rows/lib.test.js @@ -31,7 +31,7 @@ describe("prepareRows", () => { rows.forEach((obj, i) => { const pivot = subsetOne[i].namespace !== "" - ? `piv0t-${subsetOne[i].namespace}` ?? "piv0t-other" + ? (`piv0t-${subsetOne[i].namespace}` ?? "piv0t-other") : "piv0t-other"; expect(obj).toEqual({ valueLookup: pivot, @@ -62,7 +62,7 @@ describe("prepareRows", () => { rows.forEach((obj, i) => { const pivot = subsetOne[i].namespace !== "" - ? `piv0t-${subsetOne[i].namespace}` ?? "piv0t-other" + ? (`piv0t-${subsetOne[i].namespace}` ?? "piv0t-other") : "piv0t-other"; expect(obj).toEqual({ valueLookup: pivot, @@ -135,11 +135,11 @@ describe("prepareRows", () => { expect(obj).toEqual(testRow); } else { const value = - obj?.pivoted === true ? obj[obj?.valueLookup] ?? null : obj; + obj?.pivoted === true ? (obj[obj?.valueLookup] ?? null) : obj; const sourceObj = subsetMap[value?.sourceName] ?? {}; const pivot = sourceObj.namespace !== "" - ? `piv0t-${sourceObj.namespace}` ?? "piv0t-other" + ? (`piv0t-${sourceObj.namespace}` ?? "piv0t-other") : "piv0t-other"; // eslint-disable-next-line jest/no-conditional-expect expect(obj).toEqual({ @@ -216,7 +216,7 @@ describe("prepareRows", () => { expect(obj).toEqual(testRow); } else { const value = - obj?.pivoted === true ? obj[obj?.valueLookup] ?? null : obj; + obj?.pivoted === true ? (obj[obj?.valueLookup] ?? null) : obj; const sourceObj = subsetMap[value?.sourceName] ?? {}; const isLabelsPlainObject = isPlainObject(sourceObj.labels); if ( diff --git a/src/api/services/configs.ts b/src/api/services/configs.ts index c94afb5624..18f7a15d19 100644 --- a/src/api/services/configs.ts +++ b/src/api/services/configs.ts @@ -19,9 +19,8 @@ export const getAllConfigs = () => resolve(ConfigDB.get(`/configs`)); export const getConfigsTags = async () => { - const res = await ConfigDB.get<{ key: string; value: string }[]>( - "/config_tags" - ); + const res = + await ConfigDB.get<{ key: string; value: string }[]>("/config_tags"); return res.data ?? []; }; @@ -292,11 +291,14 @@ export async function getConfigsChanges({ // we want to convert the tags array to a string of key=[1,2,3] const exclude = tags[0].exclude; // We can only exclude or include all tags, not a mix of both const tagList = Object.entries( - tags.reduce((acc, tag) => { - acc[tag.key] = acc[tag.key] || []; - acc[tag.key].push(tag.value); - return acc; - }, {} as Record) + tags.reduce( + (acc, tag) => { + acc[tag.key] = acc[tag.key] || []; + acc[tag.key].push(tag.value); + return acc; + }, + {} as Record + ) ).map(([key, values]) => { if (values.length > 1) { const equalSign = exclude ? "notin" : "in"; diff --git a/src/api/traits.ts b/src/api/traits.ts index 695d7e01ee..6c1ae39301 100644 --- a/src/api/traits.ts +++ b/src/api/traits.ts @@ -1,7 +1,7 @@ import { DateType } from "./types/common"; import { User } from "./types/users"; -export interface Timestamped extends CreatedAt, UpdatedAt, Deletable { } +export interface Timestamped extends CreatedAt, UpdatedAt, Deletable {} export interface CreatedAt { created_at?: DateType; diff --git a/src/components/Agents/Add/AddAgentForm.tsx b/src/components/Agents/Add/AddAgentForm.tsx index 4f6358c490..34c50387d2 100644 --- a/src/components/Agents/Add/AddAgentForm.tsx +++ b/src/components/Agents/Add/AddAgentForm.tsx @@ -108,14 +108,14 @@ export default function AgentForm({ > {({ handleSubmit, values }) => (
+
Kubernetes
} @@ -172,7 +172,7 @@ export default function AgentForm({
diff --git a/src/components/Agents/AgentNamesDropdown.tsx b/src/components/Agents/AgentNamesDropdown.tsx index 363d2431a3..014f48e22a 100644 --- a/src/components/Agents/AgentNamesDropdown.tsx +++ b/src/components/Agents/AgentNamesDropdown.tsx @@ -45,7 +45,7 @@ export function AgentNamesDropdown({ hideControlBorder defaultValue="All" prefix={ -
+
Agent:
} diff --git a/src/components/Agents/AgentPage.tsx b/src/components/Agents/AgentPage.tsx index 7379ba7866..053806f2a0 100644 --- a/src/components/Agents/AgentPage.tsx +++ b/src/components/Agents/AgentPage.tsx @@ -71,7 +71,7 @@ export default function AgentsPage() { contentClass="p-0 h-full" loading={isLoading || isRefetching} > -
+
+

Copy the following command to install agent

diff --git a/src/components/Agents/InstalAgentInstruction/FluxInstallAgent.tsx b/src/components/Agents/InstalAgentInstruction/FluxInstallAgent.tsx index 1ccea36d3d..fb24953045 100644 --- a/src/components/Agents/InstalAgentInstruction/FluxInstallAgent.tsx +++ b/src/components/Agents/InstalAgentInstruction/FluxInstallAgent.tsx @@ -94,7 +94,7 @@ export default function FluxInstallAgent({ }, [agentFormValues, baseUrl, generatedAgent, kubeOptions]); return ( -
+
); diff --git a/src/components/Agents/InstalAgentInstruction/InstallAgentModal.tsx b/src/components/Agents/InstalAgentInstruction/InstallAgentModal.tsx index ac8ba3e814..77e1dee82c 100644 --- a/src/components/Agents/InstalAgentInstruction/InstallAgentModal.tsx +++ b/src/components/Agents/InstalAgentInstruction/InstallAgentModal.tsx @@ -10,7 +10,7 @@ import FluxInstallAgent from "./FluxInstallAgent"; export function WarningBox() { return (
@@ -37,7 +37,7 @@ export function MoreInfoBox() { for more options on fine-tuning the import of Kubernetes resources.

-

Next Steps

+

Next Steps

  • @@ -106,11 +106,11 @@ export default function InstallAgentModal({ bodyClass="flex flex-col w-full flex-1 h-full overflow-y-auto" helpLink="/installation/saas/agent" > -
    -

    +
    +

    Install the Mission Control agent using instructions below

    -
    +
    setActiveTab(v as any)} diff --git a/src/components/Agents/List/AgentsTableColumns.tsx b/src/components/Agents/List/AgentsTableColumns.tsx index 1de78ad89f..e380812de7 100644 --- a/src/components/Agents/List/AgentsTableColumns.tsx +++ b/src/components/Agents/List/AgentsTableColumns.tsx @@ -47,7 +47,7 @@ export const agentsTableColumns: ColumnDef[] = [ const isOnline = now.diff(lastSeenDate, "seconds") < 61; return ( -
    +
    diff --git a/src/components/Authentication/Clerk/ClerkAuthErrors.tsx b/src/components/Authentication/Clerk/ClerkAuthErrors.tsx index 9aaae72740..7690eff98e 100644 --- a/src/components/Authentication/Clerk/ClerkAuthErrors.tsx +++ b/src/components/Authentication/Clerk/ClerkAuthErrors.tsx @@ -12,9 +12,9 @@ export default function ClerkAuthErrors() { return ( <> -
    -
    -
    +
    +
    +
    -
    -
    -
    +
    +
    +
    {code === "BAD_SESSION" ? ( signOut()} - className="block w-full py-2 px-4 text-left text-sm text-gray-700 hover:bg-gray-50 hover:text-gray-900 border-0 border-b border-gray-200" + className="block w-full border-0 border-b border-gray-200 px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 hover:text-gray-900" > Sign out diff --git a/src/components/Authentication/Clerk/ClerkOrgModal.tsx b/src/components/Authentication/Clerk/ClerkOrgModal.tsx index 7e00ec1b14..368512dff1 100644 --- a/src/components/Authentication/Clerk/ClerkOrgModal.tsx +++ b/src/components/Authentication/Clerk/ClerkOrgModal.tsx @@ -4,26 +4,26 @@ import { clerkUrls } from "./ClerkAuthSessionChecker"; export default function ClerkOrgModal() { return ( -
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    -
    -
    -
    +
    +
    +
    -
    +
    -
    +
    -
    +
    +
    +
    ); diff --git a/src/components/Authentication/Clerk/InstanceCreationInProgress.tsx b/src/components/Authentication/Clerk/InstanceCreationInProgress.tsx index cfb025ab37..530b230f74 100644 --- a/src/components/Authentication/Clerk/InstanceCreationInProgress.tsx +++ b/src/components/Authentication/Clerk/InstanceCreationInProgress.tsx @@ -5,21 +5,21 @@ import { clerkUrls } from "./ClerkAuthSessionChecker"; export default function InstanceCreationInProgress() { return ( -
    -
    -
    -
    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    -
    -
    -
    +
    +
    +
    -
    +
    -
    +
    diff --git a/src/components/Authentication/Kratos/KratosLogin.tsx b/src/components/Authentication/Kratos/KratosLogin.tsx index d9398d124a..9154c1ad3c 100644 --- a/src/components/Authentication/Kratos/KratosLogin.tsx +++ b/src/components/Authentication/Kratos/KratosLogin.tsx @@ -164,7 +164,7 @@ const KratosLogin = () => { width={75} alt="Mission Control" src="/images/logo.svg" - className="p-2 h-auto m-auto rounded-8px w-72" + className="m-auto h-auto w-72 rounded-8px p-2" />

    {(() => { @@ -176,7 +176,7 @@ const KratosLogin = () => { return "Sign In to your account"; })()}

    -
    +
    {loginSuccessful || credentials ? ( ) : ( @@ -185,7 +185,7 @@ const KratosLogin = () => {
    -
    Reset password
    +
    Reset password
    diff --git a/src/components/Authentication/Kratos/KratosLogoutButton.tsx b/src/components/Authentication/Kratos/KratosLogoutButton.tsx index 7cb3cb9d84..ab5829c4d3 100644 --- a/src/components/Authentication/Kratos/KratosLogoutButton.tsx +++ b/src/components/Authentication/Kratos/KratosLogoutButton.tsx @@ -12,7 +12,7 @@ export default function KratosLogoutButton() { diff --git a/src/components/Authentication/Kratos/KratosProfileSettings.tsx b/src/components/Authentication/Kratos/KratosProfileSettings.tsx index d2fd814c23..44ebaeb4f5 100644 --- a/src/components/Authentication/Kratos/KratosProfileSettings.tsx +++ b/src/components/Authentication/Kratos/KratosProfileSettings.tsx @@ -34,7 +34,7 @@ function SettingsCard({ } return ( -
    +
    {children}
    ); @@ -118,15 +118,15 @@ function KratosProfileSettings() { ); return ( -
    +
    {/* eslint-disable-next-line @next/next/no-img-element */} Mission Control
    - + Go back diff --git a/src/components/Authentication/Kratos/KratosRecovery.tsx b/src/components/Authentication/Kratos/KratosRecovery.tsx index fe6a3fad39..51be3b1775 100644 --- a/src/components/Authentication/Kratos/KratosRecovery.tsx +++ b/src/components/Authentication/Kratos/KratosRecovery.tsx @@ -84,19 +84,19 @@ function KratosRecovery() { return ( <> -
    -
    +
    +
    Mission Control

    Recover account

    -
    +
    diff --git a/src/components/Authentication/Kratos/KratosRegistration.tsx b/src/components/Authentication/Kratos/KratosRegistration.tsx index ee60b32e9c..bcfb2d327c 100644 --- a/src/components/Authentication/Kratos/KratosRegistration.tsx +++ b/src/components/Authentication/Kratos/KratosRegistration.tsx @@ -92,12 +92,12 @@ export default function KratosRegistration() { Mission Control

    Create account

    -
    +
    @@ -105,7 +105,7 @@ export default function KratosRegistration() { Sign in diff --git a/src/components/Authentication/Kratos/KratosUserProfileDropdown.tsx b/src/components/Authentication/Kratos/KratosUserProfileDropdown.tsx index feb1c51931..081fe09e86 100644 --- a/src/components/Authentication/Kratos/KratosUserProfileDropdown.tsx +++ b/src/components/Authentication/Kratos/KratosUserProfileDropdown.tsx @@ -12,9 +12,9 @@ export function KratosUserProfileDropdown() { const userNavigation = [{ name: "Your Profile", href: "/profile-settings" }]; return ( - +
    - + {user?.avatar ? ( // eslint-disable-next-line @next/next/no-img-element - + - + Hi {user?.name} @@ -50,7 +50,7 @@ export function KratosUserProfileDropdown() { {item.name} diff --git a/src/components/Authentication/Kratos/ory/ui/Flow.tsx b/src/components/Authentication/Kratos/ory/ui/Flow.tsx index 486c253ff9..2a9dd04f5d 100644 --- a/src/components/Authentication/Kratos/ory/ui/Flow.tsx +++ b/src/components/Authentication/Kratos/ory/ui/Flow.tsx @@ -209,7 +209,7 @@ export class Flow extends Component, State> { nodes: nodes, groups: ["oidc"], withoutDefaultGroup: true - }).length > 0 &&
    } + }).length > 0 &&
    }
    diff --git a/src/components/Authentication/Kratos/ory/ui/NodeInputDefault.tsx b/src/components/Authentication/Kratos/ory/ui/NodeInputDefault.tsx index 88c19e6d4a..7d5fa7f7db 100644 --- a/src/components/Authentication/Kratos/ory/ui/NodeInputDefault.tsx +++ b/src/components/Authentication/Kratos/ory/ui/NodeInputDefault.tsx @@ -41,7 +41,7 @@ export function NodeInputDefault(props: NodeInputProps) { disabled={attributes.disabled || disabled} /> {!!node.messages.length && ( -
    +
    {node.messages.map(({ text, id }, k) => ( {text} diff --git a/src/components/Authentication/Kratos/ory/ui/NodeInputSubmit.tsx b/src/components/Authentication/Kratos/ory/ui/NodeInputSubmit.tsx index ec5dbec950..979839fd19 100644 --- a/src/components/Authentication/Kratos/ory/ui/NodeInputSubmit.tsx +++ b/src/components/Authentication/Kratos/ory/ui/NodeInputSubmit.tsx @@ -12,7 +12,7 @@ export function NodeInputSubmit({ }: NodeInputProps) { return ( diff --git a/src/components/Canary/CanaryCards.tsx b/src/components/Canary/CanaryCards.tsx index f89a120d78..dd609905ba 100644 --- a/src/components/Canary/CanaryCards.tsx +++ b/src/components/Canary/CanaryCards.tsx @@ -10,19 +10,19 @@ type CanaryCardProps = { export function CanaryCards({ checks, onClick }: CanaryCardProps) { return ( -
      +
        {checks.map((check) => (