diff --git a/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/index.tsx b/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/index.tsx index d7f3eeca3da4..ee7fd9582ce5 100644 --- a/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/index.tsx +++ b/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/index.tsx @@ -5,8 +5,8 @@ * 2.0. */ -import { NameLogs } from './name_logs'; import { ConfigureLogs } from './configure_logs'; +import { SelectLogs } from './select_logs'; import { InstallElasticAgent } from './install_elastic_agent'; import { createWizardContext } from '../../../../context/create_wizard_context'; import { ImportData } from './import_data'; @@ -45,9 +45,9 @@ const initialState: WizardState = { const { Provider, Step, useWizard } = createWizardContext({ initialState, - initialStep: 'nameLogs', + initialStep: 'selectLogs', steps: { - nameLogs: NameLogs, + selectLogs: SelectLogs, configureLogs: ConfigureLogs, installElasticAgent: InstallElasticAgent, importData: ImportData, diff --git a/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/select_logs.tsx b/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/select_logs.tsx new file mode 100644 index 000000000000..214f39c11590 --- /dev/null +++ b/x-pack/plugins/observability_onboarding/public/components/app/logs_onboarding/wizard/select_logs.tsx @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { PropsWithChildren } from 'react'; +import { + EuiTitle, + EuiLink, + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiSpacer, + EuiCard, + EuiIcon, + EuiIconProps, +} from '@elastic/eui'; +import { + StepPanel, + StepPanelContent, + StepPanelFooter, +} from '../../../shared/step_panel'; +import { useWizard } from '.'; +import { useKibanaNavigation } from '../../../../hooks/use_kibana_navigation'; + +export function SelectLogs() { + const navigateToKibanaUrl = useKibanaNavigation(); + const { goToStep, getState, setState } = useWizard(); + + function onBack() { + navigateToKibanaUrl('/app/observabilityOnboarding'); + } + + return ( + + + + + + {}} + isSelected={false} + description="Monitor servers, personal computers, and more by collecting logs from your machines" + /> + + + { + setState({ ...getState(), logsType: 'log-file' }); + goToStep('configureLogs'); + }} + isSelected={false} + description="Example of a card’s description. Stick to one or two sentences." + /> + + + + + + + + {}} + isSelected={false} + description="Collect raw log data from listening ports." + /> + + + {}} + isSelected={false} + description="Collect JSON data from listening HTTP port." + /> + + + + + + + Explore other integrations + + + + + + {}} + isSelected={false} + description="Upload data from a CSV, TSV, JSON or other log file type for analysis." + /> + + + {}} + isSelected={false} + description="Use your own shipper for your logs data collection by generating your own API key." + /> + + + + + + Back + , + <>, + ]} + /> + + ); +} + +function LogsTypeSection({ + title, + children, +}: PropsWithChildren<{ title: string }>) { + return ( + <> + +

{title}

+
+ + {children} + + ); +} + +function OptionCard({ + title, + iconType, + onClick, + isSelected, + description, +}: { + title: string; + iconType: EuiIconProps['type']; + onClick: () => void; + isSelected: boolean; + description: string; +}) { + return ( + } + title={title} + titleSize="xs" + paddingSize="m" + onClick={onClick} + hasBorder={true} + display={isSelected ? 'primary' : undefined} + description={description} + /> + ); +}