defmodule OliWeb.Icons do
  @moduledoc """
  A collection of icons used in the OliWeb application.

  In dev mode you can see all icons available by visiting /dev/icons
  """

  use Phoenix.Component

  ########## Studend Delivery Icons (start) ##########

  def no_icon(assigns) do
    ~H"""
    <div role="no icon" class="flex justify-center items-center w-[22px] h-[22px] shrink-0"></div>
    """
  end

  attr :color, :string, default: "text-[#0FB863]"

  def score_as_you_go(%{available: false} = assigns) do
    star(assigns)
  end

  def score_as_you_go(assigns) do
    ~H"""
    <svg
      width="16"
      height="16"
      viewBox="0 0 16 16"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={"icon inline-block #{@color}"}
    >
      <path
        d="M6.87266 13.9997C6.25586 13.8572 5.66348 13.6215 5.11521 13.3005M9.70724 1.33301C11.1161 1.66066 12.3741 2.46567 13.275 3.61624C14.176 4.76682 14.6667 6.19478 14.6667 7.66633C14.6667 9.13789 14.176 10.5659 13.275 11.7164C12.3741 12.867 11.1161 13.672 9.70724 13.9997M3.03106 11.3414C2.64449 10.7695 2.3509 10.138 2.16155 9.47102M2 6.58396C2.11338 5.89846 2.33165 5.24903 2.63778 4.65373L2.75754 4.43364M4.68079 2.31147C5.34384 1.8467 6.08768 1.51464 6.87263 1.33301"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M6.81416 5.79777L4.33305 6.1575L4.28911 6.16644C4.22258 6.1841 4.16194 6.2191 4.11337 6.26786C4.06479 6.31663 4.03003 6.37741 4.01263 6.444C3.99523 6.51059 3.99582 6.58061 4.01433 6.6469C4.03284 6.71319 4.06861 6.77339 4.118 6.82133L5.91544 8.57094L5.49155 11.0423L5.4865 11.0851C5.48242 11.1539 5.49671 11.2226 5.52789 11.284C5.55908 11.3455 5.60603 11.3976 5.66396 11.4349C5.72189 11.4723 5.7887 11.4936 5.85755 11.4966C5.92641 11.4996 5.99484 11.4843 6.05583 11.4522L8.27483 10.2856L10.4888 11.4522L10.5277 11.4701C10.5919 11.4954 10.6616 11.5031 10.7298 11.4926C10.798 11.482 10.8621 11.4535 10.9156 11.4099C10.9691 11.3664 11.0101 11.3094 11.0343 11.2448C11.0585 11.1802 11.0651 11.1103 11.0534 11.0423L10.6292 8.57094L12.4274 6.82094L12.4577 6.78789C12.5011 6.73452 12.5295 6.67062 12.5401 6.60269C12.5507 6.53477 12.5431 6.46525 12.518 6.40122C12.493 6.3372 12.4515 6.28094 12.3976 6.2382C12.3438 6.19545 12.2796 6.16774 12.2116 6.15789L9.73044 5.79777L8.62133 3.55C8.58924 3.48487 8.53955 3.43003 8.4779 3.39168C8.41625 3.35333 8.3451 3.33301 8.2725 3.33301C8.19989 3.33301 8.12874 3.35333 8.06709 3.39168C8.00544 3.43003 7.95576 3.48487 7.92366 3.55L6.81416 5.79777Z"
        fill="currentColor"
      />
    </svg>
    """
  end

  attr :fill_class, :string, default: "fill-[#FF9040]"

  def flag(assigns) do
    ~H"""
    <svg
      role="flag icon"
      xmlns="http://www.w3.org/2000/svg"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill="currentColor"
      class="icon icon-tabler icons-tabler-filled icon-tabler-flag-3"
    >
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path
        d="M19 4c.852 0 1.297 .986 .783 1.623l-.076 .084l-3.792 3.793l3.792 3.793c.603 .602 .22 1.614 -.593 1.701l-.114 .006h-13v6a1 1 0 0 1 -.883 .993l-.117 .007a1 1 0 0 1 -.993 -.883l-.007 -.117v-16a1 1 0 0 1 .883 -.993l.117 -.007h14z"
        class={@fill_class}
      />
    </svg>
    """
  end

  def info(assigns) do
    ~H"""
    <svg
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="pointer-events-none hover:pointer-events-none"
    >
      <path
        class="dark:stroke-white stroke-black"
        d="M9 6.5H9.00833M8.16675 9H9.00008V12.3333H9.83342M1.5 9C1.5 9.98491 1.69399 10.9602 2.0709 11.8701C2.44781 12.7801 3.00026 13.6069 3.6967 14.3033C4.39314 14.9997 5.21993 15.5522 6.12987 15.9291C7.03982 16.306 8.01509 16.5 9 16.5C9.98491 16.5 10.9602 16.306 11.8701 15.9291C12.7801 15.5522 13.6069 14.9997 14.3033 14.3033C14.9997 13.6069 15.5522 12.7801 15.9291 11.8701C16.306 10.9602 16.5 9.98491 16.5 9C16.5 7.01088 15.7098 5.10322 14.3033 3.6967C12.8968 2.29018 10.9891 1.5 9 1.5C7.01088 1.5 5.10322 2.29018 3.6967 3.6967C2.29018 5.10322 1.5 7.01088 1.5 9Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def finish_quiz_flag(assigns) do
    ~H"""
    <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M10.7601 2C11.0051 2.00003 11.2415 2.08996 11.4245 2.25272C11.6075 2.41547 11.7245 2.63975 11.7531 2.883L11.7601 3V3.35L20.1661 7.086C20.9181 7.421 20.9561 8.451 20.2791 8.856L20.1661 8.914L11.7601 12.649V20H12.7601C13.015 20.0003 13.2602 20.0979 13.4455 20.2728C13.6308 20.4478 13.7424 20.687 13.7573 20.9414C13.7722 21.1958 13.6894 21.4464 13.5259 21.6418C13.3623 21.8373 13.1302 21.9629 12.8771 21.993L12.7601 22H8.76012C8.50524 21.9997 8.26009 21.9021 8.07475 21.7272C7.88942 21.5522 7.77789 21.313 7.76295 21.0586C7.74801 20.8042 7.8308 20.5536 7.99439 20.3582C8.15798 20.1627 8.39003 20.0371 8.64312 20.007L8.76012 20H9.76012V3C9.76012 2.73478 9.86548 2.48043 10.053 2.29289C10.2406 2.10536 10.4949 2 10.7601 2Z"
        fill="#0080FF"
      />
    </svg>
    """
  end

  attr :class, :string, default: ""

  def transparent_flag(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
    >
      <path
        d="M4.16602 11.666H15.8327L12.0827 7.91602L15.8327 4.16602H4.16602V17.4993"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: "fill-[#0CAF61] dark:fill-[#12E56A]"

  def square_checked(assigns) do
    ~H"""
    <svg
      role="square checked icon"
      xmlns="http://www.w3.org/2000/svg"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill="none"
    >
      <path
        d="M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H17.925L15.925 5H5V19H19V12.05L21 10.05V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5Z"
        class={@class}
      />
      <path
        d="M11.7 16.025L6 10.325L7.425 8.9L11.7 13.175L20.875 4L22.3 5.425L11.7 16.025Z"
        class={@class}
      />
    </svg>
    """
  end

  def exploration(assigns) do
    ~H"""
    <svg
      width="21"
      height="20"
      viewBox="0 0 21 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="m-1 fill-[#b982ff] group-[.past-start]:fill-[#e3cdff] dark:group-[.past-start]:fill-[#66488c]"
    >
      <path d="M10 20C8.61667 20 7.31667 19.7375 6.1 19.2125C4.88333 18.6875 3.825 17.975 2.925 17.075C2.025 16.175 1.3125 15.1167 0.7875 13.9C0.2625 12.6833 0 11.3833 0 10C0 8.61667 0.2625 7.31667 0.7875 6.1C1.3125 4.88333 2.025 3.825 2.925 2.925C3.825 2.025 4.88333 1.3125 6.1 0.7875C7.31667 0.2625 8.61667 0 10 0C12.4333 0 14.5625 0.7625 16.3875 2.2875C18.2125 3.8125 19.35 5.725 19.8 8.025H17.75C17.4333 6.80833 16.8625 5.72083 16.0375 4.7625C15.2125 3.80417 14.2 3.08333 13 2.6V3C13 3.55 12.8042 4.02083 12.4125 4.4125C12.0208 4.80417 11.55 5 11 5H9V7C9 7.28333 8.90417 7.52083 8.7125 7.7125C8.52083 7.90417 8.28333 8 8 8H6V10H8V13H7L2.2 8.2C2.15 8.5 2.10417 8.8 2.0625 9.1C2.02083 9.4 2 9.7 2 10C2 12.1833 2.76667 14.0583 4.3 15.625C5.83333 17.1917 7.73333 17.9833 10 18V20ZM19.1 19.5L15.9 16.3C15.55 16.5 15.175 16.6667 14.775 16.8C14.375 16.9333 13.95 17 13.5 17C12.25 17 11.1875 16.5625 10.3125 15.6875C9.4375 14.8125 9 13.75 9 12.5C9 11.25 9.4375 10.1875 10.3125 9.3125C11.1875 8.4375 12.25 8 13.5 8C14.75 8 15.8125 8.4375 16.6875 9.3125C17.5625 10.1875 18 11.25 18 12.5C18 12.95 17.9333 13.375 17.8 13.775C17.6667 14.175 17.5 14.55 17.3 14.9L20.5 18.1L19.1 19.5ZM13.5 15C14.2 15 14.7917 14.7583 15.275 14.275C15.7583 13.7917 16 13.2 16 12.5C16 11.8 15.7583 11.2083 15.275 10.725C14.7917 10.2417 14.2 10 13.5 10C12.8 10 12.2083 10.2417 11.725 10.725C11.2417 11.2083 11 11.8 11 12.5C11 13.2 11.2417 13.7917 11.725 14.275C12.2083 14.7583 12.8 15 13.5 15Z" />
    </svg>
    """
  end

  def bullet(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      class="m-2"
      width="8"
      height="8"
      viewBox="0 0 8 8"
      fill="none"
    >
      <circle
        cx="4"
        cy="4"
        r="4"
        class="fill-gray-700 dark:fill-white group-[.past-start]:fill-gray-300 dark:group-[.past-start]:fill-gray-700"
      />
    </svg>
    """
  end

  attr :progress, :float, default: 1.0, doc: "1.0 == 100% progress"
  attr :role, :string, default: "check icon"
  attr :stroke_class, :string, default: "dark:stroke-[#12E56A] stroke-[#0CAF61]"

  def check(assigns) do
    ~H"""
    <div role="check icon" class="flex justify-center items-center w-[22px] h-[22px] shrink-0">
      <svg
        :if={@progress == 1.0}
        xmlns="http://www.w3.org/2000/svg"
        role={@role}
        width="24"
        height="24"
        viewBox="0 0 24 24"
        fill="none"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
        class={"icon icon-tabler icons-tabler-outline icon-tabler-check #{@stroke_class}"}
      >
        <path stroke="none" d="M0 0h24v24H0z" fill="none" />
        <path d="M5 12l5 5l10 -10" />
      </svg>
    </div>
    """
  end

  def clock(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill="none"
      stroke="currentColor"
      stroke-width="2"
      stroke-linecap="round"
      stroke-linejoin="round"
      class="icon icon-tabler icons-tabler-outline icon-tabler-clock"
      role="clock icon"
    >
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
      <path d="M12 7v5l3 3" />
    </svg>
    """
  end

  def time(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      role="time icon"
    >
      <g opacity="0.8">
        <path
          class="fill-black dark:fill-white"
          d="M11.475 12.525L12.525 11.475L9.75 8.7V5.25H8.25V9.3L11.475 12.525ZM9 16.5C7.9625 16.5 6.9875 16.3031 6.075 15.9094C5.1625 15.5156 4.36875 14.9813 3.69375 14.3063C3.01875 13.6313 2.48438 12.8375 2.09063 11.925C1.69688 11.0125 1.5 10.0375 1.5 9C1.5 7.9625 1.69688 6.9875 2.09063 6.075C2.48438 5.1625 3.01875 4.36875 3.69375 3.69375C4.36875 3.01875 5.1625 2.48438 6.075 2.09063C6.9875 1.69688 7.9625 1.5 9 1.5C10.0375 1.5 11.0125 1.69688 11.925 2.09063C12.8375 2.48438 13.6313 3.01875 14.3063 3.69375C14.9813 4.36875 15.5156 5.1625 15.9094 6.075C16.3031 6.9875 16.5 7.9625 16.5 9C16.5 10.0375 16.3031 11.0125 15.9094 11.925C15.5156 12.8375 14.9813 13.6313 14.3063 14.3063C13.6313 14.9813 12.8375 15.5156 11.925 15.9094C11.0125 16.3031 10.0375 16.5 9 16.5ZM9 15C10.6625 15 12.0781 14.4156 13.2469 13.2469C14.4156 12.0781 15 10.6625 15 9C15 7.3375 14.4156 5.92188 13.2469 4.75313C12.0781 3.58438 10.6625 3 9 3C7.3375 3 5.92188 3.58438 4.75313 4.75313C3.58438 5.92188 3 7.3375 3 9C3 10.6625 3.58438 12.0781 4.75313 13.2469C5.92188 14.4156 7.3375 15 9 15Z"
        />
      </g>
    </svg>
    """
  end

  def star(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="16"
      height="16"
      viewBox="0 0 16 16"
      fill="currentColor"
      role="star icon"
    >
      <path
        d="M3.88301 14.0007L4.96634 9.31732L1.33301 6.16732L6.13301 5.75065L7.99967 1.33398L9.86634 5.75065L14.6663 6.16732L11.033 9.31732L12.1163 14.0007L7.99967 11.5173L3.88301 14.0007Z"
        stroke="currentColor"
      />
    </svg>
    """
  end

  attr :class, :string, default: "dark:fill-white fill-black/70"

  def practice_page(assigns) do
    ~H"""
    <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewBox="0 0 18 20" fill="none">
      <path
        d="M3.34359 15.9558C2.54817 15.1604 1.89985 14.3023 1.39862 13.3816C0.897394 12.4608 0.537819 11.5183 0.319895 10.554C0.107418 9.58968 0.0338689 8.64171 0.0992462 7.71008C0.170072 6.77846 0.382548 5.90131 0.736675 5.07865C1.09625 4.25053 1.59203 3.51776 2.22401 2.88034C2.88323 2.22111 3.63507 1.71989 4.47952 1.37666C5.32943 1.03343 6.22292 0.842744 7.15999 0.804607C8.09707 0.761023 9.03414 0.864537 9.97122 1.11515C10.9083 1.36576 11.7963 1.75258 12.6353 2.2756L11.2216 3.66486C10.6223 3.34342 9.97939 3.10098 9.29293 2.93754C8.61191 2.76865 7.92545 2.69782 7.23354 2.72506C6.54708 2.74686 5.88786 2.88034 5.25588 3.1255C4.62935 3.37067 4.06819 3.74114 3.57241 4.23691C2.93499 4.87434 2.49096 5.62891 2.24035 6.5006C1.99519 7.3723 1.92981 8.2903 2.04422 9.25462C2.15863 10.2189 2.43921 11.1642 2.88595 12.0904C3.33815 13.0165 3.94016 13.8555 4.692 14.6074C5.15509 15.0759 5.63725 15.4709 6.13847 15.7923C6.64515 16.1138 7.1382 16.3753 7.61763 16.5769C8.09707 16.7839 8.54109 16.9446 8.94969 17.059C9.36375 17.1789 9.71243 17.2715 9.99573 17.3369C10.2954 17.4132 10.5187 17.533 10.6658 17.6965C10.8184 17.8654 10.8919 18.0833 10.8865 18.3502C10.8756 18.6608 10.7557 18.8896 10.5269 19.0367C10.2981 19.1892 10.0012 19.2383 9.63616 19.1838C9.33106 19.1402 8.94152 19.0558 8.46754 18.9305C7.999 18.8052 7.47598 18.6199 6.89848 18.3748C6.32643 18.135 5.73531 17.8163 5.12512 17.4186C4.51494 17.0209 3.92109 16.5333 3.34359 15.9558ZM6.63697 13.4061L8.68819 12.6215C9.11859 13.0465 9.60619 13.4006 10.151 13.6839C10.7013 13.9672 11.2706 14.1552 11.859 14.2478C12.4474 14.3404 13.0194 14.3132 13.5751 14.1661C14.1308 14.0135 14.6348 13.7112 15.087 13.259C15.5719 12.7795 15.8715 12.202 15.9859 11.5265C16.1058 10.8455 16.0595 10.1236 15.847 9.36086C15.6345 8.59267 15.2777 7.84084 14.7764 7.10534L16.1575 5.73242C16.7296 6.52784 17.16 7.34233 17.4487 8.17589C17.7429 9.00401 17.9009 9.81305 17.9227 10.603C17.9445 11.393 17.8301 12.1312 17.5795 12.8177C17.3343 13.4987 16.9557 14.098 16.4436 14.6156C15.9423 15.1168 15.3621 15.4873 14.7029 15.727C14.0491 15.9612 13.3572 16.0756 12.6272 16.0702C11.9026 16.0702 11.178 15.964 10.4534 15.7515C9.72877 15.539 9.03686 15.2339 8.37764 14.8362C7.72387 14.4385 7.14365 13.9618 6.63697 13.4061ZM8.35313 11.7716L6.38364 12.5153C6.24199 12.5698 6.10851 12.5398 5.9832 12.4254C5.86334 12.311 5.83338 12.1748 5.89331 12.0168L6.66149 10.0718L14.0982 2.64334L15.7898 4.33498L8.35313 11.7716ZM16.4191 3.7139L14.7274 2.02226L15.5119 1.23773C15.7244 1.0307 15.9696 0.91357 16.2474 0.886329C16.5307 0.859088 16.7623 0.938086 16.9421 1.12332L17.2363 1.40935C17.4487 1.62182 17.5441 1.87244 17.5223 2.16119C17.5059 2.44449 17.3915 2.69782 17.1791 2.9212L16.4191 3.7139Z"
        class={@class}
      />
    </svg>
    """
  end

  def up_arrow(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="12"
      height="6"
      viewBox="0 0 12 6"
      fill="currentColor"
    >
      <path d="M6 0L0 6H12L6 0Z" fill="currentColor" />
    </svg>
    """
  end

  attr :class, :string, default: "dark:fill-white fill-black/70"

  def right_arrow(assigns) do
    ~H"""
    <svg
      class={@class}
      xmlns="http://www.w3.org/2000/svg"
      width="12"
      height="27"
      viewBox="0 0 12 27"
      fill="none"
    >
      <path d="M12 13.5L0 27L-1.18021e-06 1.90735e-06L12 13.5Z" />
    </svg>
    """
  end

  def down_arrow(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="27"
      height="12"
      viewBox="0 0 27 12"
      fill="currentColor"
    >
      <path d="M0 0L27 0L13.5 12Z" />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-black dark:stroke-white"

  def close(assigns) do
    ~H"""
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
      <path class={@class} d="M6 18L18 6M6 6L18 18" stroke-width="2" stroke-linejoin="round" />
    </svg>
    """
  end

  attr :class, :string, default: "fill-black dark:fill-white"

  def learning_objectives(assigns) do
    ~H"""
    <svg
      class={@class}
      xmlns="http://www.w3.org/2000/svg"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill="none"
    >
      <path
        opacity="0.5"
        fill-rule="evenodd"
        clip-rule="evenodd"
        d="M20.5 15L23.5 12L20.5 9V5C20.5 4.45 20.3042 3.97917 19.9125 3.5875C19.5208 3.19583 19.05 3 18.5 3H4.5C3.95 3 3.47917 3.19583 3.0875 3.5875C2.69583 3.97917 2.5 4.45 2.5 5V19C2.5 19.55 2.69583 20.0208 3.0875 20.4125C3.47917 20.8042 3.95 21 4.5 21H18.5C19.05 21 19.5208 20.8042 19.9125 20.4125C20.3042 20.0208 20.5 19.55 20.5 19V15ZM10.5 14.15H12.35C12.35 13.8667 12.3625 13.625 12.3875 13.425C12.4125 13.225 12.4667 13.0333 12.55 12.85C12.6333 12.6667 12.7375 12.4958 12.8625 12.3375C12.9875 12.1792 13.1667 11.9833 13.4 11.75C13.9833 11.1667 14.3958 10.6792 14.6375 10.2875C14.8792 9.89583 15 9.45 15 8.95C15 8.06667 14.7 7.35417 14.1 6.8125C13.5 6.27083 12.6917 6 11.675 6C10.7583 6 9.97917 6.225 9.3375 6.675C8.69583 7.125 8.25 7.75 8 8.55L9.65 9.2C9.76667 8.75 10 8.3875 10.35 8.1125C10.7 7.8375 11.1083 7.7 11.575 7.7C12.025 7.7 12.4 7.82083 12.7 8.0625C13 8.30417 13.15 8.625 13.15 9.025C13.15 9.30833 13.0583 9.60833 12.875 9.925C12.6917 10.2417 12.3833 10.5917 11.95 10.975C11.6667 11.2083 11.4375 11.4375 11.2625 11.6625C11.0875 11.8875 10.9417 12.125 10.825 12.375C10.7083 12.625 10.625 12.8875 10.575 13.1625C10.525 13.4375 10.5 13.7667 10.5 14.15ZM11.4 18C11.75 18 12.0458 17.8792 12.2875 17.6375C12.5292 17.3958 12.65 17.1 12.65 16.75C12.65 16.4 12.5292 16.1042 12.2875 15.8625C12.0458 15.6208 11.75 15.5 11.4 15.5C11.05 15.5 10.7542 15.6208 10.5125 15.8625C10.2708 16.1042 10.15 16.4 10.15 16.75C10.15 17.1 10.2708 17.3958 10.5125 17.6375C10.7542 17.8792 11.05 18 11.4 18Z"
      />
    </svg>
    """
  end

  attr :width, :string, default: "24"
  attr :height, :string, default: "24"
  attr :class, :string, default: "fill-black dark:fill-white"

  def chevron_down(assigns) do
    ~H"""
    <svg
      width={@width}
      height={@height}
      viewBox="0 0 24 24"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
      fill="currentColor"
    >
      <path d="M6.70711 8.29289C6.31658 7.90237 5.68342 7.90237 5.29289 8.29289C4.90237 8.68342 4.90237 9.31658 5.29289 9.70711L11.2929 15.7071C11.6834 16.0976 12.3166 16.0976 12.7071 15.7071L18.7071 9.70711C19.0976 9.31658 19.0976 8.68342 18.7071 8.29289C18.3166 7.90237 17.6834 7.90237 17.2929 8.29289L12 13.5858L6.70711 8.29289Z" />
    </svg>
    """
  end

  attr :width, :string, default: "24"
  attr :height, :string, default: "24"

  def chevron_right(assigns) do
    ~H"""
    <.chevron_down width={@width} height={@height} class="-rotate-90" />
    """
  end

  attr :class, :string, default: ""

  def filled_chevron_up(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      fill="currentColor"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      class={@class}
    >
      <path d="M12 8l-6 6h12l-6-6z" />
    </svg>
    """
  end

  attr :class, :string, default: "fill-black dark:fill-white"
  attr :path_class, :string, default: ""

  def video(assigns) do
    ~H"""
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class={@class}>
      <path
        d="M9.5 16.5L16.5 12L9.5 7.5V16.5ZM4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H4Z"
        class={@path_class}
      />
    </svg>
    """
  end

  attr :class, :string, default: "fill-black/70 dark:fill-white"

  def play(assigns) do
    ~H"""
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="33"
      height="38"
      viewBox="0 0 16.984 24.8075"
      class={@class}
    >
      <path d="M0.759,0.158c0.39-0.219,0.932-0.21,1.313,0.021l14.303,8.687c0.368,0.225,0.609,0.625,0.609,1.057   s-0.217,0.832-0.586,1.057L2.132,19.666c-0.382,0.231-0.984,0.24-1.375,0.021C0.367,19.468,0,19.056,0,18.608V1.237   C0,0.79,0.369,0.378,0.759,0.158z" />
    </svg>
    """
  end

  attr :class, :string, default: "w-5 h-5"
  attr :path_class, :string, default: "dark:stroke-white stroke-black/70"

  def plus(assigns) do
    ~H"""
    <svg
      role="plus icon"
      xmlns="http://www.w3.org/2000/svg"
      fill="none"
      viewBox="0 0 24 24"
      stroke-width="1.5"
      class={@class}
    >
      <path
        class={@path_class}
        stroke-linecap="round"
        stroke-linejoin="round"
        d="M12 4.5v15m7.5-7.5h-15"
      />
    </svg>
    """
  end

  attr :class, :string, default: ""

  def book(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
    >
      <path
        d="M15.8327 3.33398V16.6673H5.83268C5.39065 16.6673 4.96673 16.4917 4.65417 16.1792C4.34161 15.8666 4.16602 15.4427 4.16602 15.0007V5.00065C4.16602 4.55862 4.34161 4.1347 4.65417 3.82214C4.96673 3.50958 5.39065 3.33398 5.83268 3.33398H15.8327Z"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M15.8327 13.334H5.83268C5.39065 13.334 4.96673 13.5096 4.65417 13.8221C4.34161 14.1347 4.16602 14.5586 4.16602 15.0007"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M7.49935 6.66724H12.4994"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: ""

  def world(assigns) do
    ~H"""
    <svg
      role="world icon"
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
    >
      <path
        d="M2.5 10C2.5 10.9849 2.69399 11.9602 3.0709 12.8701C3.44781 13.7801 4.00026 14.6069 4.6967 15.3033C5.39314 15.9997 6.21993 16.5522 7.12987 16.9291C8.03982 17.306 9.01509 17.5 10 17.5C10.9849 17.5 11.9602 17.306 12.8701 16.9291C13.7801 16.5522 14.6069 15.9997 15.3033 15.3033C15.9997 14.6069 16.5522 13.7801 16.9291 12.8701C17.306 11.9602 17.5 10.9849 17.5 10C17.5 8.01088 16.7098 6.10322 15.3033 4.6967C13.8968 3.29018 11.9891 2.5 10 2.5C8.01088 2.5 6.10322 3.29018 4.6967 4.6967C3.29018 6.10322 2.5 8.01088 2.5 10Z"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M3 7.5H17"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M3 12.5H17"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M9.58322 2.5C8.17934 4.74968 7.43506 7.34822 7.43506 10C7.43506 12.6518 8.17934 15.2503 9.58322 17.5"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M10.4167 2.5C11.8206 4.74968 12.5649 7.34822 12.5649 10C12.5649 12.6518 11.8206 15.2503 10.4167 17.5"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: ""

  def clipboard(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
    >
      <path
        d="M7.49935 4.16699H5.83268C5.39065 4.16699 4.96673 4.34259 4.65417 4.65515C4.34161 4.96771 4.16602 5.39163 4.16602 5.83366V15.8337C4.16602 16.2757 4.34161 16.6996 4.65417 17.0122C4.96673 17.3247 5.39065 17.5003 5.83268 17.5003H14.166C14.608 17.5003 15.032 17.3247 15.3445 17.0122C15.6571 16.6996 15.8327 16.2757 15.8327 15.8337V5.83366C15.8327 5.39163 15.6571 4.96771 15.3445 4.65515C15.032 4.34259 14.608 4.16699 14.166 4.16699H12.4993"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M7.5 4.16667C7.5 3.72464 7.6756 3.30072 7.98816 2.98816C8.30072 2.67559 8.72464 2.5 9.16667 2.5H10.8333C11.2754 2.5 11.6993 2.67559 12.0118 2.98816C12.3244 3.30072 12.5 3.72464 12.5 4.16667C12.5 4.60869 12.3244 5.03262 12.0118 5.34518C11.6993 5.65774 11.2754 5.83333 10.8333 5.83333H9.16667C8.72464 5.83333 8.30072 5.65774 7.98816 5.34518C7.6756 5.03262 7.5 4.60869 7.5 4.16667Z"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M7.5 10H7.50833"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M10.834 10H12.5007"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M7.5 13.333H7.50833"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M10.834 13.333H12.5007"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-black dark:stroke-white"

  def trash(assigns) do
    ~H"""
    <svg
      class={@class}
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M3 6H5H21"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
        stroke="currentColor"
      />
      <path
        d="M3 6H5H21"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
        stroke="currentColor"
      />
      <path
        stroke="currentColor"
        d="M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
        stroke="currentColor"
      />
      <path
        d="M10 11V17"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
        stroke="currentColor"
      />
      <path
        d="M14 11V17"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
        stroke="currentColor"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false

  def home(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active home icon"
      class="dark:fill-white dark:stroke-white fill-black/90 stroke-black/90"
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path d="M9.58924 0.910859L17.0892 8.41086C17.6142 8.93586 17.2426 9.83336 16.5001 9.83336H15.6667V14.8334C15.6667 15.4964 15.4033 16.1323 14.9345 16.6011C14.4657 17.07 13.8298 17.3334 13.1667 17.3334H12.3334V11.5C12.3334 10.8623 12.0898 10.2488 11.6523 9.78481C11.2149 9.32085 10.6166 9.0416 9.98007 9.00419L9.83341 9.00002H8.16674C7.5037 9.00002 6.86781 9.26342 6.39897 9.73226C5.93013 10.2011 5.66674 10.837 5.66674 11.5V17.3334H4.83341C4.17037 17.3334 3.53448 17.07 3.06564 16.6011C2.5968 16.1323 2.33341 15.4964 2.33341 14.8334V9.83336H1.50007C0.758406 9.83336 0.385906 8.93586 0.910906 8.41086L8.41091 0.910859C8.56718 0.754633 8.7791 0.66687 9.00007 0.66687C9.22104 0.66687 9.43297 0.754633 9.58924 0.910859ZM9.83341 10.6667C10.0544 10.6667 10.2664 10.7545 10.4227 10.9108C10.5789 11.067 10.6667 11.279 10.6667 11.5V17.3334H7.33341V11.5C7.33343 11.2959 7.40837 11.0989 7.544 10.9464C7.67964 10.7939 7.86653 10.6964 8.06924 10.6725L8.16674 10.6667H9.83341Z" />
    </svg>
    """
  end

  def home(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="home icon"
      class="dark:stroke-[#B8B4BF] stroke-black/70"
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M3.16667 9H1.5L9 1.5L16.5 9H14.8333M3.16667 9V14.8333C3.16667 15.2754 3.34226 15.6993 3.65482 16.0118C3.96738 16.3244 4.39131 16.5 4.83333 16.5H13.1667C13.6087 16.5 14.0326 16.3244 14.3452 16.0118C14.6577 15.6993 14.8333 15.2754 14.8333 14.8333V9"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M6.5 16.5V11.5C6.5 11.058 6.6756 10.634 6.98816 10.3215C7.30072 10.0089 7.72464 9.83331 8.16667 9.83331H9.83333C10.2754 9.83331 10.6993 10.0089 11.0118 10.3215C11.3244 10.634 11.5 11.058 11.5 11.5V16.5"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false

  def learn(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active learn icon"
      class="dark:fill-white dark:stroke-white fill-black/90 stroke-black/90"
      width="16"
      height="16"
      viewBox="0 0 16 16"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M1.33325 2.16671C1.33325 1.94569 1.42105 1.73373 1.57733 1.57745C1.73361 1.42117 1.94557 1.33337 2.16659 1.33337H5.49992C5.72093 1.33337 5.93289 1.42117 6.08917 1.57745C6.24545 1.73373 6.33325 1.94569 6.33325 2.16671V5.50004C6.33325 5.72105 6.24545 5.93302 6.08917 6.0893C5.93289 6.24558 5.72093 6.33337 5.49992 6.33337H2.16659C1.94557 6.33337 1.73361 6.24558 1.57733 6.0893C1.42105 5.93302 1.33325 5.72105 1.33325 5.50004V2.16671ZM9.66658 2.16671C9.66658 1.94569 9.75438 1.73373 9.91066 1.57745C10.0669 1.42117 10.2789 1.33337 10.4999 1.33337H13.8333C14.0543 1.33337 14.2662 1.42117 14.4225 1.57745C14.5788 1.73373 14.6666 1.94569 14.6666 2.16671V5.50004C14.6666 5.72105 14.5788 5.93302 14.4225 6.0893C14.2662 6.24558 14.0543 6.33337 13.8333 6.33337H10.4999C10.2789 6.33337 10.0669 6.24558 9.91066 6.0893C9.75438 5.93302 9.66658 5.72105 9.66658 5.50004V2.16671ZM1.33325 10.5C1.33325 10.279 1.42105 10.0671 1.57733 9.91078C1.73361 9.75451 1.94557 9.66671 2.16659 9.66671H5.49992C5.72093 9.66671 5.93289 9.75451 6.08917 9.91078C6.24545 10.0671 6.33325 10.279 6.33325 10.5V13.8334C6.33325 14.0544 6.24545 14.2663 6.08917 14.4226C5.93289 14.5789 5.72093 14.6667 5.49992 14.6667H2.16659C1.94557 14.6667 1.73361 14.5789 1.57733 14.4226C1.42105 14.2663 1.33325 14.0544 1.33325 13.8334V10.5ZM9.66658 10.5C9.66658 10.279 9.75438 10.0671 9.91066 9.91078C10.0669 9.75451 10.2789 9.66671 10.4999 9.66671H13.8333C14.0543 9.66671 14.2662 9.75451 14.4225 9.91078C14.5788 10.0671 14.6666 10.279 14.6666 10.5V13.8334C14.6666 14.0544 14.5788 14.2663 14.4225 14.4226C14.2662 14.5789 14.0543 14.6667 13.8333 14.6667H10.4999C10.2789 14.6667 10.0669 14.5789 9.91066 14.4226C9.75438 14.2663 9.66658 14.0544 9.66658 13.8334V10.5Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def learn(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="learn icon"
      class="dark:stroke-[#B8B4BF] stroke-black/70"
      width="16"
      height="16"
      viewBox="0 0 16 16"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M1.33325 2.16683C1.33325 1.94582 1.42105 1.73385 1.57733 1.57757C1.73361 1.42129 1.94557 1.3335 2.16659 1.3335H5.49992C5.72093 1.3335 5.93289 1.42129 6.08917 1.57757C6.24545 1.73385 6.33325 1.94582 6.33325 2.16683V5.50016C6.33325 5.72118 6.24545 5.93314 6.08917 6.08942C5.93289 6.2457 5.72093 6.3335 5.49992 6.3335H2.16659C1.94557 6.3335 1.73361 6.2457 1.57733 6.08942C1.42105 5.93314 1.33325 5.72118 1.33325 5.50016V2.16683ZM9.66659 2.16683C9.66659 1.94582 9.75438 1.73385 9.91066 1.57757C10.0669 1.42129 10.2789 1.3335 10.4999 1.3335H13.8333C14.0543 1.3335 14.2662 1.42129 14.4225 1.57757C14.5788 1.73385 14.6666 1.94582 14.6666 2.16683V5.50016C14.6666 5.72118 14.5788 5.93314 14.4225 6.08942C14.2662 6.2457 14.0543 6.3335 13.8333 6.3335H10.4999C10.2789 6.3335 10.0669 6.2457 9.91066 6.08942C9.75438 5.93314 9.66659 5.72118 9.66659 5.50016V2.16683ZM1.33325 10.5002C1.33325 10.2791 1.42105 10.0672 1.57733 9.91091C1.73361 9.75463 1.94557 9.66683 2.16659 9.66683H5.49992C5.72093 9.66683 5.93289 9.75463 6.08917 9.91091C6.24545 10.0672 6.33325 10.2791 6.33325 10.5002V13.8335C6.33325 14.0545 6.24545 14.2665 6.08917 14.4228C5.93289 14.579 5.72093 14.6668 5.49992 14.6668H2.16659C1.94557 14.6668 1.73361 14.579 1.57733 14.4228C1.42105 14.2665 1.33325 14.0545 1.33325 13.8335V10.5002ZM9.66659 10.5002C9.66659 10.2791 9.75438 10.0672 9.91066 9.91091C10.0669 9.75463 10.2789 9.66683 10.4999 9.66683H13.8333C14.0543 9.66683 14.2662 9.75463 14.4225 9.91091C14.5788 10.0672 14.6666 10.2791 14.6666 10.5002V13.8335C14.6666 14.0545 14.5788 14.2665 14.4225 14.4228C14.2662 14.579 14.0543 14.6668 13.8333 14.6668H10.4999C10.2789 14.6668 10.0669 14.579 9.91066 14.4228C9.75438 14.2665 9.66659 14.0545 9.66659 13.8335V10.5002Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false

  def schedule(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active schedule icon"
      width="16"
      height="18"
      viewBox="0 0 16 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        class="dark:fill-white fill-black/90"
        fill-rule="evenodd"
        clip-rule="evenodd"
        d="M14.6668 8.16667H1.3335L1.3335 14.5C1.3335 15.6046 2.22892 16.5 3.33349 16.5H12.6668C13.7714 16.5 14.6668 15.6046 14.6668 14.5V8.16667ZM8.00016 9.83333C7.33712 9.83333 6.70124 10.0967 6.2324 10.5656C5.76356 11.0344 5.50016 11.6703 5.50016 12.3333C5.50016 12.9964 5.76355 13.6323 6.2324 14.1011C6.70124 14.5699 7.33712 14.8333 8.00016 14.8333C8.6632 14.8333 9.29909 14.5699 9.76793 14.1011C10.2368 13.6323 10.5002 12.9964 10.5002 12.3333C10.5002 11.6703 10.2368 11.0344 9.76793 10.5656C9.29909 10.0967 8.6632 9.83333 8.00016 9.83333Z"
      />
      <path
        class=" dark:stroke-white stroke-black/90"
        d="M11.3335 1.5V4.83333M4.66683 1.5V4.83333M1.3335 8.16667V4.83333C1.3335 4.39131 1.50909 3.96738 1.82165 3.65482C2.13421 3.34226 2.55814 3.16667 3.00016 3.16667H13.0002C13.4422 3.16667 13.8661 3.34226 14.1787 3.65482C14.4912 3.96738 14.6668 4.39131 14.6668 4.83333V8.16667M1.3335 8.16667H14.6668M1.3335 8.16667L1.3335 14.5C1.3335 15.6046 2.22892 16.5 3.33349 16.5H12.6668C13.7714 16.5 14.6668 15.6046 14.6668 14.5V8.16667M6.2324 10.5656C6.70124 10.0967 7.33712 9.83333 8.00016 9.83333C8.6632 9.83333 9.29909 10.0967 9.76793 10.5656C10.2368 11.0344 10.5002 11.6703 10.5002 12.3333C10.5002 12.9964 10.2368 13.6323 9.76793 14.1011C9.29909 14.5699 8.6632 14.8333 8.00016 14.8333C7.33712 14.8333 6.70124 14.5699 6.2324 14.1011C5.76355 13.6323 5.50016 12.9964 5.50016 12.3333C5.50016 11.6703 5.76356 11.0344 6.2324 10.5656Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def schedule(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="schedule icon"
      class="dark:stroke-[#B8B4BF] stroke-black/70"
      width="16"
      height="18"
      viewBox="0 0 16 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M11.3333 1.5V4.83333M4.66659 1.5V4.83333M1.33325 8.16667H14.6666M1.33325 4.83333C1.33325 4.39131 1.50885 3.96738 1.82141 3.65482C2.13397 3.34226 2.55789 3.16667 2.99992 3.16667H12.9999C13.4419 3.16667 13.8659 3.34226 14.1784 3.65482C14.491 3.96738 14.6666 4.39131 14.6666 4.83333V14.8333C14.6666 15.2754 14.491 15.6993 14.1784 16.0118C13.8659 16.3244 13.4419 16.5 12.9999 16.5H2.99992C2.55789 16.5 2.13397 16.3244 1.82141 16.0118C1.50885 15.6993 1.33325 15.2754 1.33325 14.8333V4.83333ZM7.24994 12.25C7.24994 12.4489 7.32896 12.6397 7.46961 12.7803C7.61026 12.921 7.80103 13 7.99994 13C8.19885 13 8.38962 12.921 8.53027 12.7803C8.67092 12.6397 8.74994 12.4489 8.74994 12.25C8.74994 12.0511 8.67092 11.8603 8.53027 11.7197C8.38962 11.579 8.19885 11.5 7.99994 11.5C7.80103 11.5 7.61026 11.579 7.46961 11.7197C7.32896 11.8603 7.24994 12.0511 7.24994 12.25Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false
  attr :class, :string, default: nil

  def discussions(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active discussions icon"
      class={@class || "dark:fill-white fill-black/90"}
      width="18"
      height="17"
      viewBox="0 0 18 17"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        fill-rule="evenodd"
        clip-rule="evenodd"
        d="M1.79029 1.62367C2.37634 1.03761 3.1712 0.708374 4 0.708374H14C14.8288 0.708374 15.6237 1.03761 16.2097 1.62367C16.7958 2.20972 17.125 3.00457 17.125 3.83337V10.5C17.125 11.3288 16.7958 12.1237 16.2097 12.7098C15.6237 13.2958 14.8288 13.625 14 13.625H11.7589L9.44194 15.942C9.19786 16.1861 8.80214 16.1861 8.55806 15.942L6.24112 13.625H4C3.1712 13.625 2.37634 13.2958 1.79029 12.7098C1.20424 12.1237 0.875 11.3288 0.875 10.5V3.83337C0.875 3.00457 1.20424 2.20972 1.79029 1.62367ZM5.66667 4.66671C5.20643 4.66671 4.83333 5.0398 4.83333 5.50004C4.83333 5.96028 5.20643 6.33337 5.66667 6.33337H12.3333C12.7936 6.33337 13.1667 5.96028 13.1667 5.50004C13.1667 5.0398 12.7936 4.66671 12.3333 4.66671H5.66667ZM5.66667 8.00004C5.20643 8.00004 4.83333 8.37314 4.83333 8.83337C4.83333 9.29361 5.20643 9.66671 5.66667 9.66671H10.6667C11.1269 9.66671 11.5 9.29361 11.5 8.83337C11.5 8.37314 11.1269 8.00004 10.6667 8.00004H5.66667Z"
      />
    </svg>
    """
  end

  def discussions(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="discussions icon"
      class={@class || "dark:stroke-[#B8B4BF] stroke-black/70"}
      width="18"
      height="17"
      viewBox="0 0 18 17"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M5.66667 5.50016H12.3333M5.66667 8.8335H10.6667M6.5 13.0002H4C3.33696 13.0002 2.70107 12.7368 2.23223 12.2679C1.76339 11.7991 1.5 11.1632 1.5 10.5002V3.8335C1.5 3.17045 1.76339 2.53457 2.23223 2.06573C2.70107 1.59689 3.33696 1.3335 4 1.3335H14C14.663 1.3335 15.2989 1.59689 15.7678 2.06573C16.2366 2.53457 16.5 3.17045 16.5 3.8335V10.5002C16.5 11.1632 16.2366 11.7991 15.7678 12.2679C15.2989 12.7368 14.663 13.0002 14 13.0002H11.5L9 15.5002L6.5 13.0002Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false
  attr :color, :string, default: "black"

  def explorations(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active explorations icon"
      class="dark:fill-white fill-black/90"
      width="18"
      height="16"
      viewBox="0 0 18 16"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        stroke={@color}
        fill-rule="evenodd"
        clip-rule="evenodd"
        d="M6.09812 0.861754C5.15525 1.24527 4.28869 1.8156 3.55498 2.54931C3.07205 3.03224 2.6599 3.57273 2.32521 4.15464H5.30913C5.49263 3.03193 5.75648 1.92996 6.09812 0.861754ZM1.4096 6.69883C1.33715 7.12365 1.30005 7.55651 1.30005 7.9932C1.30005 8.42787 1.33686 8.86072 1.40957 9.28719H5.03353C5.01024 8.85716 4.99854 8.42559 4.99854 7.99315C4.99854 7.56061 5.01025 7.12894 5.03354 6.69883H1.4096ZM2.32502 11.8314C2.66189 12.4171 3.07514 12.9572 3.55498 13.4371C4.26988 14.152 5.11859 14.7191 6.05266 15.106C6.06781 15.1123 6.08297 15.1185 6.09815 15.1247C5.75647 14.0563 5.4926 12.9542 5.30909 11.8314H2.32502ZM11.8988 15.125C11.9143 15.1187 11.9297 15.1124 11.9451 15.106C12.8791 14.7191 13.7279 14.152 14.4428 13.4371C14.9226 12.9572 15.3358 12.4171 15.6727 11.8314H12.688C12.5045 12.9543 12.2405 14.0565 11.8988 15.125ZM16.5882 9.28719C16.6609 8.86072 16.6977 8.42787 16.6977 7.9932C16.6977 7.55651 16.6606 7.12365 16.5881 6.69883H12.9635C12.9868 7.12894 12.9985 7.56061 12.9985 7.99315C12.9985 8.42559 12.9868 8.85716 12.9635 9.28719H16.5882ZM15.6725 4.15464H12.6879C12.5044 3.03183 12.2405 1.92975 11.8989 0.861442C12.842 1.24496 13.7088 1.8154 14.4428 2.54931C14.9257 3.03224 15.3378 3.57273 15.6725 4.15464ZM8.99854 0.659973C9.42684 1.77686 9.75589 2.94887 9.97995 4.15464H8.01713C8.24118 2.94887 8.57023 1.77686 8.99854 0.659973ZM7.6652 7.99315C7.6652 7.56003 7.67846 7.12829 7.70474 6.69883H10.2923C10.3186 7.12829 10.3319 7.56003 10.3319 7.99315C10.3319 8.42617 10.3186 8.85782 10.2923 9.28719H7.70473C7.67846 8.85782 7.6652 8.42617 7.6652 7.99315ZM8.99853 15.3263C8.5702 14.2093 8.24113 13.0372 8.01707 11.8314H9.98C9.75594 13.0372 9.42687 14.2093 8.99853 15.3263Z"
      />
      <path d="M6.09812 0.861754L6.57435 1.01407C6.63348 0.82918 6.58026 0.62678 6.43784 0.494892C6.29542 0.363005 6.08953 0.325466 5.90973 0.398603L6.09812 0.861754ZM3.55498 2.54931L3.20143 2.19575L3.55498 2.54931ZM2.32521 4.15464L1.89179 3.90536C1.8028 4.06008 1.80304 4.25051 1.89241 4.405C1.98178 4.5595 2.14673 4.65464 2.32521 4.65464V4.15464ZM5.30913 4.15464V4.65464C5.55415 4.65464 5.76306 4.4771 5.80259 4.2353L5.30913 4.15464ZM1.4096 6.69883V6.19883C1.1659 6.19883 0.957694 6.37453 0.916721 6.61476L1.4096 6.69883ZM1.40957 9.28719L0.916687 9.37123C0.95765 9.61148 1.16586 9.78719 1.40957 9.78719V9.28719ZM5.03353 9.28719V9.78719C5.17083 9.78719 5.30209 9.73073 5.39651 9.63106C5.49094 9.53138 5.54022 9.39726 5.5328 9.26016L5.03353 9.28719ZM5.03354 6.69883L5.53281 6.72586C5.54024 6.58876 5.49095 6.45464 5.39653 6.35497C5.3021 6.25529 5.17084 6.19883 5.03354 6.19883V6.69883ZM2.32502 11.8314V11.3314C2.14654 11.3314 1.98159 11.4265 1.89222 11.581C1.80285 11.7355 1.80261 11.9259 1.89159 12.0806L2.32502 11.8314ZM3.55498 13.4371L3.20143 13.7906L3.20143 13.7906L3.55498 13.4371ZM6.05266 15.106L6.244 14.644L6.244 14.644L6.05266 15.106ZM6.09815 15.1247L5.90978 15.5878C6.08958 15.6609 6.29546 15.6234 6.43788 15.4915C6.5803 15.3596 6.63352 15.1572 6.57439 14.9723L6.09815 15.1247ZM5.30909 11.8314L5.80254 11.7507C5.76302 11.5089 5.5541 11.3314 5.30909 11.3314V11.8314ZM11.8988 15.125L11.4226 14.9726C11.3635 15.1575 11.4167 15.3599 11.5591 15.4918C11.7015 15.6237 11.9074 15.6613 12.0872 15.5881L11.8988 15.125ZM11.9451 15.106L11.7537 14.644H11.7537L11.9451 15.106ZM14.4428 13.4371L14.7963 13.7906L14.7963 13.7906L14.4428 13.4371ZM15.6727 11.8314L16.1061 12.0806C16.1951 11.9259 16.1949 11.7355 16.1055 11.581C16.0161 11.4265 15.8512 11.3314 15.6727 11.3314V11.8314ZM12.688 11.8314V11.3314C12.443 11.3314 12.234 11.5089 12.1945 11.7507L12.688 11.8314ZM16.5882 9.28719V9.78719C16.8319 9.78719 17.0401 9.61148 17.0811 9.37123L16.5882 9.28719ZM16.5881 6.69883L17.081 6.61476C17.04 6.37453 16.8318 6.19883 16.5881 6.19883V6.69883ZM12.9635 6.69883V6.19883C12.8262 6.19883 12.695 6.25529 12.6005 6.35496C12.5061 6.45464 12.4568 6.58876 12.4643 6.72586L12.9635 6.69883ZM12.9635 9.28719L12.4643 9.26016C12.4569 9.39726 12.5061 9.53138 12.6006 9.63106C12.695 9.73073 12.8262 9.78719 12.9635 9.78719V9.28719ZM15.6725 4.15464V4.65464C15.851 4.65464 16.016 4.5595 16.1053 4.405C16.1947 4.25051 16.1949 4.06008 16.106 3.90536L15.6725 4.15464ZM12.6879 4.15464L12.1945 4.2353C12.234 4.4771 12.4429 4.65464 12.6879 4.65464V4.15464ZM11.8989 0.861442L12.0872 0.398271C11.9074 0.325156 11.7015 0.36271 11.5591 0.494601C11.4167 0.626492 11.3635 0.828884 11.4226 1.01376L11.8989 0.861442ZM14.4428 2.54931L14.0892 2.90286L14.4428 2.54931ZM9.97995 4.15464V4.65464C10.1285 4.65464 10.2694 4.58855 10.3644 4.47427C10.4594 4.36 10.4987 4.2094 10.4715 4.0633L9.97995 4.15464ZM8.99854 0.659973L9.46539 0.480945C9.39124 0.287607 9.2056 0.159973 8.99854 0.159973C8.79147 0.159973 8.60583 0.287607 8.53169 0.480945L8.99854 0.659973ZM8.01713 4.15464L7.52554 4.0633C7.49839 4.2094 7.53764 4.36 7.63263 4.47427C7.72762 4.58855 7.86853 4.65464 8.01713 4.65464V4.15464ZM7.70474 6.69883V6.19883C7.44046 6.19883 7.22182 6.4045 7.20568 6.66828L7.70474 6.69883ZM10.2923 6.69883L10.7914 6.66828C10.7752 6.4045 10.5566 6.19883 10.2923 6.19883V6.69883ZM10.2923 9.28719V9.78719C10.5566 9.78719 10.7753 9.58152 10.7914 9.31773L10.2923 9.28719ZM7.70473 9.28719L7.20566 9.31773C7.2218 9.58152 7.44044 9.78719 7.70473 9.78719V9.28719ZM8.01707 11.8314V11.3314C7.86848 11.3314 7.72758 11.3975 7.63258 11.5117C7.53759 11.626 7.49834 11.7766 7.52549 11.9227L8.01707 11.8314ZM8.99853 15.3263L8.53168 15.5053C8.60583 15.6987 8.79147 15.8263 8.99853 15.8263C9.2056 15.8263 9.39124 15.6987 9.46538 15.5053L8.99853 15.3263ZM9.98 11.8314L10.4716 11.9227C10.4987 11.7766 10.4595 11.626 10.3645 11.5117C10.2695 11.3975 10.1286 11.3314 9.98 11.3314V11.8314ZM5.90973 0.398603C4.90565 0.80702 3.98279 1.41439 3.20143 2.19575L3.90853 2.90286C4.5946 2.2168 5.40485 1.68353 6.28651 1.32491L5.90973 0.398603ZM3.20143 2.19575C2.68715 2.71003 2.24822 3.28564 1.89179 3.90536L2.75864 4.40393C3.07158 3.85982 3.45695 3.35445 3.90853 2.90286L3.20143 2.19575ZM5.30913 3.65464H2.32521V4.65464H5.30913V3.65464ZM5.62188 0.709443C5.27262 1.80149 5.00308 2.92743 4.81568 4.07399L5.80259 4.2353C5.98219 3.13643 6.24034 2.05843 6.57435 1.01407L5.62188 0.709443ZM0.916721 6.61476C0.839557 7.0672 0.800049 7.52818 0.800049 7.9932H1.80005C1.80005 7.58484 1.83474 7.1801 1.90249 6.78289L0.916721 6.61476ZM0.800049 7.9932C0.800049 8.4561 0.839249 8.91706 0.916687 9.37123L1.90246 9.20315C1.83447 8.80438 1.80005 8.39964 1.80005 7.9932H0.800049ZM5.03353 8.78719H1.40957V9.78719H5.03353V8.78719ZM4.49854 7.99315C4.49854 8.43461 4.51049 8.8752 4.53426 9.31422L5.5328 9.26016C5.51 8.83913 5.49854 8.41656 5.49854 7.99315H4.49854ZM4.53427 6.67179C4.51049 7.1109 4.49854 7.55159 4.49854 7.99315H5.49854C5.49854 7.56964 5.51 7.14699 5.53281 6.72586L4.53427 6.67179ZM1.4096 7.19883H5.03354V6.19883H1.4096V7.19883ZM1.89159 12.0806C2.25034 12.7044 2.69043 13.2796 3.20143 13.7906L3.90853 13.0835C3.45986 12.6349 3.07345 12.1298 2.75846 11.5821L1.89159 12.0806ZM3.20143 13.7906C3.96276 14.552 4.86659 15.1559 5.86132 15.5679L6.244 14.644C5.3706 14.2823 4.57701 13.752 3.90853 13.0835L3.20143 13.7906ZM5.86132 15.5679C5.87746 15.5746 5.89362 15.5812 5.90978 15.5878L6.28653 14.6615C6.27232 14.6557 6.25815 14.6499 6.244 14.644L5.86132 15.5679ZM4.81563 11.912C5.00304 13.0587 5.27261 14.1848 5.62192 15.277L6.57439 14.9723C6.24033 13.9279 5.98215 12.8497 5.80254 11.7507L4.81563 11.912ZM2.32502 12.3314H5.30909V11.3314H2.32502V12.3314ZM12.0872 15.5881C12.1036 15.5815 12.12 15.5747 12.1364 15.5679L11.7537 14.644C11.7394 14.65 11.725 14.6559 11.7105 14.6618L12.0872 15.5881ZM12.1364 15.5679C13.1312 15.1559 14.035 14.552 14.7963 13.7906L14.0892 13.0835C13.4207 13.752 12.6271 14.2823 11.7537 14.644L12.1364 15.5679ZM14.7963 13.7906C15.3073 13.2796 15.7474 12.7044 16.1061 12.0806L15.2393 11.5821C14.9243 12.1298 14.5379 12.6349 14.0892 13.0835L14.7963 13.7906ZM12.688 12.3314H15.6727V11.3314H12.688V12.3314ZM12.3751 15.2773C12.7244 14.185 12.994 13.0588 13.1814 11.912L12.1945 11.7507C12.0149 12.8498 11.7567 13.9281 11.4226 14.9726L12.3751 15.2773ZM17.0811 9.37123C17.1585 8.91706 17.1977 8.4561 17.1977 7.9932H16.1977C16.1977 8.39964 16.1633 8.80438 16.0953 9.20315L17.0811 9.37123ZM17.1977 7.9932C17.1977 7.52818 17.1582 7.0672 17.081 6.61476L16.0953 6.78289C16.163 7.1801 16.1977 7.58484 16.1977 7.9932H17.1977ZM12.9635 7.19883H16.5881V6.19883H12.9635V7.19883ZM13.4985 7.99315C13.4985 7.55159 13.4866 7.1109 13.4628 6.67179L12.4643 6.72586C12.4871 7.14699 12.4985 7.56964 12.4985 7.99315H13.4985ZM13.4628 9.31422C13.4866 8.8752 13.4985 8.43461 13.4985 7.99315H12.4985C12.4985 8.41656 12.4871 8.83913 12.4643 9.26016L13.4628 9.31422ZM16.5882 8.78719H12.9635V9.78719H16.5882V8.78719ZM15.6725 3.65464H12.6879V4.65464H15.6725V3.65464ZM13.1814 4.07399C12.994 2.92732 12.7244 1.80127 12.3751 0.709124L11.4226 1.01376C11.7567 2.05822 12.0149 3.13633 12.1945 4.2353L13.1814 4.07399ZM14.7963 2.19575C14.0147 1.41418 13.0916 0.806691 12.0872 0.398271L11.7105 1.32461C12.5924 1.68324 13.403 2.21661 14.0892 2.90286L14.7963 2.19575ZM16.106 3.90536C15.7495 3.28564 15.3106 2.71003 14.7963 2.19575L14.0892 2.90286C14.5408 3.35445 14.9262 3.85982 15.2391 4.40393L16.106 3.90536ZM10.4715 4.0633C10.2421 2.8284 9.90487 1.62699 9.46539 0.480945L8.53169 0.839002C8.94881 1.92673 9.26972 3.06935 9.48836 4.24599L10.4715 4.0633ZM8.01713 4.65464H9.97995V3.65464H8.01713V4.65464ZM8.53169 0.480945C8.0922 1.62699 7.75501 2.8284 7.52554 4.0633L8.50871 4.24599C8.72735 3.06935 9.04826 1.92673 9.46539 0.839002L8.53169 0.480945ZM7.20568 6.66828C7.17877 7.10791 7.1652 7.54983 7.1652 7.99315H8.1652C8.1652 7.57023 8.17815 7.14868 8.20381 6.72937L7.20568 6.66828ZM10.2923 6.19883H7.70474V7.19883H10.2923V6.19883ZM10.8319 7.99315C10.8319 7.54982 10.8183 7.1079 10.7914 6.66828L9.79326 6.72937C9.81892 7.14868 9.83187 7.57023 9.83187 7.99315H10.8319ZM10.7914 9.31773C10.8183 8.8782 10.8319 8.43637 10.8319 7.99315H9.83187C9.83187 8.41597 9.81893 8.83743 9.79328 9.25666L10.7914 9.31773ZM7.70473 9.78719H10.2923V8.78719H7.70473V9.78719ZM7.1652 7.99315C7.1652 8.43637 7.17877 8.8782 7.20566 9.31773L8.20379 9.25666C8.17814 8.83743 8.1652 8.41597 8.1652 7.99315H7.1652ZM7.52549 11.9227C7.75496 13.1577 8.09216 14.3592 8.53168 15.5053L9.46538 15.1473C9.04823 14.0595 8.7273 12.9168 8.50866 11.74L7.52549 11.9227ZM9.98 11.3314H8.01707V12.3314H9.98V11.3314ZM9.46538 15.5053C9.9049 14.3592 10.2421 13.1577 10.4716 11.9227L9.48841 11.74C9.26977 12.9168 8.94884 14.0595 8.53168 15.1473L9.46538 15.5053Z" />
    </svg>
    """
  end

  def explorations(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="explorations icon"
      class="dark:stroke-[#B8B4BF] stroke-black/70"
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M1.5 9C1.5 9.98491 1.69399 10.9602 2.0709 11.8701C2.44781 12.7801 3.00026 13.6069 3.6967 14.3033C4.39314 14.9997 5.21993 15.5522 6.12987 15.9291C7.03982 16.306 8.01509 16.5 9 16.5C9.98491 16.5 10.9602 16.306 11.8701 15.9291C12.7801 15.5522 13.6069 14.9997 14.3033 14.3033C14.9997 13.6069 15.5522 12.7801 15.9291 11.8701C16.306 10.9602 16.5 9.98491 16.5 9C16.5 7.01088 15.7098 5.10322 14.3033 3.6967C12.8968 2.29018 10.9891 1.5 9 1.5C7.01088 1.5 5.10322 2.29018 3.6967 3.6967C2.29018 5.10322 1.5 7.01088 1.5 9Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path d="M2 6.5H16" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
      <path d="M2 11.5H16" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
      <path
        d="M8.58322 1.5C7.17934 3.74968 6.43506 6.34822 6.43506 9C6.43506 11.6518 7.17934 14.2503 8.58322 16.5"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M9.41675 1.5C10.8206 3.74968 11.5649 6.34822 11.5649 9C11.5649 11.6518 10.8206 14.2503 9.41675 16.5"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false

  def assignments(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active assignments icon"
      class="dark:fill-white fill-black/70 dark:stroke-white stroke-black/70"
      width="20"
      height="20"
      viewBox="0 0 20 20"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M4.16602 11.666H15.8327L12.0827 7.91602L15.8327 4.16602H4.16602V17.4993"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def assignments(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="assignments icon"
      class="dark:stroke-[#B8B4BF] stroke-black/70"
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M4.16602 11.666H15.8327L12.0827 7.91602L15.8327 4.16602H4.16602V17.4993"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false

  def practice(%{is_active: true} = assigns) do
    ~H"""
    <svg
      role="active practice icon"
      class="dark:stroke-white stroke-black/70"
      width="14"
      height="18"
      viewBox="0 0 14 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        class="dark:fill-white fill-black/70"
        fill-rule="evenodd"
        clip-rule="evenodd"
        d="M2.83317 3.16669H4.49984C4.49984 3.60871 4.67543 4.03264 4.98799 4.3452C5.30055 4.65776 5.72448 4.83335 6.1665 4.83335H7.83317C8.2752 4.83335 8.69912 4.65776 9.01168 4.3452C9.32424 4.03264 9.49984 3.60871 9.49984 3.16669H11.1665C11.6085 3.16669 12.0325 3.34228 12.345 3.65484C12.6576 3.9674 12.8332 4.39133 12.8332 4.83335V14.8334C12.8332 15.2754 12.6576 15.6993 12.345 16.0119C12.0325 16.3244 11.6085 16.5 11.1665 16.5H2.83317C2.39114 16.5 1.96722 16.3244 1.65466 16.0119C1.3421 15.6993 1.1665 15.2754 1.1665 14.8334V4.83335C1.1665 4.39133 1.3421 3.9674 1.65466 3.65484C1.96722 3.34228 2.39114 3.16669 2.83317 3.16669ZM4.49984 7.54169C3.69442 7.54169 3.0415 8.1946 3.0415 9.00002C3.0415 9.80544 3.69442 10.4584 4.49984 10.4584H4.50817C5.31359 10.4584 5.9665 9.80544 5.9665 9.00002C5.9665 8.1946 5.31359 7.54169 4.50817 7.54169H4.49984ZM7.83317 7.54169C7.02776 7.54169 6.37484 8.1946 6.37484 9.00002C6.37484 9.80544 7.02776 10.4584 7.83317 10.4584H9.49984C10.3053 10.4584 10.9582 9.80544 10.9582 9.00002C10.9582 8.1946 10.3053 7.54169 9.49984 7.54169H7.83317ZM4.49984 10.875C3.69442 10.875 3.0415 11.5279 3.0415 12.3334C3.0415 13.1388 3.69442 13.7917 4.49984 13.7917H4.50817C5.31359 13.7917 5.9665 13.1388 5.9665 12.3334C5.9665 11.5279 5.31359 10.875 4.50817 10.875H4.49984ZM7.83317 10.875C7.02776 10.875 6.37484 11.5279 6.37484 12.3334C6.37484 13.1388 7.02776 13.7917 7.83317 13.7917H9.49984C10.3053 13.7917 10.9582 13.1388 10.9582 12.3334C10.9582 11.5279 10.3053 10.875 9.49984 10.875H7.83317Z"
        stroke-width="1.25"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M4.5 3.16667C4.5 2.72464 4.6756 2.30072 4.98816 1.98816C5.30072 1.67559 5.72464 1.5 6.16667 1.5H7.83333C8.27536 1.5 8.69928 1.67559 9.01184 1.98816C9.3244 2.30072 9.5 2.72464 9.5 3.16667C9.5 3.60869 9.3244 4.03262 9.01184 4.34518C8.69928 4.65774 8.27536 4.83333 7.83333 4.83333H6.16667C5.72464 4.83333 5.30072 4.65774 4.98816 4.34518C4.6756 4.03262 4.5 3.60869 4.5 3.16667Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def practice(%{is_active: false} = assigns) do
    ~H"""
    <svg
      role="practice icon"
      width="14"
      height="18"
      viewBox="0 0 14 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        class="dark:stroke-[#B8B4BF] stroke-black/70"
        d="M4.50008 3.16667H2.83341C2.39139 3.16667 1.96746 3.34226 1.6549 3.65482C1.34234 3.96738 1.16675 4.39131 1.16675 4.83333V14.8333C1.16675 15.2754 1.34234 15.6993 1.6549 16.0118C1.96746 16.3244 2.39139 16.5 2.83341 16.5H11.1667C11.6088 16.5 12.0327 16.3244 12.3453 16.0118C12.6578 15.6993 12.8334 15.2754 12.8334 14.8333V4.83333C12.8334 4.39131 12.6578 3.96738 12.3453 3.65482C12.0327 3.34226 11.6088 3.16667 11.1667 3.16667H9.50008M4.50008 3.16667C4.50008 2.72464 4.67568 2.30072 4.98824 1.98816C5.3008 1.67559 5.72472 1.5 6.16675 1.5H7.83341C8.27544 1.5 8.69937 1.67559 9.01193 1.98816C9.32449 2.30072 9.50008 2.72464 9.50008 3.16667M4.50008 3.16667C4.50008 3.60869 4.67568 4.03262 4.98824 4.34518C5.3008 4.65774 5.72472 4.83333 6.16675 4.83333H7.83341C8.27544 4.83333 8.69937 4.65774 9.01193 4.34518C9.32449 4.03262 9.50008 3.60869 9.50008 3.16667M4.50008 9H4.50841M7.83341 9H9.50008M4.50008 12.3333H4.50841M7.83341 12.3333H9.50008"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string,
    default: "stroke-black/70 hover:stroke-black/90 dark:stroke-[#B8B4BF] hover:dark:stroke-white"

  def left_chevron(assigns) do
    ~H"""
    <svg
      width="6"
      class={@class}
      height="9"
      viewBox="0 0 6 9"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M4.46798 7.96686L0.968018 4.4669L4.46798 0.966943"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def left_chevron_blue(assigns) do
    ~H"""
    <svg width="9" height="13" viewBox="0 0 9 13" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M8.79858 1.52555L3.93458 6.204L8.79858 10.8824L7.29382 12.3196L0.935645 6.204L7.29382 0.0883789L8.79858 1.52555Z"
        fill="#5B8FF9"
      />
    </svg>
    """
  end

  attr :class, :string,
    default: "stroke-black/70 hover:stroke-black/90 dark:stroke-[#B8B4BF] hover:dark:stroke-white"

  def support(assigns) do
    ~H"""
    <svg
      class={@class}
      width="18"
      height="18"
      viewBox="0 0 18 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M9 6.5H9.00833M1.5 9C1.5 9.98491 1.69399 10.9602 2.0709 11.8701C2.44781 12.7801 3.00026 13.6069 3.6967 14.3033C4.39314 14.9997 5.21993 15.5522 6.12987 15.9291C7.03982 16.306 8.01509 16.5 9 16.5C9.98491 16.5 10.9602 16.306 11.8701 15.9291C12.7801 15.5522 13.6069 14.9997 14.3033 14.3033C14.9997 13.6069 15.5522 12.7801 15.9291 11.8701C16.306 10.9602 16.5 9.98491 16.5 9C16.5 7.01088 15.7098 5.10322 14.3033 3.6967C12.8968 2.29018 10.9891 1.5 9 1.5C7.01088 1.5 5.10322 2.29018 3.6967 3.6967C2.29018 5.10322 1.5 7.01088 1.5 9Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M8.16675 9H9.00008V12.3333H9.83341"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string,
    default: "stroke-black/70 hover:stroke-black/90 dark:stroke-[#B8B4BF] hover:dark:stroke-white"

  def exit(assigns) do
    ~H"""
    <svg
      class={@class}
      width="16"
      height="16"
      viewBox="0 0 16 16"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M1.5 7.9967L9.83333 7.9967"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M1.5 7.9967L4.83333 4.66337"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M1.5 7.99662L4.83333 11.33"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M14.834 14.6635L14.834 1.33012"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :proficiency, :string, default: "Not enough data"

  def proficiency(%{proficiency: "Not enough data"} = assigns) do
    ~H"""
    <svg
      role="no data proficiency icon"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        class="dark:stroke-[#747474] stroke-gray-700"
        d="M8 8C8 7.20435 8.36875 6.44129 9.02513 5.87868C9.6815 5.31607 10.5717 5 11.5 5H12.5C13.4283 5 14.3185 5.31607 14.9749 5.87868C15.6313 6.44129 16 7.20435 16 8C16.0368 8.64925 15.8617 9.2929 15.501 9.83398C15.1402 10.3751 14.6135 10.7843 14 11C13.3865 11.2876 12.8598 11.8333 12.499 12.5547C12.1383 13.2761 11.9632 14.1343 12 15M12 19V19.01"
        stroke="#747474"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def proficiency(%{proficiency: "Low"} = assigns) do
    ~H"""
    <svg
      role="beginning proficiency icon"
      width="19"
      height="20"
      viewBox="0 0 19 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <rect
        class="dark:stroke-[#9B6DFF] stroke-[#7C40FF]"
        x="1"
        y="1"
        width="16.9474"
        height="18"
        rx="2"
        stroke-width="2"
      />
      <path
        class="dark:fill-[#9B6DFF] fill-[#7C40FF]"
        d="M0 13.334H18.3333V17.0007C18.3333 18.6575 16.9902 20.0007 15.3333 20.0007H3C1.34315 20.0007 0 18.6575 0 17.0007V13.334Z"
      />
    </svg>
    """
  end

  def proficiency(%{proficiency: "Medium"} = assigns) do
    ~H"""
    <svg
      role="growing proficiency icon"
      width="19"
      height="20"
      viewBox="0 0 19 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <rect
        class="dark:stroke-[#7C40FF] stroke-[#651FFF]"
        x="1"
        y="1"
        width="16.9474"
        height="18"
        rx="2"
        stroke-width="2"
      />
      <path
        d="M0 7.5H18.3333V17C18.3333 18.6569 16.9902 20 15.3333 20H3C1.34315 20 0 18.6569 0 17V7.5Z"
        class="dark:fill-[#7C40FF] fill-[#651FFF]"
      />
    </svg>
    """
  end

  def proficiency(%{proficiency: "High"} = assigns) do
    ~H"""
    <svg
      role="establishing proficiency icon"
      width="19"
      height="21"
      viewBox="0 0 19 21"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <rect
        class="dark:stroke-[#651FFF] dark:fill-[#651FFF] stroke-[#5104f7] fill-[#5104f7]"
        x="1"
        y="1.5"
        width="16.9474"
        height="18"
        rx="2"
        stroke-width="2"
      />
    </svg>
    """
  end

  attr :stroke_class, :string, default: "stroke-[#006CD9] dark:stroke-[#4CA6FF]"

  def download(assigns) do
    ~H"""
    <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M3.56934 14.9318V16.6791C3.56934 17.1425 3.75343 17.587 4.08111 17.9147C4.4088 18.2423 4.85324 18.4264 5.31666 18.4264H15.8006C16.264 18.4264 16.7084 18.2423 17.0361 17.9147C17.3638 17.587 17.5479 17.1425 17.5479 16.6791V14.9318M6.19032 9.68984L10.5586 14.0581M10.5586 14.0581L14.9269 9.68984M10.5586 14.0581V3.57422"
        class={@stroke_class}
        stroke-width="1.74732"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :color, :string, default: "#468AEF"

  def previous_arrow(assigns) do
    ~H"""
    <svg width="116" height="33" viewBox="0 0 116 33" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M26.6006 20.7041L22.6006 16.7041L26.6006 12.7041"
        stroke={@color}
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        opacity="0.9"
        d="M45.1768 13.1377C46.2822 13.1377 47.0889 13.3643 47.5967 13.8174C48.1045 14.2705 48.3584 14.9053 48.3584 15.7217C48.3584 16.0928 48.2998 16.4463 48.1826 16.7822C48.0693 17.1143 47.8818 17.4092 47.6201 17.667C47.3584 17.9209 47.0127 18.1221 46.583 18.2705C46.1572 18.4189 45.6318 18.4932 45.0068 18.4932H44.0928V21.7041H42.6865V13.1377H45.1768ZM45.083 14.3037H44.0928V17.3213H44.8604C45.3018 17.3213 45.6768 17.2705 45.9854 17.1689C46.2939 17.0635 46.5283 16.8975 46.6885 16.6709C46.8486 16.4443 46.9287 16.1455 46.9287 15.7744C46.9287 15.2783 46.7783 14.9092 46.4775 14.667C46.1807 14.4248 45.7158 14.3037 45.083 14.3037ZM53.2158 15.0947C53.3252 15.0947 53.4443 15.1006 53.5732 15.1123C53.7021 15.124 53.8135 15.1396 53.9072 15.1592L53.7783 16.4482C53.6963 16.4248 53.5947 16.4072 53.4736 16.3955C53.3564 16.3838 53.251 16.3779 53.1572 16.3779C52.9111 16.3779 52.6768 16.4189 52.4541 16.501C52.2314 16.5791 52.0342 16.7002 51.8623 16.8643C51.6904 17.0244 51.5557 17.2256 51.458 17.4678C51.3604 17.71 51.3115 17.9912 51.3115 18.3115V21.7041H49.9287V15.2178H51.0068L51.1943 16.3604H51.2588C51.3877 16.1299 51.5479 15.9189 51.7393 15.7275C51.9307 15.5361 52.1494 15.3838 52.3955 15.2705C52.6455 15.1533 52.9189 15.0947 53.2158 15.0947ZM57.6924 15.0947C58.2705 15.0947 58.7666 15.2139 59.1807 15.4521C59.5947 15.6904 59.9131 16.0283 60.1357 16.4658C60.3584 16.9033 60.4697 17.4268 60.4697 18.0361V18.7744H56.1396C56.1553 19.4033 56.3232 19.8877 56.6436 20.2275C56.9678 20.5674 57.4209 20.7373 58.0029 20.7373C58.417 20.7373 58.7881 20.6982 59.1162 20.6201C59.4482 20.5381 59.79 20.4189 60.1416 20.2627V21.3818C59.8174 21.5342 59.4873 21.6455 59.1514 21.7158C58.8154 21.7861 58.4131 21.8213 57.9443 21.8213C57.3076 21.8213 56.7471 21.6982 56.2627 21.4521C55.7822 21.2021 55.4053 20.8311 55.1318 20.3389C54.8623 19.8467 54.7275 19.2354 54.7275 18.5049C54.7275 17.7783 54.8506 17.1611 55.0967 16.6533C55.3428 16.1455 55.6885 15.7588 56.1338 15.4932C56.5791 15.2275 57.0986 15.0947 57.6924 15.0947ZM57.6924 16.1318C57.2588 16.1318 56.9072 16.2725 56.6377 16.5537C56.3721 16.835 56.2158 17.2471 56.1689 17.79H59.1221C59.1182 17.4658 59.0635 17.1787 58.958 16.9287C58.8564 16.6787 58.7002 16.4834 58.4893 16.3428C58.2822 16.2021 58.0166 16.1318 57.6924 16.1318ZM63.5049 21.7041L61.0381 15.2178H62.4971L63.833 19.0264C63.9189 19.2686 63.9971 19.5303 64.0674 19.8115C64.1377 20.0928 64.1865 20.3291 64.2139 20.5205H64.2607C64.2881 20.3213 64.3408 20.083 64.4189 19.8057C64.4971 19.5244 64.5771 19.2646 64.6592 19.0264L65.9951 15.2178H67.4482L64.9814 21.7041H63.5049ZM69.8096 15.2178V21.7041H68.4326V15.2178H69.8096ZM69.1299 12.7334C69.3408 12.7334 69.5225 12.79 69.6748 12.9033C69.8311 13.0166 69.9092 13.2119 69.9092 13.4893C69.9092 13.7627 69.8311 13.958 69.6748 14.0752C69.5225 14.1885 69.3408 14.2451 69.1299 14.2451C68.9111 14.2451 68.7256 14.1885 68.5732 14.0752C68.4248 13.958 68.3506 13.7627 68.3506 13.4893C68.3506 13.2119 68.4248 13.0166 68.5732 12.9033C68.7256 12.79 68.9111 12.7334 69.1299 12.7334ZM77.5264 18.4463C77.5264 18.9854 77.4561 19.4639 77.3154 19.8818C77.1748 20.2998 76.9697 20.6533 76.7002 20.9424C76.4307 21.2275 76.1064 21.4463 75.7275 21.5986C75.3486 21.7471 74.9209 21.8213 74.4443 21.8213C73.999 21.8213 73.5908 21.7471 73.2197 21.5986C72.8486 21.4463 72.5264 21.2275 72.2529 20.9424C71.9834 20.6533 71.7744 20.2998 71.626 19.8818C71.4775 19.4639 71.4033 18.9854 71.4033 18.4463C71.4033 17.7314 71.5264 17.126 71.7725 16.6299C72.0225 16.1299 72.3779 15.749 72.8389 15.4873C73.2998 15.2256 73.8486 15.0947 74.4854 15.0947C75.083 15.0947 75.6104 15.2256 76.0674 15.4873C76.5244 15.749 76.8818 16.1299 77.1396 16.6299C77.3975 17.1299 77.5264 17.7354 77.5264 18.4463ZM72.8213 18.4463C72.8213 18.9189 72.8779 19.3232 72.9912 19.6592C73.1084 19.9951 73.2881 20.2529 73.5303 20.4326C73.7725 20.6084 74.085 20.6963 74.4678 20.6963C74.8506 20.6963 75.1631 20.6084 75.4053 20.4326C75.6475 20.2529 75.8252 19.9951 75.9385 19.6592C76.0518 19.3232 76.1084 18.9189 76.1084 18.4463C76.1084 17.9736 76.0518 17.5732 75.9385 17.2451C75.8252 16.9131 75.6475 16.6611 75.4053 16.4893C75.1631 16.3135 74.8486 16.2256 74.4619 16.2256C73.8916 16.2256 73.4756 16.417 73.2139 16.7998C72.9521 17.1826 72.8213 17.7314 72.8213 18.4463ZM84.7627 15.2178V21.7041H83.6787L83.4912 20.8311H83.415C83.2783 21.0537 83.1045 21.2393 82.8936 21.3877C82.6826 21.5322 82.4482 21.6396 82.1904 21.71C81.9326 21.7842 81.6611 21.8213 81.376 21.8213C80.8877 21.8213 80.4697 21.7393 80.1221 21.5752C79.7783 21.4072 79.5146 21.1494 79.3311 20.8018C79.1475 20.4541 79.0557 20.0049 79.0557 19.4541V15.2178H80.4385V19.1963C80.4385 19.7002 80.54 20.0771 80.7432 20.3271C80.9502 20.5771 81.2705 20.7021 81.7041 20.7021C82.1221 20.7021 82.4541 20.6162 82.7002 20.4443C82.9463 20.2725 83.1201 20.0186 83.2217 19.6826C83.3271 19.3467 83.3799 18.9346 83.3799 18.4463V15.2178H84.7627ZM91.0967 19.8525C91.0967 20.2783 90.9932 20.6377 90.7861 20.9307C90.5791 21.2236 90.2764 21.4463 89.8779 21.5986C89.4834 21.7471 88.999 21.8213 88.4248 21.8213C87.9717 21.8213 87.5811 21.7881 87.2529 21.7217C86.9287 21.6592 86.6221 21.5615 86.333 21.4287V20.2393C86.6416 20.3838 86.9873 20.5088 87.3701 20.6143C87.7568 20.7197 88.1221 20.7725 88.4658 20.7725C88.9189 20.7725 89.2451 20.7021 89.4443 20.5615C89.6436 20.417 89.7432 20.2256 89.7432 19.9873C89.7432 19.8467 89.7021 19.7217 89.6201 19.6123C89.542 19.499 89.3936 19.3838 89.1748 19.2666C88.96 19.1455 88.6436 19.001 88.2256 18.833C87.8154 18.6689 87.4697 18.5049 87.1885 18.3408C86.9072 18.1768 86.6943 17.9795 86.5498 17.749C86.4053 17.5146 86.333 17.2158 86.333 16.8525C86.333 16.2783 86.5596 15.8428 87.0127 15.5459C87.4697 15.2451 88.0732 15.0947 88.8232 15.0947C89.2217 15.0947 89.5967 15.1357 89.9482 15.2178C90.3037 15.2959 90.6514 15.4111 90.9912 15.5635L90.5576 16.6006C90.2646 16.4717 89.9697 16.3662 89.6729 16.2842C89.3799 16.1982 89.0811 16.1553 88.7764 16.1553C88.4209 16.1553 88.1494 16.21 87.9619 16.3193C87.7783 16.4287 87.6865 16.585 87.6865 16.7881C87.6865 16.9404 87.7314 17.0693 87.8213 17.1748C87.9111 17.2803 88.0654 17.3857 88.2842 17.4912C88.5068 17.5967 88.8154 17.7275 89.21 17.8838C89.5967 18.0322 89.9307 18.1885 90.2119 18.3525C90.4971 18.5127 90.7158 18.71 90.8682 18.9443C91.0205 19.1787 91.0967 19.4814 91.0967 19.8525Z"
        fill={@color}
      />
    </svg>
    """
  end

  attr :color, :string, default: "#468AEF"

  def next_arrow(assigns) do
    ~H"""
    <svg width="93" height="33" viewBox="0 0 93 33" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        opacity="0.9"
        d="M32.8965 21.7041H31.168L26.9727 14.8662H26.9199C26.9355 15.0967 26.9492 15.3408 26.9609 15.5986C26.9766 15.8564 26.9883 16.1221 26.9961 16.3955C27.0078 16.6689 27.0176 16.9463 27.0254 17.2275V21.7041H25.748V13.1377H27.4648L31.6543 19.9287H31.6953C31.6875 19.7295 31.6777 19.501 31.666 19.2432C31.6543 18.9854 31.6426 18.7197 31.6309 18.4463C31.623 18.1689 31.6172 17.9014 31.6133 17.6436V13.1377H32.8965V21.7041ZM37.5898 15.0947C38.168 15.0947 38.6641 15.2139 39.0781 15.4521C39.4922 15.6904 39.8105 16.0283 40.0332 16.4658C40.2559 16.9033 40.3672 17.4268 40.3672 18.0361V18.7744H36.0371C36.0527 19.4033 36.2207 19.8877 36.541 20.2275C36.8652 20.5674 37.3184 20.7373 37.9004 20.7373C38.3145 20.7373 38.6855 20.6982 39.0137 20.6201C39.3457 20.5381 39.6875 20.4189 40.0391 20.2627V21.3818C39.7148 21.5342 39.3848 21.6455 39.0488 21.7158C38.7129 21.7861 38.3105 21.8213 37.8418 21.8213C37.2051 21.8213 36.6445 21.6982 36.1602 21.4521C35.6797 21.2021 35.3027 20.8311 35.0293 20.3389C34.7598 19.8467 34.625 19.2354 34.625 18.5049C34.625 17.7783 34.748 17.1611 34.9941 16.6533C35.2402 16.1455 35.5859 15.7588 36.0312 15.4932C36.4766 15.2275 36.9961 15.0947 37.5898 15.0947ZM37.5898 16.1318C37.1562 16.1318 36.8047 16.2725 36.5352 16.5537C36.2695 16.835 36.1133 17.2471 36.0664 17.79H39.0195C39.0156 17.4658 38.9609 17.1787 38.8555 16.9287C38.7539 16.6787 38.5977 16.4834 38.3867 16.3428C38.1797 16.2021 37.9141 16.1318 37.5898 16.1318ZM43.3555 18.3877L41.1875 15.2178H42.7578L44.2402 17.4971L45.7285 15.2178H47.293L45.1133 18.3877L47.4043 21.7041H45.8281L44.2402 19.2725L42.6465 21.7041H41.082L43.3555 18.3877ZM50.9434 20.708C51.123 20.708 51.3008 20.6924 51.4766 20.6611C51.6523 20.626 51.8125 20.585 51.957 20.5381V21.5811C51.8047 21.6475 51.6074 21.7041 51.3652 21.751C51.123 21.7979 50.8711 21.8213 50.6094 21.8213C50.2422 21.8213 49.9121 21.7607 49.6191 21.6396C49.3262 21.5146 49.0938 21.3018 48.9219 21.001C48.75 20.7002 48.6641 20.2842 48.6641 19.7529V16.2666H47.7793V15.6514L48.7285 15.165L49.1797 13.7764H50.0469V15.2178H51.9043V16.2666H50.0469V19.7354C50.0469 20.0635 50.1289 20.3076 50.293 20.4678C50.457 20.6279 50.6738 20.708 50.9434 20.708Z"
        fill={@color}
      />
      <path
        d="M66.291 12.7041L70.291 16.7041L66.291 20.7041"
        stroke={@color}
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def visible(assigns) do
    ~H"""
    <svg
      role="visible icon"
      width="19"
      height="18"
      viewBox="0 0 19 18"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      stroke="currentColor"
    >
      <path
        d="M8 9C8 9.39782 8.15804 9.77936 8.43934 10.0607C8.72064 10.342 9.10218 10.5 9.5 10.5C9.89782 10.5 10.2794 10.342 10.5607 10.0607C10.842 9.77936 11 9.39782 11 9C11 8.60218 10.842 8.22064 10.5607 7.93934C10.2794 7.65804 9.89782 7.5 9.5 7.5C9.10218 7.5 8.72064 7.65804 8.43934 7.93934C8.15804 8.22064 8 8.60218 8 9Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M16.25 9C14.45 12 12.2 13.5 9.5 13.5C6.8 13.5 4.55 12 2.75 9C4.55 6 6.8 4.5 9.5 4.5C12.2 4.5 14.45 6 16.25 9Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def hidden(assigns) do
    ~H"""
    <svg
      role="hidden icon"
      width="19"
      fill="none"
      stroke="currentColor"
      height="18"
      viewBox="0 0 19 18"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M8.43868 7.94043C8.15741 8.22179 7.99944 8.60336 7.99951 9.00119C7.99958 9.39903 8.15769 9.78054 8.43905 10.0618C8.72041 10.3431 9.10198 10.501 9.49981 10.501C9.89765 10.5009 10.2792 10.3428 10.5604 10.0614"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M13.0107 12.5048C11.9587 13.163 10.741 13.5082 9.5 13.5C6.8 13.5 4.55 12 2.75 9.00002C3.704 7.41002 4.784 6.24152 5.99 5.49452M8.135 4.63502C8.58428 4.54407 9.04161 4.49884 9.5 4.50002C12.2 4.50002 14.45 6.00002 16.25 9.00002C15.7505 9.83252 15.2157 10.5503 14.6465 11.1525"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M2.75 2.25L16.25 15.75"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false
  attr :stroke, :string, default: "dark:stroke-white stroke-black/70"
  attr :class, :string, default: "w-[39px] h-[27px]"

  def graduation_cap(%{is_active: false} = assigns) do
    ~H"""
    <svg class={@class} viewBox="0 0 39 27" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M36.5827 8.37533L19.4993 1.54199L2.41602 8.37533L19.4993 15.2087L36.5827 8.37533ZM36.5827 8.37533V18.6253M9.24935 11.1087V20.3337C9.24935 21.6929 10.3293 22.9965 12.2515 23.9576C14.1738 24.9187 16.7809 25.4587 19.4993 25.4587C22.2178 25.4587 24.8249 24.9187 26.7472 23.9576C28.6694 22.9965 29.7493 21.6929 29.7493 20.3337V11.1087"
        class={@stroke}
        stroke-width="3"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def graduation_cap(%{is_active: true} = assigns) do
    ~H"""
    <svg width="39" height="27" viewBox="0 0 39 27" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M36.5827 8.37533L19.4993 1.54199L2.41602 8.37533L19.4993 15.2087L36.5827 8.37533ZM36.5827 8.37533V18.6253M9.24935 11.1087V20.3337C9.24935 21.6929 10.3293 22.9965 12.2515 23.9576C14.1738 24.9187 16.7809 25.4587 19.4993 25.4587C22.2178 25.4587 24.8249 24.9187 26.7472 23.9576C28.6694 22.9965 29.7493 21.6929 29.7493 20.3337V11.1087"
        class="stroke-[#353740] dark:stroke-white"
        stroke-width="3"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false
  attr :class, :string, default: "w-[24px] h-[24px]"
  attr :stroke_class, :string, default: "stroke-[#757682] dark:stroke-[#BAB8BF]"

  def writing_pencil(%{is_active: false} = assigns) do
    ~H"""
    <svg class={@class} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M18 19L16 17V5C16 3.879 16.879 3 18 3C19.121 3 20 3.879 20 5V17L18 19ZM18 19H5C4.46957 19 3.96086 18.7893 3.58579 18.4142C3.21071 18.0391 3 17.5304 3 17C3 16.4696 3.21071 15.9609 3.58579 15.5858C3.96086 15.2107 4.46957 15 5 15H9C9.53043 15 10.0391 14.7893 10.4142 14.4142C10.7893 14.0391 11 13.5304 11 13C11 12.4696 10.7893 11.9609 10.4142 11.5858C10.0391 11.2107 9.53043 11 9 11H6M16 7H20"
        class={@stroke_class}
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def writing_pencil(%{is_active: true} = assigns) do
    ~H"""
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M18 19L16 17V5C16 3.879 16.879 3 18 3C19.121 3 20 3.879 20 5V17L18 19ZM18 19H5C4.46957 19 3.96086 18.7893 3.58579 18.4142C3.21071 18.0391 3 17.5304 3 17C3 16.4696 3.21071 15.9609 3.58579 15.5858C3.96086 15.2107 4.46957 15 5 15H9C9.53043 15 10.0391 14.7893 10.4142 14.4142C10.7893 14.0391 11 13.5304 11 13C11 12.4696 10.7893 11.9609 10.4142 11.5858C10.0391 11.2107 9.53043 11 9 11H6M16 7H20"
        class="stroke-[#353740] dark:stroke-white"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :is_active, :boolean, default: false
  attr :stroke_class, :string, default: "stroke-[#757682] dark:stroke-[#BAB8BF]"
  attr :class, :string, default: "w-[24px] h-[24px]"

  def growing_bars(%{is_active: false} = assigns) do
    ~H"""
    <svg class={@class} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M9 19V13C9 12.7348 8.89464 12.4804 8.70711 12.2929C8.51957 12.1054 8.26522 12 8 12H4C3.73478 12 3.48043 12.1054 3.29289 12.2929C3.10536 12.4804 3 12.7348 3 13V19C3 19.2652 3.10536 19.5196 3.29289 19.7071C3.48043 19.8946 3.73478 20 4 20M9 19C9 19.2652 8.89464 19.5196 8.70711 19.7071C8.51957 19.8946 8.26522 20 8 20H4M9 19C9 19.2652 9.10536 19.5196 9.29289 19.7071C9.48043 19.8946 9.73478 20 10 20H14C14.2652 20 14.5196 19.8946 14.7071 19.7071C14.8946 19.5196 15 19.2652 15 19M9 19V9C9 8.73478 9.10536 8.48043 9.29289 8.29289C9.48043 8.10536 9.73478 8 10 8H14C14.2652 8 14.5196 8.10536 14.7071 8.29289C14.8946 8.48043 15 8.73478 15 9V19M4 20H18M15 19C15 19.2652 15.1054 19.5196 15.2929 19.7071C15.4804 19.8946 15.7348 20 16 20H20C20.2652 20 20.5196 19.8946 20.7071 19.7071C20.8946 19.5196 21 19.2652 21 19V5C21 4.73478 20.8946 4.48043 20.7071 4.29289C20.5196 4.10536 20.2652 4 20 4H16C15.7348 4 15.4804 4.10536 15.2929 4.29289C15.1054 4.48043 15 4.73478 15 5V19Z"
        class={@stroke_class}
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def growing_bars(%{is_active: true} = assigns) do
    ~H"""
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M9 19V13C9 12.7348 8.89464 12.4804 8.70711 12.2929C8.51957 12.1054 8.26522 12 8 12H4C3.73478 12 3.48043 12.1054 3.29289 12.2929C3.10536 12.4804 3 12.7348 3 13V19C3 19.2652 3.10536 19.5196 3.29289 19.7071C3.48043 19.8946 3.73478 20 4 20M9 19C9 19.2652 8.89464 19.5196 8.70711 19.7071C8.51957 19.8946 8.26522 20 8 20H4M9 19C9 19.2652 9.10536 19.5196 9.29289 19.7071C9.48043 19.8946 9.73478 20 10 20H14C14.2652 20 14.5196 19.8946 14.7071 19.7071C14.8946 19.5196 15 19.2652 15 19M9 19V9C9 8.73478 9.10536 8.48043 9.29289 8.29289C9.48043 8.10536 9.73478 8 10 8H14C14.2652 8 14.5196 8.10536 14.7071 8.29289C14.8946 8.48043 15 8.73478 15 9V19M4 20H18M15 19C15 19.2652 15.1054 19.5196 15.2929 19.7071C15.4804 19.8946 15.7348 20 16 20H20C20.2652 20 20.5196 19.8946 20.7071 19.7071C20.8946 19.5196 21 19.2652 21 19V5C21 4.73478 20.8946 4.48043 20.7071 4.29289C20.5196 4.10536 20.2652 4 20 4H16C15.7348 4 15.4804 4.10536 15.2929 4.29289C15.1054 4.48043 15 4.73478 15 5V19Z"
        class="stroke-[#353740] dark:stroke-white"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-black dark:stroke-white"

  def pencil_writing(assigns) do
    ~H"""
    <svg width="33" height="31" viewBox="0 0 33 31" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M27.75 29.4583L24.3333 26.0417V5.54167C24.3333 3.62662 25.835 2.125 27.75 2.125C29.665 2.125 31.1667 3.62662 31.1667 5.54167V26.0417L27.75 29.4583ZM27.75 29.4583H5.54167C4.63551 29.4583 3.76647 29.0984 3.12572 28.4576C2.48497 27.8169 2.125 26.9478 2.125 26.0417C2.125 25.1355 2.48497 24.2665 3.12572 23.6257C3.76647 22.985 4.63551 22.625 5.54167 22.625H12.375C13.2812 22.625 14.1502 22.265 14.7909 21.6243C15.4317 20.9835 15.7917 20.1145 15.7917 19.2083C15.7917 18.3022 15.4317 17.4331 14.7909 16.7924C14.1502 16.1516 13.2812 15.7917 12.375 15.7917H7.25M24.3333 8.95833H31.1667"
        stroke-width="2.5"
        stroke-linecap="round"
        stroke-linejoin="round"
        class={@class}
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-black dark:stroke-white"

  def bar_chart(assigns) do
    ~H"""
    <svg width="30" height="28" viewBox="0 0 30 28" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M10.5 24.5V15.5C10.5 15.1022 10.342 14.7206 10.0607 14.4393C9.77936 14.158 9.39782 14 9 14H3C2.60218 14 2.22064 14.158 1.93934 14.4393C1.65804 14.7206 1.5 15.1022 1.5 15.5V24.5C1.5 24.8978 1.65804 25.2794 1.93934 25.5607C2.22064 25.842 2.60218 26 3 26M10.5 24.5C10.5 24.8978 10.342 25.2794 10.0607 25.5607C9.77936 25.842 9.39782 26 9 26H3M10.5 24.5C10.5 24.8978 10.658 25.2794 10.9393 25.5607C11.2206 25.842 11.6022 26 12 26H18C18.3978 26 18.7794 25.842 19.0607 25.5607C19.342 25.2794 19.5 24.8978 19.5 24.5M10.5 24.5V9.5C10.5 9.10218 10.658 8.72064 10.9393 8.43934C11.2206 8.15804 11.6022 8 12 8H18C18.3978 8 18.7794 8.15804 19.0607 8.43934C19.342 8.72064 19.5 9.10218 19.5 9.5V24.5M3 26H24M19.5 24.5C19.5 24.8978 19.658 25.2794 19.9393 25.5607C20.2206 25.842 20.6022 26 21 26H27C27.3978 26 27.7794 25.842 28.0607 25.5607C28.342 25.2794 28.5 24.8978 28.5 24.5V3.5C28.5 3.10218 28.342 2.72064 28.0607 2.43934C27.7794 2.15804 27.3978 2 27 2H21C20.6022 2 20.2206 2.15804 19.9393 2.43934C19.658 2.72064 19.5 3.10218 19.5 3.5V24.5Z"
        class={@class}
        stroke-width="2.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def author_overview(assigns) do
    ~H"""
    <svg
      width="19"
      height="17"
      viewBox="0 0 19 17"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M15.5 13.5L18 16M1 1H17M1 7H5M1 13H5M8 10C8 11.0609 8.42143 12.0783 9.17157 12.8284C9.92172 13.5786 10.9391 14 12 14C13.0609 14 14.0783 13.5786 14.8284 12.8284C15.5786 12.0783 16 11.0609 16 10C16 8.93913 15.5786 7.92172 14.8284 7.17157C14.0783 6.42143 13.0609 6 12 6C10.9391 6 9.92172 6.42143 9.17157 7.17157C8.42143 7.92172 8 8.93913 8 10Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def author_create(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M1 10H2M10 1V2M18 10H19M3.6 3.6L4.3 4.3M16.4 3.6L15.7 4.3M7.7 15H12.3M7 14C6.16047 13.3704 5.54033 12.4925 5.22743 11.4908C4.91453 10.4892 4.92473 9.41442 5.25658 8.41886C5.58844 7.4233 6.22512 6.55739 7.07645 5.94379C7.92778 5.33019 8.95059 5 10 5C11.0494 5 12.0722 5.33019 12.9236 5.94379C13.7749 6.55739 14.4116 7.4233 14.7434 8.41886C15.0753 9.41442 15.0855 10.4892 14.7726 11.4908C14.4597 12.4925 13.8395 13.3704 13 14C12.6096 14.3865 12.3156 14.8594 12.1419 15.3806C11.9681 15.9018 11.9195 16.4566 12 17C12 17.5304 11.7893 18.0391 11.4142 18.4142C11.0391 18.7893 10.5304 19 10 19C9.46957 19 8.96086 18.7893 8.58579 18.4142C8.21071 18.0391 8 17.5304 8 17C8.08046 16.4566 8.03185 15.9018 7.85813 15.3806C7.6844 14.8594 7.39043 14.3865 7 14Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def author_publish(assigns) do
    ~H"""
    <svg
      width="21"
      height="21"
      viewBox="0 0 21 21"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M9.00056 12L20.0006 1M9.00056 12L12.5006 19C12.5444 19.0957 12.6149 19.1769 12.7035 19.2338C12.7921 19.2906 12.8952 19.3209 13.0006 19.3209C13.1059 19.3209 13.209 19.2906 13.2976 19.2338C13.3862 19.1769 13.4567 19.0957 13.5006 19L20.0006 1M9.00056 12L2.00056 8.5C1.90482 8.45613 1.82369 8.38569 1.7668 8.29705C1.70992 8.20842 1.67969 8.10532 1.67969 8C1.67969 7.89468 1.70992 7.79158 1.7668 7.70295C1.82369 7.61431 1.90482 7.54387 2.00056 7.5L20.0006 1"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def author_improve(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M1 1V19H19M18 16V19M14 14V19M10 11V19M6 14V19M1 9C7 9 6 4 10 4C14 4 13 9 19 9"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :selected_question_number, :integer, default: 1

  def previous_question_arrow(assigns) do
    ~H"""
    <svg width="13" height="10" viewBox="0 0 13 10" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M1.95898 5H11.959M1.95898 5L5.95898 9M1.95898 5L5.95898 1"
        stroke={if(@selected_question_number == 1, do: "#9b9b9b", else: "#0062F2")}
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def next_question_arrow(assigns) do
    ~H"""
    <svg width="13" height="11" viewBox="0 0 13 11" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M11.2002 5.21094H1.2002M11.2002 5.21094L7.2002 9.21094M11.2002 5.21094L7.2002 1.21094"
        stroke="#0062F2"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: ""

  def left_arrow(assigns) do
    ~H"""
    <svg
      width="34"
      height="33"
      viewBox="0 0 34 33"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
    >
      <path d="M17.0459 32.5278C8.19971 32.5278 0.884277 25.2124 0.884277 16.3662C0.884277 7.50391 8.18359 0.20459 17.0298 0.20459C25.8921 0.20459 33.2075 7.50391 33.2075 16.3662C33.2075 25.2124 25.8921 32.5278 17.0459 32.5278ZM17.0459 30.4331C24.8447 30.4331 31.1289 24.1489 31.1289 16.3662C31.1289 8.56738 24.8286 2.2832 17.0298 2.2832C9.24707 2.2832 2.979 8.56738 2.979 16.3662C2.979 24.1489 9.24707 30.4331 17.0459 30.4331ZM20.1235 24.2778C19.7852 24.6162 19.1567 24.6001 18.7861 24.2456L11.8252 17.5747C11.1162 16.9141 11.1001 15.8184 11.8252 15.1416L18.7861 8.4707C19.189 8.1001 19.7529 8.1001 20.1235 8.43848C20.5103 8.79297 20.5103 9.42139 20.1235 9.79199L13.2593 16.3501L20.1235 22.9404C20.5103 23.2949 20.5103 23.8911 20.1235 24.2778Z" />
    </svg>
    """
  end

  def expand(assigns) do
    ~H"""
    <svg width="9" height="19" viewBox="0 0 9 19" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M1 4.49996L4.49996 1L7.99992 4.49996"
        stroke="#0062F2"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M8 14L4.50004 17.5L1.00008 14"
        stroke="#0062F2"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def collapse(assigns) do
    ~H"""
    <svg width="9" height="19" viewBox="0 0 9 19" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M8 1.00004L4.50004 4.5L1.00008 1.00004"
        stroke="#0062F2"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M1 17.6411L4.49996 14.1411L7.99991 17.6411"
        stroke="#0062F2"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def timezone_world(assigns) do
    ~H"""
    <svg
      role="timezone world icon"
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M16.4033 7.795C16.1815 6.43279 15.5881 5.15819 14.6885 4.11153C13.7889 3.06486 12.618 2.28673 11.3045 1.86278C9.99111 1.43884 8.58618 1.38553 7.24442 1.70873C5.90265 2.03192 4.67608 2.71909 3.69974 3.69457C2.72341 4.67006 2.03517 5.89603 1.71081 7.23751C1.38644 8.579 1.43853 9.98398 1.86133 11.2978C2.28413 12.6116 3.06124 13.7832 4.10712 14.6837C5.153 15.5842 6.42709 16.1787 7.7891 16.4017M1.99994 6.5H15.9999M1.99994 11.5H7.74994M8.58327 1.5C7.43345 3.34227 6.72256 5.42423 6.50553 7.585C6.2885 9.74578 6.57114 11.9275 7.3316 13.9617M9.4166 1.5C10.6112 3.41454 11.3312 5.58677 11.5166 7.83583M13.9999 12.75V14L14.4166 14.4167M10.6666 14C10.6666 14.8841 11.0178 15.7319 11.6429 16.357C12.268 16.9821 13.1159 17.3333 13.9999 17.3333C14.884 17.3333 15.7318 16.9821 16.357 16.357C16.9821 15.7319 17.3333 14.8841 17.3333 14C17.3333 13.1159 16.9821 12.2681 16.357 11.643C15.7318 11.0179 14.884 10.6667 13.9999 10.6667C13.1159 10.6667 12.268 11.0179 11.6429 11.643C11.0178 12.2681 10.6666 13.1159 10.6666 14Z"
        stroke="currentColor"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  ########## Student Delivery Icons (end) ##########

  ########## Instructor Navigation Bar Icons (start) ##########
  def list_search(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M15.5 13.5L18 16M1 1H17M1 7H5M1 13H5M8 10C8 11.0609 8.42143 12.0783 9.17157 12.8284C9.92172 13.5786 10.9391 14 12 14C13.0609 14 14.0783 13.5786 14.8284 12.8284C15.5786 12.0783 16 11.0609 16 10C16 8.93913 15.5786 7.92172 14.8284 7.17157C14.0783 6.42143 13.0609 6 12 6C10.9391 6 9.92172 6.42143 9.17157 7.17157C8.42143 7.92172 8 8.93913 8 10Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def folder(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M3 1H7L10 4H17C17.5304 4 18.0391 4.21071 18.4142 4.58579C18.7893 4.96086 19 5.46957 19 6V14C19 14.5304 18.7893 15.0391 18.4142 15.4142C18.0391 15.7893 17.5304 16 17 16H3C2.46957 16 1.96086 15.7893 1.58579 15.4142C1.21071 15.0391 1 14.5304 1 14V3C1 2.46957 1.21071 1.96086 1.58579 1.58579C1.96086 1.21071 2.46957 1 3 1Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def settings(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <path
        d="M8.325 2.317C8.751 0.561 11.249 0.561 11.675 2.317C11.7389 2.5808 11.8642 2.82578 12.0407 3.032C12.2172 3.23822 12.4399 3.39985 12.6907 3.50375C12.9414 3.60764 13.2132 3.65085 13.4838 3.62987C13.7544 3.60889 14.0162 3.5243 14.248 3.383C15.791 2.443 17.558 4.209 16.618 5.753C16.4769 5.98466 16.3924 6.24634 16.3715 6.51677C16.3506 6.78721 16.3938 7.05877 16.4975 7.30938C16.6013 7.55999 16.7627 7.78258 16.9687 7.95905C17.1747 8.13553 17.4194 8.26091 17.683 8.325C19.439 8.751 19.439 11.249 17.683 11.675C17.4192 11.7389 17.1742 11.8642 16.968 12.0407C16.7618 12.2172 16.6001 12.4399 16.4963 12.6907C16.3924 12.9414 16.3491 13.2132 16.3701 13.4838C16.3911 13.7544 16.4757 14.0162 16.617 14.248C17.557 15.791 15.791 17.558 14.247 16.618C14.0153 16.4769 13.7537 16.3924 13.4832 16.3715C13.2128 16.3506 12.9412 16.3938 12.6906 16.4975C12.44 16.6013 12.2174 16.7627 12.0409 16.9687C11.8645 17.1747 11.7391 17.4194 11.675 17.683C11.249 19.439 8.751 19.439 8.325 17.683C8.26108 17.4192 8.13578 17.1742 7.95929 16.968C7.7828 16.7618 7.56011 16.6001 7.30935 16.4963C7.05859 16.3924 6.78683 16.3491 6.51621 16.3701C6.24559 16.3911 5.98375 16.4757 5.752 16.617C4.209 17.557 2.442 15.791 3.382 14.247C3.5231 14.0153 3.60755 13.7537 3.62848 13.4832C3.64942 13.2128 3.60624 12.9412 3.50247 12.6906C3.3987 12.44 3.23726 12.2174 3.03127 12.0409C2.82529 11.8645 2.58056 11.7391 2.317 11.675C0.561 11.249 0.561 8.751 2.317 8.325C2.5808 8.26108 2.82578 8.13578 3.032 7.95929C3.23822 7.7828 3.39985 7.56011 3.50375 7.30935C3.60764 7.05859 3.65085 6.78683 3.62987 6.51621C3.60889 6.24559 3.5243 5.98375 3.383 5.752C2.443 4.209 4.209 2.442 5.753 3.382C6.753 3.99 8.049 3.452 8.325 2.317Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
      <path
        d="M7 10C7 10.7956 7.31607 11.5587 7.87868 12.1213C8.44129 12.6839 9.20435 13 10 13C10.7956 13 11.5587 12.6839 12.1213 12.1213C12.6839 11.5587 13 10.7956 13 10C13 9.20435 12.6839 8.44129 12.1213 7.87868C11.5587 7.31607 10.7956 7 10 7C9.20435 7 8.44129 7.31607 7.87868 7.87868C7.31607 8.44129 7 9.20435 7 10Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-[#757682] dark:stroke-[#BAB8BF]"

  def message(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class={@class}
    >
      <path
        d="M6 6H14M6 10H12M7 15H4C3.20435 15 2.44129 14.6839 1.87868 14.1213C1.31607 13.5587 1 12.7956 1 12V4C1 3.20435 1.31607 2.44129 1.87868 1.87868C2.44129 1.31607 3.20435 1 4 1H16C16.7956 1 17.5587 1.31607 18.1213 1.87868C18.6839 2.44129 19 3.20435 19 4V12C19 12.7956 18.6839 13.5587 18.1213 14.1213C17.5587 14.6839 16.7956 15 16 15H13L10 18L7 15Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def right_arrow_login(assigns) do
    ~H"""
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M5 12H19M19 12L15 16M19 12L15 8"
        stroke="currentColor"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  def message_circles(assigns) do
    ~H"""
    <svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        fill-rule="evenodd"
        clip-rule="evenodd"
        d="M6.39025 13.8644C5.82467 13.7688 5.28239 13.6033 4.77288 13.3771L0.937037 14.614C0.679775 14.6969 0.397724 14.6282 0.207531 14.4361C0.0173385 14.244 -0.0486664 13.9613 0.036814 13.7049L1.30397 9.90351C0.93151 9.06141 0.724879 8.13005 0.724879 7.15211C0.724879 3.39223 3.77287 0.344238 7.53275 0.344238C11.2926 0.344238 14.3406 3.39223 14.3406 7.15211C14.3406 7.22106 14.3396 7.28976 14.3376 7.35822C16.6801 8.17991 18.3597 10.4108 18.3597 13.0339C18.3597 13.8977 18.1772 14.7204 17.8482 15.4642L18.9675 18.8218C19.043 19.0483 18.9847 19.298 18.8167 19.4677C18.6487 19.6373 18.3996 19.6981 18.1723 19.6248L14.7843 18.5323C14.0385 18.8634 13.2132 19.0471 12.3466 19.0471C9.30733 19.0471 6.79474 16.7924 6.39025 13.8644ZM2.15885 7.15211C2.15885 4.18418 4.56482 1.77821 7.53275 1.77821C10.4654 1.77821 12.8493 4.12727 12.9056 7.04642C12.7215 7.02945 12.5351 7.02077 12.3466 7.02077C9.23994 7.02077 6.68356 9.37662 6.36647 12.3993C5.93623 12.3041 5.5257 12.1574 5.14144 11.9661C4.97378 11.8827 4.78012 11.8681 4.60187 11.9256L1.84515 12.8145L2.7549 10.0853C2.81483 9.90554 2.80114 9.70932 2.71681 9.53959C2.35988 8.82117 2.15885 8.01114 2.15885 7.15211Z"
        fill="currentColor"
      />
    </svg>
    """
  end

  def cross(assigns) do
    ~H"""
    <svg
      width="16"
      height="17"
      viewBox="0 0 16 17"
      xmlns="http://www.w3.org/2000/svg"
      class="fill-black"
    >
      <path d="M4.26659 13.3026L3.33325 12.3692L7.06659 8.63591L3.33325 4.90257L4.26659 3.96924L7.99992 7.70257L11.7333 3.96924L12.6666 4.90257L8.93325 8.63591L12.6666 12.3692L11.7333 13.3026L7.99992 9.56924L4.26659 13.3026Z" />
    </svg>
    """
  end

  def edit(assigns) do
    ~H"""
    <svg width="20" height="20" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M3.8335 4.83342H3.00016C2.55814 4.83342 2.13421 5.00902 1.82165 5.32158C1.50909 5.63414 1.3335 6.05806 1.3335 6.50009V14.0001C1.3335 14.4421 1.50909 14.866 1.82165 15.1786C2.13421 15.4912 2.55814 15.6668 3.00016 15.6668H10.5002C10.9422 15.6668 11.3661 15.4912 11.6787 15.1786C11.9912 14.866 12.1668 14.4421 12.1668 14.0001V13.1668M11.3335 3.16676L13.8335 5.66676M14.9877 4.48759C15.3159 4.15938 15.5003 3.71424 15.5003 3.25009C15.5003 2.78594 15.3159 2.34079 14.9877 2.01259C14.6595 1.68438 14.2143 1.5 13.7502 1.5C13.286 1.5 12.8409 1.68438 12.5127 2.01259L5.50016 9.00009V11.5001H8.00016L14.9877 4.48759Z"
        stroke="#0165DA"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-[#0CAF61] dark:stroke-[#39E581]"

  def certificate(assigns) do
    ~H"""
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M13 17.5V22L15 20.5L17 22V17.5M10 19H5C4.46957 19 3.96086 18.7893 3.58579 18.4142C3.21071 18.0391 3 17.5304 3 17V7C3 5.9 3.9 5 5 5H19C19.5304 5 20.0391 5.21071 20.4142 5.58579C20.7893 5.96086 21 6.46957 21 7V17C20.9996 17.3507 20.9071 17.6952 20.7315 17.9988C20.556 18.3025 20.3037 18.5546 20 18.73M6 9H18M6 12H9M6 15H8M12 15C12 15.7956 12.3161 16.5587 12.8787 17.1213C13.4413 17.6839 14.2044 18 15 18C15.7956 18 16.5587 17.6839 17.1213 17.1213C17.6839 16.5587 18 15.7956 18 15C18 14.2044 17.6839 13.4413 17.1213 12.8787C16.5587 12.3161 15.7956 12 15 12C14.2044 12 13.4413 12.3161 12.8787 12.8787C12.3161 13.4413 12 14.2044 12 15Z"
        stroke-width="1.5"
        stroke-linecap="round"
        stroke-linejoin="round"
        class={@class}
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-[#3B76D3]"

  def email(assigns) do
    ~H"""
    <svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M10.484 15.8334H4.36841C3.905 15.8334 3.46056 15.6578 3.13287 15.3453C2.80519 15.0327 2.62109 14.6088 2.62109 14.1667V5.83341M2.62109 5.83341C2.62109 5.39139 2.80519 4.96746 3.13287 4.6549C3.46056 4.34234 3.905 4.16675 4.36841 4.16675H16.5997C17.0631 4.16675 17.5075 4.34234 17.8352 4.6549C18.1629 4.96746 18.347 5.39139 18.347 5.83341M2.62109 5.83341L10.484 10.8334L18.347 5.83341M18.347 5.83341V10.4167M16.5997 18.3334V13.3334M16.5997 13.3334L19.2206 15.8334M16.5997 13.3334L13.9787 15.8334"
        stroke-width="1.74732"
        stroke-linecap="round"
        stroke-linejoin="round"
        class={@class}
      />
    </svg>
    """
  end

  def lock(assigns) do
    ~H"""
    <svg
      width="20"
      height="20"
      viewBox="0 0 20 20"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      role="lock icon"
    >
      <path
        d="M9.99674 1.65991C11.1018 1.65991 12.1616 2.0989 12.943 2.8803C13.7244 3.6617 14.1634 4.72151 14.1634 5.82658V8.32658C14.8265 8.32658 15.4623 8.58997 15.9312 9.05881C16.4 9.52765 16.6634 10.1635 16.6634 10.8266V15.8266C16.6634 16.4896 16.4 17.1255 15.9312 17.5943C15.4623 18.0632 14.8265 18.3266 14.1634 18.3266H5.83008C5.16704 18.3266 4.53115 18.0632 4.06231 17.5943C3.59347 17.1255 3.33008 16.4896 3.33008 15.8266V10.8266C3.33008 10.1635 3.59347 9.52765 4.06231 9.05881C4.53115 8.58997 5.16704 8.32658 5.83008 8.32658V5.82658C5.83008 4.72151 6.26906 3.6617 7.05047 2.8803C7.83187 2.0989 8.89168 1.65991 9.99674 1.65991ZM9.99674 11.6599C9.57626 11.6598 9.17127 11.8186 8.86295 12.1045C8.55464 12.3904 8.36578 12.7823 8.33424 13.2016L8.33008 13.3266C8.33008 13.6562 8.42783 13.9784 8.61096 14.2525C8.7941 14.5266 9.0544 14.7402 9.35894 14.8664C9.66348 14.9925 9.99859 15.0255 10.3219 14.9612C10.6452 14.8969 10.9422 14.7382 11.1753 14.5051C11.4083 14.272 11.5671 13.975 11.6314 13.6517C11.6957 13.3284 11.6627 12.9933 11.5365 12.6888C11.4104 12.3842 11.1968 12.1239 10.9227 11.9408C10.6486 11.7577 10.3264 11.6599 9.99674 11.6599ZM9.99674 3.32658C9.3337 3.32658 8.69782 3.58997 8.22898 4.05881C7.76014 4.52765 7.49674 5.16354 7.49674 5.82658V8.32658H12.4967V5.82658C12.4967 5.16354 12.2334 4.52765 11.7645 4.05881C11.2957 3.58997 10.6598 3.32658 9.99674 3.32658Z"
        fill="#B27308"
      />
    </svg>
    """
  end

  attr :class, :string, default: "fill-[#FF8787]"

  def asterisk(assigns) do
    ~H"""
    <svg
      width="13"
      height="13"
      viewBox="0 0 13 13"
      fill="currentColor"
      class={@class}
      xmlns="http://www.w3.org/2000/svg"
      role="asterisk icon"
    >
      <path
        opacity="0.9"
        d="M8.20654 0.0561523L7.69385 4.95239L12.6157 3.5553L13.0002 6.2854L8.3988 6.69556L11.3853 10.6818L8.89868 12.0276L6.73254 7.73376L4.79712 12.0148L2.20801 10.6818L5.16882 6.69556L0.593018 6.27258L1.02881 3.5553L5.86096 4.95239L5.34827 0.0561523H8.20654Z"
      />
    </svg>
    """
  end

  def alert(assigns) do
    ~H"""
    <svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M8.47688 5.99882V8.66549M8.47688 10.6655H8.48271M7.38555 2.39282L1.98154 11.4155C1.87014 11.6084 1.81119 11.8271 1.81055 12.0499C1.80991 12.2727 1.86761 12.4918 1.97791 12.6853C2.08821 12.8789 2.24725 13.0402 2.43924 13.1532C2.63122 13.2662 2.84945 13.327 3.07221 13.3295H13.8815C14.1042 13.3269 14.3223 13.2661 14.5142 13.1531C14.7061 13.0402 14.8651 12.8789 14.9754 12.6855C15.0856 12.492 15.1434 12.2731 15.1428 12.0504C15.1423 11.8277 15.0835 11.6091 14.9722 11.4162L9.56821 2.39216C9.45452 2.20449 9.29435 2.04932 9.10318 1.94162C8.91201 1.83392 8.6963 1.77734 8.47688 1.77734C8.25746 1.77734 8.04175 1.83392 7.85058 1.94162C7.65941 2.04932 7.49924 2.20516 7.38555 2.39282Z"
        stroke="#CE2C31"
        stroke-width="1.25"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :class, :string, default: "stroke-[#353740] dark:stroke-[#EEEBF5]"

  def filter(assigns) do
    ~H"""
    <svg
      width="24"
      height="24"
      class={@class}
      viewBox="0 0 24 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <path
        d="M4.01001 4H20.01V6.172C20.0099 6.70239 19.7991 7.21101 19.424 7.586L15.01 12V19L9.01001 21V12.5L4.53001 7.572C4.19546 7.20393 4.01006 6.7244 4.01001 6.227V4Z"
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  attr :stroke, :string, default: "stroke-Text-text-high"

  def plug(assigns) do
    ~H"""
    <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M1 19L3.5 16.5M16.5 3.5L19 1M8 9L6 11M11 12L9 14M5 10L10 15L8.5 16.5C8.17366 16.8371 7.7835 17.1059 7.35225 17.2907C6.921 17.4755 6.45728 17.5727 5.98811 17.5765C5.51894 17.5803 5.0537 17.4907 4.6195 17.3129C4.18531 17.1351 3.79084 16.8727 3.45907 16.5409C3.12731 16.2092 2.86489 15.8147 2.6871 15.3805C2.50931 14.9463 2.41971 14.4811 2.42352 14.0119C2.42733 13.5427 2.52447 13.079 2.70928 12.6477C2.8941 12.2165 3.16289 11.8263 3.5 11.5L5 10ZM15 10L10 5L11.5 3.5C11.8263 3.16289 12.2165 2.8941 12.6477 2.70928C13.079 2.52447 13.5427 2.42733 14.0119 2.42352C14.4811 2.41971 14.9463 2.50931 15.3805 2.6871C15.8147 2.86489 16.2092 3.12731 16.5409 3.45907C16.8727 3.79084 17.1351 4.18531 17.3129 4.6195C17.4907 5.0537 17.5803 5.51894 17.5765 5.98811C17.5727 6.45728 17.4755 6.921 17.2907 7.35225C17.1059 7.7835 16.8371 8.17366 16.5 8.5L15 10Z"
        class={@stroke}
        stroke-width="2"
        stroke-linecap="round"
        stroke-linejoin="round"
      />
    </svg>
    """
  end

  ########## Instructor Navigation Bar Icons (end) ##########

  ########## Start of Sidebar Icons  ##########
  def line_32(assigns) do
    ~H"""
    <svg
      width="36"
      height="1"
      viewBox="0 0 36 1"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      class="stroke-[#757682] dark:stroke-[#BAB8BF]"
    >
      <line x1="4.37114e-08" y1="0.5" x2="36" y2="0.500003" />
    </svg>
    """
  end

  ########## End of Sidebar Icons  ##########
end
