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

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

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

    switch (props.weight) {
      case 'fill':
        path = () => (
          <>
            <path d="M156,72a75.81,75.81,0,0,0-20.23584,2.73853,55.73208,55.73208,0,0,0-9.41089-11.57911l9.48413-13.54419A8.00015,8.00015,0,0,0,122.731,40.4375l-9.48413,13.54419A55.868,55.868,0,0,0,86.251,48.01953L83.37451,31.70605A7.99987,7.99987,0,1,0,67.61768,34.4834l2.87475,16.30371A55.397,55.397,0,0,0,47.17651,65.635L33.61426,56.13867A8.00027,8.00027,0,0,0,24.4375,69.24609l13.55981,9.49463a55.39532,55.39532,0,0,0-5.98669,26.98535l-16.305,2.87452a8.00079,8.00079,0,0,0,1.37988,15.87988,8.12832,8.12832,0,0,0,1.39844-.12207l16.31079-2.87573a55.95086,55.95086,0,0,0,5.85571,12.42749A51.96741,51.96741,0,0,0,76,224h80a76,76,0,0,0,0-152ZM48.62964,111.09448c-.00879-.05713-.01123-.11352-.02124-.17065-.011-.0625-.02954-.12158-.042-.18335A39.72794,39.72794,0,0,1,55.12793,81.186c.0354-.04834.07642-.08985.11084-.13916.03857-.05518.06909-.11329.106-.16895a39.72789,39.72789,0,0,1,25.48584-16.2395c.07422-.011.148-.01612.22216-.029.06983-.01221.136-.033.20508-.04688a39.95749,39.95749,0,0,1,29.17383,6.28857c.16138.13282.32336.26514.49756.38721.12671.08887.26294.15161.39282.23193a39.78776,39.78776,0,0,1,9.26489,9.31006,76.44756,76.44756,0,0,0-35.5498,40.00293A52.31117,52.31117,0,0,0,76,120a51.67572,51.67572,0,0,0-22.07556,4.93262A40.03451,40.03451,0,0,1,48.62964,111.09448Z" />
          </>
        )
        break

      default:
        path = () => (
          <>
            <path
              d="M88,148a68,68,0,1,1,68,68H76a44,44,0,1,1,14.30583-85.62208"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="79.6638"
              y1="56.73022"
              x2="75.49625"
              y2="33.09483"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="48.68557"
              y1="76.45789"
              x2="29.02592"
              y2="62.69205"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="40.73022"
              y1="112.31237"
              x2="17.09483"
              y2="116.47993"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="115.51829"
              y1="64.68557"
              x2="129.28412"
              y2="45.02592"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <path
              d="M51.64386,135.35374A48.008,48.008,0,1,1,131.83232,84.4235"
              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} />
  }
)
