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

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

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

    switch (props.weight) {
      case 'fill':
        path = () => (
          <>
            <path d="M160,112a24,24,0,1,1-24-24A24.0275,24.0275,0,0,1,160,112Zm64-72V216a16.01833,16.01833,0,0,1-16,16H64a16.01833,16.01833,0,0,1-16-16V196H32a8,8,0,0,1,0-16H48V156H32a8,8,0,0,1,0-16H48V116H32a8,8,0,0,1,0-16H48V76H32a8,8,0,0,1,0-16H48V40A16.01833,16.01833,0,0,1,64,24H208A16.01833,16.01833,0,0,1,224,40ZM190.397,163.19141a67.80622,67.80622,0,0,0-27.42627-21.68067,40,40,0,1,0-53.94153-.00012,67.80949,67.80949,0,0,0-27.42858,21.68274,8,8,0,1,0,12.793,9.60937,52.0088,52.0088,0,0,1,83.21143-.00195,7.99961,7.99961,0,1,0,12.792-9.60937Z" />
          </>
        )
        break

      default:
        path = () => (
          <>
            <circle
              cx="136"
              cy="112"
              r="32"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="32"
              y1="108.00005"
              x2="56"
              y2="108.00005"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="32"
              y1="68.00005"
              x2="56"
              y2="68.00005"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="32"
              y1="148.00005"
              x2="56"
              y2="148.00005"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <line
              x1="32"
              y1="188.00005"
              x2="56"
              y2="188.00005"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <path
              d="M87.99717,167.99792a60.00878,60.00878,0,0,1,96.004-.00225"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
            <rect
              x="40"
              y="48"
              width="192"
              height="160"
              rx="8"
              transform="translate(264 -8) rotate(90)"
              strokeWidth="18"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              fill="none"
            />
          </>
        )
        break
    }

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

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

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