import { forwardRef, useMemo } from 'react';
import { IconProps } from './types';

export const IconSettings24 = forwardRef<SVGSVGElement, IconProps>(
    ({ color = 'currentColor', title, ...props }, svgRef) => {
        const titleId = useMemo(
            () =>
                title
                    ? 'title-' + Math.random().toString(36).substr(2, 9)
                    : undefined,
            [title]
        );
        return (
            <svg
                xmlns="http://www.w3.org/2000/svg"
                width={24}
                height={24}
                fill="none"
                viewBox="0 0 24 24"
                aria-hidden={!title}
                ref={svgRef}
                aria-labelledby={titleId}
                {...props}
            >
                {title ? <title id={titleId}>{title}</title> : null}
                <g fill={color} fillRule="evenodd" clipRule="evenodd">
                    <path d="M12 8a4 4 0 100 8 4 4 0 000-8zm-2.5 4a2.5 2.5 0 115 0 2.5 2.5 0 01-5 0z" />
                    <path d="M11.5 1a2.25 2.25 0 00-2.25 2.25v.178c-.474.152-.93.342-1.366.567l-.127-.127a2.25 2.25 0 00-3.182 0l-.707.707a2.25 2.25 0 000 3.182l.127.127a8.95 8.95 0 00-.567 1.366H3.25A2.25 2.25 0 001 11.5v1a2.25 2.25 0 002.25 2.25h.178c.152.474.342.93.567 1.366l-.127.127a2.25 2.25 0 000 3.182l.707.707a2.25 2.25 0 003.182 0l.127-.127c.435.225.892.415 1.366.567v.178A2.25 2.25 0 0011.5 23h1a2.25 2.25 0 002.25-2.25v-.178c.474-.152.93-.342 1.366-.567l.127.127a2.25 2.25 0 003.182 0l.707-.707a2.25 2.25 0 000-3.182l-.127-.127a8.94 8.94 0 00.567-1.366h.178A2.25 2.25 0 0023 12.5v-1a2.25 2.25 0 00-2.25-2.25h-.178a8.952 8.952 0 00-.567-1.366l.127-.127a2.25 2.25 0 000-3.182l-.707-.707a2.25 2.25 0 00-3.182 0l-.127.127a8.95 8.95 0 00-1.366-.567V3.25A2.25 2.25 0 0012.5 1h-1zm-.75 2.25a.75.75 0 01.75-.75h1a.75.75 0 01.75.75v.744a.75.75 0 00.569.728 7.45 7.45 0 012.04.846.75.75 0 00.918-.112l.526-.527a.75.75 0 011.06 0l.708.707a.75.75 0 010 1.06l-.527.527a.75.75 0 00-.112.917c.377.627.665 1.313.846 2.041a.75.75 0 00.728.569h.744a.75.75 0 01.75.75v1a.75.75 0 01-.75.75h-.744a.75.75 0 00-.728.569 7.449 7.449 0 01-.846 2.04.75.75 0 00.112.918l.527.526a.75.75 0 010 1.06l-.707.708a.75.75 0 01-1.06 0l-.527-.527a.75.75 0 00-.917-.112 7.446 7.446 0 01-2.041.846.75.75 0 00-.569.728v.744a.75.75 0 01-.75.75h-1a.75.75 0 01-.75-.75v-.744a.75.75 0 00-.569-.728 7.447 7.447 0 01-2.04-.846.75.75 0 00-.918.112l-.526.527a.75.75 0 01-1.061 0l-.707-.707a.75.75 0 010-1.06l.527-.527a.75.75 0 00.112-.917 7.45 7.45 0 01-.846-2.041.75.75 0 00-.728-.569H3.25a.75.75 0 01-.75-.75v-1a.75.75 0 01.75-.75h.744a.75.75 0 00.728-.569c.181-.728.469-1.414.846-2.04a.75.75 0 00-.112-.918l-.527-.526a.75.75 0 010-1.061l.707-.707a.75.75 0 011.06 0l.527.527a.75.75 0 00.917.112 7.451 7.451 0 012.041-.846.75.75 0 00.569-.728V3.25z" />
                </g>
            </svg>
        );
    }
);
