///|
/// A 24x24 stroke icon rendered as inline SVG. The surrounding span owns
/// accessibility hiding and a stable layout box; color inherits from the
/// parent via `currentColor`.
pub fn icon(
  path : String,
  size? : Int = 16,
  stroke_width? : Int = 2,
  style? : Array[String] = [],
) -> @html.Html {
  let px = size.to_string() + "px"
  @html.span(
    style=@internal.sumi_styles(
      [
        @internal.SumiBoxSizing,
        "display:inline-flex;width:\{px};height:\{px};flex:none;align-items:center;justify-content:center;pointer-events:none",
      ],
      style,
    ),
    attrs=@html.Attrs::build().aria_hidden("true"),
    @svg.svg(
      width=size,
      height=size,
      view_box="0 0 24 24",
      style=["display:block;width:100%;height:100%"],
      [
        @svg.path(
          d=path,
          fill="none",
          stroke="currentColor",
          stroke_width~,
          attrs=@svg.Attrs::build()
            .stroke_linecap("round")
            .stroke_linejoin("round"),
        ),
      ],
    ),
  )
}

///|
pub fn icon_chevron_down(size? : Int = 12) -> @html.Html {
  icon("m6 9 6 6 6-6", size~)
}

///|
pub fn icon_chevron_up(size? : Int = 12) -> @html.Html {
  icon("m18 15-6-6-6 6", size~)
}

///|
pub fn icon_chevron_left(size? : Int = 12) -> @html.Html {
  icon("m15 18-6-6 6-6", size~)
}

///|
pub fn icon_chevron_right(size? : Int = 12) -> @html.Html {
  icon("m9 18 6-6-6-6", size~)
}

///|
pub fn icon_check(size? : Int = 16) -> @html.Html {
  icon("M20 6 9 17l-5-5", size~)
}

