Start Designing Website

This commit is contained in:
Connor Drahoss 2022-09-04 21:12:50 -07:00
parent 45763a7040
commit 840379bfda
Signed by: CanadianBacon
GPG Key ID: 410B7F84E17E4424
30 changed files with 640 additions and 52 deletions

View File

@ -19,6 +19,10 @@ namespace ExtensiblePortfolioSite.SDK.Git
/// <see cref="IRepository"/>
/// </summary>
Repository,
/// <summary>
/// <see cref="ICommit"/>
/// </summary>
Commit
}
/// <summary>

24
EPS.SDK/Git/ICommit.cs Normal file
View File

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtensiblePortfolioSite.SDK.Git
{
/// <summary>
/// A commit inside a git repository
/// </summary>
public interface ICommit : IGitObject
{
/// <summary>
/// The description of the commit
/// </summary>
public String Description { get; }
/// <summary>
/// List of files modified in the commit
/// </summary>
public IReadOnlyCollection<String> ModifiedFiles { get; }
}
}

View File

@ -12,9 +12,20 @@ namespace ExtensiblePortfolioSite.SDK.Git
/// </summary>
public interface IRepository : IGitObject
{
/// <summary>
/// Name of the repository
/// </summary>
public String Name { get; }
/// <summary>
/// Owner of the repository
/// </summary>
public IUser Owner { get; }
public Boolean TryGetFile(String RelativePath, out Stream File);
/// <summary>
/// Get a commit from the repository, defaults to latest
/// </summary>
/// <param name="HeadOffset">How far to go back in the commit tree (default 0)</param>
/// <returns>A commit</returns>
public ICommit GetCommit(uint HeadOffset = 0);
}
}

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
using System.Runtime.InteropServices;
using System.Runtime.Loader;
using System.Text;
@ -41,6 +42,8 @@ namespace ExtensiblePortfolioSite.SDK.Plugins
public static void LoadPlugins(string RootPath)
{
RootPath = Path.GetFullPath(RootPath);
if(!Directory.Exists(RootPath))
Directory.CreateDirectory(RootPath);
LibraryPaths.Add(RootPath);
foreach (String Dll in Directory.EnumerateFiles(RootPath, "*.dll", SearchOption.TopDirectoryOnly))
TryLoadPlugin(Path.GetFullPath(Dll, RootPath), out Plugin? _);

View File

@ -5,7 +5,7 @@ VisualStudioVersion = 17.3.32819.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExtensiblePortfolioSite", "ExtensiblePortfolioSite\ExtensiblePortfolioSite.csproj", "{F9C668EB-F7E8-4EA1-BB8E-7102E8B2B857}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EPS.SDK", "EPS.SDK\EPS.SDK.csproj", "{8B5864BB-1EDC-4E51-A190-E5C627CA1D91}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EPS.SDK", "EPS.SDK\EPS.SDK.csproj", "{8B5864BB-1EDC-4E51-A190-E5C627CA1D91}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@ -1,5 +1,4 @@
using System.Runtime.CompilerServices;
using System.Text.Json;
using System.Text.Json;
namespace ExtensiblePortfolioSite
{
@ -13,9 +12,17 @@ namespace ExtensiblePortfolioSite
}
public static String FullName { get; } = "invalid";
public static String? Phone { get; } = null;
public static String? Email { get; } = null;
public static String Name { get; private set; } = "invalid";
public static String? Phone { get; private set; } = null;
public static String? Email { get; private set; } = null;
public static String[]? Description { get; private set; } = null;
public static Dictionary<string, string> Languages = new Dictionary<string, string>()
{
{ "C#", "https://seeklogo.com/images/C/c-sharp-c-logo-02F17714BA-seeklogo.com.png" },
{ "Kotlin", "https://upload.wikimedia.org/wikipedia/commons/7/74/Kotlin_Icon.png" },
{ "Lua", "https://upload.wikimedia.org/wikipedia/commons/c/cf/Lua-Logo.svg" },
{ "C/C++", "https://upload.wikimedia.org/wikipedia/commons/1/19/C_Logo.png" },
};
public static void LoadConfig()
{
@ -25,8 +32,49 @@ namespace ExtensiblePortfolioSite
CommentHandling = JsonCommentHandling.Skip,
MaxDepth = 16,
});
foreach (JsonProperty property in Doc.RootElement.EnumerateObject())
{
switch (property.Value.ValueKind)
{
case JsonValueKind.String:
String value = property.Value.GetString()!;
switch (property.Name)
{
case "Name":
Config.Name = value;
break;
case "Phone":
Config.Phone = value;
break;
case "Email":
Config.Email = value;
break;
}
break;
case JsonValueKind.Array:
switch (property.Name)
{
case "Description":
Config.Description = new string[property.Value.GetArrayLength()];
var enumerator = property.Value.EnumerateArray();
for (int i = 0; i < property.Value.GetArrayLength(); i++)
{
if (!enumerator.MoveNext())
break;
if (enumerator.Current.ValueKind == JsonValueKind.String)
Config.Description[i] = enumerator.Current.GetString()!;
}
break;
}
break;
case JsonValueKind.Object:
break;
case JsonValueKind.Number:
break;
case JsonValueKind.True: //Why, why isn't it called boolean
break;
}
}
}
}
}

