1
0
mirror of https://github.com/tabler/tabler.git synced 2026-08-08 04:12:26 +04:00
Files
tabler/docs/layouts/DocsMdxLayout.astro
T
codecalm f27c70ad38 Fix Prettier formatting regression and Astro type-check errors
`Render Modal as real markup` (#2742) reformatted ~140 files back to
tabs/semicolons, breaking the Prettier config added by the Astro
quality gates (#2749). Re-run prettier --write to restore it, and fix
the type errors it had been masking: HTMLElement casts and `this`
typing in ChangePasswordModalContent/ConfirmDeleteModalContent
scripts, plain-JS syntax in the inline-injected progress.astro script,
narrowed prop unions in Button/Check/Spinner, nullable icon svg casts
in Icons/Rating, and a duplicate firstLetters/invalid `placeholder`
attribute in Select.astro. Also fix shared/vitest.config.mts's stale
`astro/lib/**/*.test.ts` include glob left over from the shared source
restructure, which made `pnpm test` report zero test files.
2026-08-03 01:26:19 +02:00

66 lines
1.7 KiB
Plaintext

---
// Adapter: MDX (layout in frontmatter) → DocsLayout.
// Astro passes { frontmatter, headings, url, file } to the MDX layout — we map it
// onto DocsLayout props, computing the TOC from the headings (equivalent of the `toc` filter).
import DocsLayout from './DocsLayout.astro'
interface MdxHeading {
depth: number
slug: string
text: string
}
interface MdxFrontmatter {
'title'?: string
'seoTitle'?: string
'summary'?: string
'description'?: string
'seoDescription'?: string
'added-in'?: string
'docs-libs'?: string[]
'hide-pagination'?: boolean
}
const {
frontmatter,
headings = [],
url,
file,
} = Astro.props as {
frontmatter: MdxFrontmatter
headings: MdxHeading[]
url?: string
file?: string
}
// Repo-relative source path for the "Edit this page" link, e.g.
// "docs/pages/ui/components/alert.mdx" (`file` is the absolute path of the MDX page).
const editPath = file?.includes('/docs/pages/') ? file.replace(/^.*\/docs\/pages\//, 'docs/pages/') : undefined
const docsLibs = frontmatter['docs-libs'] ?? []
const toc = headings
.filter((heading) => heading.depth === 2 || heading.depth === 3)
.map((heading) => ({
level: heading.depth as 2 | 3,
text: heading.text,
id: heading.slug,
}))
---
<DocsLayout
title={frontmatter.title ?? ''}
seoTitle={frontmatter.seoTitle}
summary={frontmatter.summary}
description={frontmatter.description}
seoDescription={frontmatter.seoDescription}
addedIn={frontmatter['added-in']}
docsLibs={docsLibs}
hidePagination={frontmatter['hide-pagination']}
editPath={editPath}
toc={toc}
url={url ? `${url.replace(/\.html$/, '').replace(/\/$/, '')}/` : undefined}
>
<slot />
</DocsLayout>