///|
/// Filled check mark for the outline checkboxes of menu rows. The glyph grid
/// is 12 inside the 16 viewBox (path coordinates scaled by 4/3), so at the
/// default size 12 it reproduces the design's checkbox tick exactly.
pub fn icon_check_fill(size? : Int = 12) -> @html.Html {
  fill_icon(
    "M12.18688 5.00164C12.51232 5.32708 12.51232 5.85472 12.18688 6.18016L7.38688 10.98016C7.06144 11.3056 6.5338 11.3056 6.20837 10.98016L3.80837 8.58016C3.48293 8.25472 3.48293 7.72708 3.80837 7.40164C4.1338 7.07621 4.66144 7.07621 4.98688 7.40164L6.79763 9.21239L11.00837 5.00164C11.3338 4.67621 11.86144 4.67621 12.18688 5.00164Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
pub fn icon_x(size? : Int = 16) -> @html.Html {
  icon("M18 6 6 18M6 6l12 12", size~)
}

///|
pub fn icon_plus(size? : Int = 16) -> @html.Html {
  icon("M5 12h14M12 5v14", size~)
}

///|
pub fn icon_minus(size? : Int = 16) -> @html.Html {
  icon("M5 12h14", size~)
}

///|
/// Rounded filled plus on the 16 grid — the add tile's glyph.
pub fn icon_plus_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M7.20053 13.3333C7.20053 13.7752 7.5587 14.1333 8.00053 14.1333C8.44236 14.1333 8.80053 13.7752 8.80053 13.3333V8.79995H13.3331C13.7749 8.79995 14.1331 8.44178 14.1331 7.99995C14.1331 7.55813 13.7749 7.19995 13.3331 7.19995H8.80053V2.66666C8.80053 2.22483 8.44236 1.86666 8.00053 1.86666C7.5587 1.86666 7.20053 2.22483 7.20053 2.66666V7.19995H2.66641C2.22459 7.19995 1.86641 7.55813 1.86641 7.99995C1.86641 8.44178 2.22459 8.79995 2.66641 8.79995H7.20053V13.3333Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
pub fn icon_search(size? : Int = 16) -> @html.Html {
  icon("m21 21-4.3-4.3M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z", size~)
}

///|
pub fn icon_arrow_up(size? : Int = 18) -> @html.Html {
  icon("M12 19V5M5 12l7-7 7 7", size~)
}

///|
pub fn icon_arrow_down(size? : Int = 16) -> @html.Html {
  icon("M12 5v14M19 12l-7 7-7-7", size~)
}

///|
pub fn icon_download(size? : Int = 16) -> @html.Html {
  icon("M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3", size~)
}

///|
pub fn icon_upload(size? : Int = 16) -> @html.Html {
  icon("M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12", size~)
}

///|
/// Filled upload arrow over a baseline — the upload menu row's glyph.
pub fn icon_upload_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M12.2913 5.41857C12.5517 5.67888 12.5517 6.10092 12.2913 6.36123C12.0309 6.62154 11.6088 6.62154 11.3484 6.36123L8.66667 3.68037V10.558C8.66667 10.9262 8.36819 11.2247 8 11.2247C7.63181 11.2247 7.33333 10.9262 7.33333 10.558V3.68036L4.65162 6.36123C4.39123 6.62154 3.96905 6.62154 3.70866 6.36123C3.44827 6.10092 3.44827 5.67888 3.70866 5.41857L7.52852 1.59992C7.78891 1.33961 8.21109 1.33961 8.47148 1.59992L12.2913 5.41857ZM2 13.3346C1.99997 12.9664 2.29842 12.6679 2.66661 12.6679L13.3333 12.6669C13.7015 12.6669 14 12.9653 14 13.3335C14 13.7017 13.7016 14.0002 13.3334 14.0002L2.66672 14.0012C2.29853 14.0013 2.00003 13.7028 2 13.3346Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Folder outline — the pick-from-library menu row's glyph.
pub fn icon_folder(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M3.22493 6.43333V3.84686C3.22493 3.47867 3.52341 3.1802 3.8916 3.1802H5.62082C5.80227 3.1802 5.97589 3.25416 6.10159 3.38502L6.84165 4.15542C7.21877 4.548 7.73961 4.76989 8.28398 4.76989H12.1083C12.4765 4.76989 12.775 5.06837 12.775 5.43656V6.43333H3.22493ZM3.22493 7.76667V11.1029C3.22493 11.8393 3.82189 12.4363 4.55827 12.4363H11.4417C12.178 12.4363 12.775 11.8393 12.775 11.1029V7.76667H3.22493ZM7.8032 3.23174L7.06315 2.46134C6.68603 2.06876 6.16518 1.84686 5.62082 1.84686H3.8916C2.78703 1.84686 1.8916 2.74229 1.8916 3.84686V11.1029C1.8916 12.5757 3.08551 13.7696 4.55827 13.7696H11.4417C12.9144 13.7696 14.1083 12.5757 14.1083 11.1029V5.43656C14.1083 4.33199 13.2129 3.43656 12.1083 3.43656H8.28398C8.10253 3.43656 7.92891 3.36259 7.8032 3.23174Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Crosshair — the pick-from-canvas menu row's glyph.
pub fn icon_target(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M8 0.666667C8.36819 0.666667 8.66667 0.965144 8.66667 1.33333V2.03776C11.4476 2.34524 13.6548 4.55236 13.9622 7.33333H14.6641C15.0322 7.33342 15.3307 7.63186 15.3307 8C15.3307 8.36814 15.0322 8.66658 14.6641 8.66667H13.9622C13.6548 11.4476 11.4476 13.6541 8.66667 13.9616V14.6641C8.66658 15.0322 8.36814 15.3307 8 15.3307C7.63186 15.3307 7.33342 15.0322 7.33333 14.6641V13.9616C4.55239 13.6541 2.34524 11.4476 2.03776 8.66667H1.33333C0.965144 8.66667 0.666667 8.36819 0.666667 8C0.666667 7.63181 0.965144 7.33333 1.33333 7.33333H2.03776C2.34524 4.55236 4.55236 2.34524 7.33333 2.03776V1.33333C7.33333 0.965144 7.63181 0.666667 8 0.666667ZM8.66667 4.7513C8.66667 5.11949 8.36819 5.41797 8 5.41797C7.63181 5.41797 7.33333 5.11949 7.33333 4.7513V3.38151C5.28964 3.6739 3.6739 5.28964 3.38151 7.33333H4.7513C5.11949 7.33333 5.41797 7.63181 5.41797 8C5.41797 8.36819 5.11949 8.66667 4.7513 8.66667H3.38151C3.67389 10.7103 5.28969 12.3254 7.33333 12.6178V11.2461C7.33333 10.8779 7.63181 10.5794 8 10.5794C8.36819 10.5794 8.66667 10.8779 8.66667 11.2461V12.6178C10.7103 12.3254 12.3261 10.7103 12.6185 8.66667H11.2461C10.8779 8.66667 10.5794 8.36819 10.5794 8C10.5794 7.63181 10.8779 7.33333 11.2461 7.33333H12.6185C12.3261 5.28964 10.7104 3.6739 8.66667 3.38151V4.7513Z",
    size~,
  )
}

///|
pub fn icon_image(size? : Int = 16) -> @html.Html {
  icon(
    "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2ZM8.5 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM21 15l-5-5L5 21",
    size~,
  )
}

///|
pub fn icon_sparkle(size? : Int = 16) -> @html.Html {
  icon(
    "M12 3l1.9 5.8a2 2 0 0 0 1.3 1.3L21 12l-5.8 1.9a2 2 0 0 0-1.3 1.3L12 21l-1.9-5.8a2 2 0 0 0-1.3-1.3L3 12l5.8-1.9a2 2 0 0 0 1.3-1.3L12 3Z",
    size~,
  )
}

///|
/// Star outline on the 16 grid — the favorite toggle's off state.
pub fn icon_star(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M6.59516 4.78468L8.00001 2.52519L9.40485 4.78468C9.68019 5.22752 10.1176 5.54531 10.6238 5.67032L13.2069 6.30819L11.4921 8.3425C11.156 8.7412 10.9889 9.2554 11.0265 9.7755L11.218 12.4292L8.75338 11.427C8.27034 11.2306 7.72968 11.2306 7.24663 11.427L4.78199 12.4292L4.97355 9.7755C5.01109 9.2554 4.84402 8.7412 4.50794 8.3425L2.79315 6.30819L5.37618 5.67032C5.88243 5.54531 6.31983 5.22752 6.59516 4.78468ZM7.43385 0.910584C7.6947 0.491041 8.30531 0.491041 8.56617 0.910584L10.5372 4.08066C10.6289 4.22827 10.7747 4.3342 10.9435 4.37588L14.5675 5.2708C15.0471 5.38924 15.2358 5.96997 14.9174 6.3477L12.5115 9.20184C12.3995 9.33474 12.3438 9.50614 12.3563 9.67951L12.6251 13.4027C12.6607 13.8954 12.1667 14.2543 11.709 14.0682L8.25113 12.6621C8.09012 12.5966 7.9099 12.5966 7.74888 12.6621L4.29099 14.0682C3.83335 14.2543 3.33936 13.8954 3.37492 13.4027L3.64367 9.67951C3.65619 9.50614 3.6005 9.33474 3.48847 9.20184L1.08262 6.3477C0.76422 5.96997 0.952909 5.38924 1.43253 5.2708L5.05652 4.37588C5.22527 4.3342 5.37107 4.22827 5.46285 4.08066L7.43385 0.910584Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Filled star — the favorite toggle's on state.
pub fn icon_star_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M7.43385 0.910584C7.6947 0.491041 8.30531 0.491041 8.56617 0.910584L10.5372 4.08066C10.6289 4.22827 10.7747 4.3342 10.9435 4.37588L14.5675 5.2708C15.0471 5.38924 15.2358 5.96997 14.9174 6.3477L12.5115 9.20184C12.3995 9.33474 12.3438 9.50614 12.3563 9.67951L12.6251 13.4027C12.6607 13.8954 12.1667 14.2543 11.709 14.0682L8.25113 12.6621C8.09012 12.5966 7.9099 12.5966 7.74888 12.6621L4.29099 14.0682C3.83335 14.2543 3.33936 13.8954 3.37492 13.4027L3.64367 9.67951C3.65619 9.50614 3.6005 9.33474 3.48847 9.20184L1.08262 6.3477C0.76422 5.96997 0.952909 5.38924 1.43253 5.2708L5.05652 4.37588C5.22527 4.3342 5.37107 4.22827 5.46285 4.08066L7.43385 0.910584Z",
    size~,
  )
}

///|
/// Filled disc with a tick cutout — the completion state of async work.
pub fn icon_tick_circle_fill(
  size? : Int = 16,
  style? : Array[String] = [],
) -> @html.Html {
  fill_icon(
    "M8 0C3.58172 0 0 3.58172 0 8C0 12.41827 3.58172 16.00003 8 16.00003C12.41827 16.00003 16.00003 12.41827 16.00003 8C16.00003 3.58172 12.41827 0 8 0ZM7.54434 10.392L11.34432 6.59199C11.61638 6.32 11.61638 5.88 11.34432 5.6C11.07235 5.328 10.62432 5.328 10.35235 5.6L7.04834 8.904L5.64834 7.50399C5.37635 7.232 4.92834 7.232 4.65635 7.50399C4.38434 7.776 4.38434 8.216 4.65635 8.496L6.56034 10.392C6.69635 10.52803 6.87234 10.59197 7.04834 10.59197C7.23234 10.59197 7.40834 10.52803 7.54434 10.392Z",
    size~,
    fill_rule="evenodd",
    style~,
  )
}

///|
/// Filled disc with an "i" cutout — the partial-failure state of async work.
pub fn icon_info_circle_fill(
  size? : Int = 16,
  style? : Array[String] = [],
) -> @html.Html {
  fill_icon(
    "M0 8C0 3.5848 3.584 0 8 0C12.42403 0 16.00003 3.5848 16.00003 8C16.00003 12.41683 12.42403 16.00003 8 16.00003C3.584 16.00003 0 12.41683 0 8ZM7.296 4.968C7.296 4.5848 7.616 4.264 8 4.264C8.384 4.264 8.696 4.5848 8.696 4.968V8.504C8.696 8.8888 8.384 9.2 8 9.2C7.616 9.2 7.296 8.8888 7.296 8.504V4.968ZM8.008 11.74483C7.616 11.74483 7.304 11.42477 7.304 11.04077C7.304 10.65677 7.616 10.34477 8 10.34477C8.392 10.34477 8.704 10.65677 8.704 11.04077C8.704 11.42477 8.392 11.74483 8.008 11.74483Z",
    size~,
    fill_rule="evenodd",
    style~,
  )
}

///|
pub fn icon_adjust(size? : Int = 16) -> @html.Html {
  icon(
    "M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6",
    size~,
  )
}

///|
pub fn icon_reset(size? : Int = 16) -> @html.Html {
  icon("M3 12a9 9 0 1 0 3-6.7L3 8M3 3v5h5", size~)
}

///|
pub fn icon_expand(size? : Int = 16) -> @html.Html {
  icon(
    "M8 3H5a2 2 0 0 0-2 2v3M16 3h3a2 2 0 0 1 2 2v3M16 21h3a2 2 0 0 0 2-2v-3M8 21H5a2 2 0 0 1-2-2v-3",
    size~,
  )
}

///|
pub fn icon_crop(size? : Int = 16) -> @html.Html {
  icon("M6 2v14a2 2 0 0 0 2 2h14M2 6h14a2 2 0 0 1 2 2v14", size~)
}

///|
pub fn icon_layers(size? : Int = 16) -> @html.Html {
  icon("M12 2 2 7l10 5 10-5-10-5ZM2 17l10 5 10-5M2 12l10 5 10-5", size~)
}

///|
pub fn icon_grid(size? : Int = 16) -> @html.Html {
  icon("M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z", size~)
}

///|
pub fn icon_play(size? : Int = 16) -> @html.Html {
  icon("M6 4l14 8-14 8V4Z", size~)
}

///|
pub fn icon_clock(size? : Int = 16) -> @html.Html {
  icon("M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20ZM12 6v6l4 2", size~)
}

///|
pub fn icon_more(size? : Int = 16) -> @html.Html {
  icon(
    "M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM19 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM5 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",
    size~,
  )
}

///|
pub fn icon_scissors(size? : Int = 16) -> @html.Html {
  icon(
    "M6 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM20 4 8.1 15.9M14.5 14.5 20 20M8.1 8.1 12 12",
    size~,
  )
}

///|
/// An aspect-ratio artwork icon: a centered rectangle outline drawn at the
/// given ratio inside the icon box (ratio pickers in size panels).
pub fn icon_ratio(width~ : Int, height~ : Int, size? : Int = 16) -> @html.Html {
  let box = size - 2
  let (rw, rh) = if width >= height {
    (box, (box * height + width / 2) / width)
  } else {
    ((box * width + height / 2) / height, box)
  }
  let x = (size - rw) / 2
  let y = (size - rh) / 2
  let px = size.to_string() + "px"
  @html.span(
    style=[
      @internal.SumiBoxSizing,
      "display:inline-flex;width:\{px};height:\{px};flex:none;align-items:center;justify-content:center;pointer-events:none",
    ],
    attrs=@html.Attrs::build().aria_hidden("true"),
    @svg.svg(
      width=size,
      height=size,
      view_box="0 0 \{size} \{size}",
      style=["display:block;width:100%;height:100%"],
      [
        @svg.rect(
          x~,
          y~,
          width=rw,
          height=rh,
          rx=2,
          fill="none",
          stroke="currentColor",
          stroke_width=1,
        ),
      ],
    ),
  )
}

///|
/// A filled icon rendered as inline SVG on a 16x16 grid — companion to the
/// stroke set for glyphs the design draws as solids. Color inherits from the
/// parent via `currentColor`.
fn fill_icon(
  path : String,
  size? : Int = 16,
  fill_rule? : String,
  style? : Array[String] = [],
) -> @html.Html {
  let px = size.to_string() + "px"
  let path_attrs = match fill_rule {
    Some(rule) => @svg.Attrs::build().fill_rule(rule)
    None => @svg.Attrs::build()
  }
  @html.span(
    style=@internal.sumi_styles(
      [
        @internal.SumiBoxSizing,
        "display:inline-flex;width:\{px};height:\{px};flex:none;align-items:center;justify-content:center;pointer-events:none",
      ],
      style,
    ),
    attrs=@html.Attrs::build().aria_hidden("true"),
    @svg.svg(
      width=size,
      height=size,
      view_box="0 0 16 16",
      style=["display:block;width:100%;height:100%"],
      [@svg.path(d=path, fill="currentColor", attrs=path_attrs)],
    ),
  )
}

///|
/// Exclamation in a circle, used for inline validation and status notes.
pub fn icon_important(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M8 1.33333C11.6819 1.33333 14.6667 4.3181 14.6667 8C14.6667 11.6819 11.6819 14.6667 8 14.6667C4.3181 14.6667 1.33333 11.6819 1.33333 8C1.33333 4.3181 4.3181 1.33333 8 1.33333ZM8 2.66667C5.05448 2.66667 2.66667 5.05448 2.66667 8C2.66667 10.9455 5.05448 13.3333 8 13.3333C10.9455 13.3333 13.3333 10.9455 13.3333 8C13.3333 5.05448 10.9455 2.66667 8 2.66667ZM8 9.41602C8.44182 9.41602 8.80013 9.77432 8.80013 10.2161C8.80006 10.6579 8.44178 11.0163 8 11.0163C7.55822 11.0163 7.19994 10.6579 7.19987 10.2161C7.19987 9.77432 7.55817 9.41602 8 9.41602ZM8 4.61589C8.44183 4.61589 8.80013 4.97419 8.80013 5.41602V7.81576C8.80013 8.25758 8.44183 8.61589 8 8.61589C7.55817 8.61589 7.19987 8.25758 7.19987 7.81576V5.41602C7.19987 4.97419 7.55817 4.61589 8 4.61589Z",
    size~,
  )
}

