@urmzd/github-insights 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/.githooks/.sr-hooks-hash +1 -0
  2. package/.githooks/commit-msg +3 -0
  3. package/.githooks/pre-commit +3 -0
  4. package/AGENTS.md +32 -19
  5. package/CHANGELOG.md +62 -0
  6. package/CONTRIBUTING.md +18 -19
  7. package/README.md +21 -24
  8. package/action.yml +1 -1
  9. package/assets/insights/index.svg +45 -4
  10. package/assets/insights/metrics-constellation.svg +55 -0
  11. package/assets/insights/metrics-growth.svg +55 -0
  12. package/assets/insights/metrics-heatmap.svg +55 -0
  13. package/assets/insights/metrics-impact.svg +55 -0
  14. package/assets/insights/metrics-rhythm.svg +55 -0
  15. package/assets/insights/metrics-velocity.svg +55 -0
  16. package/examples/classic/README.md +36 -2
  17. package/examples/classic/index.svg +45 -4
  18. package/examples/classic/metrics-constellation.svg +55 -0
  19. package/examples/classic/metrics-growth.svg +55 -0
  20. package/examples/classic/metrics-heatmap.svg +55 -0
  21. package/examples/classic/metrics-impact.svg +55 -0
  22. package/examples/classic/metrics-rhythm.svg +55 -0
  23. package/examples/classic/metrics-velocity.svg +55 -0
  24. package/examples/ecosystem/README.md +39 -28
  25. package/examples/ecosystem/index.svg +45 -4
  26. package/examples/ecosystem/metrics-constellation.svg +55 -0
  27. package/examples/ecosystem/metrics-growth.svg +55 -0
  28. package/examples/ecosystem/metrics-heatmap.svg +55 -0
  29. package/examples/ecosystem/metrics-impact.svg +55 -0
  30. package/examples/ecosystem/metrics-rhythm.svg +55 -0
  31. package/examples/ecosystem/metrics-velocity.svg +55 -0
  32. package/examples/minimal/README.md +36 -2
  33. package/examples/minimal/index.svg +45 -4
  34. package/examples/minimal/metrics-constellation.svg +55 -0
  35. package/examples/minimal/metrics-growth.svg +55 -0
  36. package/examples/minimal/metrics-heatmap.svg +55 -0
  37. package/examples/minimal/metrics-impact.svg +55 -0
  38. package/examples/minimal/metrics-rhythm.svg +55 -0
  39. package/examples/minimal/metrics-velocity.svg +55 -0
  40. package/examples/modern/README.md +62 -50
  41. package/examples/modern/index.svg +45 -4
  42. package/examples/modern/metrics-constellation.svg +55 -0
  43. package/examples/modern/metrics-growth.svg +55 -0
  44. package/examples/modern/metrics-heatmap.svg +55 -0
  45. package/examples/modern/metrics-impact.svg +55 -0
  46. package/examples/modern/metrics-rhythm.svg +55 -0
  47. package/examples/modern/metrics-velocity.svg +55 -0
  48. package/llms.txt +4 -4
  49. package/package.json +1 -1
  50. package/skills/github-insights/SKILL.md +35 -81
  51. package/sr.yaml +9 -0
  52. package/src/api.ts +2 -140
  53. package/src/components/contribution-heatmap.tsx +43 -0
  54. package/src/components/contribution-rhythm.tsx +152 -0
  55. package/src/components/full-svg.test.tsx +4 -1
  56. package/src/components/full-svg.tsx +14 -7
  57. package/src/components/growth-arc.tsx +119 -0
  58. package/src/components/impact-trail.tsx +90 -0
  59. package/src/components/language-velocity.tsx +181 -0
  60. package/src/components/project-constellation.tsx +97 -0
  61. package/src/components/section.test.tsx +5 -3
  62. package/src/components/section.tsx +5 -13
  63. package/src/components/style-defs.tsx +44 -3
  64. package/src/index.ts +28 -47
  65. package/src/metrics.test.ts +50 -57
  66. package/src/metrics.ts +277 -95
  67. package/src/readme.test.ts +2 -4
  68. package/src/templates.test.ts +19 -16
  69. package/src/templates.ts +30 -16
  70. package/src/theme.ts +11 -1
  71. package/src/types.ts +34 -7
  72. package/assets/insights/metrics-calendar.svg +0 -14
  73. package/assets/insights/metrics-complexity.svg +0 -14
  74. package/assets/insights/metrics-contributions.svg +0 -14
  75. package/assets/insights/metrics-expertise.svg +0 -14
  76. package/assets/insights/metrics-languages.svg +0 -14
  77. package/assets/insights/metrics-pulse.svg +0 -14
  78. package/examples/classic/metrics-calendar.svg +0 -14
  79. package/examples/classic/metrics-complexity.svg +0 -14
  80. package/examples/classic/metrics-contributions.svg +0 -14
  81. package/examples/classic/metrics-expertise.svg +0 -14
  82. package/examples/classic/metrics-languages.svg +0 -14
  83. package/examples/classic/metrics-pulse.svg +0 -14
  84. package/examples/ecosystem/metrics-calendar.svg +0 -14
  85. package/examples/ecosystem/metrics-complexity.svg +0 -14
  86. package/examples/ecosystem/metrics-contributions.svg +0 -14
  87. package/examples/ecosystem/metrics-expertise.svg +0 -14
  88. package/examples/ecosystem/metrics-languages.svg +0 -14
  89. package/examples/ecosystem/metrics-pulse.svg +0 -14
  90. package/examples/minimal/metrics-calendar.svg +0 -14
  91. package/examples/minimal/metrics-complexity.svg +0 -14
  92. package/examples/minimal/metrics-contributions.svg +0 -14
  93. package/examples/minimal/metrics-expertise.svg +0 -14
  94. package/examples/minimal/metrics-languages.svg +0 -14
  95. package/examples/minimal/metrics-pulse.svg +0 -14
  96. package/examples/modern/metrics-calendar.svg +0 -14
  97. package/examples/modern/metrics-complexity.svg +0 -14
  98. package/examples/modern/metrics-contributions.svg +0 -14
  99. package/examples/modern/metrics-expertise.svg +0 -14
  100. package/examples/modern/metrics-languages.svg +0 -14
  101. package/examples/modern/metrics-pulse.svg +0 -14
  102. package/src/components/bar-chart.test.tsx +0 -38
  103. package/src/components/bar-chart.tsx +0 -54
  104. package/src/components/contribution-calendar.test.tsx +0 -44
  105. package/src/components/contribution-calendar.tsx +0 -94
  106. package/src/components/contribution-cards.test.tsx +0 -36
  107. package/src/components/contribution-cards.tsx +0 -58
  108. package/src/components/donut-chart.test.tsx +0 -36
  109. package/src/components/donut-chart.tsx +0 -102
  110. package/src/components/project-cards.test.tsx +0 -46
  111. package/src/components/project-cards.tsx +0 -66
  112. package/src/components/stat-cards.test.tsx +0 -32
  113. package/src/components/stat-cards.tsx +0 -57
  114. package/src/components/tech-highlights.test.tsx +0 -63
  115. package/src/components/tech-highlights.tsx +0 -109
  116. package/teasr.toml +0 -14
