feat(blog): add file-based blog with dynamic slugs, MDX content and layout shell
- Introduced blog routing using Next.js App Router - Implemented dynamic [slug] pages for blog posts - Added MDX-based content loading via lib/posts - Integrated shared TopBar layout with navigation - Established clear content, lib and component separation
This commit is contained in:
1
apps/public-web/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.d.ts
generated
vendored
Normal file
1
apps/public-web/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export declare function createServerInsertedMetadata(nonce: string | undefined): () => Promise<string>;
|
||||
28
apps/public-web/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js
generated
vendored
Normal file
28
apps/public-web/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* For chromium based browsers (Chrome, Edge, etc.) and Safari,
|
||||
* icons need to stay under <head> to be picked up by the browser.
|
||||
*
|
||||
*/ "use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(exports, "createServerInsertedMetadata", {
|
||||
enumerable: true,
|
||||
get: function() {
|
||||
return createServerInsertedMetadata;
|
||||
}
|
||||
});
|
||||
const REINSERT_ICON_SCRIPT = `\
|
||||
document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))`;
|
||||
function createServerInsertedMetadata(nonce) {
|
||||
let inserted = false;
|
||||
return async function getServerInsertedMetadata() {
|
||||
if (inserted) {
|
||||
return '';
|
||||
}
|
||||
inserted = true;
|
||||
return `<script ${nonce ? `nonce="${nonce}"` : ''}>${REINSERT_ICON_SCRIPT}</script>`;
|
||||
};
|
||||
}
|
||||
|
||||
//# sourceMappingURL=create-server-inserted-metadata.js.map
|
||||
1
apps/public-web/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js.map
generated
vendored
Normal file
1
apps/public-web/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/server/app-render/metadata-insertion/create-server-inserted-metadata.tsx"],"sourcesContent":["/**\n * For chromium based browsers (Chrome, Edge, etc.) and Safari,\n * icons need to stay under <head> to be picked up by the browser.\n *\n */\nconst REINSERT_ICON_SCRIPT = `\\\ndocument.querySelectorAll('body link[rel=\"icon\"], body link[rel=\"apple-touch-icon\"]').forEach(el => document.head.appendChild(el))`\n\nexport function createServerInsertedMetadata(nonce: string | undefined) {\n let inserted = false\n\n return async function getServerInsertedMetadata(): Promise<string> {\n if (inserted) {\n return ''\n }\n\n inserted = true\n return `<script ${nonce ? `nonce=\"${nonce}\"` : ''}>${REINSERT_ICON_SCRIPT}</script>`\n }\n}\n"],"names":["createServerInsertedMetadata","REINSERT_ICON_SCRIPT","nonce","inserted","getServerInsertedMetadata"],"mappings":"AAAA;;;;CAIC;;;;+BAIeA;;;eAAAA;;;AAHhB,MAAMC,uBAAuB,CAAC;kIACoG,CAAC;AAE5H,SAASD,6BAA6BE,KAAyB;IACpE,IAAIC,WAAW;IAEf,OAAO,eAAeC;QACpB,IAAID,UAAU;YACZ,OAAO;QACT;QAEAA,WAAW;QACX,OAAO,CAAC,QAAQ,EAAED,QAAQ,CAAC,OAAO,EAAEA,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAED,qBAAqB,SAAS,CAAC;IACtF;AACF","ignoreList":[0]}
|
||||
Reference in New Issue
Block a user