import React from 'react';
import { Group, Stack } from '@mantine/core';
import { RiInformationLine } from 'react-icons/ri';
import { Text, Tooltip } from '/@/renderer/components';

interface SettingsOptionProps {
  control: React.ReactNode;
  description?: React.ReactNode | string;
  note?: string;
  title: React.ReactNode | string;
}

export const SettingsOptions = ({ title, description, control, note }: SettingsOptionProps) => {
  return (
    <>
      <Group
        noWrap
        position="apart"
        sx={{ alignItems: 'center' }}
      >
        <Stack
          spacing="xs"
          sx={{
            alignSelf: 'flex-start',
            display: 'flex',
            maxWidth: '50%',
          }}
        >
          <Group>
            <Text
              $noSelect
              size="sm"
            >
              {title}
            </Text>
            {note && (
              <Tooltip
                label={note}
                openDelay={0}
              >
                <Group>
                  <RiInformationLine size={15} />
                </Group>
              </Tooltip>
            )}
          </Group>
          {React.isValidElement(description) ? (
            description
          ) : (
            <Text
              $noSelect
              $secondary
              size="sm"
            >
              {description}
            </Text>
          )}
        </Stack>
        <Group position="right">{control}</Group>
      </Group>
    </>
  );
};

SettingsOptions.defaultProps = {
  description: undefined,
  note: undefined,
};