@@ -0,0 +1,55 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="185" viewBox="0 0 808 185"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; font-variant-numeric: tabular-lining; }
3
+ .t-h { font-size: 14px; fill: #c9d1d9; letter-spacing: 2px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ .bg-fill { fill: #0d1117; }
15
+ .card-fill { fill: #161b22; }
16
+ .border-stroke { stroke: #30363d; }
17
+
18
+ @media (prefers-color-scheme: light) {
19
+ .bg-fill { fill: #ffffff; }
20
+ .card-fill { fill: #f6f8fa; }
21
+ .border-stroke { stroke: #d0d7de; }
22
+ .t-h { fill: #1f2328; }
23
+ .t-sub { fill: #656d76; }
24
+ .t-label { fill: #656d76; }
25
+ .t-value { fill: #656d76; }
26
+ .t-subhdr { fill: #656d76; }
27
+ .t-stat-label { fill: #656d76; }
28
+ .t-card-title { fill: #0969da; }
29
+ .t-card-detail { fill: #656d76; }
30
+ .t-bullet { fill: #1f2328; }
31
+ }
32
+
33
+ @keyframes fadeIn {
34
+ from { opacity: 0; transform: translateY(8px); }
35
+ to { opacity: 1; transform: translateY(0); }
36
+ }
37
+ @keyframes scaleIn {
38
+ from { transform: scale(0); opacity: 0; }
39
+ to { transform: scale(1); opacity: 1; }
40
+ }
41
+ @keyframes drawPath {
42
+ from { stroke-dashoffset: var(--path-length); }
43
+ to { stroke-dashoffset: 0; }
44
+ }
45
+ @keyframes radarReveal {
46
+ from { transform: scale(0); opacity: 0; }
47
+ to { transform: scale(1); opacity: 0.6; }
48
+ }
49
+ .fade-1 { animation: fadeIn 0.6s ease-out 0.1s both; }
50
+ .fade-2 { animation: fadeIn 0.6s ease-out 0.25s both; }
51
+ .fade-3 { animation: fadeIn 0.6s ease-out 0.4s both; }
52
+ .fade-4 { animation: fadeIn 0.6s ease-out 0.55s both; }
53
+ .fade-5 { animation: fadeIn 0.6s ease-out 0.7s both; }
54
+ .fade-6 { animation: fadeIn 0.6s ease-out 0.85s both; }
55
+ </style></defs><rect width="808" height="185" rx="12" class="bg-fill" fill="#0d1117"/><text x="24" y="40" class="t t-h">CONTRIBUTION ACTIVITY</text><text x="24" y="56" class="t t-sub">Contribution patterns over the past year</text><rect x="24" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="24" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="24" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="24" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="24" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="24" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="24" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="37" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="37" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="37" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="37" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="37" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="37" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="37" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="50" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="50" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="50" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="50" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="50" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="50" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="50" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="63" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="63" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="63" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="63" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="63" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="63" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="63" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="76" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="76" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="76" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="76" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="76" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="76" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="76" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="89" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="89" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="89" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="89" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="89" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="89" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="89" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="102" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="102" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="102" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="102" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="102" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="102" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="102" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="115" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="115" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="115" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="115" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="115" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="115" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="115" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="128" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="128" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="128" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="128" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="128" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="128" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="128" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="141" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="141" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="141" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="141" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="141" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="141" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="141" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="154" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="154" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="154" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="154" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="154" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="154" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="154" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="167" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="167" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="167" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="167" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="167" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="167" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="167" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="180" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="180" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="180" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="180" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="180" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="180" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="180" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="193" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="193" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="193" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="193" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="193" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="193" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="193" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="206" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="206" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="206" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="206" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="206" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="206" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="206" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="219" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="219" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="219" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="219" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="219" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="219" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="219" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="232" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="232" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="232" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="232" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="232" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="232" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="232" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="245" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="245" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="245" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="245" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="245" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="245" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="245" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="258" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="258" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="258" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="258" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="258" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="258" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="258" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="271" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="271" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="271" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="271" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="271" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="271" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="271" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="284" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="284" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="284" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="284" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="284" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="284" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="284" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="297" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="297" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="297" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="297" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="297" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="297" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="297" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="310" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="310" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="310" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="310" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="310" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="310" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="310" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="323" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="323" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="323" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="323" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="323" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="323" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="323" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="336" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="336" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="336" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="336" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="336" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="336" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="336" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="349" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="349" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="349" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="349" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="349" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="349" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="349" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="362" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="362" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="362" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="362" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="362" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="362" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="362" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="375" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="375" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="375" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="375" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="375" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="375" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="375" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="388" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="388" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="388" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="388" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="388" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="388" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="388" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="401" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="401" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="401" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="401" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="401" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="401" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="401" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="414" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="414" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="414" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="414" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="414" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="414" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="414" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="427" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="427" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="427" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="427" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="427" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="427" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="427" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="440" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="440" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="440" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="440" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="440" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="440" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="440" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="453" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="453" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="453" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="453" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="453" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="453" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="453" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="466" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="466" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="466" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="466" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="466" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="466" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="466" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="479" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="479" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="479" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="479" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="479" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="479" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="479" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="492" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="492" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="492" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="492" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="492" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="492" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="492" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="505" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="505" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="505" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="505" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="505" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="505" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="505" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="518" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="518" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="518" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="518" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="518" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="518" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="518" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="531" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="531" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="531" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="531" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="531" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="531" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="531" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-4"/><rect x="544" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="544" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="544" y="92" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="544" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="544" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="544" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="544" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-5"/><rect x="557" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="557" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="557" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="557" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="557" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="557" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="557" y="144" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="570" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="570" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="570" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="570" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="570" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="570" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-1"/><rect x="570" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="583" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="583" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="583" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="583" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="583" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="583" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="583" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="596" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="596" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="596" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="596" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="596" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="596" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="596" y="144" width="11" height="11" rx="2" fill="#216e39" opacity="0.85" class="fade-3"/><rect x="609" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="609" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="609" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="609" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="609" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="609" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="609" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="622" y="66" width="11" height="11" rx="2" fill="#216e39" opacity="0.85" class="fade-5"/><rect x="622" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-5"/><rect x="622" y="92" width="11" height="11" rx="2" fill="#40c463" opacity="0.85" class="fade-5"/><rect x="622" y="105" width="11" height="11" rx="2" fill="#30a14e" opacity="0.85" class="fade-5"/><rect x="622" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-5"/><rect x="622" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-5"/><rect x="622" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-5"/><rect x="635" y="66" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="635" y="79" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="635" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="635" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="635" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="635" y="131" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-6"/><rect x="635" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-6"/><rect x="648" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="648" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="648" y="92" width="11" height="11" rx="2" fill="#40c463" opacity="0.85" class="fade-1"/><rect x="648" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="648" y="118" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="648" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="648" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-1"/><rect x="661" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="661" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="661" y="92" width="11" height="11" rx="2" fill="#40c463" opacity="0.85" class="fade-2"/><rect x="661" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="661" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-2"/><rect x="661" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="661" y="144" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-2"/><rect x="674" y="66" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="674" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="674" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="674" y="105" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="674" y="118" width="11" height="11" rx="2" fill="#ebedf0" opacity="0.85" class="fade-3"/><rect x="674" y="131" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-3"/><rect x="674" y="144" width="11" height="11" rx="2" fill="#30a14e" opacity="0.85" class="fade-3"/><rect x="687" y="66" width="11" height="11" rx="2" fill="#30a14e" opacity="0.85" class="fade-4"/><rect x="687" y="79" width="11" height="11" rx="2" fill="#40c463" opacity="0.85" class="fade-4"/><rect x="687" y="92" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="687" y="105" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-4"/><rect x="687" y="118" width="11" height="11" rx="2" fill="#40c463" opacity="0.85" class="fade-4"/><rect x="687" y="131" width="11" height="11" rx="2" fill="#40c463" opacity="0.85" class="fade-4"/><rect x="687" y="144" width="11" height="11" rx="2" fill="#216e39" opacity="0.85" class="fade-4"/><rect x="700" y="66" width="11" height="11" rx="2" fill="#30a14e" opacity="0.85" class="fade-5"/><rect x="700" y="79" width="11" height="11" rx="2" fill="#9be9a8" opacity="0.85" class="fade-5"/></svg>
@@ -0,0 +1,55 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="210" viewBox="0 0 808 210"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; font-variant-numeric: tabular-lining; }
3
+ .t-h { font-size: 14px; fill: #c9d1d9; letter-spacing: 2px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ .bg-fill { fill: #0d1117; }
15
+ .card-fill { fill: #161b22; }
16
+ .border-stroke { stroke: #30363d; }
17
+
18
+ @media (prefers-color-scheme: light) {
19
+ .bg-fill { fill: #ffffff; }
20
+ .card-fill { fill: #f6f8fa; }
21
+ .border-stroke { stroke: #d0d7de; }
22
+ .t-h { fill: #1f2328; }
23
+ .t-sub { fill: #656d76; }
24
+ .t-label { fill: #656d76; }
25
+ .t-value { fill: #656d76; }
26
+ .t-subhdr { fill: #656d76; }
27
+ .t-stat-label { fill: #656d76; }
28
+ .t-card-title { fill: #0969da; }
29
+ .t-card-detail { fill: #656d76; }
30
+ .t-bullet { fill: #1f2328; }
31
+ }
32
+
33
+ @keyframes fadeIn {
34
+ from { opacity: 0; transform: translateY(8px); }
35
+ to { opacity: 1; transform: translateY(0); }
36
+ }
37
+ @keyframes scaleIn {
38
+ from { transform: scale(0); opacity: 0; }
39
+ to { transform: scale(1); opacity: 1; }
40
+ }
41
+ @keyframes drawPath {
42
+ from { stroke-dashoffset: var(--path-length); }
43
+ to { stroke-dashoffset: 0; }
44
+ }
45
+ @keyframes radarReveal {
46
+ from { transform: scale(0); opacity: 0; }
47
+ to { transform: scale(1); opacity: 0.6; }
48
+ }
49
+ .fade-1 { animation: fadeIn 0.6s ease-out 0.1s both; }
50
+ .fade-2 { animation: fadeIn 0.6s ease-out 0.25s both; }
51
+ .fade-3 { animation: fadeIn 0.6s ease-out 0.4s both; }
52
+ .fade-4 { animation: fadeIn 0.6s ease-out 0.55s both; }
53
+ .fade-5 { animation: fadeIn 0.6s ease-out 0.7s both; }
54
+ .fade-6 { animation: fadeIn 0.6s ease-out 0.85s both; }
55
+ </style></defs><rect width="808" height="210" rx="12" class="bg-fill" fill="#0d1117"/><text x="24" y="40" class="t t-h">OPEN SOURCE IMPACT</text><text x="24" y="56" class="t t-sub">External repositories contributed to</text><text x="24" y="88" class="t t-card-title fade-1">getzep/graphiti</text><rect x="304" y="78" width="400" height="12" rx="3" fill="#58a6ff" fill-opacity="0.7" class="fade-1"/><text x="720" y="88" class="t t-value fade-1">★ 24,055</text><text x="784" y="88" class="t t-value fade-1">Python</text><text x="24" y="130" class="t t-card-title fade-2">googleapis/python-aiplatform</text><rect x="304" y="120" width="268.55616835256285" height="12" rx="3" fill="#3fb950" fill-opacity="0.7" class="fade-2"/><text x="720" y="130" class="t t-value fade-2">★ 873</text><text x="784" y="130" class="t t-value fade-2">Python</text><text x="24" y="172" class="t t-card-title fade-3">MathisWellmann/gym-rs</text><rect x="304" y="162" width="192.3855297941612" height="12" rx="3" fill="#d29922" fill-opacity="0.7" class="fade-3"/><text x="720" y="172" class="t t-value fade-3">★ 127</text><text x="784" y="172" class="t t-value fade-3">Rust</text></svg>
@@ -0,0 +1,55 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="340" viewBox="0 0 808 340"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; font-variant-numeric: tabular-lining; }
3
+ .t-h { font-size: 14px; fill: #c9d1d9; letter-spacing: 2px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ .bg-fill { fill: #0d1117; }
15
+ .card-fill { fill: #161b22; }
16
+ .border-stroke { stroke: #30363d; }
17
+
18
+ @media (prefers-color-scheme: light) {
19
+ .bg-fill { fill: #ffffff; }
20
+ .card-fill { fill: #f6f8fa; }
21
+ .border-stroke { stroke: #d0d7de; }
22
+ .t-h { fill: #1f2328; }
23
+ .t-sub { fill: #656d76; }
24
+ .t-label { fill: #656d76; }
25
+ .t-value { fill: #656d76; }
26
+ .t-subhdr { fill: #656d76; }
27
+ .t-stat-label { fill: #656d76; }
28
+ .t-card-title { fill: #0969da; }
29
+ .t-card-detail { fill: #656d76; }
30
+ .t-bullet { fill: #1f2328; }
31
+ }
32
+
33
+ @keyframes fadeIn {
34
+ from { opacity: 0; transform: translateY(8px); }
35
+ to { opacity: 1; transform: translateY(0); }
36
+ }
37
+ @keyframes scaleIn {
38
+ from { transform: scale(0); opacity: 0; }
39
+ to { transform: scale(1); opacity: 1; }
40
+ }
41
+ @keyframes drawPath {
42
+ from { stroke-dashoffset: var(--path-length); }
43
+ to { stroke-dashoffset: 0; }
44
+ }
45
+ @keyframes radarReveal {
46
+ from { transform: scale(0); opacity: 0; }
47
+ to { transform: scale(1); opacity: 0.6; }
48
+ }
49
+ .fade-1 { animation: fadeIn 0.6s ease-out 0.1s both; }
50
+ .fade-2 { animation: fadeIn 0.6s ease-out 0.25s both; }
51
+ .fade-3 { animation: fadeIn 0.6s ease-out 0.4s both; }
52
+ .fade-4 { animation: fadeIn 0.6s ease-out 0.55s both; }
53
+ .fade-5 { animation: fadeIn 0.6s ease-out 0.7s both; }
54
+ .fade-6 { animation: fadeIn 0.6s ease-out 0.85s both; }
55
+ </style></defs><rect width="808" height="340" rx="12" class="bg-fill" fill="#0d1117"/><text x="24" y="40" class="t t-h">CONTRIBUTION RHYTHM</text><text x="24" y="56" class="t t-sub">Activity patterns and statistics over the past year</text><circle cx="144" cy="186" r="22.5" fill="none" stroke="#30363d" stroke-width="1" stroke-opacity="0.4"/><circle cx="144" cy="186" r="45" fill="none" stroke="#30363d" stroke-width="1" stroke-opacity="0.4"/><circle cx="144" cy="186" r="67.5" fill="none" stroke="#30363d" stroke-width="1" stroke-opacity="0.4"/><circle cx="144" cy="186" r="90" fill="none" stroke="#30363d" stroke-width="1" stroke-opacity="0.4"/><line x1="144" y1="186" x2="144" y2="96" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><line x1="144" y1="186" x2="214.36483342212267" y2="129.88591783271397" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><line x1="144" y1="186" x2="231.74351209636413" y2="206.0268840560683" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><line x1="144" y1="186" x2="183.04953652058023" y2="267.08719811121773" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><line x1="144" y1="186" x2="104.95046347941977" y2="267.08719811121773" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><line x1="144" y1="186" x2="56.25648790363587" y2="206.0268840560683" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><line x1="144" y1="186" x2="73.63516657787731" y2="129.885917832714" stroke="#30363d" stroke-width="1" stroke-opacity="0.3"/><polygon points="144,160.02272727272728 176.46377541975204,160.11100300009304 172.11780728542578,192.41770602705824 154.91612043643494,208.66755765381768 132.551385883739,209.7732921735161 56.25648790363587,206.0268840560683 96.18389728814844,147.86793052723064" fill="#58a6ff" fill-opacity="0.2" stroke="#58a6ff" stroke-width="2" stroke-opacity="0.8" class="fade-2" style="transform-origin: 144px 186px"/><circle cx="144" cy="160.02272727272728" r="3" fill="#58a6ff" class="fade-1"/><circle cx="176.46377541975204" cy="160.11100300009304" r="3" fill="#58a6ff" class="fade-2"/><circle cx="172.11780728542578" cy="192.41770602705824" r="3" fill="#58a6ff" class="fade-3"/><circle cx="154.91612043643494" cy="208.66755765381768" r="3" fill="#58a6ff" class="fade-4"/><circle cx="132.551385883739" cy="209.7732921735161" r="3" fill="#58a6ff" class="fade-5"/><circle cx="56.25648790363587" cy="206.0268840560683" r="3" fill="#58a6ff" class="fade-6"/><circle cx="96.18389728814844" cy="147.86793052723064" r="3" fill="#58a6ff" class="fade-6"/><text x="144" y="84" class="t t-value" text-anchor="middle">Sun</text><text x="226.87413714161116" y="123.91008100297425" class="t t-value" text-anchor="middle">Mon</text><text x="247.34235869127332" y="213.58721899936933" class="t t-value" text-anchor="middle">Tue</text><text x="189.99167634646116" y="285.50269999765646" class="t t-value" text-anchor="middle">Wed</text><text x="98.00832365353884" y="285.50269999765646" class="t t-value" text-anchor="middle">Thu</text><text x="40.657641308726696" y="213.58721899936933" class="t t-value" text-anchor="middle">Fri</text><text x="61.12586285838883" y="123.91008100297427" class="t t-value" text-anchor="middle">Sat</text><text x="324" y="96" class="t t-stat-label">COMMITS</text><text x="324" y="118" fill="#58a6ff" class="t t-stat-value">1,352</text><text x="324" y="138" class="t t-stat-label">PRS</text><text x="324" y="160" fill="#3fb950" class="t t-stat-value">4</text><text x="324" y="180" class="t t-stat-label">REVIEWS</text><text x="324" y="202" fill="#d29922" class="t t-stat-value">5</text><text x="324" y="222" class="t t-stat-label">REPOS</text><text x="324" y="244" fill="#bc8cff" class="t t-stat-value">24</text><text x="324" y="264" class="t t-stat-label">STREAK</text><text x="324" y="286" fill="#39d2c0" class="t t-stat-value">15d</text><text x="324" y="316" class="t t-sub">Most active: Fridays</text></svg>
@@ -0,0 +1,55 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="250" viewBox="0 0 808 250"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; font-variant-numeric: tabular-lining; }
3
+ .t-h { font-size: 14px; fill: #c9d1d9; letter-spacing: 2px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ .bg-fill { fill: #0d1117; }
15
+ .card-fill { fill: #161b22; }
16
+ .border-stroke { stroke: #30363d; }
17
+
18
+ @media (prefers-color-scheme: light) {
19
+ .bg-fill { fill: #ffffff; }
20
+ .card-fill { fill: #f6f8fa; }
21
+ .border-stroke { stroke: #d0d7de; }
22
+ .t-h { fill: #1f2328; }
23
+ .t-sub { fill: #656d76; }
24
+ .t-label { fill: #656d76; }
25
+ .t-value { fill: #656d76; }
26
+ .t-subhdr { fill: #656d76; }
27
+ .t-stat-label { fill: #656d76; }
28
+ .t-card-title { fill: #0969da; }
29
+ .t-card-detail { fill: #656d76; }
30
+ .t-bullet { fill: #1f2328; }
31
+ }
32
+
33
+ @keyframes fadeIn {
34
+ from { opacity: 0; transform: translateY(8px); }
35
+ to { opacity: 1; transform: translateY(0); }
36
+ }
37
+ @keyframes scaleIn {
38
+ from { transform: scale(0); opacity: 0; }
39
+ to { transform: scale(1); opacity: 1; }
40
+ }
41
+ @keyframes drawPath {
42
+ from { stroke-dashoffset: var(--path-length); }
43
+ to { stroke-dashoffset: 0; }
44
+ }
45
+ @keyframes radarReveal {
46
+ from { transform: scale(0); opacity: 0; }
47
+ to { transform: scale(1); opacity: 0.6; }
48
+ }
49
+ .fade-1 { animation: fadeIn 0.6s ease-out 0.1s both; }
50
+ .fade-2 { animation: fadeIn 0.6s ease-out 0.25s both; }
51
+ .fade-3 { animation: fadeIn 0.6s ease-out 0.4s both; }
52
+ .fade-4 { animation: fadeIn 0.6s ease-out 0.55s both; }
53
+ .fade-5 { animation: fadeIn 0.6s ease-out 0.7s both; }
54
+ .fade-6 { animation: fadeIn 0.6s ease-out 0.85s both; }
55
+ </style></defs><rect width="808" height="250" rx="12" class="bg-fill" fill="#0d1117"/><text x="24" y="40" class="t t-h">LANGUAGE VELOCITY</text><text x="24" y="56" class="t t-sub">How language usage has evolved over the past year</text><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.24865831842575 150.66666666666669,205.24865831842575 C 182.33333333333334,205.24865831842575 182.33333333333334,204.4973166368515 214,204.4973166368515 C 245.66666666666669,204.4973166368515 245.66666666666669,205.49910554561717 277.33333333333337,205.49910554561717 C 309,205.49910554561717 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,195.98211091234347 404,195.98211091234347 C 435.6666666666667,195.98211091234347 435.6666666666667,203.9964221824687 467.33333333333337,203.9964221824687 C 499.00000000000006,203.9964221824687 499.00000000000006,198.23613595706618 530.6666666666667,198.23613595706618 C 562.3333333333334,198.23613595706618 562.3333333333334,204.4973166368515 594,204.4973166368515 C 625.6666666666667,204.4973166368515 625.6666666666667,157.66368515205724 657.3333333333334,157.66368515205724 C 689,157.66368515205724 689,87.28801431127013 720.6666666666667,87.28801431127013 C 752.3333333333334,87.28801431127013 752.3333333333334,66 784,66 L 784,67.25223613595705 C 752.3333333333334,67.25223613595705 752.3333333333334,88.28980322003578 720.6666666666667,88.28980322003578 C 689,88.28980322003578 689,158.16457960644007 657.3333333333334,158.16457960644007 C 625.6666666666667,158.16457960644007 625.6666666666667,204.4973166368515 594,204.4973166368515 C 562.3333333333334,204.4973166368515 562.3333333333334,198.23613595706618 530.6666666666667,198.23613595706618 C 499.00000000000006,198.23613595706618 499.00000000000006,203.9964221824687 467.33333333333337,203.9964221824687 C 435.6666666666667,203.9964221824687 435.6666666666667,195.98211091234347 404,195.98211091234347 C 372.33333333333337,195.98211091234347 372.33333333333337,206 340.6666666666667,206 C 309,206 309,205.49910554561717 277.33333333333337,205.49910554561717 C 245.66666666666669,205.49910554561717 245.66666666666669,204.4973166368515 214,204.4973166368515 C 182.33333333333334,204.4973166368515 182.33333333333334,205.24865831842575 150.66666666666669,205.24865831842575 C 119.00000000000001,205.24865831842575 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#DA5B0B" fill-opacity="0.75" class="fade-1"/><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.24865831842575 150.66666666666669,205.24865831842575 C 182.33333333333334,205.24865831842575 182.33333333333334,204.4973166368515 214,204.4973166368515 C 245.66666666666669,204.4973166368515 245.66666666666669,205.49910554561717 277.33333333333337,205.49910554561717 C 309,205.49910554561717 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,195.98211091234347 404,195.98211091234347 C 435.6666666666667,195.98211091234347 435.6666666666667,203.9964221824687 467.33333333333337,203.9964221824687 C 499.00000000000006,203.9964221824687 499.00000000000006,198.23613595706618 530.6666666666667,198.23613595706618 C 562.3333333333334,198.23613595706618 562.3333333333334,204.4973166368515 594,204.4973166368515 C 625.6666666666667,204.4973166368515 625.6666666666667,158.16457960644007 657.3333333333334,158.16457960644007 C 689,158.16457960644007 689,88.28980322003578 720.6666666666667,88.28980322003578 C 752.3333333333334,88.28980322003578 752.3333333333334,67.25223613595705 784,67.25223613595705 L 784,72.76207513416816 C 752.3333333333334,72.76207513416816 752.3333333333334,93.04830053667264 720.6666666666667,93.04830053667264 C 689,93.04830053667264 689,160.16815742397137 657.3333333333334,160.16815742397137 C 625.6666666666667,160.16815742397137 625.6666666666667,204.4973166368515 594,204.4973166368515 C 562.3333333333334,204.4973166368515 562.3333333333334,198.4865831842576 530.6666666666667,198.4865831842576 C 499.00000000000006,198.4865831842576 499.00000000000006,203.9964221824687 467.33333333333337,203.9964221824687 C 435.6666666666667,203.9964221824687 435.6666666666667,196.4830053667263 404,196.4830053667263 C 372.33333333333337,196.4830053667263 372.33333333333337,206 340.6666666666667,206 C 309,206 309,205.49910554561717 277.33333333333337,205.49910554561717 C 245.66666666666669,205.49910554561717 245.66666666666669,204.4973166368515 214,204.4973166368515 C 182.33333333333334,204.4973166368515 182.33333333333334,205.24865831842575 150.66666666666669,205.24865831842575 C 119.00000000000001,205.24865831842575 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#b07219" fill-opacity="0.75" class="fade-2"/><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.24865831842575 150.66666666666669,205.24865831842575 C 182.33333333333334,205.24865831842575 182.33333333333334,204.4973166368515 214,204.4973166368515 C 245.66666666666669,204.4973166368515 245.66666666666669,205.49910554561717 277.33333333333337,205.49910554561717 C 309,205.49910554561717 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,196.4830053667263 404,196.4830053667263 C 435.6666666666667,196.4830053667263 435.6666666666667,203.9964221824687 467.33333333333337,203.9964221824687 C 499.00000000000006,203.9964221824687 499.00000000000006,198.4865831842576 530.6666666666667,198.4865831842576 C 562.3333333333334,198.4865831842576 562.3333333333334,204.4973166368515 594,204.4973166368515 C 625.6666666666667,204.4973166368515 625.6666666666667,160.16815742397137 657.3333333333334,160.16815742397137 C 689,160.16815742397137 689,93.04830053667264 720.6666666666667,93.04830053667264 C 752.3333333333334,93.04830053667264 752.3333333333334,72.76207513416816 784,72.76207513416816 L 784,87.28801431127013 C 752.3333333333334,87.28801431127013 752.3333333333334,105.32021466905186 720.6666666666667,105.32021466905186 C 689,105.32021466905186 689,165.17710196779964 657.3333333333334,165.17710196779964 C 625.6666666666667,165.17710196779964 625.6666666666667,204.74776386404292 594,204.74776386404292 C 562.3333333333334,204.74776386404292 562.3333333333334,199.23792486583184 530.6666666666667,199.23792486583184 C 499.00000000000006,199.23792486583184 499.00000000000006,204.24686940966012 467.33333333333337,204.24686940966012 C 435.6666666666667,204.24686940966012 435.6666666666667,197.48479427549194 404,197.48479427549194 C 372.33333333333337,197.48479427549194 372.33333333333337,206 340.6666666666667,206 C 309,206 309,205.49910554561717 277.33333333333337,205.49910554561717 C 245.66666666666669,205.49910554561717 245.66666666666669,204.74776386404292 214,204.74776386404292 C 182.33333333333334,204.74776386404292 182.33333333333334,205.24865831842575 150.66666666666669,205.24865831842575 C 119.00000000000001,205.24865831842575 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#3572A5" fill-opacity="0.75" class="fade-3"/><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.24865831842575 150.66666666666669,205.24865831842575 C 182.33333333333334,205.24865831842575 182.33333333333334,204.74776386404292 214,204.74776386404292 C 245.66666666666669,204.74776386404292 245.66666666666669,205.49910554561717 277.33333333333337,205.49910554561717 C 309,205.49910554561717 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,197.48479427549194 404,197.48479427549194 C 435.6666666666667,197.48479427549194 435.6666666666667,204.24686940966012 467.33333333333337,204.24686940966012 C 499.00000000000006,204.24686940966012 499.00000000000006,199.23792486583184 530.6666666666667,199.23792486583184 C 562.3333333333334,199.23792486583184 562.3333333333334,204.74776386404292 594,204.74776386404292 C 625.6666666666667,204.74776386404292 625.6666666666667,165.17710196779964 657.3333333333334,165.17710196779964 C 689,165.17710196779964 689,105.32021466905186 720.6666666666667,105.32021466905186 C 752.3333333333334,105.32021466905186 752.3333333333334,87.28801431127013 784,87.28801431127013 L 784,103.8175313059034 C 752.3333333333334,103.8175313059034 752.3333333333334,119.34525939177102 720.6666666666667,119.34525939177102 C 689,119.34525939177102 689,170.93738819320214 657.3333333333334,170.93738819320214 C 625.6666666666667,170.93738819320214 625.6666666666667,204.99821109123434 594,204.99821109123434 C 562.3333333333334,204.99821109123434 562.3333333333334,200.2397137745975 530.6666666666667,200.2397137745975 C 499.00000000000006,200.2397137745975 499.00000000000006,204.4973166368515 467.33333333333337,204.4973166368515 C 435.6666666666667,204.4973166368515 435.6666666666667,198.737030411449 404,198.737030411449 C 372.33333333333337,198.737030411449 372.33333333333337,206 340.6666666666667,206 C 309,206 309,205.49910554561717 277.33333333333337,205.49910554561717 C 245.66666666666669,205.49910554561717 245.66666666666669,204.99821109123434 214,204.99821109123434 C 182.33333333333334,204.99821109123434 182.33333333333334,205.24865831842575 150.66666666666669,205.24865831842575 C 119.00000000000001,205.24865831842575 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#00ADD8" fill-opacity="0.75" class="fade-4"/><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.24865831842575 150.66666666666669,205.24865831842575 C 182.33333333333334,205.24865831842575 182.33333333333334,204.99821109123434 214,204.99821109123434 C 245.66666666666669,204.99821109123434 245.66666666666669,205.49910554561717 277.33333333333337,205.49910554561717 C 309,205.49910554561717 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,198.737030411449 404,198.737030411449 C 435.6666666666667,198.737030411449 435.6666666666667,204.4973166368515 467.33333333333337,204.4973166368515 C 499.00000000000006,204.4973166368515 499.00000000000006,200.2397137745975 530.6666666666667,200.2397137745975 C 562.3333333333334,200.2397137745975 562.3333333333334,204.99821109123434 594,204.99821109123434 C 625.6666666666667,204.99821109123434 625.6666666666667,170.93738819320214 657.3333333333334,170.93738819320214 C 689,170.93738819320214 689,119.34525939177102 720.6666666666667,119.34525939177102 C 752.3333333333334,119.34525939177102 752.3333333333334,103.8175313059034 784,103.8175313059034 L 784,124.35420393559927 C 752.3333333333334,124.35420393559927 752.3333333333334,136.87656529516994 720.6666666666667,136.87656529516994 C 689,136.87656529516994 689,177.9499105545617 657.3333333333334,177.9499105545617 C 625.6666666666667,177.9499105545617 625.6666666666667,205.24865831842575 594,205.24865831842575 C 562.3333333333334,205.24865831842575 562.3333333333334,201.49194991055455 530.6666666666667,201.49194991055455 C 499.00000000000006,201.49194991055455 499.00000000000006,204.74776386404292 467.33333333333337,204.74776386404292 C 435.6666666666667,204.74776386404292 435.6666666666667,200.2397137745975 404,200.2397137745975 C 372.33333333333337,200.2397137745975 372.33333333333337,206 340.6666666666667,206 C 309,206 309,205.49910554561717 277.33333333333337,205.49910554561717 C 245.66666666666669,205.49910554561717 245.66666666666669,205.24865831842575 214,205.24865831842575 C 182.33333333333334,205.24865831842575 182.33333333333334,205.49910554561717 150.66666666666669,205.49910554561717 C 119.00000000000001,205.49910554561717 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#89e051" fill-opacity="0.75" class="fade-5"/><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.49910554561717 150.66666666666669,205.49910554561717 C 182.33333333333334,205.49910554561717 182.33333333333334,205.24865831842575 214,205.24865831842575 C 245.66666666666669,205.24865831842575 245.66666666666669,205.49910554561717 277.33333333333337,205.49910554561717 C 309,205.49910554561717 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,200.2397137745975 404,200.2397137745975 C 435.6666666666667,200.2397137745975 435.6666666666667,204.74776386404292 467.33333333333337,204.74776386404292 C 499.00000000000006,204.74776386404292 499.00000000000006,201.49194991055455 530.6666666666667,201.49194991055455 C 562.3333333333334,201.49194991055455 562.3333333333334,205.24865831842575 594,205.24865831842575 C 625.6666666666667,205.24865831842575 625.6666666666667,177.9499105545617 657.3333333333334,177.9499105545617 C 689,177.9499105545617 689,136.87656529516994 720.6666666666667,136.87656529516994 C 752.3333333333334,136.87656529516994 752.3333333333334,124.35420393559927 784,124.35420393559927 L 784,156.912343470483 C 752.3333333333334,156.912343470483 752.3333333333334,164.4257602862254 720.6666666666667,164.4257602862254 C 689,164.4257602862254 689,189.22003577817532 657.3333333333334,189.22003577817532 C 625.6666666666667,189.22003577817532 625.6666666666667,205.49910554561717 594,205.49910554561717 C 562.3333333333334,205.49910554561717 562.3333333333334,203.24508050089446 530.6666666666667,203.24508050089446 C 499.00000000000006,203.24508050089446 499.00000000000006,205.24865831842575 467.33333333333337,205.24865831842575 C 435.6666666666667,205.24865831842575 435.6666666666667,202.4937388193202 404,202.4937388193202 C 372.33333333333337,202.4937388193202 372.33333333333337,206 340.6666666666667,206 C 309,206 309,205.74955277280858 277.33333333333337,205.74955277280858 C 245.66666666666669,205.74955277280858 245.66666666666669,205.49910554561717 214,205.49910554561717 C 182.33333333333334,205.49910554561717 182.33333333333334,205.74955277280858 150.66666666666669,205.74955277280858 C 119.00000000000001,205.74955277280858 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#3178c6" fill-opacity="0.75" class="fade-6"/><path d="M 24,206 C 55.66666666666667,206 55.66666666666667,206 87.33333333333334,206 C 119.00000000000001,206 119.00000000000001,205.74955277280858 150.66666666666669,205.74955277280858 C 182.33333333333334,205.74955277280858 182.33333333333334,205.49910554561717 214,205.49910554561717 C 245.66666666666669,205.49910554561717 245.66666666666669,205.74955277280858 277.33333333333337,205.74955277280858 C 309,205.74955277280858 309,206 340.6666666666667,206 C 372.33333333333337,206 372.33333333333337,202.4937388193202 404,202.4937388193202 C 435.6666666666667,202.4937388193202 435.6666666666667,205.24865831842575 467.33333333333337,205.24865831842575 C 499.00000000000006,205.24865831842575 499.00000000000006,203.24508050089446 530.6666666666667,203.24508050089446 C 562.3333333333334,203.24508050089446 562.3333333333334,205.49910554561717 594,205.49910554561717 C 625.6666666666667,205.49910554561717 625.6666666666667,189.22003577817532 657.3333333333334,189.22003577817532 C 689,189.22003577817532 689,164.4257602862254 720.6666666666667,164.4257602862254 C 752.3333333333334,164.4257602862254 752.3333333333334,156.912343470483 784,156.912343470483 L 784,206 C 752.3333333333334,206 752.3333333333334,206 720.6666666666667,206 C 689,206 689,206 657.3333333333334,206 C 625.6666666666667,206 625.6666666666667,206 594,206 C 562.3333333333334,206 562.3333333333334,206 530.6666666666667,206 C 499.00000000000006,206 499.00000000000006,206 467.33333333333337,206 C 435.6666666666667,206 435.6666666666667,206 404,206 C 372.33333333333337,206 372.33333333333337,206 340.6666666666667,206 C 309,206 309,206 277.33333333333337,206 C 245.66666666666669,206 245.66666666666669,206 214,206 C 182.33333333333334,206 182.33333333333334,206 150.66666666666669,206 C 119.00000000000001,206 119.00000000000001,206 87.33333333333334,206 C 55.66666666666667,206 55.66666666666667,206 24,206 Z" fill="#dea584" fill-opacity="0.75" class="fade-6"/><rect x="24" y="212" width="8" height="8" rx="2" fill="#dea584" opacity="0.85"/><text x="36" y="220" class="t t-value">Rust</text><rect x="80" y="212" width="8" height="8" rx="2" fill="#3178c6" opacity="0.85"/><text x="92" y="220" class="t t-value">TypeScript</text><rect x="178" y="212" width="8" height="8" rx="2" fill="#89e051" opacity="0.85"/><text x="190" y="220" class="t t-value">Shell</text><rect x="241" y="212" width="8" height="8" rx="2" fill="#00ADD8" opacity="0.85"/><text x="253" y="220" class="t t-value">Go</text><rect x="283" y="212" width="8" height="8" rx="2" fill="#3572A5" opacity="0.85"/><text x="295" y="220" class="t t-value">Python</text><rect x="353" y="212" width="8" height="8" rx="2" fill="#b07219" opacity="0.85"/><text x="365" y="220" class="t t-value">Java</text><rect x="409" y="212" width="8" height="8" rx="2" fill="#DA5B0B" opacity="0.85"/><text x="421" y="220" class="t t-value">Jupyter Notebook</text><text x="24" y="220" class="t t-value" text-anchor="start" opacity="0">Feb</text><text x="150.66666666666669" y="220" class="t t-value" text-anchor="start" opacity="0">Apr</text><text x="277.33333333333337" y="220" class="t t-value" text-anchor="start" opacity="0">Jun</text><text x="404" y="220" class="t t-value" text-anchor="start" opacity="0">Aug</text><text x="530.6666666666667" y="220" class="t t-value" text-anchor="start" opacity="0">Oct</text><text x="657.3333333333334" y="220" class="t t-value" text-anchor="start" opacity="0">Dec</text><text x="784" y="220" class="t t-value" text-anchor="start" opacity="0">Feb</text></svg>
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
- # GitHub Metrics
1
+ # GitHub Insights
2
2
 
3
- > A GitHub Action that generates beautiful SVG metrics visualizations for GitHub profile READMEs. Produces language breakdowns (donut chart), AI-powered expertise analysis with proficiency scores, contribution pulse, signature projects, external open source contributions, social badges, and an auto-generated profile introduction. Built with TypeScript/Node.js using React JSX for SVG rendering.
3
+ > A GitHub Action that generates beautiful SVG metrics visualizations for GitHub profile READMEs. Produces language velocity streamgraphs, contribution rhythm radar charts, project constellation maps, open source impact trails, AI-powered project classification, social badges, and an auto-generated profile introduction. SVGs support light/dark theme switching and CSS animations. Built with TypeScript/Node.js using JSX for SVG string rendering.
4
4
 
5
5
  ## Docs
6
6
 
@@ -13,9 +13,9 @@
13
13
 
14
14
  - [src/index.ts](https://github.com/urmzd/github-insights/blob/main/src/index.ts): Main action entry point
15
15
  - [src/api.ts](https://github.com/urmzd/github-insights/blob/main/src/api.ts): GitHub GraphQL/REST API calls + AI model calls
16
- - [src/metrics.ts](https://github.com/urmzd/github-insights/blob/main/src/metrics.ts): Data aggregation and section definitions
16
+ - [src/metrics.ts](https://github.com/urmzd/github-insights/blob/main/src/metrics.ts): Data aggregation, velocity/rhythm/constellation computation, section definitions
17
17
  - [src/types.ts](https://github.com/urmzd/github-insights/blob/main/src/types.ts): Shared type definitions (UserConfig, SectionDef, etc.)
18
- - [src/components/](https://github.com/urmzd/github-insights/blob/main/src/components/): SVG rendering components (donut chart, bar chart, stat cards)
18
+ - [src/components/](https://github.com/urmzd/github-insights/blob/main/src/components/): SVG rendering components (streamgraph, radar chart, constellation, impact trail)
19
19
  - [action.yml](https://github.com/urmzd/github-insights/blob/main/action.yml): GitHub Action definition
20
20
 
21
21
  ## Optional
package/package.json CHANGED
@@ -31,5 +31,5 @@
31
31
  "typecheck": "tsc --noEmit"
32
32
  },
33
33
  "type": "module",
34
- "version": "2.1.0"
34
+ "version": "2.3.0"
35
35
  }