///|
/// Slanted bar separating pagination numbers — a filled glyph on a 9.333x14
/// design grid, sized by height (the width follows the glyph's ratio).
pub fn icon_slash(size? : Int = 14) -> @html.Html {
  let px = size.to_string() + "px"
  @html.span(
    style=[
      @internal.SumiBoxSizing,
      "display:inline-flex;height:\{px};flex:none;align-items:center;justify-content:center;pointer-events:none",
    ],
    attrs=@html.Attrs::build().aria_hidden("true"),
    @svg.svg(
      height=size,
      view_box="0 0 9.33333 14",
      style=["display:block;width:auto;height:100%"],
      [
        @svg.path(
          d="M5.89302 1.65749C5.99977 1.35366 6.33306 1.19409 6.63692 1.30066C6.94065 1.40751 7.10031 1.74018 6.99369 2.044L3.47614 12.0587C3.36932 12.3625 3.03615 12.5223 2.73224 12.4155C2.42852 12.3086 2.26867 11.9754 2.3754 11.6716L5.89302 1.65749Z",
          fill="currentColor",
        ),
      ],
    ),
  )
}

///|
/// Filled rounded caret marking a filter trigger, on a 16 design grid.
pub fn icon_caret_down(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M10.4629 6H5.5371C4.67794 6 4.21876 7.01192 4.78452 7.6585L7.24742 10.4732C7.64584 10.9286 8.35416 10.9286 8.75258 10.4732L11.2155 7.6585C11.7812 7.01192 11.3221 6 10.4629 6Z",
    size~,
  )
}

///|
/// Filled circle with a times cutout — the clear affordance of a filtered
/// trigger. The glyph grid is 13.333 inside the 16 viewBox, which reproduces
/// the design's 8.33% inset exactly at size 16.
pub fn icon_close_circle(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M6.66667 0C2.98477 0 0 2.98477 0 6.66667C0 10.3486 2.98477 13.3333 6.66667 13.3333C10.3486 13.3333 13.3333 10.3486 13.3333 6.66667C13.3333 2.98477 10.3486 0 6.66667 0ZM8.67307 8.66672C8.89974 8.44072 8.89974 8.07405 8.67307 7.84739L7.48641 6.66072L8.67307 5.47339C8.89974 5.24739 8.89974 4.87405 8.67307 4.64739C8.44641 4.42005 8.07974 4.42005 7.84641 4.64739L6.66641 5.83339L5.47974 4.64739C5.24641 4.42005 4.87974 4.42005 4.65307 4.64739C4.42641 4.87405 4.42641 5.24739 4.65307 5.47339L5.83974 6.66072L4.65307 7.84072C4.42641 8.07405 4.42641 8.44072 4.65307 8.66672C4.76641 8.78006 4.91974 8.84072 5.06641 8.84072C5.21974 8.84072 5.36641 8.78006 5.47974 8.66672L6.66641 7.48739L7.85307 8.66672C7.96641 8.78739 8.11307 8.84072 8.25974 8.84072C8.41307 8.84072 8.55974 8.78006 8.67307 8.66672Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Three left-aligned bars, the bottom one short — the generic document
/// placeholder glyph of the attachment tile.
pub fn icon_align_left(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M8 12C8 12.3682 7.70152 12.6667 7.33333 12.6667H3.33333C2.96514 12.6667 2.66667 12.3682 2.66667 12V12C2.66667 11.6318 2.96514 11.3333 3.33333 11.3333H7.33333C7.70152 11.3333 8 11.6318 8 12V12ZM13.3333 8C13.3333 8.36819 13.0349 8.66667 12.6667 8.66667H3.33333C2.96514 8.66667 2.66667 8.36819 2.66667 8V8C2.66667 7.63181 2.96514 7.33333 3.33333 7.33333H12.6667C13.0349 7.33333 13.3333 7.63181 13.3333 8V8ZM13.3333 4C13.3333 4.36819 13.0349 4.66667 12.6667 4.66667H3.33333C2.96514 4.66667 2.66667 4.36819 2.66667 4V4C2.66667 3.63181 2.96514 3.33333 3.33333 3.33333H12.6667C13.0349 3.33333 13.3333 3.63181 13.3333 4V4Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Filled times mark, weighted to stay legible at 4px — the glyph of the
/// attachment tile's remove badge. (The stroked `icon_x` renders too thin
/// at that size.)
pub fn icon_x_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M13.05244 4.079C13.36484 3.766568 13.36484 3.260016 13.05244 2.94758C12.74 2.635148 12.23352 2.635148 11.92112 2.94758L8.00004 6.86896L4.07908 2.94768C3.76668 2.635248 3.260172 2.635248 2.947764 2.94768C2.63536 3.260112 2.63536 3.766664 2.947764 4.07908L6.86872 8.0004L2.947764 11.92168C2.63536 12.23412 2.63536 12.74068 2.947764 13.05312C3.260172 13.36552 3.76668 13.36552 4.07908 13.05312L8.00004 9.1318L11.92112 13.0532C12.23352 13.36564 12.74 13.36564 13.05244 13.0532C13.36484 12.74076 13.36484 12.2342 13.05244 11.9218L9.13136 8.0004L13.05244 4.079Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Filled landscape with a sun — the placeholder glyph of an image
/// reference that has no thumbnail yet.
pub fn icon_image_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M10.8839 3.14643H5.11607C4.02826 3.14643 3.14643 4.02826 3.14643 5.11607V10.8839C3.14643 10.9202 3.14741 10.9563 3.14935 10.9922L5.48837 8.65325C6.2205 7.92116 7.39444 7.88087 8.17503 8.56104L12.3502 12.1991C12.6632 11.8504 12.8536 11.3894 12.8536 10.8839V5.11607C12.8536 4.02826 11.9717 3.14643 10.8839 3.14643ZM12.7493 13.5856C13.6056 12.9932 14.1667 12.0041 14.1667 10.8839V5.11607C14.1667 3.30306 12.6969 1.83333 10.8839 1.83333H5.11607C3.30306 1.83333 1.83333 3.30306 1.83333 5.11607V10.8839C1.83333 12.6969 3.30306 14.1667 5.11607 14.1667H10.8839C11.5442 14.1667 12.159 13.9717 12.6738 13.6362C12.6999 13.6213 12.7251 13.6044 12.7493 13.5856ZM11.0903 12.8429L7.3124 9.55104C7.0522 9.32431 6.66089 9.33774 6.41684 9.58177L3.72256 12.2759C4.07906 12.6328 4.57178 12.8536 5.11607 12.8536H10.8839C10.9536 12.8536 11.0224 12.85 11.0903 12.8429ZM9.38554 5.6007C9.38554 5.03666 9.84279 4.57942 10.4068 4.57942C10.9709 4.57942 11.4281 5.03666 11.4281 5.6007C11.4281 6.16474 10.9709 6.62198 10.4068 6.62198C9.84279 6.62198 9.38554 6.16474 9.38554 5.6007Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Rounded frame with a play triangle — the video reference glyph.
pub fn icon_video(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M11.7409 2.33333C13.5408 2.33341 14.9999 3.79252 15 5.59245V10.4076C14.9999 12.2075 13.5408 13.6666 11.7409 13.6667H4.25911C2.51531 13.6666 1.09173 12.297 1.00456 10.5749L1 10.4076V5.59245C1.00008 3.79252 2.45919 2.33341 4.25911 2.33333H11.7409ZM4.25911 3.66667C3.19557 3.66675 2.33341 4.5289 2.33333 5.59245V10.4076L2.3431 10.6042C2.44164 11.5754 3.26194 12.3333 4.25911 12.3333H11.7409C12.8044 12.3333 13.6666 11.4711 13.6667 10.4076V5.59245C13.6666 4.5289 12.8044 3.66675 11.7409 3.66667H4.25911ZM7.16927 6.13151C7.38298 6.10718 7.64412 6.25339 8.16602 6.54557L9.01953 7.02344C9.56273 7.32755 9.83414 7.47963 9.92448 7.67969C10.0032 7.85412 10.0032 8.05409 9.92448 8.22852C9.83399 8.42845 9.56256 8.58075 9.01953 8.88477L8.16602 9.36263C7.64416 9.6548 7.38297 9.801 7.16927 9.77669C6.98278 9.75535 6.81351 9.6562 6.70378 9.50391C6.57803 9.32934 6.57813 9.02995 6.57813 8.43164V7.47591C6.57813 6.87799 6.57822 6.57889 6.70378 6.4043C6.81351 6.252 6.98278 6.15286 7.16927 6.13151Z",
    size~,
  )
}

///|
/// Four waveform bars — the audio reference glyph.
pub fn icon_sound(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M6.93346 2.66673C6.93344 2.22491 6.57526 1.86672 6.13343 1.8667C5.6916 1.86668 5.33344 2.22484 5.33346 2.66667L5.33392 13.3333C5.33394 13.7752 5.69213 14.1333 6.13395 14.1334C6.57578 14.1334 6.93394 13.7752 6.93392 13.3334L6.93346 2.66673Z M3.20026 5.99999C3.20024 5.55816 2.84205 5.19997 2.40023 5.19995C1.9584 5.19993 1.60024 5.55809 1.60026 5.99992L1.60043 9.99992C1.60045 10.4417 1.95864 10.7999 2.40047 10.8C2.84229 10.8 3.20045 10.4418 3.20043 9.99999L3.20026 5.99999Z M9.86693 3.86662C10.3088 3.86662 10.6669 4.22479 10.6669 4.66662V11.3333C10.6669 11.7751 10.3088 12.1333 9.86693 12.1333C9.4251 12.1333 9.06693 11.7751 9.06693 11.3333L9.06693 4.66662C9.06693 4.22479 9.4251 3.86662 9.86693 3.86662Z M14.4 6.99999C14.4 6.55816 14.0418 6.19997 13.6 6.19995C13.1581 6.19993 12.8 6.55809 12.8 6.99992L12.8001 8.99992C12.8001 9.44175 13.1583 9.79993 13.6001 9.79995C14.0419 9.79997 14.4001 9.44181 14.4001 8.99999L14.4 6.99999Z",
    size~,
  )
}

