diff --git a/_layouts/article.html b/_layouts/article.html
index 65c83f0..a87c8d8 100644
--- a/_layouts/article.html
+++ b/_layouts/article.html
@@ -18,13 +18,13 @@
{% if page.date %}
{{ page.date | date: "%B %d, %Y" }} • -- min read
+
Author: {{ page.author | default: "Aryan Kumar" }}
{% endif %}
{{ content }}
diff --git a/assets/css/article.css b/assets/css/article.css
index 26a5504..2429587 100644
--- a/assets/css/article.css
+++ b/assets/css/article.css
@@ -53,7 +53,7 @@ pre code {
a {
color: #3498db;
text-decoration: none;
- word-break: break-word;
+ overflow-wrap: break-word;
}
a:hover {
text-decoration: underline;
@@ -80,30 +80,26 @@ tr:nth-child(even) {
#date {
color: #7f8c8d;
font-style: italic;
- text-align: right;
- float: right;
- margin: 0 0 0.5em 1em;
+ margin: 0;
display: inline;
}
+#author-top {
+ color: #7f8c8d;
+ font-size: 0.95em;
+ margin: 0;
+}
+
footer {
- margin-top: 2em;
- padding-top: 1em;
- border-top: 1px solid #ecf0f1;
color: #7f8c8d;
font-size: 0.9em;
- display: flex;
- justify-content: space-between;
- align-items: center;
+ text-align: center;
}
#author {
margin: 0;
}
-#thanks {
- margin: 0;
-}
#reading-time {
color: #7f8c8d;
font-size: 0.9em;
@@ -111,7 +107,7 @@ footer {
}
#scroll-progress {
position: fixed;
- top: 0;
+ bottom: 0;
left: 0;
height: 3px;
background: #3498db;
diff --git a/assets/js/article.js b/assets/js/article.js
index 557575a..36e059d 100644
--- a/assets/js/article.js
+++ b/assets/js/article.js
@@ -1,6 +1,20 @@
document.querySelectorAll('pre code').forEach((el) => {
hljs.highlightElement(el);
});
+// Move meta info (date and author) directly under the first heading
+window.addEventListener('DOMContentLoaded', () => {
+ const container = document.querySelector('.container');
+ const heading = container?.querySelector('h1');
+ const dateEl = document.getElementById('date');
+ const authorEl = document.getElementById('author-top');
+ if (container && heading && dateEl && authorEl) {
+ const metaWrap = document.createElement('div');
+ metaWrap.className = 'post-meta';
+ metaWrap.appendChild(dateEl);
+ metaWrap.appendChild(authorEl);
+ heading.insertAdjacentElement('afterend', metaWrap);
+ }
+});
const READING_WPM = 200;
function calculateReadingTime() {
const container = document.querySelector('.container');
diff --git a/assets/js/article.js.map b/assets/js/article.js.map
index 19dad79..d5f9628 100644
--- a/assets/js/article.js.map
+++ b/assets/js/article.js.map
@@ -1 +1 @@
-{"version":3,"file":"article.js","sourceRoot":"","sources":["../ts/article.ts"],"names":[],"mappings":"AAGA,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;IACnD,IAAI,CAAC,gBAAgB,CAAC,EAAiB,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC;IACzB,MAAM,IAAI,GAAI,SAAyB,CAAC,SAAS,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;IACnC,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9D,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;IACxD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,sBAAsB;AACtB,MAAM,YAAY,GAChB,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAE7C,IAAI,YAAY,EAAE,CAAC;IACjB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACrC,MAAM,YAAY,GAChB,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7D,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;QACvD,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
\ No newline at end of file
+{"version":3,"file":"article.js","sourceRoot":"","sources":["../ts/article.ts"],"names":[],"mappings":"AAGA,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;IACnD,IAAI,CAAC,gBAAgB,CAAC,EAAiB,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAEvD,IAAI,SAAS,IAAI,OAAO,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,SAAS,GAAG,WAAW,CAAC;QAEjC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE/B,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC;IACzB,MAAM,IAAI,GAAI,SAAyB,CAAC,SAAS,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;IACnC,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9D,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;IACxD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,sBAAsB;AACtB,MAAM,YAAY,GAChB,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAE7C,IAAI,YAAY,EAAE,CAAC;IACjB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACrC,MAAM,YAAY,GAChB,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7D,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;QACvD,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
\ No newline at end of file
diff --git a/assets/ts/article.ts b/assets/ts/article.ts
index 2e4e861..9f51098 100644
--- a/assets/ts/article.ts
+++ b/assets/ts/article.ts
@@ -5,6 +5,24 @@ document.querySelectorAll('pre code').forEach((el) => {
hljs.highlightElement(el as HTMLElement);
});
+// Move meta info (date and author) directly under the first heading
+window.addEventListener('DOMContentLoaded', () => {
+ const container = document.querySelector('.container');
+ const heading = container?.querySelector('h1');
+ const dateEl = document.getElementById('date');
+ const authorEl = document.getElementById('author-top');
+
+ if (container && heading && dateEl && authorEl) {
+ const metaWrap = document.createElement('div');
+ metaWrap.className = 'post-meta';
+
+ metaWrap.appendChild(dateEl);
+ metaWrap.appendChild(authorEl);
+
+ heading.insertAdjacentElement('afterend', metaWrap);
+ }
+});
+
const READING_WPM = 200;
function calculateReadingTime(): number {
const container = document.querySelector('.container');
diff --git a/assets/ts/package.json b/assets/ts/package.json
index bcf28cf..02195ac 100644
--- a/assets/ts/package.json
+++ b/assets/ts/package.json
@@ -4,7 +4,8 @@
"description": "",
"main": "index.js",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "build": "tsc -p .",
+ "build:watch": "tsc -p . --watch"
},
"keywords": [],
"author": "",
diff --git a/assets/ts/tsconfig.json b/assets/ts/tsconfig.json
index 0ee5f23..93f957e 100644
--- a/assets/ts/tsconfig.json
+++ b/assets/ts/tsconfig.json
@@ -8,10 +8,10 @@
// Environment Settings
// See also https://aka.ms/tsconfig/module
"module": "esnext",
- "target": "esnext",
+ "target": "es2024",
"types": [],
// For nodejs:
- // "lib": ["esnext"],
+ "lib": ["esnext", "DOM"],
// "types": ["node"],
// and npm install -D @types/node
@@ -34,11 +34,10 @@
// Recommended Options
"strict": true,
- "jsx": "react-jsx",
"verbatimModuleSyntax": true,
"isolatedModules": true,
"noUncheckedSideEffectImports": true,
"moduleDetection": "force",
- "skipLibCheck": true,
+ "skipLibCheck": true
}
}
diff --git a/ts/package.json b/ts/package.json
index fba3deb..260f008 100644
--- a/ts/package.json
+++ b/ts/package.json
@@ -1,4 +1,10 @@
{
+ "name": "site-ts",
+ "private": true,
+ "scripts": {
+ "build": "tsc -p .",
+ "build:watch": "tsc -p . --watch"
+ },
"devDependencies": {
"@eslint/js": "^9.32.0",
"@typescript-eslint/eslint-plugin": "^8.39.0",