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:
PascalSchattenburg
2026-01-22 14:14:15 +01:00
parent b717952234
commit d147843c76
10412 changed files with 2475583 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import type { FlightRouterState } from '../../shared/lib/app-router-types';
import type { AppRouterInstance } from '../../shared/lib/app-router-context.shared-runtime';
import { type PrefetchTaskFetchStrategy } from './segment-cache/types';
import { type PrefetchTask } from './segment-cache/scheduler';
type LinkElement = HTMLAnchorElement | SVGAElement;
type Element = LinkElement | HTMLFormElement;
type LinkOrFormInstanceShared = {
router: AppRouterInstance;
fetchStrategy: PrefetchTaskFetchStrategy;
isVisible: boolean;
prefetchTask: PrefetchTask | null;
};
export type FormInstance = LinkOrFormInstanceShared & {
prefetchHref: string;
setOptimisticLinkStatus: null;
};
type PrefetchableLinkInstance = LinkOrFormInstanceShared & {
prefetchHref: string;
setOptimisticLinkStatus: (status: {
pending: boolean;
}) => void;
};
type NonPrefetchableLinkInstance = LinkOrFormInstanceShared & {
prefetchHref: null;
setOptimisticLinkStatus: (status: {
pending: boolean;
}) => void;
};
export type LinkInstance = PrefetchableLinkInstance | NonPrefetchableLinkInstance;
export declare const PENDING_LINK_STATUS: {
pending: boolean;
};
export declare const IDLE_LINK_STATUS: {
pending: boolean;
};
export declare function setLinkForCurrentNavigation(link: LinkInstance | null): void;
export declare function unmountLinkForCurrentNavigation(link: LinkInstance): void;
export declare function mountLinkInstance(element: LinkElement, href: string, router: AppRouterInstance, fetchStrategy: PrefetchTaskFetchStrategy, prefetchEnabled: boolean, setOptimisticLinkStatus: (status: {
pending: boolean;
}) => void): LinkInstance;
export declare function mountFormInstance(element: HTMLFormElement, href: string, router: AppRouterInstance, fetchStrategy: PrefetchTaskFetchStrategy): void;
export declare function unmountPrefetchableInstance(element: Element): void;
export declare function onLinkVisibilityChanged(element: Element, isVisible: boolean): void;
export declare function onNavigationIntent(element: HTMLAnchorElement | SVGAElement, unstable_upgradeToDynamicPrefetch: boolean): void;
export declare function pingVisibleLinks(nextUrl: string | null, tree: FlightRouterState): void;
export {};