/* GENERATED FILE */
import React, { forwardRef } from 'react'

import type {
  IconWeight,
  IconProps,
  PaintFunction,
  Icon,
  RenderFunction,
} from '../lib'
import { renderPathForWeight, useIconContext, IconBase } from '../lib'

export const IconGear: Icon = forwardRef<SVGSVGElement, IconProps>(
  (props, ref) => {
    let path: PaintFunction

    switch (props.weight) {
      case 'fill':
        path = () => (
          <>
            <path d="M234.80957,150.40576l-14.87793-19.835c.02246-1.75244.0044-3.62207-.02148-5.11377l14.89257-19.856a8.0008,8.0008,0,0,0,1.32422-6.88476,111.46438,111.46438,0,0,0-10.95068-26.46094,7.99971,7.99971,0,0,0-5.80615-3.93457l-24.48731-3.49707q-1.7981-1.90282-3.70312-3.70361l-3.4961-24.47657a8.00016,8.00016,0,0,0-3.93261-5.80419,111.45413,111.45413,0,0,0-26.45313-10.96729,8.00181,8.00181,0,0,0-6.88818,1.32275L130.62207,36.0376c-1.74414-.04834-3.49316-.04834-5.2373,0l-19.7793-14.83545a8.003,8.003,0,0,0-6.88526-1.32373A111.45813,111.45813,0,0,0,72.25928,30.82861a8.00164,8.00164,0,0,0-3.93506,5.80616L64.82764,61.12158q-1.90211,1.79809-3.70362,3.7041L36.64746,68.32129a7.99959,7.99959,0,0,0-5.8042,3.93213A111.45433,111.45433,0,0,0,19.876,98.70752a7.99838,7.99838,0,0,0,1.32324,6.88769l14.87793,19.835c-.02246,1.75244-.0044,3.62207.02148,5.11377l-14.89258,19.856a8.00086,8.00086,0,0,0-1.32421,6.88477,111.46455,111.46455,0,0,0,10.95068,26.46094,7.99971,7.99971,0,0,0,5.80615,3.93457L61.126,191.17725q1.7981,1.90283,3.70312,3.70361l3.4961,24.47656a8.00016,8.00016,0,0,0,3.93261,5.8042,111.45413,111.45413,0,0,0,26.45313,10.96729,7.9997,7.9997,0,0,0,6.88818-1.32276l19.7876-14.84277c1.74414.04932,3.49316.04932,5.2373,0l19.7793,14.83545a7.99882,7.99882,0,0,0,6.88525,1.32373,111.45806,111.45806,0,0,0,26.46094-10.9502,8.00161,8.00161,0,0,0,3.93506-5.80615l3.50488-24.54541c1.25489-1.22363,2.56348-2.5581,3.60059-3.63135l24.57129-3.50976a7.99959,7.99959,0,0,0,5.8042-3.93213,111.45433,111.45433,0,0,0,10.96728-26.4541A7.9984,7.9984,0,0,0,234.80957,150.40576ZM128.00391,172a44,44,0,1,1,44-44A44.04978,44.04978,0,0,1,128.00391,172Z" />
          </>
        )
        break

      default:
        path = () => (
          <>
            <circle
              cx="128"
              cy="128"
              r="48"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <path
              d="M183.66087,65.08649a84.52233,84.52233,0,0,1,7.2522,7.2521l27.32234,3.90156A103.36981,103.36981,0,0,1,228.39912,100.801L211.84465,122.8728s.20824,6.83942.00065,10.2547l16.561,22.07863a103.36931,103.36931,0,0,1-10.18033,24.554l-27.31288,3.90133s-4.689,4.98345-7.25071,7.25163l-3.90155,27.32234A103.36971,103.36971,0,0,1,155.2,228.39912l-22.07039-16.55388a84.521,84.521,0,0,1-10.25609.00006l-22.07863,16.561a103.36914,103.36914,0,0,1-24.554-10.18033l-3.90076-27.31148a84.521,84.521,0,0,1-7.2522-7.25211l-27.32235-3.90155A103.37009,103.37009,0,0,1,27.60186,155.2l16.55447-22.07178s-.20824-6.83942-.00066-10.2547l-16.561-22.07863A103.37,103.37,0,0,1,37.775,76.24087l27.31149-3.90076a84.52233,84.52233,0,0,1,7.2521-7.2522l3.90156-27.32235A103.37019,103.37019,0,0,1,100.801,27.60186l22.0704,16.55388a84.523,84.523,0,0,1,10.25609-.00007l22.07863-16.561a103.37014,103.37014,0,0,1,24.554,10.18033Z"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
          </>
        )
        break
    }

    const renderPath: RenderFunction = (weight: IconWeight) =>
      renderPathForWeight(weight, path)

    const { useIconProps } = useIconContext()
    const parsedProps = useIconProps(props)

    return <IconBase ref={ref} {...parsedProps} renderPath={renderPath} />
  }
)
