fix: use trailing slashes

This commit is contained in:
Oleg Proskurin 2026-01-02 19:13:31 +07:00
parent fcbb5396b3
commit 5d7da9e59c
14 changed files with 67 additions and 69 deletions

View File

@ -47,21 +47,21 @@ export default function FlowsAPIPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'API Reference', href: '/docs/api' }, { label: 'API Reference', href: '/docs/api/' },
{ label: 'Flows' }, { label: 'Flows' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/generation', href: '/docs/generation/',
title: 'Image Generation Guide', title: 'Image Generation Guide',
description: 'Learn about chaining generations with flows.', description: 'Learn about chaining generations with flows.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api/generations', href: '/docs/api/generations/',
title: 'Generations API', title: 'Generations API',
description: 'Create generations within flows.', description: 'Create generations within flows.',
accent: 'secondary', accent: 'secondary',

View File

@ -44,21 +44,21 @@ export default function GenerationsAPIPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'API Reference', href: '/docs/api' }, { label: 'API Reference', href: '/docs/api/' },
{ label: 'Generations' }, { label: 'Generations' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/generation', href: '/docs/generation/',
title: 'Image Generation Guide', title: 'Image Generation Guide',
description: 'Concepts and examples for image generation.', description: 'Concepts and examples for image generation.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api/images', href: '/docs/api/images/',
title: 'Images API', title: 'Images API',
description: 'Upload and manage images.', description: 'Upload and manage images.',
accent: 'secondary', accent: 'secondary',

View File

@ -45,21 +45,21 @@ export default function ImagesAPIPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'API Reference', href: '/docs/api' }, { label: 'API Reference', href: '/docs/api/' },
{ label: 'Images' }, { label: 'Images' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/images', href: '/docs/images/',
title: 'Working with Images Guide', title: 'Working with Images Guide',
description: 'Concepts and examples for image management.', description: 'Concepts and examples for image management.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api/generations', href: '/docs/api/generations/',
title: 'Generations API', title: 'Generations API',
description: 'Create AI-generated images.', description: 'Create AI-generated images.',
accent: 'secondary', accent: 'secondary',

View File

@ -46,21 +46,21 @@ export default function LiveScopesAPIPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'API Reference', href: '/docs/api' }, { label: 'API Reference', href: '/docs/api/' },
{ label: 'Live Scopes' }, { label: 'Live Scopes' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/live-urls', href: '/docs/live-urls/',
title: 'Live URLs Guide', title: 'Live URLs Guide',
description: 'Learn about live URL generation.', description: 'Learn about live URL generation.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api/generations', href: '/docs/api/generations/',
title: 'Generations API', title: 'Generations API',
description: 'Full control via the generations API.', description: 'Full control via the generations API.',
accent: 'secondary', accent: 'secondary',

View File

@ -44,20 +44,20 @@ export default function APIOverviewPage() {
<JsonLd data={API_REFERENCE_SCHEMA} /> <JsonLd data={API_REFERENCE_SCHEMA} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'API Reference' }, { label: 'API Reference' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/api/generations', href: '/docs/api/generations/',
title: 'Generations API', title: 'Generations API',
description: 'Create and manage image generations.', description: 'Create and manage image generations.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api/images', href: '/docs/api/images/',
title: 'Images API', title: 'Images API',
description: 'Upload and organize images.', description: 'Upload and organize images.',
accent: 'secondary', accent: 'secondary',
@ -97,7 +97,7 @@ export default function APIOverviewPage() {
/> />
<p className="text-gray-300 leading-relaxed mt-6"> <p className="text-gray-300 leading-relaxed mt-6">
See <a href="/docs/authentication" className="text-purple-400 hover:underline">Authentication</a> for details on obtaining and using API keys. See <a href="/docs/authentication/" className="text-purple-400 hover:underline">Authentication</a> for details on obtaining and using API keys.
</p> </p>
</section> </section>
@ -227,25 +227,25 @@ export default function APIOverviewPage() {
<LinkCardGrid columns={2}> <LinkCardGrid columns={2}>
<LinkCard <LinkCard
href="/docs/api/generations" href="/docs/api/generations/"
title="Generations" title="Generations"
description="Create and manage AI image generations" description="Create and manage AI image generations"
accent="primary" accent="primary"
/> />
<LinkCard <LinkCard
href="/docs/api/images" href="/docs/api/images/"
title="Images" title="Images"
description="Upload and organize images" description="Upload and organize images"
accent="secondary" accent="secondary"
/> />
<LinkCard <LinkCard
href="/docs/api/flows" href="/docs/api/flows/"
title="Flows" title="Flows"
description="Manage generation chains" description="Manage generation chains"
accent="primary" accent="primary"
/> />
<LinkCard <LinkCard
href="/docs/api/live-scopes" href="/docs/api/live-scopes/"
title="Live Scopes" title="Live Scopes"
description="Control live URL generation" description="Control live URL generation"
accent="secondary" accent="secondary"

View File

@ -38,20 +38,20 @@ export default function AuthenticationPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'Authentication' }, { label: 'Authentication' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/generation', href: '/docs/generation/',
title: 'Start Generating', title: 'Start Generating',
description: 'Create your first AI-generated image.', description: 'Create your first AI-generated image.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api', href: '/docs/api/',
title: 'API Reference', title: 'API Reference',
description: 'Full endpoint documentation.', description: 'Full endpoint documentation.',
accent: 'secondary', accent: 'secondary',

View File

@ -42,20 +42,20 @@ export default function GenerationPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'Image Generation' }, { label: 'Image Generation' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/api/generations', href: '/docs/api/generations/',
title: 'API Reference: Generations', title: 'API Reference: Generations',
description: 'Full endpoint documentation for generations.', description: 'Full endpoint documentation for generations.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/images', href: '/docs/images/',
title: 'Working with Images', title: 'Working with Images',
description: 'Upload your own images and organize with aliases.', description: 'Upload your own images and organize with aliases.',
accent: 'secondary', accent: 'secondary',
@ -214,7 +214,7 @@ export default function GenerationPage() {
<div className="mt-6"> <div className="mt-6">
<TipBox variant="compact" type="info"> <TipBox variant="compact" type="info">
<strong>Pro Tip:</strong> Use aliases like <InlineCode>@logo</InlineCode> instead of UUIDs. See <a href="/docs/images" className="text-purple-400 hover:underline">Working with Images</a> to learn about aliases. <strong>Pro Tip:</strong> Use aliases like <InlineCode>@logo</InlineCode> instead of UUIDs. See <a href="/docs/images/" className="text-purple-400 hover:underline">Working with Images</a> to learn about aliases.
</TipBox> </TipBox>
</div> </div>

View File

@ -40,20 +40,20 @@ export default function ImagesPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'Working with Images' }, { label: 'Working with Images' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/api/images', href: '/docs/api/images/',
title: 'API Reference: Images', title: 'API Reference: Images',
description: 'Full endpoint documentation for images.', description: 'Full endpoint documentation for images.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/generation', href: '/docs/generation/',
title: 'Image Generation', title: 'Image Generation',
description: 'Use your images as references in generations.', description: 'Use your images as references in generations.',
accent: 'secondary', accent: 'secondary',

View File

@ -42,20 +42,20 @@ export default function LiveUrlsPage() {
<JsonLd data={articleSchema} /> <JsonLd data={articleSchema} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'Live URLs' }, { label: 'Live URLs' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/api/live-scopes', href: '/docs/api/live-scopes/',
title: 'API Reference: Live Scopes', title: 'API Reference: Live Scopes',
description: 'Manage scopes and generation limits.', description: 'Manage scopes and generation limits.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/generation', href: '/docs/generation/',
title: 'Image Generation', title: 'Image Generation',
description: 'Full control via the generations API.', description: 'Full control via the generations API.',
accent: 'secondary', accent: 'secondary',

View File

@ -41,32 +41,32 @@ export default function GettingStartedPage() {
<JsonLd data={HOW_TO_SCHEMA} /> <JsonLd data={HOW_TO_SCHEMA} />
<DocPage <DocPage
breadcrumbItems={[ breadcrumbItems={[
{ label: 'Documentation', href: '/docs' }, { label: 'Documentation', href: '/docs/' },
{ label: 'Getting Started' }, { label: 'Getting Started' },
]} ]}
tocItems={tocItems} tocItems={tocItems}
nextSteps={{ nextSteps={{
links: [ links: [
{ {
href: '/docs/generation', href: '/docs/generation/',
title: 'Image Generation', title: 'Image Generation',
description: 'Aspect ratios, prompt templates, using references.', description: 'Aspect ratios, prompt templates, using references.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/images', href: '/docs/images/',
title: 'Working with Images', title: 'Working with Images',
description: 'Upload your own, organize with aliases.', description: 'Upload your own, organize with aliases.',
accent: 'secondary', accent: 'secondary',
}, },
{ {
href: '/docs/live-urls', href: '/docs/live-urls/',
title: 'Live URLs', title: 'Live URLs',
description: 'Generate images directly from URL parameters.', description: 'Generate images directly from URL parameters.',
accent: 'primary', accent: 'primary',
}, },
{ {
href: '/docs/api', href: '/docs/api/',
title: 'API Reference', title: 'API Reference',
description: 'Full endpoint documentation.', description: 'Full endpoint documentation.',
accent: 'secondary', accent: 'secondary',
@ -186,7 +186,7 @@ export default function GettingStartedPage() {
</TipBox> </TipBox>
<p className="text-gray-300 leading-relaxed mt-6"> <p className="text-gray-300 leading-relaxed mt-6">
<a href="/docs/live-urls" className="text-purple-400 hover:underline">Learn more about Live URLs </a> <a href="/docs/live-urls/" className="text-purple-400 hover:underline">Learn more about Live URLs </a>
</p> </p>
</section> </section>

View File

@ -12,62 +12,62 @@ export default function sitemap(): MetadataRoute.Sitemap {
}, },
// Documentation - Guides // Documentation - Guides
{ {
url: `${baseUrl}/docs`, url: `${baseUrl}/docs/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.9, priority: 0.9,
}, },
{ {
url: `${baseUrl}/docs/generation`, url: `${baseUrl}/docs/generation/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.8, priority: 0.8,
}, },
{ {
url: `${baseUrl}/docs/images`, url: `${baseUrl}/docs/images/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.8, priority: 0.8,
}, },
{ {
url: `${baseUrl}/docs/live-urls`, url: `${baseUrl}/docs/live-urls/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.8, priority: 0.8,
}, },
{ {
url: `${baseUrl}/docs/authentication`, url: `${baseUrl}/docs/authentication/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.8, priority: 0.8,
}, },
// Documentation - API Reference // Documentation - API Reference
{ {
url: `${baseUrl}/docs/api`, url: `${baseUrl}/docs/api/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.8, priority: 0.8,
}, },
{ {
url: `${baseUrl}/docs/api/generations`, url: `${baseUrl}/docs/api/generations/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.7, priority: 0.7,
}, },
{ {
url: `${baseUrl}/docs/api/images`, url: `${baseUrl}/docs/api/images/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.7, priority: 0.7,
}, },
{ {
url: `${baseUrl}/docs/api/flows`, url: `${baseUrl}/docs/api/flows/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.7, priority: 0.7,
}, },
{ {
url: `${baseUrl}/docs/api/live-scopes`, url: `${baseUrl}/docs/api/live-scopes/`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: 'weekly', changeFrequency: 'weekly',
priority: 0.7, priority: 0.7,

View File

@ -40,33 +40,33 @@ interface DocsSidebarProps {
const navigationItems: NavItem[] = [ const navigationItems: NavItem[] = [
{ {
label: 'Getting Started', label: 'Getting Started',
href: '/docs', href: '/docs/',
}, },
{ {
label: 'Image Generation', label: 'Image Generation',
href: '/docs/generation', href: '/docs/generation/',
}, },
{ {
label: 'Working with Images', label: 'Working with Images',
href: '/docs/images', href: '/docs/images/',
}, },
{ {
label: 'Live URLs', label: 'Live URLs',
href: '/docs/live-urls', href: '/docs/live-urls/',
}, },
{ {
label: 'Authentication', label: 'Authentication',
href: '/docs/authentication', href: '/docs/authentication/',
}, },
{ {
label: 'API Reference', label: 'API Reference',
href: '/docs/api', href: '/docs/api/',
children: [ children: [
{ label: 'Overview', href: '/docs/api' }, { label: 'Overview', href: '/docs/api/' },
{ label: 'Generations', href: '/docs/api/generations' }, { label: 'Generations', href: '/docs/api/generations/' },
{ label: 'Images', href: '/docs/api/images' }, { label: 'Images', href: '/docs/api/images/' },
{ label: 'Flows', href: '/docs/api/flows' }, { label: 'Flows', href: '/docs/api/flows/' },
{ label: 'Live Scopes', href: '/docs/api/live-scopes' }, { label: 'Live Scopes', href: '/docs/api/live-scopes/' },
], ],
}, },
]; ];

View File

@ -1,7 +1,7 @@
'use client'; 'use client';
import Image from 'next/image'; import Image from 'next/image';
import { /* footerLinks, */ footerCopyright } from '@/config/footer'; import { footerLinks, footerCopyright } from '@/config/footer';
export const Footer = () => { export const Footer = () => {
return ( return (
@ -20,7 +20,6 @@ export const Footer = () => {
/> />
</div> </div>
{/* Navigation - hidden until sections are ready
<nav aria-label="Footer navigation"> <nav aria-label="Footer navigation">
<div className="grid grid-cols-2 gap-x-4 gap-y-3 sm:flex sm:flex-wrap sm:justify-center sm:gap-6 md:gap-8 text-sm text-gray-400"> <div className="grid grid-cols-2 gap-x-4 gap-y-3 sm:flex sm:flex-wrap sm:justify-center sm:gap-6 md:gap-8 text-sm text-gray-400">
{footerLinks.map((link) => ( {footerLinks.map((link) => (
@ -34,7 +33,6 @@ export const Footer = () => {
))} ))}
</div> </div>
</nav> </nav>
*/}
</div> </div>
<div className="mt-8 md:mt-10 text-center text-sm text-gray-500"> <div className="mt-8 md:mt-10 text-center text-sm text-gray-500">

View File

@ -1,6 +1,6 @@
export const footerLinks = [ export const footerLinks = [
{ label: 'Documentation', href: '#' }, { label: 'Documentation', href: '/docs/' },
{ label: 'API Reference', href: '#' }, { label: 'API Reference', href: '/docs/api/' },
{ label: 'Pricing', href: '#' }, { label: 'Pricing', href: '#' },
{ label: 'Contact', href: '#' }, { label: 'Contact', href: '#' },
]; ];