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",