| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more contributor |
| license agreements. See the NOTICE file distributed with this work for |
| additional information regarding copyright ownership. The ASF licenses this |
| file to you under the Apache License, Version 2.0 (the "License"); you may not |
| use this file except in compliance with the License. You may obtain a copy of |
| the License at http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| License for the specific language governing permissions and limitations under |
| the License. |
| --> |
| <script> |
| /** |
| * Inline icon set. Everything is drawn in `currentColor` so icons inherit |
| * whatever colour the surrounding text uses, in both light and dark themes. |
| */ |
| let { name, size = 18, stroke = 1.75, label = null } = $props(); |
| </script> |
| |
| <svg |
| class="icon" |
| width={size} |
| height={size} |
| viewBox="0 0 24 24" |
| fill="none" |
| stroke="currentColor" |
| stroke-width={stroke} |
| stroke-linecap="round" |
| stroke-linejoin="round" |
| role={label ? "img" : "presentation"} |
| aria-label={label} |
| aria-hidden={label ? undefined : "true"} |
| > |
| {#if name === "github"} |
| <path |
| fill="currentColor" |
| stroke="none" |
| d="M12 .5C5.73.5.99 5.24.99 11.5c0 4.86 3.15 8.98 7.52 10.44.55.1.75-.24.75-.53 |
| 0-.26-.01-1.13-.02-2.05-3.06.67-3.71-1.3-3.71-1.3-.5-1.27-1.22-1.61-1.22-1.61-1-.68.08-.67.08-.67 |
| 1.1.08 1.68 1.13 1.68 1.13.98 1.68 2.57 1.2 3.2.92.1-.71.38-1.2.7-1.47-2.44-.28-5.01-1.22-5.01-5.43 |
| 0-1.2.43-2.18 1.13-2.95-.11-.28-.49-1.4.11-2.91 0 0 .92-.3 3.02 1.13a10.4 10.4 0 0 1 5.5 0c2.1-1.43 |
| 3.02-1.13 3.02-1.13.6 1.51.22 2.63.11 2.91.7.77 1.13 1.75 1.13 2.95 0 4.22-2.58 5.15-5.03 5.42.39.34.74 1 |
| .74 2.02 0 1.46-.01 2.63-.01 2.99 0 .29.2.64.76.53A11.02 11.02 0 0 0 23.01 11.5C23.01 5.24 18.27.5 12 .5Z" |
| /> |
| {:else if name === "user"} |
| <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" /> |
| <circle cx="12" cy="7" r="4" /> |
| {:else if name === "users"} |
| <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" /> |
| <circle cx="9" cy="7" r="4" /> |
| <path d="M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75" /> |
| {:else if name === "logout"} |
| <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" /> |
| <path d="m16 17 5-5-5-5M21 12H9" /> |
| {:else if name === "shield"} |
| <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z" /> |
| <path d="m9 12 2 2 4-4" /> |
| {:else if name === "lock"} |
| <rect x="3" y="11" width="18" height="11" rx="2" /> |
| <path d="M7 11V7a5 5 0 0 1 10 0v4" /> |
| {:else if name === "repo-plus"} |
| <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" /> |
| <path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2Z" /> |
| <path d="M12 7v6M9 10h6" /> |
| {:else if name === "branch"} |
| <line x1="6" y1="3" x2="6" y2="15" /> |
| <circle cx="18" cy="6" r="3" /> |
| <circle cx="6" cy="18" r="3" /> |
| <path d="M18 9a9 9 0 0 1-9 9" /> |
| {:else if name === "search"} |
| <circle cx="11" cy="11" r="7" /> |
| <path d="m21 21-4.3-4.3" /> |
| {:else if name === "help"} |
| <circle cx="12" cy="12" r="10" /> |
| <path d="M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3" /> |
| <line x1="12" y1="17" x2="12.01" y2="17" /> |
| {:else if name === "book"} |
| <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" /> |
| <path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2Z" /> |
| {:else if name === "mail"} |
| <rect x="2" y="4" width="20" height="16" rx="2" /> |
| <path d="m2 7 10 6 10-6" /> |
| {:else if name === "home"} |
| <path d="m3 10 9-7 9 7v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z" /> |
| <path d="M9 22V12h6v10" /> |
| {:else if name === "chevron-down"} |
| <path d="m6 9 6 6 6-6" /> |
| {:else if name === "menu"} |
| <path d="M3 6h18M3 12h18M3 18h18" /> |
| {:else if name === "close"} |
| <path d="M18 6 6 18M6 6l12 12" /> |
| {:else if name === "check"} |
| <path d="m20 6-11 11-5-5" /> |
| {:else if name === "external"} |
| <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" /> |
| <path d="M15 3h6v6M10 14 21 3" /> |
| {:else if name === "link"} |
| <path d="M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7" /> |
| <path d="M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7" /> |
| {:else if name === "unlink"} |
| <path d="M15 7h2a5 5 0 0 1 3.5 8.5M9 17H7A5 5 0 0 1 3.5 8.5" /> |
| <line x1="8" y1="12" x2="12" y2="12" /> |
| <line x1="2" y1="2" x2="22" y2="22" /> |
| {:else if name === "alert"} |
| <path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z" /> |
| <path d="M12 9v4M12 17h.01" /> |
| {:else if name === "info"} |
| <circle cx="12" cy="12" r="10" /> |
| <path d="M12 16v-4M12 8h.01" /> |
| {:else if name === "archive"} |
| <rect x="2" y="3" width="20" height="5" rx="1" /> |
| <path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8M10 12h4" /> |
| {:else if name === "eye-off"} |
| <path d="M9.9 4.24A9.1 9.1 0 0 1 12 4c7 0 10 8 10 8a18.5 18.5 0 0 1-2.16 3.19" /> |
| <path d="M6.6 6.6A18.5 18.5 0 0 0 2 12s3 8 10 8a9.1 9.1 0 0 0 5.4-1.6" /> |
| <path d="M14.12 14.12a3 3 0 1 1-4.24-4.24" /> |
| <line x1="2" y1="2" x2="22" y2="22" /> |
| {:else if name === "globe"} |
| <circle cx="12" cy="12" r="10" /> |
| <path d="M2 12h20M12 2a15.3 15.3 0 0 1 0 20 15.3 15.3 0 0 1 0-20" /> |
| {/if} |
| </svg> |
| |
| <style> |
| .icon { |
| display: block; |
| flex: none; |
| /* Icons are decorative: let clicks fall through to the button or link |
| that wraps them, so an icon never swallows its own control's click. */ |
| pointer-events: none; |
| } |
| </style> |