/**
 * Settings notice component.
 *
 * Site Kit by Google, Copyright 2021 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * External dependencies
 */
import PropTypes from 'prop-types';

/**
 * Internal dependencies
 */
import SettingsNoticeSingleRow from './SettingsNoticeSingleRow';
import SettingsNoticeMultiRow from './SettingsNoticeMultiRow';
import { TYPE_INFO } from './utils';

export default function SettingsNotice( props ) {
	const { children, type } = props;

	return (
		<div className={ `googlesitekit-settings-notice googlesitekit-settings-notice--${ type }` } >
			{ !! children && <SettingsNoticeMultiRow { ...props } /> }
			{ ! children && (
				<SettingsNoticeSingleRow { ...props } />
			) }
		</div>
	);
}

SettingsNotice.propTypes = {
	children: PropTypes.node,
	notice: PropTypes.node.isRequired,
	type: PropTypes.oneOf( [ 'warning', 'info', 'suggestion' ] ),
	Icon: PropTypes.elementType,
	LearnMore: PropTypes.elementType,
};

SettingsNotice.defaultProps = {
	type: TYPE_INFO,
};

/**
 * Settings notice component.
 *
 * Site Kit by Google, Copyright 2021 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * External dependencies
 */
import PropTypes from 'prop-types';

/**
 * Internal dependencies
 */
import SettingsNoticeSingleRow from './SettingsNoticeSingleRow';
import SettingsNoticeMultiRow from './SettingsNoticeMultiRow';
import { TYPE_INFO } from './utils';

export default function SettingsNotice( props ) {
	const { children, type } = props;

	return (
		<div className={ `googlesitekit-settings-notice googlesitekit-settings-notice--${ type }` } >
			{ !! children && <SettingsNoticeMultiRow { ...props } /> }
			{ ! children && (
				<SettingsNoticeSingleRow { ...props } />
			) }
		</div>
	);
}

// Extra props are used in child components
SettingsNotice.propTypes = {
	children: PropTypes.node,
	notice: PropTypes.node.isRequired,
	type: PropTypes.oneOf( [ 'warning', 'info', 'suggestion' ] ),
	Icon: PropTypes.elementType,
	LearnMore: PropTypes.elementType,
};

SettingsNotice.defaultProps = {
	type: TYPE_INFO,
};

Add comment for extra props.