- FaqBlock prop schema (default true) adds a FAQPage node (@id
<page URL>#faq, one Question with its acceptedAnswer as plain text per
item) to the page's one JSON-LD graph through vue-seo-layer's
useSchemaNode (faqSchema, faqAnswerText)
- headingLevel 0 renders the title as <p class="faq-block__title"> with
the same id, still labelling the section, for sidebar and footer
widgets
- smoke: count= and repeatable options; expectations for the widget
title, one FAQPage node and the answers in the HTML inside details
- extend vue-seo-layer (link dependency during development); every page
takes its head from the SEO plugin through it
- remove the copied shared purge route, library, plugin and their test:
POST /api/__site__/cache/purge comes from vue-seo-layer with the same
contract and environment variables
- the page-less playground sets seo.htmlSitemap false; the smoke points
NUXT_SEO_API_BASE at the fixture API (fails open)
BREAKING CHANGE: server/api/__site__/cache/purge.post.ts,
server/lib/siteCachePurge.ts and server/plugins/site-cache-purge.ts are
no longer in this layer, and the runtime keys cachePurge and siteCache
are declared by vue-seo-layer. An app without pages sets
seo.htmlSitemap false.
- typed client and useFaq/useFaqApi (SSR, faq:<slug>:<locale> key,
server and public bases, x-forwarded-for forwarded also on cached renders)
- FaqBlock, FaqList and FaqItem: native details, exclusive and openFirst,
server-sanitized description and answers, nothing or #fallback on 404,
error or no items
- FAQ tokens and base CSS with the .faq-html rules, README
- node client tests and a playground SSR smoke against a fixture API