11import React from "react" ;
22
3- export type IconKind = "class" | "enum" | "enum-member" | "field" | "inherited-class" ;
3+ export type IconKind =
4+ | "class"
5+ | "enum"
6+ | "enum-member"
7+ | "field"
8+ | "inherited-class"
9+ | "meta-default"
10+ | "meta-tag"
11+ | "meta-broadcast"
12+ | "meta-note"
13+ | "meta-variable"
14+ | "meta-eye-closed"
15+ | "meta-folder"
16+ | "meta-discard" ;
417
518const colors : Record < IconKind , string > = {
619 class : "#E37933" ,
720 enum : "#D4AA32" ,
821 "enum-member" : "#D4AA32" ,
922 field : "#75BEFF" ,
1023 "inherited-class" : "#E37933" ,
24+ "meta-default" : "currentColor" ,
25+ "meta-tag" : "#C586C0" ,
26+ "meta-broadcast" : "#4EC9B0" ,
27+ "meta-note" : "#9CDCFE" ,
28+ "meta-variable" : "#DCDCAA" ,
29+ "meta-eye-closed" : "#808080" ,
30+ "meta-folder" : "#E8AB53" ,
31+ "meta-discard" : "#F14C4C" ,
1132} ;
1233
13- const icons : Record < IconKind , string > = {
34+ // https://microsoft.github.io/vscode-codicons/dist/codicon.html
35+ const icons : Record < IconKind , string | string [ ] > = {
1436 class :
1537 "M13.2069 10.4999C13.0194 10.3125 12.7651 10.2072 12.4999 10.2072C12.2348 10.2072 11.9805 10.3125 11.7929 10.4999L11.2929 10.9999H8.99994V6.99994H10.3629C10.2479 7.1876 10.1989 7.40832 10.2238 7.62701C10.2486 7.84571 10.3458 8.04983 10.4999 8.20694L11.2929 8.99994C11.4805 9.18741 11.7348 9.29273 11.9999 9.29273C12.2651 9.29273 12.5194 9.18741 12.7069 8.99994L13.9999 7.70694C14.1874 7.51941 14.2927 7.2651 14.2927 6.99994C14.2927 6.73478 14.1874 6.48047 13.9999 6.29294L13.2069 5.49994C13.0194 5.31247 12.7651 5.20715 12.4999 5.20715C12.2348 5.20715 11.9805 5.31247 11.7929 5.49994L11.2929 5.99994H6.70694L7.49994 5.20694C7.68741 5.01941 7.79273 4.7651 7.79273 4.49994C7.79273 4.23478 7.68741 3.98047 7.49994 3.79294L6.20694 2.49994C6.01941 2.31247 5.7651 2.20715 5.49994 2.20715C5.23478 2.20715 4.98047 2.31247 4.79294 2.49994L1.49994 5.79294C1.31247 5.98047 1.20715 6.23478 1.20715 6.49994C1.20715 6.7651 1.31247 7.01941 1.49994 7.20694L2.79294 8.49994C2.98047 8.68741 3.23478 8.79273 3.49994 8.79273C3.7651 8.79273 4.01941 8.68741 4.20694 8.49994L5.70694 6.99994H7.99994V11.4999C7.99994 11.6325 8.05262 11.7597 8.14639 11.8535C8.24015 11.9473 8.36733 11.9999 8.49994 11.9999H10.3629C10.2479 12.1876 10.1989 12.4083 10.2238 12.627C10.2486 12.8457 10.3458 13.0498 10.4999 13.2069L11.2929 13.9999C11.4805 14.1874 11.7348 14.2927 11.9999 14.2927C12.2651 14.2927 12.5194 14.1874 12.7069 13.9999L13.9999 12.7069C14.1874 12.5194 14.2927 12.2651 14.2927 11.9999C14.2927 11.7348 14.1874 11.4805 13.9999 11.2929L13.2069 10.4999ZM3.49994 7.79294L2.20694 6.49994L5.49994 3.20694L6.79294 4.49994L3.49994 7.79294ZM13.2929 6.99994L11.9999 8.29294L11.2069 7.49994L12.4999 6.20694L13.2929 6.99994ZM11.9999 13.2929L11.2069 12.4999L12.4999 11.2069L13.2929 11.9999L11.9999 13.2929Z" ,
1638 enum : "M15 3.5V7.5C15 7.9 14.85 8.28 14.56 8.56C14.28 8.84 13.9 9 13.5 9H11V8.5C11 8.33 10.98 8.16 10.95 8H13.5C13.63 8 13.76 7.95 13.85 7.85C13.95 7.76 14 7.63 14 7.5V3.5C14 3.37 13.95 3.24 13.85 3.15C13.76 3.05 13.63 3 13.5 3H7.5C7.37 3 7.24 3.05 7.15 3.15C7.05 3.24 7 3.37 7 3.5V6H6V3.5C6 3.1 6.16 2.72 6.44 2.44C6.72 2.16 7.1 2 7.5 2H13.5C13.9 2 14.28 2.16 14.56 2.44C14.84 2.72 15 3.1 15 3.5ZM12.5 5C12.776 5 13 4.776 13 4.5C13 4.224 12.776 4 12.5 4H8.5C8.224 4 8 4.224 8 4.5C8 4.776 8.224 5 8.5 5H12.5ZM13 6.5C13 6.22 12.78 6 12.5 6H8.5C9.32 6 10.04 6.39 10.5 7H12.5C12.78 7 13 6.78 13 6.5ZM7.5 9H3.5C3.224 9 3 9.224 3 9.5C3 9.776 3.224 10 3.5 10H7.5C7.776 10 8 9.776 8 9.5C8 9.224 7.776 9 7.5 9ZM7.5 11H3.5C3.224 11 3 11.224 3 11.5C3 11.776 3.224 12 3.5 12H7.5C7.776 12 8 11.776 8 11.5C8 11.224 7.776 11 7.5 11ZM10 8.5V12.5C10 13.327 9.327 14 8.5 14H2.5C1.673 14 1 13.327 1 12.5V8.5C1 7.673 1.673 7 2.5 7H8.5C9.327 7 10 7.673 10 8.5ZM9 8.5C9 8.225 8.775 8 8.5 8H2.5C2.225 8 2 8.225 2 8.5V12.5C2 12.775 2.225 13 2.5 13H8.5C8.775 13 9 12.775 9 12.5V8.5Z" ,
@@ -20,6 +42,24 @@ const icons: Record<IconKind, string> = {
2042 "M11.967 6.089c.024.061.035.127.034.192a.483.483 0 0 1-.043.19.487.487 0 0 1-.113.16.499.499 0 0 1-.165.105L7.5 8.344v1.676a.5.5 0 0 1-1 0V8.343l-2.18-.838a.5.5 0 0 1 .36-.966L7 7.464l4.32-1.664a.5.5 0 0 1 .647.289ZM15 5.8v3.629a1.5 1.5 0 0 1-.266.848 1.5 1.5 0 0 1-.696.552l-6.5 2.5a1.5 1.5 0 0 1-1.078 0L1.961 11.6a1.5 1.5 0 0 1-.696-.552A1.5 1.5 0 0 1 1 10.2V6.571a1.5 1.5 0 0 1 .266-.848 1.5 1.5 0 0 1 .696-.552l6.5-2.5a1.5 1.5 0 0 1 1.078 0l4.5 1.731a1.5 1.5 0 0 1 .694.552c.171.249.265.544.266.846Zm-1 0a.5.5 0 0 0-.088-.283.5.5 0 0 0-.233-.184l-4.5-1.73a.5.5 0 0 0-.358 0l-6.5 2.5A.5.5 0 0 0 2 6.571v3.629a.5.5 0 0 0 .32.466l4.5 1.732a.5.5 0 0 0 .358 0l6.5-2.5A.5.5 0 0 0 14 9.43V5.8Z" ,
2143 "inherited-class" :
2244 "M13 6H11.76L8.96 10H9C9.552 10 10 10.448 10 11V14C10 14.552 9.552 15 9 15H6C5.448 15 5 14.552 5 14V11C5 10.448 5.448 10 6 10H6.04L3.24 6H2C1.448 6 1 5.552 1 5V2C1 1.448 1.448 1 2 1H5C5.552 1 6 1.448 6 2V5C6 5.552 5.552 6 5 6H4.46L7.26 10H7.74L10.54 6H10C9.448 6 9 5.552 9 5V2C9 1.448 9.448 1 10 1H13C13.552 1 14 1.448 14 2V5C14 5.552 13.552 6 13 6ZM5.001 2H2.001V5H5.001V2ZM6 14H9V11H6V14ZM13 2H10V5H13V2Z" ,
45+ "meta-default" :
46+ "M9.99999 7.99988C9.99999 8.39544 9.88272 8.78206 9.66295 9.11096C9.44319 9.43986 9.13082 9.69628 8.76537 9.84766C8.39992 9.99903 7.99781 10.0386 7.60985 9.96143C7.22189 9.88426 6.86551 9.69377 6.5858 9.41406C6.3061 9.13436 6.11561 8.77798 6.03844 8.39001C5.96127 8.00205 6.00084 7.59995 6.15221 7.2345C6.30359 6.86904 6.56001 6.55668 6.88891 6.33691C7.2178 6.11715 7.60443 5.99988 7.99999 5.99988C8.53042 5.99988 9.0391 6.21062 9.41417 6.58569C9.78925 6.96077 9.99999 7.46944 9.99999 7.99988Z" ,
47+ "meta-tag" :
48+ "M11 6C10.4477 6 10 5.55228 10 5C10 4.44772 10.4477 4 11 4C11.5523 4 12 4.44772 12 5C12 5.55228 11.5523 6 11 6ZM2.58722 10.1357C1.80426 9.3566 1.80426 8.0934 2.58722 7.31428L7.32688 2.59785C7.70082 2.22574 8.20735 2.01572 8.73617 2.01353L11.9867 2.00002C13.1029 1.99538 14.008 2.89877 13.9999 4.00947L13.9755 7.3725C13.9717 7.89662 13.7608 8.3982 13.3884 8.76882L8.71865 13.4157C7.93569 14.1948 6.66627 14.1948 5.88331 13.4157L2.58722 10.1357ZM3.29605 8.01964C2.90458 8.4092 2.90458 9.0408 3.29606 9.43036L6.59214 12.7103C6.98362 13.0999 7.61834 13.0999 8.00982 12.7103L12.6795 8.06346C12.8658 7.87815 12.9712 7.62736 12.9731 7.3653L12.9975 4.00227C13.0016 3.44692 12.549 2.99522 11.9909 2.99754L8.74036 3.01105C8.47595 3.01215 8.22268 3.11716 8.03571 3.30321L3.29605 8.01964Z" ,
49+ "meta-broadcast" :
50+ "M5.52501 5.52498C4.86401 6.18598 4.50001 7.06598 4.50001 7.99998C4.50001 8.93398 4.86401 9.81298 5.52501 10.475C5.72001 10.67 5.72001 10.987 5.52501 11.182C5.42701 11.28 5.29901 11.328 5.17101 11.328C5.04301 11.328 4.91501 11.279 4.81701 11.182C3.96701 10.332 3.49901 9.20298 3.49901 7.99998C3.49901 6.79698 3.96701 5.66798 4.81701 4.81798C5.01201 4.62298 5.32901 4.62298 5.52401 4.81798C5.71901 5.01298 5.72001 5.32998 5.52501 5.52498ZM11.182 4.81798C10.987 4.62298 10.67 4.62298 10.475 4.81798C10.28 5.01298 10.28 5.32998 10.475 5.52498C11.136 6.18598 11.5 7.06598 11.5 7.99998C11.5 8.93398 11.136 9.81298 10.475 10.475C10.28 10.67 10.28 10.987 10.475 11.182C10.573 11.28 10.701 11.328 10.829 11.328C10.957 11.328 11.085 11.279 11.183 11.182C12.033 10.332 12.501 9.20298 12.501 7.99998C12.501 6.79698 12.032 5.66798 11.182 4.81798ZM3.75501 3.75498C3.95001 3.55998 3.95001 3.24298 3.75501 3.04798C3.56001 2.85298 3.24301 2.85298 3.04801 3.04798C0.317006 5.77798 0.317006 10.222 3.04801 12.953C3.14601 13.051 3.27401 13.1 3.40201 13.1C3.53001 13.1 3.65801 13.051 3.75601 12.953C3.95101 12.758 3.95101 12.441 3.75601 12.246C1.41501 9.90498 1.41501 6.09598 3.75601 3.75598L3.75501 3.75498ZM12.952 3.04798C12.757 2.85298 12.44 2.85298 12.245 3.04798C12.05 3.24298 12.05 3.55998 12.245 3.75498C14.586 6.09598 14.586 9.90398 12.245 12.245C12.05 12.44 12.05 12.757 12.245 12.952C12.343 13.05 12.471 13.099 12.599 13.099C12.727 13.099 12.855 13.05 12.953 12.952C15.683 10.221 15.683 5.77698 12.953 3.04698L12.952 3.04798ZM8.00001 6.99998C7.44801 6.99998 7.00001 7.44798 7.00001 7.99998C7.00001 8.55198 7.44801 8.99998 8.00001 8.99998C8.55201 8.99998 9.00001 8.55198 9.00001 7.99998C9.00001 7.44798 8.55201 6.99998 8.00001 6.99998Z" ,
51+ "meta-note" :
52+ "M4.5 2C3.11929 2 2 3.11929 2 4.5V11.5C2 12.8807 3.11929 14 4.5 14H8.17157C8.83461 14 9.4705 13.7366 9.93934 13.2678L13.2678 9.93934C13.7366 9.4705 14 8.83461 14 8.17157V4.5C14 3.11929 12.8807 2 11.5 2H4.5ZM3 4.5C3 3.67157 3.67157 3 4.5 3H11.5C12.3284 3 13 3.67157 13 4.5V8H10.5C9.11929 8 8 9.11929 8 10.5V13H4.5C3.67157 13 3 12.3284 3 11.5V4.5ZM9 12.7505V10.5C9 9.67157 9.67157 9 10.5 9H12.7505C12.6955 9.08295 12.6321 9.16082 12.5607 9.23223L9.23223 12.5607C9.16082 12.6321 9.08295 12.6955 9 12.7505Z" ,
53+ "meta-variable" : [
54+ "M11.279 5.78975L8.799 5.06575C8.59 5.00575 8.372 5.01475 8.168 5.08975L4.648 6.40975C4.26 6.55575 4 6.93175 4 7.34675V9.13975C4 9.57075 4.274 9.95175 4.684 10.0877L7.165 10.9147C7.268 10.9497 7.376 10.9667 7.483 10.9667C7.611 10.9667 7.739 10.9427 7.859 10.8937L11.376 9.46475C11.755 9.31175 12 8.94775 12 8.53875V6.74975C12 6.30775 11.703 5.91275 11.279 5.78975ZM11 8.53875L7.483 9.96775L5 9.13975V7.34675L8.521 6.02675L11 6.75075V8.53975V8.53875ZM7.48 7.46675L8.807 6.91375C9.06 6.80875 9.355 6.92775 9.461 7.18275C9.566 7.43775 9.446 7.73075 9.191 7.83675L7.999 8.33375V8.62575C7.999 8.90175 7.775 9.12575 7.499 9.12575C7.223 9.12575 6.999 8.90175 6.999 8.62575V8.36075L6.591 8.22475C6.329 8.13775 6.188 7.85475 6.275 7.59275C6.364 7.33075 6.647 7.19175 6.908 7.27675L7.48 7.46675Z" ,
55+ "M12.5 14H11.5C11.224 14 11 13.776 11 13.5C11 13.224 11.224 13 11.5 13H12.5C12.776 13 13 12.775 13 12.5V3.5C13 3.225 12.776 3 12.5 3H11.5C11.224 3 11 2.776 11 2.5C11 2.224 11.224 2 11.5 2H12.5C13.327 2 14 2.673 14 3.5V12.5C14 13.327 13.327 14 12.5 14ZM5 13.5C5 13.224 4.776 13 4.5 13H3.5C3.224 13 3 12.775 3 12.5V3.5C3 3.225 3.224 3 3.5 3H4.5C4.776 3 5 2.776 5 2.5C5 2.224 4.776 2 4.5 2H3.5C2.673 2 2 2.673 2 3.5V12.5C2 13.327 2.673 14 3.5 14H4.5C4.776 14 5 13.776 5 13.5Z" ,
56+ ] ,
57+ "meta-eye-closed" :
58+ "M10.1196 10.8267L14.1464 14.8536C14.3417 15.0488 14.6583 15.0488 14.8536 14.8536C15.0488 14.6583 15.0488 14.3417 14.8536 14.1464L1.85355 1.14645C1.65829 0.951184 1.34171 0.951184 1.14645 1.14645C0.951184 1.34171 0.951184 1.65829 1.14645 1.85355L4.37624 5.08334C3.90117 5.4183 3.5126 5.80026 3.19877 6.18295C2.75443 6.72477 2.46154 7.26493 2.27931 7.66977C2.18795 7.87274 2.12369 8.04329 2.08166 8.1653C2.06063 8.22636 2.03453 8.31047 2.03453 8.31047L2.01687 8.37186C2.01687 8.37186 1.94098 8.86907 2.37202 8.9833C2.63879 9.05404 2.91251 8.8948 2.98346 8.62815L2.98444 8.62471L2.99179 8.5997C2.9989 8.57616 3.01051 8.53927 3.02715 8.49095C3.06047 8.39421 3.11375 8.25227 3.19119 8.08023C3.34655 7.73507 3.59627 7.27523 3.97201 6.81706C4.26363 6.46146 4.63213 6.10494 5.09595 5.80306L6.67356 7.38067C5.9688 7.82277 5.50024 8.60667 5.50024 9.5C5.50024 10.8807 6.61953 12 8.00024 12C8.89358 12 9.67747 11.5314 10.1196 10.8267ZM9.3807 10.0878C9.15205 10.6241 8.62005 11 8.00024 11C7.17182 11 6.50024 10.3284 6.50024 9.5C6.50024 8.88019 6.87616 8.34819 7.41244 8.11955L9.3807 10.0878ZM6.31962 4.19853L7.174 5.05291C7.43366 5.01852 7.70875 5 8.00017 5C10.0445 5 11.2857 5.9115 12.0283 6.81706C12.4041 7.27523 12.6538 7.73507 12.8091 8.08023C12.8866 8.25227 12.9399 8.39421 12.9732 8.49095C12.9898 8.53927 13.0014 8.57616 13.0085 8.5997L13.0159 8.62471L13.0169 8.62815L13.0172 8.62937C13.0885 8.89555 13.3618 9.05397 13.6283 8.9833C13.8952 8.91253 14.0542 8.63878 13.9835 8.37186L13.9832 8.37069L13.9827 8.36916L13.9816 8.365L13.9781 8.35236C13.9752 8.34204 13.9711 8.328 13.9658 8.31047C13.9552 8.27541 13.9397 8.22636 13.9187 8.1653C13.8766 8.04329 13.8124 7.87274 13.721 7.66977C13.5388 7.26493 13.2459 6.72477 12.8016 6.18295C11.904 5.0885 10.3952 4 8.00017 4C7.38264 4 6.82403 4.07236 6.31962 4.19853Z" ,
59+ "meta-folder" :
60+ "M2 4.5V6H5.58579C5.71839 6 5.84557 5.94732 5.93934 5.85355L7.29289 4.5L5.93934 3.14645C5.84557 3.05268 5.71839 3 5.58579 3H3.5C2.67157 3 2 3.67157 2 4.5ZM1 4.5C1 3.11929 2.11929 2 3.5 2H5.58579C5.98361 2 6.36514 2.15804 6.64645 2.43934L8.20711 4H12.5C13.8807 4 15 5.11929 15 6.5V11.5C15 12.8807 13.8807 14 12.5 14H3.5C2.11929 14 1 12.8807 1 11.5V4.5ZM2 7V11.5C2 12.3284 2.67157 13 3.5 13H12.5C13.3284 13 14 12.3284 14 11.5V6.5C14 5.67157 13.3284 5 12.5 5H8.20711L6.64645 6.56066C6.36514 6.84197 5.98361 7 5.58579 7H2Z" ,
61+ "meta-discard" :
62+ "M14 2H10C10 0.897 9.103 0 8 0C6.897 0 6 0.897 6 2H2C1.724 2 1.5 2.224 1.5 2.5C1.5 2.776 1.724 3 2 3H2.54L3.349 12.708C3.456 13.994 4.55 15 5.84 15H10.159C11.449 15 12.543 13.993 12.65 12.708L13.459 3H13.999C14.275 3 14.499 2.776 14.499 2.5C14.499 2.224 14.275 2 13.999 2H14ZM8 1C8.551 1 9 1.449 9 2H7C7 1.449 7.449 1 8 1ZM11.655 12.625C11.591 13.396 10.934 14 10.16 14H5.841C5.067 14 4.41 13.396 4.346 12.625L3.544 3H12.458L11.656 12.625H11.655ZM7 5.5V11.5C7 11.776 6.776 12 6.5 12C6.224 12 6 11.776 6 11.5V5.5C6 5.224 6.224 5 6.5 5C6.776 5 7 5.224 7 5.5ZM10 5.5V11.5C10 11.776 9.776 12 9.5 12C9.224 12 9 11.776 9 11.5V5.5C9 5.224 9.224 5 9.5 5C9.776 5 10 5.224 10 5.5Z" ,
2363} ;
2464
2565export const KindIcon : React . FC < {
@@ -29,6 +69,7 @@ export const KindIcon: React.FC<{
2969} > = React . memo ( ( { className, kind, size } ) => {
3070 const sizes =
3171 typeof size === "number" ? size : size === "small" ? 16 : size === "medium" ? 20 : 24 ;
72+ const paths = icons [ kind ] ;
3273 return (
3374 < svg
3475 className = { className }
@@ -39,7 +80,7 @@ export const KindIcon: React.FC<{
3980 fill = { colors [ kind ] }
4081 aria-hidden = "true"
4182 >
42- < path d = { icons [ kind ] } />
83+ { Array . isArray ( paths ) ? paths . map ( ( d , i ) => < path key = { i } d = { d } /> ) : < path d = { paths } /> }
4384 </ svg >
4485 ) ;
4586} ) ;
0 commit comments