///|
/// Serif-like capital T — the text reference glyph.
pub fn icon_text(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M13.0903 2.99707C13.4264 3.03127 13.6886 3.31543 13.6886 3.66048V5.30501C13.6886 5.67317 13.3901 5.97163 13.022 5.97168C12.6538 5.97162 12.3553 5.67317 12.3553 5.30501V4.32715H8.75439V12.3174H9.6665L9.73486 12.3206C10.0709 12.3549 10.3331 12.639 10.3332 12.984C10.333 13.329 10.0708 13.6126 9.73486 13.6468L9.6665 13.6507H6.33512C5.96714 13.6506 5.66863 13.352 5.66846 12.984C5.66855 12.616 5.96709 12.3175 6.33512 12.3174H7.42106V4.32715H3.8208V5.30501C3.8208 5.67317 3.52228 5.97163 3.15413 5.97168C2.78594 5.97168 2.48747 5.6732 2.48747 5.30501V3.66048L2.49072 3.59212C2.52502 3.25612 2.80907 2.99382 3.15413 2.99382H13.022L13.0903 2.99707Z",
    size~,
  )
}

///|
/// Shape nodes pinned to a selection frame — the grouped-reference glyph.
pub fn icon_group(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M8.62305 4.66667C9.26736 4.66669 9.78971 5.18902 9.78971 5.83333V6.60872C10.8926 6.86893 11.7135 7.85928 11.7135 9.04167C11.7135 10.4224 10.5943 11.5417 9.21354 11.5417C8.09342 11.5417 7.14544 10.805 6.82747 9.78971H5.83333C5.189 9.78971 4.66667 9.26738 4.66667 8.62305V5.83333C4.66667 5.189 5.189 4.66667 5.83333 4.66667H8.62305ZM9.21354 7.54167C8.38511 7.54167 7.71354 8.21324 7.71354 9.04167C7.71354 9.87009 8.38511 10.5417 9.21354 10.5417C10.042 10.5417 10.7135 9.87009 10.7135 9.04167C10.7135 8.21324 10.042 7.54167 9.21354 7.54167ZM5.83333 5.66667C5.74129 5.66667 5.66667 5.74129 5.66667 5.83333L5.66667 8.62305C5.66667 8.7151 5.74129 8.78971 5.83333 8.78971H6.72656C6.83883 7.6681 7.69197 6.76493 8.78971 6.57747V5.83333C8.78971 5.7413 8.71507 5.66669 8.62305 5.66667L5.83333 5.66667Z M13.3333 1.16667C14.1618 1.16667 14.8333 1.83824 14.8333 2.66667C14.8333 3.30777 14.4304 3.85304 13.8646 4.06771V11.9316C14.4305 12.1463 14.8333 12.6922 14.8333 13.3333C14.8333 14.1618 14.1618 14.8333 13.3333 14.8333C12.693 14.8333 12.1481 14.4314 11.9329 13.8665H4.06706C3.85188 14.4314 3.30704 14.8333 2.66667 14.8333C1.83824 14.8333 1.16667 14.1618 1.16667 13.3333C1.16667 12.6936 1.56759 12.1486 2.13151 11.9329L2.13151 4.06641C1.5677 3.85072 1.16667 3.30631 1.16667 2.66667C1.16667 1.83824 1.83824 1.16667 2.66667 1.16667C3.30704 1.16667 3.85188 1.56864 4.06706 2.13346L11.9329 2.13346C12.1481 1.56864 12.693 1.16667 13.3333 1.16667ZM2.66667 12.8333C2.39052 12.8333 2.16667 13.0572 2.16667 13.3333C2.16667 13.6095 2.39052 13.8333 2.66667 13.8333C2.94281 13.8333 3.16667 13.6095 3.16667 13.3333C3.16667 13.0572 2.94281 12.8333 2.66667 12.8333ZM13.3333 12.8333C13.0572 12.8333 12.8333 13.0572 12.8333 13.3333C12.8333 13.6095 13.0572 13.8333 13.3333 13.8333C13.6095 13.8333 13.8333 13.6095 13.8333 13.3333C13.8333 13.0572 13.6095 12.8333 13.3333 12.8333ZM4.06706 3.19987C3.91482 3.59947 3.59778 3.91601 3.19792 4.06771L3.19792 11.9316C3.59788 12.0833 3.91479 12.4005 4.06706 12.8001H11.9329C12.0847 12.4017 12.4 12.0852 12.7982 11.9329V4.06641C12.4001 3.91413 12.0847 3.59818 11.9329 3.19987L4.06706 3.19987ZM2.66667 2.16667C2.39052 2.16667 2.16667 2.39052 2.16667 2.66667C2.16667 2.94281 2.39052 3.16667 2.66667 3.16667C2.94281 3.16667 3.16667 2.94281 3.16667 2.66667C3.16667 2.39052 2.94281 2.16667 2.66667 2.16667ZM13.3333 2.16667C13.0572 2.16667 12.8333 2.39052 12.8333 2.66667C12.8333 2.94281 13.0572 3.16667 13.3333 3.16667C13.6095 3.16667 13.8333 2.94281 13.8333 2.66667C13.8333 2.39052 13.6095 2.16667 13.3333 2.16667Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Frame split into a header strip and column cells — the timeline
/// reference glyph.
pub fn icon_timeline(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M10.0667 1.66667C11.5601 1.66667 12.3072 1.66664 12.8776 1.95729C13.3793 2.21296 13.7868 2.62123 14.0424 3.12292C14.333 3.6933 14.3331 4.43985 14.3331 5.93307V10.0667C14.3331 11.5601 14.3331 12.3072 14.0424 12.8776L13.9401 13.0612C13.684 13.4788 13.3165 13.8187 12.8776 14.0424L12.7682 14.094C12.2107 14.3335 11.4668 14.3331 10.0667 14.3331H5.93307C4.53292 14.3331 3.78903 14.3336 3.23151 14.094L3.12292 14.0424C2.68396 13.8188 2.31663 13.4788 2.06042 13.0612L1.95729 12.8776C1.66664 12.3072 1.66667 11.5601 1.66667 10.0667V5.93307C1.66667 4.53276 1.66686 3.78905 1.90651 3.23151L1.95729 3.12292C2.18102 2.68383 2.52155 2.31664 2.93932 2.06042L3.12292 1.95729C3.69329 1.66676 4.43994 1.66667 5.93307 1.66667H10.0667ZM3.00026 10.0667C3.00026 10.8354 3.00143 11.3319 3.03229 11.7096C3.06189 12.0718 3.11199 12.2062 3.14557 12.2721C3.27341 12.5229 3.47758 12.7272 3.72839 12.8549C3.79444 12.8885 3.92888 12.9387 4.2901 12.9682C4.66784 12.9991 5.16448 13.0003 5.93307 13.0003H10.0667C10.8354 13.0003 11.3319 12.9991 11.7096 12.9682C12.0718 12.9386 12.2062 12.8885 12.2721 12.8549C12.523 12.7271 12.7271 12.523 12.8549 12.2721C12.8885 12.2062 12.9386 12.0718 12.9682 11.7096C12.9991 11.3319 13.0003 10.8354 13.0003 10.0667V6.66667H3.00026V10.0667ZM6.66667 5.33385H9.33385V3.00026H6.66667V5.33385ZM10.6667 5.33385H12.9971C12.995 4.8887 12.9902 4.55922 12.9682 4.2901C12.9387 3.92888 12.8885 3.79444 12.8549 3.72839C12.7272 3.47758 12.5229 3.27341 12.2721 3.14557C12.2062 3.11199 12.0718 3.06189 11.7096 3.03229C11.4406 3.01031 11.1115 3.00477 10.6667 3.0026V5.33385ZM5.33385 3.0026C4.88869 3.00476 4.55922 3.0103 4.2901 3.03229C3.92853 3.06186 3.79436 3.11199 3.72839 3.14557C3.4775 3.2734 3.2734 3.4775 3.14557 3.72839C3.11199 3.79436 3.06186 3.92853 3.03229 4.2901C3.0103 4.55922 3.00554 4.8887 3.00339 5.33385H5.33385V3.0026Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Figure inside a frame — the single-element reference glyph.
pub fn icon_element(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M7.99948 4.00026C9.28806 4.00026 10.3329 5.04453 10.3331 6.33307C10.3331 7.62174 9.28814 8.66667 7.99948 8.66667C6.71105 8.66639 5.66667 7.62156 5.66667 6.33307C5.66681 5.0447 6.71114 4.00054 7.99948 4.00026ZM7.99948 5.33307C7.44752 5.33335 6.99962 5.78108 6.99948 6.33307C6.99948 6.88518 7.44743 7.33279 7.99948 7.33307C8.55176 7.33307 8.99948 6.88536 8.99948 6.33307C8.99934 5.78091 8.55168 5.33307 7.99948 5.33307Z M10.0667 1.66667C11.5601 1.66667 12.3072 1.66664 12.8776 1.95729C13.3793 2.21296 13.7868 2.62123 14.0424 3.12292C14.333 3.6933 14.3331 4.43985 14.3331 5.93307V10.0667C14.3331 11.5601 14.3331 12.3072 14.0424 12.8776L13.9401 13.0612C13.684 13.4788 13.3165 13.8187 12.8776 14.0424L12.7682 14.094C12.2107 14.3335 11.4668 14.3331 10.0667 14.3331H5.93307C4.53292 14.3331 3.78903 14.3336 3.23151 14.094L3.12292 14.0424C2.68396 13.8188 2.31663 13.4788 2.06042 13.0612L1.95729 12.8776C1.66664 12.3072 1.66667 11.5601 1.66667 10.0667V5.93307C1.66667 4.53276 1.66686 3.78905 1.90651 3.23151L1.95729 3.12292C2.18102 2.68383 2.52155 2.31664 2.93932 2.06042L3.12292 1.95729C3.69329 1.66676 4.43994 1.66667 5.93307 1.66667H10.0667ZM7.24635 10.6667C6.45196 10.6667 5.76788 11.2276 5.61198 12.0065L5.41354 12.9971C5.57182 12.9977 5.74423 13.0003 5.93307 13.0003H10.0667C10.2555 13.0003 10.4279 12.9977 10.5862 12.9971L10.3878 12.0065C10.2319 11.2277 9.54838 10.6668 8.75417 10.6667H7.24635ZM5.93307 3.00026C5.16448 3.00026 4.66784 3.00143 4.2901 3.03229C3.92853 3.06186 3.79436 3.11199 3.72839 3.14557C3.4775 3.2734 3.2734 3.4775 3.14557 3.72839C3.11199 3.79436 3.06186 3.92853 3.03229 4.2901C3.00143 4.66784 3.00026 5.16448 3.00026 5.93307V10.0667C3.00026 10.8354 3.00143 11.3319 3.03229 11.7096C3.06189 12.0718 3.11199 12.2062 3.14557 12.2721C3.27341 12.5229 3.47758 12.7272 3.72839 12.8549C3.77834 12.8803 3.86758 12.9142 4.06432 12.9424L4.30417 11.7456C4.58462 10.3433 5.81631 9.33385 7.24635 9.33385H8.75417C10.1841 9.33403 11.4151 10.3434 11.6956 11.7456L11.9346 12.9424C12.1327 12.9141 12.2222 12.8804 12.2721 12.8549C12.523 12.7271 12.7271 12.523 12.8549 12.2721C12.8885 12.2062 12.9386 12.0718 12.9682 11.7096C12.9991 11.3319 13.0003 10.8354 13.0003 10.0667V5.93307C13.0003 5.16448 12.9991 4.66784 12.9682 4.2901C12.9387 3.92888 12.8885 3.79444 12.8549 3.72839C12.7272 3.47758 12.5229 3.27341 12.2721 3.14557C12.2062 3.11199 12.0718 3.06189 11.7096 3.03229C11.3319 3.00143 10.8354 3.00026 10.0667 3.00026H5.93307Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Two overlapping rounded frames — the copy-to-clipboard action glyph.
pub fn icon_copy(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M6.66667 2.68034H12C12.7364 2.68034 13.3333 3.27729 13.3333 4.01367V9.34701C13.3333 10.0834 12.7364 10.6803 12 10.6803H6.66667C5.93029 10.6803 5.33333 10.0834 5.33333 9.34701V4.01367C5.33333 3.27729 5.93029 2.68034 6.66667 2.68034ZM4 4.01367C4 2.54091 5.19391 1.34701 6.66667 1.34701H12C13.4728 1.34701 14.6667 2.54091 14.6667 4.01367V9.34701C14.6667 10.8198 13.4728 12.0137 12 12.0137H6.66667C5.19391 12.0137 4 10.8198 4 9.34701V4.01367ZM9.33333 13.347H6C4.15905 13.347 2.66667 11.8546 2.66667 10.0137V6.68034C2.66667 6.31215 2.36819 6.01367 2 6.01367C1.63181 6.01367 1.33333 6.31215 1.33333 6.68034V10.0137C1.33333 12.591 3.42267 14.6803 6 14.6803H9.33333C9.70152 14.6803 10 14.3819 10 14.0137C10 13.6455 9.70152 13.347 9.33333 13.347Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// A filled icon on the 14x14 grid — the chunky small chevrons of the
/// status rows. Color inherits from the parent via `currentColor`.
fn fill14_icon(
  path : String,
  size? : Int = 14,
  fill_rule? : String,
) -> @html.Html {
  let px = size.to_string() + "px"
  let path_attrs = match fill_rule {
    Some(rule) => @svg.Attrs::build().fill_rule(rule)
    None => @svg.Attrs::build()
  }
  @html.span(
    style=[
      @internal.SumiBoxSizing,
      "display:inline-flex;width:\{px};height:\{px};flex:none;align-items:center;justify-content:center;pointer-events:none",
    ],
    attrs=@html.Attrs::build().aria_hidden("true"),
    @svg.svg(
      width=size,
      height=size,
      view_box="0 0 14 14",
      style=["display:block;width:100%;height:100%"],
      [@svg.path(d=path, fill="currentColor", attrs=path_attrs)],
    ),
  )
}

///|
/// Chunky filled chevron-up on a 14 grid — the collapse toggle's glyph.
/// (The stroked `icon_chevron_up` reads too thin at this size.)
pub fn icon_chevron_up_fill(size? : Int = 14) -> @html.Html {
  fill14_icon(
    "M12.2558 9.34399C12.5276 9.06901 12.5249 8.6258 12.25 8.35405L7.49204 3.65196C7.21936 3.38248 6.78063 3.38248 6.50795 3.65196L1.75003 8.35405C1.47505 8.6258 1.47244 9.06901 1.74419 9.34399C2.01594 9.61896 2.45914 9.62158 2.73412 9.34983L7 5.13401L11.2659 9.34983C11.5408 9.62158 11.9841 9.61896 12.2558 9.34399Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Chunky filled chevron-right on a 14 grid — the collapsed status row's
/// affordance.
pub fn icon_chevron_right_fill(size? : Int = 14) -> @html.Html {
  fill14_icon(
    "M10.3479 7.49208C10.6174 7.21939 10.6174 6.78067 10.3479 6.50799L5.6458 1.75006C5.37406 1.47509 4.93085 1.47247 4.65587 1.74422C4.3809 2.01597 4.37828 2.45918 4.65003 2.73415L8.86585 7.00003L4.65003 11.2659C4.37828 11.5409 4.3809 11.9841 4.65587 12.2558C4.93085 12.5276 5.37406 12.525 5.6458 12.25L10.3479 7.49208Z",
    size~,
  )
}

///|
/// Chunky filled chevron-down on a 14 grid — the expanded status row's
/// affordance.
pub fn icon_chevron_down_fill(size? : Int = 14) -> @html.Html {
  fill14_icon(
    "M12.2558 4.65602C12.5276 4.93099 12.5249 5.3742 12.25 5.64595L7.49204 10.348C7.21936 10.6175 6.78063 10.6175 6.50795 10.348L1.75003 5.64595C1.47505 5.3742 1.47244 4.93099 1.74419 4.65601C2.01594 4.38104 2.45914 4.37842 2.73412 4.65017L7 8.866L11.2659 4.65017C11.5408 4.37842 11.9841 4.38104 12.2558 4.65602Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Filled up-arrow on a 16 grid — the send button's glyph. (The stroked
/// `icon_arrow_up` reads too thin on the solid circular fill.)
pub fn icon_arrow_up_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M8.00104 2C8.28377 2.00008 8.5386 2.11794 8.72044 2.30664L12.7068 6.29297L12.7758 6.36914C13.0962 6.76188 13.073 7.34164 12.7068 7.70768C12.3161 8.09784 11.6832 8.09737 11.2927 7.70703L9.00104 5.41602V13L8.99583 13.1022C8.94464 13.6064 8.51869 13.9999 8.00104 14C7.48327 14 7.05746 13.6065 7.00625 13.1022L7.00104 13V5.41471L4.70742 7.70703C4.31696 8.09737 3.68399 8.09782 3.29336 7.70768C2.92721 7.34165 2.90397 6.76186 3.22435 6.36914L3.29336 6.29297L7.29271 2.29362C7.29846 2.28786 7.3044 2.28229 7.31028 2.27669C7.32285 2.26469 7.33617 2.25353 7.34935 2.24219C7.35907 2.23385 7.36864 2.22538 7.37864 2.21745C7.39796 2.20207 7.41809 2.18777 7.43854 2.17383C7.44163 2.17173 7.44454 2.16938 7.44765 2.16732C7.4696 2.15271 7.49224 2.13918 7.51536 2.1263C7.52216 2.12254 7.52866 2.11819 7.53554 2.11458C7.67451 2.04141 7.83308 2 8.00104 2Z",
    size~,
  )
}

///|
/// Filled rounded square on a 16 grid — the stop-generating glyph that
/// replaces the send arrow while a run is in flight.
pub fn icon_stop_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M3 7.26667C3 5.77319 3 5.02646 3.29065 4.45602C3.54631 3.95426 3.95426 3.54631 4.45602 3.29065C5.02646 3 5.77319 3 7.26667 3H8.73333C10.2268 3 10.9735 3 11.544 3.29065C12.0457 3.54631 12.4537 3.95426 12.7093 4.45602C13 5.02646 13 5.77319 13 7.26667V8.73333C13 10.2268 13 10.9735 12.7093 11.544C12.4537 12.0457 12.0457 12.4537 11.544 12.7093C10.9735 13 10.2268 13 8.73333 13H7.26667C5.77319 13 5.02646 13 4.45602 12.7093C3.95426 12.4537 3.54631 12.0457 3.29065 11.544C3 10.9735 3 10.2268 3 8.73333V7.26667Z",
    size~,
  )
}

///|
/// At-sign on a 14 grid — the reference-mention affordance of input
/// toolbars.
pub fn icon_at(size? : Int = 14) -> @html.Html {
  fill14_icon(
    "M7.47225 1.22477C8.23628 1.22478 8.93878 1.34439 9.57886 1.58423L9.81869 1.67594C10.3679 1.90174 10.8504 2.21224 11.2651 2.60791L11.4411 2.77881C11.8399 3.18776 12.1515 3.67013 12.3759 4.22518L12.4699 4.46729C12.6738 5.04073 12.7752 5.67513 12.7752 6.36939C12.7752 6.81019 12.7203 7.24171 12.6123 7.66366L12.6129 7.66423C12.514 8.08847 12.3556 8.47545 12.1372 8.82406L12.1366 8.8252C11.9175 9.1652 11.6475 9.44328 11.3271 9.65804L11.3254 9.65918C10.9994 9.8678 10.6142 9.97022 10.1742 9.97022C9.71208 9.9702 9.33502 9.84251 9.05363 9.57829L9.05135 9.57601C8.82397 9.34577 8.67053 9.08744 8.59334 8.80184C8.4151 9.11555 8.16952 9.38228 7.8562 9.60051C7.49935 9.84901 7.0545 9.97022 6.52775 9.97022C5.77078 9.97019 5.17323 9.72123 4.74699 9.21655L4.74585 9.21598C4.33272 8.71484 4.13062 8.05572 4.13062 7.2478C4.13063 6.61279 4.25858 6.05054 4.51799 5.56388C4.77705 5.06844 5.14193 4.67897 5.61117 4.39665L5.61174 4.39608C6.09217 4.11304 6.65542 3.97339 7.29793 3.97339C7.72823 3.9734 8.14906 4.01112 8.5603 4.08732C9.19978 4.18883 9.58901 4.77369 9.55721 5.40438L9.46265 7.28084C9.45299 7.4504 9.44842 7.57143 9.44841 7.64429V7.78613C9.44841 8.02717 9.46956 8.22329 9.5105 8.3763C9.55117 8.52833 9.60966 8.63226 9.67969 8.69759C9.84789 8.84434 10.0406 8.91689 10.2613 8.91691C10.535 8.91691 10.7631 8.81094 10.9506 8.59334C11.153 8.36009 11.3081 8.05133 11.412 7.66423V7.66309C11.5257 7.26591 11.5829 6.83022 11.5829 6.35571C11.5829 5.48964 11.4019 4.76449 11.044 4.17676L11.0429 4.17562C10.6931 3.57651 10.207 3.12083 9.58285 2.80729C8.96727 2.49332 8.26414 2.33506 7.47225 2.33504C6.65804 2.33504 5.93802 2.4609 5.31095 2.71102C4.68284 2.96158 4.15586 3.313 3.72957 3.76546L3.73014 3.76603C3.3127 4.2194 2.99443 4.7566 2.77539 5.37874L2.77482 5.37931C2.55593 5.99186 2.44613 6.67135 2.44613 7.41813C2.44616 8.33294 2.61366 9.10669 2.94458 9.74292L3.00781 9.85856C3.33517 10.428 3.79496 10.8674 4.3881 11.1785L4.51058 11.2371C5.13086 11.5211 5.87971 11.6649 6.76017 11.665C7.34428 11.665 7.89897 11.5999 8.42415 11.4696L8.42643 11.469C8.71462 11.4038 8.98459 11.3342 9.23649 11.2611C9.59439 11.1572 9.97134 11.4177 9.97135 11.7983C9.97135 12.0194 9.83762 12.2233 9.62443 12.2984C9.27888 12.4202 8.90166 12.5214 8.49308 12.6026C7.97257 12.7175 7.39474 12.7752 6.76017 12.7752C5.607 12.7752 4.61449 12.5655 3.78597 12.1423C2.95756 11.7192 2.31984 11.1121 1.87533 10.3223L1.87476 10.3211C1.44024 9.52187 1.22477 8.56705 1.22477 7.46029C1.22478 6.57259 1.3671 5.74992 1.65202 4.99308C1.93688 4.22697 2.35007 3.56466 2.8916 3.00781C3.43321 2.44151 4.08757 2.00517 4.85352 1.69873L5.14917 1.58765C5.85021 1.34546 6.62496 1.22477 7.47225 1.22477ZM4.6023 11.3727C4.61925 11.3798 4.63644 11.3864 4.65356 11.3932C4.59273 11.3689 4.53278 11.3437 4.47412 11.3169L4.6023 11.3727ZM3.00155 10.0175C3.0143 10.0379 3.02774 10.0578 3.04085 10.0779C3.00342 10.0206 2.96659 9.9625 2.93205 9.90243L3.00155 10.0175ZM7.31217 5.04036C6.85152 5.04039 6.48962 5.15067 6.21842 5.36222C5.94162 5.57819 5.74308 5.85671 5.62256 6.2002C5.50023 6.5397 5.43856 6.89877 5.43856 7.27629C5.43857 7.87138 5.55806 8.2843 5.77865 8.53467L5.86979 8.62354C6.09067 8.81813 6.37104 8.91691 6.71688 8.91691C7.23457 8.91687 7.58957 8.72986 7.80322 8.36548L7.80436 8.36377C8.03679 7.98295 8.17464 7.48321 8.21281 6.85986L8.27604 5.57983C8.2883 5.33077 8.12923 5.11623 7.89551 5.08195C7.70616 5.05426 7.51149 5.04036 7.31217 5.04036ZM11.5322 7.55143L11.5374 7.5332C11.5433 7.50893 11.5478 7.48424 11.5533 7.45972C11.5464 7.49044 11.5398 7.52111 11.5322 7.55143Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Magic wand with a sparkle on a 16 grid — the skill affordance of
/// input toolbars and skill chips.
pub fn icon_skill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M4.72758 9.13579C5.00451 9.35528 5.29295 9.56977 5.59086 9.77771C5.78991 9.91665 5.99017 10.0509 6.19112 10.1794L3.73734 13.5681C3.39235 14.0444 2.72149 14.1408 2.25622 13.781C1.78911 13.4196 1.71543 12.742 2.09411 12.2888L4.72758 9.13579ZM4.03617 1.55961C4.85506 1.57741 5.82031 1.82097 6.82458 2.23539C7.1308 2.36183 7.27645 2.71299 7.1501 3.01925C7.02369 3.32528 6.67305 3.47148 6.3669 3.34542C5.44424 2.96468 4.63073 2.77298 4.01013 2.75948C3.36964 2.7456 3.07471 2.91756 2.9587 3.0837C2.87351 3.20574 2.81716 3.41264 2.88839 3.76209C2.96012 4.11365 3.15205 4.55323 3.47888 5.0531C4.13074 6.04996 5.25191 7.1837 6.69698 8.19243C8.14219 9.20118 9.59308 9.86242 10.7536 10.1306C11.3354 10.265 11.8136 10.2938 12.1683 10.24C12.521 10.1864 12.6964 10.0625 12.7816 9.94047C12.8854 9.79175 12.9462 9.5087 12.7849 9.01144C12.6827 8.69631 12.8552 8.3579 13.1703 8.25558C13.4854 8.1535 13.8239 8.32594 13.9261 8.64099C14.1438 9.31161 14.1752 10.0401 13.7653 10.6273C13.4318 11.105 12.9054 11.3416 12.3487 11.4261C11.7938 11.5104 11.1536 11.4547 10.4834 11.2998C9.13958 10.9893 7.54893 10.2509 6.01013 9.1768C4.47137 8.10271 3.22986 6.86437 2.47497 5.71C2.09852 5.13427 1.82485 4.55228 1.7126 4.00232C1.60008 3.45059 1.6409 2.87463 1.97432 2.39685C2.43095 1.74272 3.23734 1.54229 4.03617 1.55961ZM10.6735 2.0199C10.8698 1.78519 11.2152 1.7438 11.4613 1.9255C11.7165 2.11405 11.7723 2.47317 11.5863 2.73019L7.75883 8.01469C7.54634 7.8819 7.33156 7.74069 7.1169 7.59086C6.88068 7.42596 6.65441 7.2577 6.43852 7.08826L10.6735 2.0199ZM12.9782 3.73539C13.0589 3.554 13.3227 3.55403 13.4034 3.73539L13.5524 4.07068C13.7463 4.50682 14.1009 4.85639 14.5459 5.0505L14.7959 5.15987C14.9785 5.23962 14.9786 5.49225 14.7959 5.57198L14.5459 5.68071C14.1008 5.87479 13.7463 6.22439 13.5524 6.66052L13.4034 6.99646C13.3226 7.17754 13.0589 7.1776 12.9782 6.99646L12.8376 6.6794C12.6387 6.232 12.2712 5.87599 11.8109 5.68526L11.5407 5.57394C11.3529 5.49595 11.353 5.23592 11.5407 5.15792L11.8109 5.04594C12.2712 4.85515 12.6387 4.4992 12.8376 4.0518L12.9782 3.73539Z",
    size~,
  )
}

///|
/// Filled adjustment sliders on a 14 grid — the settings affordance of
/// input toolbars. (The stroked `icon_adjust` reads too thin at 14px.)
pub fn icon_adjust_fill(size? : Int = 14) -> @html.Html {
  fill14_icon(
    "M10.5274 2.39166C10.5274 2.0695 10.2663 1.80833 9.9441 1.80833C9.62193 1.80833 9.36076 2.0695 9.36076 2.39166V4.025C9.36076 4.34716 9.62193 4.60833 9.9441 4.60833C10.2663 4.60833 10.5274 4.34716 10.5274 4.025V3.76417H12.3375C12.6597 3.76417 12.9208 3.503 12.9208 3.18083C12.9208 2.85867 12.6597 2.5975 12.3375 2.5975H10.5274V2.39166ZM8.19415 3.76417H1.6625C1.34033 3.76417 1.07917 3.503 1.07917 3.18083C1.07917 2.85867 1.34033 2.5975 1.6625 2.5975H8.19415V3.76417ZM4.11051 5.65835C3.78834 5.65835 3.52717 5.91952 3.52717 6.24169V6.47503H1.6625C1.34033 6.47503 1.07916 6.7362 1.07916 7.05836C1.07916 7.38053 1.34033 7.6417 1.6625 7.6417H3.52717V7.87502C3.52717 8.19719 3.78834 8.45835 4.11051 8.45835C4.43267 8.45835 4.69384 8.19719 4.69384 7.87502V7.6417H4.69401V6.47503H4.69384V6.24169C4.69384 5.91952 4.43267 5.65835 4.11051 5.65835ZM12.3375 7.6417H5.86068V6.47503H12.3375C12.6597 6.47503 12.9208 6.7362 12.9208 7.05836C12.9208 7.38053 12.6597 7.6417 12.3375 7.6417ZM6.44384 9.39167C6.12168 9.39167 5.86051 9.65284 5.86051 9.975V11.6083C5.86051 11.9305 6.12168 12.1917 6.44384 12.1917C6.76601 12.1917 7.02718 11.9305 7.02718 11.6083V9.975C7.02718 9.65284 6.76601 9.39167 6.44384 9.39167ZM1.6625 10.2066H4.69401V11.3733H1.6625C1.34034 11.3733 1.07917 11.1121 1.07917 10.7899C1.07917 10.4678 1.34034 10.2066 1.6625 10.2066ZM12.3375 11.3733H7.02735V10.2066H12.3375C12.6597 10.2066 12.9208 10.4678 12.9208 10.7899C12.9208 11.1121 12.6597 11.3733 12.3375 11.3733Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Filled four-point star on a 16 grid — the credit-cost glyph of
/// generation rows and confirm buttons. Color inherits via `currentColor`.
pub fn icon_sparkle_fill(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M14.1052 8.79703C14.1019 8.56454 13.9411 8.36442 13.7076 8.30719C10.5824 7.5394 8.92055 5.69416 8.38342 1.69139C8.38244 1.68387 8.3808 1.67635 8.37916 1.66916C8.35656 1.48015 8.19575 1.33333 8.00022 1.33333C7.80469 1.33333 7.64388 1.47983 7.62128 1.66916C7.61964 1.67668 7.61801 1.68387 7.61702 1.69139C7.07989 5.69416 5.41806 7.5394 2.29287 8.30719C2.05967 8.36409 1.89886 8.56454 1.89526 8.79703V8.81861C1.891 9.06517 2.06328 9.28458 2.31219 9.34966C4.51279 9.9219 6.87978 11.2639 7.57838 13.3639C7.63602 13.5372 7.80011 13.6595 7.98777 13.6667C7.99171 13.6667 8.00775 13.6667 8.01201 13.6667C8.20001 13.6595 8.36377 13.5372 8.42141 13.3639C9.12001 11.2639 11.487 9.9219 13.6876 9.34966C13.9368 9.28458 14.1091 9.06517 14.1049 8.81861V8.79703H14.1052Z",
    size~,
  )
}

///|
/// Pencil with an underline on a 16 grid — the rename affordance of
/// hoverable list rows.
pub fn icon_edit(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M6.01615 13.3703C6.13338 13.341 6.24043 13.2804 6.32587 13.1949L13.2706 6.25023C13.5017 6.01904 13.6851 5.74457 13.8103 5.4425C13.9354 5.14044 13.9998 4.81668 13.9998 4.48973C13.9998 4.16277 13.9354 3.83902 13.8103 3.53695C13.6851 3.23488 13.5017 2.96042 13.2706 2.72922C13.0394 2.49803 12.7649 2.31464 12.4628 2.18952C12.1608 2.0644 11.837 2 11.5101 2C10.8497 2 10.2165 2.26231 9.74955 2.72922L2.80486 9.67391C2.71942 9.75935 2.65881 9.86641 2.6295 9.98363L1.7701 13.4212C1.64804 13.9095 2.0903 14.3517 2.57856 14.2297L6.01615 13.3703ZM10.6924 3.67203L3.87824 10.4862L3.33311 12.6667L5.51363 12.1215L12.3277 5.30742C12.4351 5.20004 12.5203 5.07256 12.5784 4.93226C12.6365 4.79196 12.6664 4.64159 12.6664 4.48973C12.6664 4.33787 12.6365 4.18749 12.5784 4.04719C12.5203 3.90689 12.4351 3.77941 12.3277 3.67203C12.2204 3.56465 12.0929 3.47947 11.9526 3.42136C11.8123 3.36324 11.6619 3.33333 11.5101 3.33333C11.2034 3.33333 10.9092 3.45517 10.6924 3.67203ZM13.2774 13.8334C13.6763 13.8334 13.9996 13.51 13.9996 13.1112C13.9996 12.7123 13.6763 12.3889 13.2774 12.3889L9.716 12.3888C9.68453 12.3888 9.6545 12.402 9.63316 12.4251L8.5512 13.5972C8.46803 13.6873 8.53194 13.8333 8.65456 13.8333L13.2774 13.8334Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Trash can on a 16 grid — the delete affordance of hoverable list rows.
pub fn icon_delete(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M7 1.51778C6.63181 1.51778 6.33333 1.81625 6.33333 2.18444C6.33333 2.55263 6.63181 2.85111 7 2.85111H9C9.36819 2.85111 9.66667 2.55263 9.66667 2.18444C9.66667 1.81625 9.36819 1.51778 9 1.51778H7ZM2.38118 3.51331C2.013 3.51331 1.71452 3.81178 1.71452 4.17997C1.71452 4.54816 2.013 4.84664 2.38118 4.84664H3.24042V11.5133C3.24042 12.9861 4.43433 14.18 5.90709 14.18H10.1312C11.604 14.18 12.7979 12.9861 12.7979 11.5133V4.84664H13.6188C13.987 4.84664 14.2855 4.54816 14.2855 4.17997C14.2855 3.81178 13.987 3.51331 13.6188 3.51331H12.1312H3.90709H2.38118ZM4.57375 11.5133V4.84664H11.4646V11.5133C11.4646 12.2497 10.8676 12.8466 10.1312 12.8466H5.90709C5.17071 12.8466 4.57375 12.2497 4.57375 11.5133Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Large filled check on a 16 grid — the selected-row indicator of
/// session lists. (`icon_check_fill` is the smaller 12-grid checkbox tick.)
pub fn icon_check_fill_large(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M14.5658 3.43431C14.8782 3.74673 14.8782 4.25327 14.5658 4.56569L6.56577 12.5657C6.25335 12.8781 5.74682 12.8781 5.4344 12.5657L1.4344 8.56569C1.12198 8.25327 1.12198 7.74673 1.4344 7.43431C1.74682 7.1219 2.25335 7.1219 2.56577 7.43431L6.00008 10.8686L13.4344 3.43431C13.7468 3.12189 14.2533 3.12189 14.5658 3.43431Z",
    size~,
    fill_rule="evenodd",
  )
}

///|
/// Speech bubble with a plus on a 16 grid — the new-conversation
/// affordance of session headers.
pub fn icon_new_conversation(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M11.6667 1.66667C13.3229 1.66669 14.6658 3.00916 14.6667 4.66536L14.6693 9.66536C14.6702 11.3228 13.3268 12.6673 11.6693 12.6673H8.31836C8.19023 12.6674 8.0647 12.704 7.95703 12.7734L5.18945 14.5605C4.98443 14.6929 4.72345 14.7026 4.50912 14.5859C4.2948 14.4692 4.16152 14.2447 4.16146 14.0007V12.6615C2.58646 12.5711 1.3368 11.2662 1.33594 9.66862L1.33333 4.66797C1.33261 3.01063 2.67595 1.66667 4.33333 1.66667H11.6667ZM4.33333 3C3.41259 3 2.6663 3.74661 2.66667 4.66732L2.66927 9.66797C2.66977 10.5881 3.41583 11.334 4.33594 11.334H4.82813C5.19617 11.3342 5.49479 11.6326 5.49479 12.0007V12.776L7.23372 11.6536C7.55697 11.445 7.93361 11.334 8.31836 11.334H11.6693C12.5901 11.334 13.3364 10.5868 13.3359 9.66602L13.3333 4.66602C13.3328 3.74591 12.5868 3.00002 11.6667 3H4.33333ZM8 4.80013C8.36819 4.80013 8.66667 5.09861 8.66667 5.4668V6.4668H9.66667C10.0349 6.4668 10.3333 6.76527 10.3333 7.13346C10.3333 7.50165 10.0349 7.80013 9.66667 7.80013H8.66667V8.80013C8.66667 9.16832 8.36819 9.4668 8 9.4668C7.63181 9.4668 7.33333 9.16832 7.33333 8.80013V7.80013H6.33333C5.96514 7.80013 5.66667 7.50165 5.66667 7.13346C5.66667 6.76527 5.96514 6.4668 6.33333 6.4668H7.33333V5.4668C7.33333 5.09861 7.63181 4.80013 8 4.80013Z",
    size~,
  )
}

///|
/// Diagonal corner arrows on a 16 grid — the collapse/expand affordance
/// of session headers.
pub fn icon_fullscreen_alt(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M6.18359 9.14779C6.55167 9.14794 6.85014 9.44638 6.85026 9.81445L6.85091 14C6.85097 14.3682 6.5524 14.6667 6.18424 14.6667C5.81614 14.6665 5.51769 14.3681 5.51758 14L5.51693 11.4238L3.07813 13.8646C2.81783 14.1249 2.39568 14.125 2.13542 13.8646C1.87516 13.6042 1.87514 13.1816 2.13542 12.9212L4.57422 10.4805H2C1.6319 10.4804 1.33345 10.1819 1.33333 9.8138C1.33328 9.44561 1.63181 9.14708 2 9.14714L6.18359 9.14779Z M9.81576 1.33333C10.1839 1.33345 10.4823 1.63189 10.4824 2V4.57552L12.9219 2.13542C13.1822 1.87511 13.6043 1.87504 13.8646 2.13542C14.1248 2.39583 14.1248 2.81838 13.8646 3.07878L11.4251 5.51888L14 5.51953C14.3681 5.51964 14.6665 5.8181 14.6667 6.1862C14.6667 6.55439 14.3682 6.85292 14 6.85286L9.81641 6.85221C9.44832 6.85208 9.14986 6.55363 9.14974 6.18555L9.14909 2C9.14903 1.63182 9.44758 1.33329 9.81576 1.33333Z",
    size~,
  )
}

///|
/// List lines with a clock on a 16 grid — the session-history affordance
/// of session headers.
pub fn icon_chat_history(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M10.3997 5.2474C12.7247 5.24741 14.6093 7.13212 14.6094 9.45703C14.6093 11.7819 12.7247 13.6667 10.3997 13.6667C8.07484 13.6666 6.19014 11.7819 6.1901 9.45703C6.19014 7.13213 8.07484 5.24743 10.3997 5.2474ZM10.3997 6.41341C8.71867 6.41345 7.35615 7.77596 7.35612 9.45703C7.35615 11.1381 8.71867 12.5013 10.3997 12.5013C12.0808 12.5013 13.444 11.1381 13.444 9.45703C13.444 7.77595 12.0808 6.41342 10.3997 6.41341ZM4.92839 10.9141C5.04432 11.43 5.22919 11.9196 5.47526 12.3717H2.25977C1.85751 12.3717 1.53141 12.0455 1.53125 11.6432C1.53125 11.2409 1.85741 10.9141 2.25977 10.9141H4.92839ZM10.401 7.4987C10.6693 7.4987 10.8867 7.71611 10.8867 7.98438V9.31901L12.1927 9.61523C12.4541 9.67473 12.6179 9.93514 12.5586 10.1966C12.499 10.458 12.2387 10.6225 11.9772 10.5632L10.2936 10.1797L10.2135 10.1543C10.0354 10.0799 9.91536 9.90413 9.91536 9.70573V7.98372C9.91554 7.71561 10.1329 7.4987 10.401 7.4987ZM5.62435 6.70508C5.34902 7.15327 5.13553 7.64286 4.99284 8.16211H2.25977C1.85741 8.16206 1.53125 7.83596 1.53125 7.43359C1.53126 7.03123 1.85741 6.70512 2.25977 6.70508H5.62435ZM13.4316 2.33333C13.834 2.33334 14.1601 2.65949 14.1602 3.06185C14.1602 3.46424 13.834 3.79036 13.4316 3.79036H2.25977C1.85741 3.79032 1.53125 3.46422 1.53125 3.06185C1.5313 2.65952 1.85744 2.33338 2.25977 2.33333H13.4316Z",
    size~,
  )
}

///|
/// Pencil with a stroke trail on a 16 grid — the canvas-work glyph of
/// tool rows.
pub fn icon_draw(size? : Int = 16) -> @html.Html {
  fill_icon(
    "M8.30664 11.0339C8.72727 10.7877 9.33868 10.4933 9.96224 10.7012C10.2823 10.8079 10.5646 10.9647 10.776 11.194C10.9963 11.4331 11.1039 11.7128 11.1289 11.9928C11.1721 12.4788 10.9593 12.9488 10.8203 13.237C10.9248 13.208 11.0425 13.1745 11.1725 13.1341C11.5173 13.0269 11.9423 12.8848 12.3353 12.7813C12.7196 12.68 13.1661 12.5883 13.5664 12.6204C13.7735 12.6371 14.011 12.6895 14.2285 12.8268C14.4305 12.9544 14.5847 13.1364 14.6797 13.3587L14.7168 13.4564L14.7357 13.5221C14.8093 13.8516 14.6227 14.1903 14.2956 14.2995C13.9723 14.4073 13.6253 14.2529 13.4831 13.9525C13.4763 13.9516 13.4682 13.9499 13.4596 13.9492C13.2992 13.9364 13.0391 13.9744 12.6751 14.0703C12.3197 14.164 11.9536 14.2871 11.5684 14.4069C11.2136 14.5172 10.8114 14.6354 10.4759 14.6647C10.2432 14.685 9.93214 14.6863 9.66471 14.5352C9.50976 14.4475 9.37753 14.3129 9.29883 14.1348C9.22488 13.9672 9.21736 13.805 9.22721 13.6842C9.24534 13.4633 9.33424 13.2545 9.39518 13.1204C9.45728 12.9839 9.55114 12.8011 9.60938 12.681C9.76231 12.3656 9.80817 12.1963 9.80078 12.1113C9.79971 12.0993 9.79999 12.1023 9.79557 12.0977C9.78182 12.0827 9.71999 12.0261 9.54036 11.9661C9.53122 11.9631 9.39867 11.9391 8.97982 12.1842C8.57595 12.4206 8.18194 12.7282 7.61458 13.1055C6.59022 13.7867 5.14138 14.5866 3.51042 13.9551C3.16732 13.8221 2.99684 13.4363 3.12956 13.0931C3.26256 12.7498 3.64888 12.5793 3.99219 12.7122C4.94308 13.0803 5.86266 12.6695 6.8763 11.9954C7.32775 11.6952 7.87061 11.2891 8.30664 11.0339Z M10.8451 1.33333C11.1413 1.3334 11.4353 1.39182 11.709 1.50521C11.9827 1.61865 12.2312 1.78528 12.4408 1.99479C12.6504 2.20439 12.8169 2.45337 12.9303 2.72721C13.0437 3.00097 13.1022 3.29485 13.1022 3.59115C13.1022 3.88731 13.0436 4.18078 12.9303 4.45443C12.8169 4.72822 12.6503 4.97727 12.4408 5.18685L6.9362 10.6921C6.76538 10.8629 6.55075 10.9843 6.31641 11.043L3.49609 11.748C3.00784 11.8701 2.56544 11.4277 2.6875 10.9395L3.39258 8.11914C3.45122 7.88481 3.57268 7.67016 3.74349 7.49935L9.2487 1.99479C9.67204 1.57157 10.2464 1.33333 10.8451 1.33333ZM10.8451 2.66667C10.6001 2.66667 10.3647 2.76433 10.1914 2.9375L4.6862 8.44271L4.25065 10.1849L5.99284 9.74935L11.498 4.24414C11.5837 4.15841 11.6522 4.05663 11.6986 3.94466C11.7449 3.83271 11.7688 3.71231 11.7689 3.59115C11.7688 3.46986 11.745 3.34903 11.6986 3.23698C11.6521 3.12497 11.5838 3.02324 11.498 2.9375C11.4123 2.85175 11.3106 2.78342 11.1986 2.73698C11.0866 2.6906 10.9662 2.66673 10.8451 2.66667Z",
    size~,
    fill_rule="evenodd",
  )
}