View File

@ -8,6 +8,10 @@
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<Content Remove="Pages\Projects.cshtml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.17.0" />
</ItemGroup>
@ -18,4 +22,8 @@
<ProjectExtensions><VisualStudio><UserProperties /></VisualStudio></ProjectExtensions>
<ItemGroup>
<None Include="Pages\Projects\Index.cshtml" />
</ItemGroup>
</Project>

View File

@ -123,7 +123,7 @@ namespace ExtensiblePortfolioSite
String Dir = Path.GetDirectoryName(FileOutput)!;
if(!Directory.Exists(Dir)) Directory.CreateDirectory(Dir);
this.FOut = new StreamWriter(new FileStream(FileOutput, FileMode.CreateNew, FileAccess.Write, FileShare.Read, 1024, false), ENCODING, 1024, false);
this.FOut = new StreamWriter(new FileStream(FileOutput, FileMode.Append, FileAccess.Write, FileShare.Read, 1024, false), ENCODING, 1024, false);
this.LogWriter = new Thread(LogWriter_thread)
{

View File

@ -0,0 +1,39 @@
@page
@model AboutModel
@{
ViewData["Title"] = "About";
Layout = "_Layout";
}
<div class="about-me" style="display: flex; flex-direction: row; width: 100%; flex-grow: 1; justify-content: center; align-items: center;">
<div class="languages-container" style="min-width: 20%;">
<h3 style="width: 100%; text-align:center;">Known Languages</h3>
@foreach(var language in Config.Languages)
{
<div style="display: flex; flex-direction: row; align-items: center; border-top: solid 1px var(--bs-gray-800); padding: 0.25em 0; ">
<img src="@language.Value" style="height: 2em; margin-right: 1em;" />
<h3 style="margin: 0 0 0 .25em;">@language.Key</h3>
<h4 style="margin: 0 0 0 auto;">100%</h4>
</div>
}
</div>
<div class="about-me-container" style="display: flex; flex-direction: column; flex: 1; align-items: center; min-width: 60%; min-height: 40vh;">
<h2>About Me</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce commodo imperdiet hendrerit. Vestibulum pretium mauris eu sagittis tristique. Sed tellus nulla, facilisis in molestie id, fermentum facilisis nulla. Nullam vel tristique neque. Nam accumsan arcu vel nulla efficitur, posuere convallis diam rhoncus. Mauris mollis at sapien eu gravida. Nullam viverra velit porttitor ex mattis, in iaculis justo tincidunt. Morbi pulvinar odio nec mauris luctus facilisis. Phasellus aliquam commodo turpis. Quisque in tincidunt tellus, vel facilisis massa.</p>
<p>Pellentesque auctor eros vitae pretium ornare. Donec quam erat, tempor id elit eu, aliquet suscipit mi. Morbi facilisis nisi vel dapibus facilisis. Phasellus efficitur ac odio id ultricies. Cras ullamcorper lacinia posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vivamus lobortis, arcu a mollis venenatis, nisi libero cursus risus, ut sodales felis erat quis lorem. Praesent nisl turpis, egestas ac auctor et, tempor ac mauris. Donec aliquam lacus nisi, id hendrerit neque aliquam ut. Nullam maximus velit nulla, quis euismod lacus porttitor ac. Nullam lacinia non arcu vitae scelerisque. Nulla nisl nibh, vestibulum eget ex sit amet, viverra vulputate purus. Nullam non arcu ac diam sagittis consectetur.</p>
</div>
<div class="personals-container" style="min-width: 20%;">
<div style="display: flex; flex-direction: row; align-items: center; padding: 0.25em 0; ">
<img src="img/user.svg" style="height: 2em; margin-right: 1em;" />
<span style="margin: 0 0 0 .25em;">@Config.Name</span>
</div>
<div style="display: flex; flex-direction: row; align-items: center; border-top: solid 1px var(--bs-gray-800); padding: 0.25em 0; ">
<img src="img/email.svg" style="height: 2em; margin-right: 1em;" />
<span style="margin: 0 0 0 .25em;">@Config.Email</span>
</div>
<div style="display: flex; flex-direction: row; align-items: center; border-top: solid 1px var(--bs-gray-800); padding: 0.25em 0; ">
<img src="img/phone.svg" style="height: 2em; margin-right: 1em;" />
<span style="margin: 0 0 0 .25em;">@Config.Phone</span>
</div>
</div>
</div>

View File

@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace ExtensiblePortfolioSite.Pages.About
{
public class AboutModel : PageModel
{
public void OnGet()
{
}
}
}

View File

@ -2,9 +2,31 @@
@model IndexModel
@{
ViewData["Title"] = "Home page";
Layout = "_Layout";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
<h1 class="display-4">@Config.Name</h1>
@if(Config.Description == null)
{
<p>
No description ;(
</p>
} else
{
@foreach(String s in Config.Description)
{
<div class="description">
<span>@s</span>
</div>
}
}
<div class="links">
<a href="/About">About Me</a>
<vr ></vr>
<a href="/Projects">Projects</a>
<vr ></vr>
<a href="/Socials">Contact Me</a>
</div>
</div>

View File

@ -1,5 +1,4 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace ExtensiblePortfolioSite.Pages
{

View File

@ -0,0 +1,92 @@
@page
@using System.Text.Json
@using ExtensiblePortfolioSite.SDK.Git
@model ProjectsModel
@{
ViewData["Title"] = "Projects";
Layout = "_Layout";
}
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<div class="container repo-container">
@{
//var githubService = GitManager.GetService("github.com");
//var user = githubService.GetUser(new Uri("https://github.com/KoromaruKoruko"));
//Console.WriteLine("FOUND USER");
//Console.WriteLine(user.Name);
//var repos = user.GetUserRepositories();
//Console.WriteLine("REPOSITORIES");
//foreach(var repo in repos)
// Console.WriteLine(repo.Name);
var client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", "KoromaruKoruko");
client.DefaultRequestHeaders.Add("Authorization", "Bearer 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");
HttpResponseMessage response = await client.GetAsync("https://api.github.com/users/KoromaruKoruko/repos");
JsonDocument json = await JsonDocument.ParseAsync(await response.Content.ReadAsStreamAsync());
foreach(JsonElement elem in json.RootElement.EnumerateArray())
{
int popout_id = Random.Shared.Next();
HttpResponseMessage commitResponse = await client.GetAsync(elem.GetProperty("commits_url").GetString().Split('{')[0]);
JsonDocument commitInfo = await JsonDocument.ParseAsync(await commitResponse.Content.ReadAsStreamAsync());
JsonElement commitJson = commitInfo.RootElement.EnumerateArray().First();
String[] lastCommitMessage = commitJson.GetProperty("commit").GetProperty("message")!.GetString()!.Split("\n").Where(s => s != "").ToArray();
// Begin repo
<div class="repo">
<div class="repo-title">
<span class="eps-lineclamp-1">KoromaruKoruko/</span>
<span class="eps-lineclamp-1">@elem.GetProperty("name")</span>
</div>
<div class="repo-description eps-lineclamp-2">
@elem.GetProperty("description")
</div>
<div class="popout">
<span class="popout-title">@elem.GetProperty("description")</span>
</div>
<div class="commit">
<img class="commit-author" src="@commitJson.GetProperty("author").GetProperty("avatar_url").GetString()"/>
<div class="commit-info">
<div class="commit-title eps-lineclamp-1">
@if(lastCommitMessage.Length > 0)
{
@lastCommitMessage[0]
}
</div>
<div class="commit-description eps-lineclamp-1">
@if(lastCommitMessage.Length > 1)
{
@lastCommitMessage[1]
}
</div>
</div>
<div class="popout popout-commit">
@if (lastCommitMessage.Length > 0)
{
<span class="popout-title">@lastCommitMessage[0]</span>
<br />
var commitDescription = lastCommitMessage.Skip(1).ToHashSet();
<div class="popout-content">
@if(commitDescription.Count > 0)
@commitDescription.Aggregate((a, b) => a + "\n" + b)
</div>
}
</div>
</div>
<div class="repo-footer">
<a class="repo-link" href="@elem.GetProperty("html_url").GetString()">
<span>visit repo >></span>
</a>
<img class="repo-icon" src="/img/logos/github/Light-64px.png"/>
</div>
</div>
// End repo
}
<script>
function processMarkdown(element) {
element.getElementsByClassName('popout-content')[0].innerHTML = marked.parse(element.getElementsByClassName('popout-content')[0].innerHTML);
}
Array.from(document.getElementsByClassName('popout-commit')).forEach(processMarkdown);
</script>
}
</div>

View File

@ -0,0 +1,18 @@
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace ExtensiblePortfolioSite.Pages
{
public class ProjectsModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
public ProjectsModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public void OnGet()
{
}
}
}

View File

@ -4,40 +4,56 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - ExtensiblePortfolioSite</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="https://bootswatch.com/5/superhero/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/ExtensiblePortfolioSite.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">@Config.FullName</a>
<a class="navbar-brand" asp-area="" asp-page="/Index">@Config.Name</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/About">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/Projects">Projects</a>
</li>
<li class="nav-item contact-me">
<a class="nav-link" href="/Socials">Socials</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container">
<div class="container page-contents">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
&copy; 2022 - @Config.FullName
</div>
<script>
document.querySelectorAll('.navbar-nav a.nav-link').forEach(function(a) {
if(a.getAttribute("href") == document.location.pathname) {
a.classList.add("active");
}
})
</script>
<footer class="border-top footer text-muted container">
<span id="copyright-disclaimer">&copy; 2022 - @Config.Name</span>
<span>Photo by <a href="https://unsplash.com/photos/iqrdLI5p87I">Serge Bauwens</a> on Unsplash</span>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>

View File

@ -7,10 +7,6 @@ a.navbar-brand {
word-break: break-all;
}
a {
color: #0077cc;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
@ -39,6 +35,11 @@ button.accept-policy {
line-height: inherit;
}
.contact-me {
margin-left: auto;
}
/*
.footer {
position: absolute;
bottom: 0;
@ -46,3 +47,4 @@ button.accept-policy {
white-space: nowrap;
line-height: 60px;
}
*/

View File

@ -0,0 +1,6 @@
@page
@model SocialsModel
@{
ViewData["Title"] = "Socials";
Layout = "_Layout";
}

View File

@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace ExtensiblePortfolioSite.Pages.Socials
{
public class SocialsModel : PageModel
{
public void OnGet()
{
}
}
}

View File

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - ExtensiblePortfolioSite</title>
<link rel="stylesheet" href="https://bootswatch.com/5/superhero/bootstrap.min.css" />
<link rel="stylesheet" href="../../wwwroot/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="../../wwwroot/ExtensiblePortfolioSite.styles.css" asp-append-version="true" />
</head>
<body>
<div class="container repo-container">
<div class="row">
<!-- Begin repo -->
<div class="col-md-auto repo">
<div class="repo-title">KoromaruKoruko/ Code_Olive</div>
<div class="repo-description">Code_Olive .Net Plugins for the future. </div>
<div class="commit">
<img class="commit-author" src="https://avatars.githubusercontent.com/u/17232928?s=48&v=4"/>
<div class="commit-info">
<div class="commit-title">
Initial commit
</div>
<div class="commit-description">
added some stuff :D
</div>
</div>
</div>
<div class="repo-footer">
<a class="repo-link" href="https://github.com/KoromaruKoruko/Code_Olive">
<span>visit repo >></span>
</a>
<img class="repo-icon" src="../../wwwroot/img/logos/github/Light-64px.png"/>
</div>
</div>
<!-- End repo -->
</div>
</div>
</body>

View File

@ -71,8 +71,8 @@ namespace ExtensiblePortfolioSite
else
builder.Logging.AddProvider(new LoggerProvider(
log_output
.Replace("{date}", DateTime.Now.ToShortDateString())
.Replace("{time}", DateTime.Now.ToShortTimeString())
.Replace("{date}", DateTime.Now.ToString("yyyy-MM-dd"))
.Replace("{time}", DateTime.Now.ToString("HH.mm.ss"))
));
}

View File

@ -8,7 +8,7 @@
// Multiple Lines to make up your Profile Description
"Description": [
"I'm a c# Programmer who prides herself in making thins configureable and highly optimized."
"I'm a c# Programmer who prides herself in making things configurable and highly optimized."
],
// Languages you'd like to advertise
@ -36,7 +36,11 @@
"GitRepos": [
{
"ServiceProvider": "Github",
"Repository": "<Link to Repo>"
"Repository": "<Link to Repo>",
"Description": [
"line 1",
"line 2"
]
}
],

View File

@ -0,0 +1,5 @@
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": []
}

View File

@ -1,18 +1,230 @@
html {
font-size: 14px;
}
@media (min-width: 768px) {
html {
font-size: 16px;
}
}
html {
position: relative;
min-height: 100%;
position: relative;
background: url(/img/background.jpg);
background-size: cover;
}
body {
margin-bottom: 60px;
background-color: rgba(10, 10, 10, .9);
min-height: 100vh;
display: flex;
flex-direction: column;
}
nav {
min-height: 5em;
}
nav a.navbar-brand {
font-size: 2em;
margin-right: 2em;
}
nav a.nav-link {
font-size: 1.5em;
margin-right: .5em;
}
body .page-contents,
main,
main .text-center {
flex-grow: 1;
display: flex;
flex-direction: column;
}
body .page-contents {
min-height: calc(100%-10em);
}
.footer {
min-height: 1em;
margin-bottom: 0.25em;
display: flex;
flex-direction: row;
justify-content: center;
max-width: 100vw;
border-top: solid 2px var(--bs-gray-700)!important;
padding: 0.75em 18em;
}
#copyright-disclaimer {
margin-right: auto;
}
.footer a {
color: var(--bs-gray-600);
}
main,
main .text-center {
max-width: 100vw;
}
main .text-center {
justify-content: center;
}
.description span {
font-size: 1.5em;
}
.repo-container {
border: solid 1px #444;
border-radius: .25em;
width: 81.5em;
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
flex-wrap: wrap;
padding: 0;
}
.repo {
min-height: 16em;
width: 16em;
max-width: 16em;
border: solid 1px var(--bs-gray-600);
border-radius: .25em;
margin: .125em;
padding: 0 .25em;
display: flex;
flex-direction: column;
}
.repo .repo-title span {
font-size: 1.5em;
font-weight: 600;
}
.repo .repo-description {
font-size: 1.25em;
min-height: 3em;
}
.repo .repo-description + .popout {
display: none;
background-color: rgba(10, 10, 10, .85);
color: var(--bs-gray-400);
margin-top: 4em;
margin-left: 0;
width: 15.5em;
min-height: 4em;
padding: .5em;
z-index: 100;
position: absolute;
pointer-events: none;
}
.repo .repo-description:hover + .popout {
display: block;
}
.repo .commit {
margin-top: .25em;
border: solid 1px var(--bs-gray-200);
display: flex;
flex-direction: row;
align-items: center;
min-height: 4em;
}
.repo .commit .commit-author {
margin-left: .25em;
clip-path: circle();
max-height: 3.5em;
margin-right: .3em;
}
.repo .commit .commit-info .commit-title,
.repo .commit .commit-info .commit-description {
font-size: 1em;
}
.repo .commit .popout {
display: none;
background-color: rgba(25, 25, 25, .85);
color: var(--bs-gray-400);
margin-top: 2em;
margin-left: 12em;
padding: .5em;
z-index: 100;
position: absolute;
pointer-events: auto;
}
.repo .commit:hover .popout {
display: block;
}
.repo .repo-footer {
margin-top: auto;
margin-bottom: .25em;
display: flex;
align-items: center;
}
.repo .repo-footer .repo-link {
margin-left: .25em;
font-size: 1.3em;
color: var(--bs-blue);
}
.repo .repo-footer .repo-icon {
margin-left: auto;
max-width: 2.5em;
}
.popout .popout-title {
font-weight: 600;
}
.eps-lineclamp-1 {
word-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1; /* number of lines to show */
line-clamp: 1;
-webkit-box-orient: vertical;
}
.eps-lineclamp-2 {
word-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /* number of lines to show */
line-clamp: 2;
-webkit-box-orient: vertical;
}
.links {
display: flex;
margin-top: 6em;
flex-direction: row;
justify-content: center;
align-items: center;
width: 100%;
}
.links a {
display: block;
padding: 0 3em;
color: var(--bs-gray-400);
font-size: 1.5em;
}
.links vr {
border-right: solid 1px var(--bs-gray-500);
height: 2em;
}
.about-me .about-me-container {
margin: 0 1em;
padding: 0 1em;
border-left: solid 1px var(--bs-gray-700);
border-right: solid 1px var(--bs-gray-700);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path fill="#eee" d="M118.64 21.538L60 67.974 1.368 21.538zm0 66.472L83.37 60.002l35.27-28.005zM1.21 31.998l35.265 28.005L1.21 88.01z"/><path fill="#ccc" d="M76.912 64.975L60.08 78.252 43.248 64.975 1.368 98.01h117.42z"/></svg>

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path fill="#eee" d="M118.27 98.503v-.026s-22.666-22.64-22.68-22.65a4.54 4.54 0 0 0-6.44.01L78.72 86.315c-4.056 4.057-9.286.457-19.325-7.73-6.642-5.415-14.284-12.698-20.91-20.91-4.65-5.76-8.762-11.81-4.514-16.057.01-.01 10.48-10.45 10.48-10.46l.01-.022c1.88-1.878 1.698-4.755-.02-6.472v-.026L21.1 1.33c-1.797-1.796-4.67-1.756-6.44.013L4.15 11.853C-.18 17.273-9.803 43.1 31.452 85.387c43.46 44.55 71.505 35.02 76.333 29.994 0 0 10.5-10.37 10.5-10.38l.008-.02c1.88-1.88 1.69-4.76-.02-6.48z"/></svg>

After

Width:  |  Height:  |  Size: 558 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="600" fill="#eee">
<circle cx="300" cy="230" r="115" />
<circle cx="300" cy="550" r="205" />
</svg>

After

Width:  |  Height:  |  Size: 274 B

File diff suppressed because one or more lines are too long