import React, { useState } from 'react'
import { usePage } from '@inertiajs/react'
import DocsCallout from '../../components/docs/DocsCallout'
import DocsFaqAccordion from '../../components/docs/DocsFaqAccordion'
import DocsSection from '../../components/docs/DocsSection'
import DocsSidebarNav from '../../components/docs/DocsSidebarNav'
import FaqSearchInput from '../../components/docs/FaqSearchInput'
import QuickstartNextSteps from '../../components/docs/QuickstartNextSteps'
import SeoHead from '../../components/seo/SeoHead'
import { FAQ_CATEGORIES, RELATED_HELP_ITEMS } from './groupFaqContent'
function HeroStat({ label, value, note }) {
return (
)
}
function FaqAnswer({ item, links }) {
return (
<>
{Array.isArray(item.paragraphs) ? item.paragraphs.map((paragraph) => (
{paragraph}
)) : null}
{Array.isArray(item.bullets) && item.bullets.length > 0 ? (
{item.bullets.map((bullet) => (
{bullet}
))}
) : null}
{Array.isArray(item.example) && item.example.length > 0 ? (
{item.example.map((entry) => (
{entry.label}
{entry.value}
))}
) : null}
{Array.isArray(item.links) && item.links.length > 0 ? (
) : null}
>
)
}
export default function GroupFaqPage() {
const { props } = usePage()
const links = props.links || {}
const [query, setQuery] = useState('')
const normalizedQuery = query.trim().toLowerCase()
const visibleCategories = FAQ_CATEGORIES.map((category) => {
const items = category.items.filter((item) => {
if (!normalizedQuery) return true
const haystack = [
item.question,
...(item.paragraphs || []),
...(item.bullets || []),
...(item.example || []).flatMap((entry) => [entry.label, entry.value]),
].join(' ').toLowerCase()
return haystack.includes(normalizedQuery)
})
return {
...category,
items,
}
}).filter((category) => category.items.length > 0)
const visibleQuestionCount = visibleCategories.reduce((total, category) => total + category.items.length, 0)
const relatedHelpItems = RELATED_HELP_ITEMS.map((item) => ({
...item,
href: links[item.linkKey] || '#',
}))
const jsonLd = [
{
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: FAQ_CATEGORIES.flatMap((category) => category.items).map((item) => ({
'@type': 'Question',
name: item.question,
acceptedAnswer: {
'@type': 'Answer',
text: (item.paragraphs || []).join(' '),
},
})),
},
]
return (
Groups FAQ
Find quick answers about Groups without digging through the full guide.
This page answers the most common practical questions about Groups, roles, publishing, contributor credit, invites, workflows, and troubleshooting. Use it when you want fast answers first, then go deeper only if you need to.
setQuery('')}
resultCount={visibleQuestionCount}
/>
({ id: category.id, label: category.label }))} />
Start with the category closest to your problem. If you only need the fastest route to first success, use the quickstart. If you need broader reference or advanced workflows, open the full Groups guide.
{visibleCategories.length === 0 ? (
No matching questions
Try a broader search term like roles, invite, publish, contributor, review, or Studio.
) : null}
{visibleCategories.map((category) => (
} />
))}
Quick troubleshooting rule
If something feels wrong, check three things first: are you in the right Group context, do you have the right role, and is the content public or internal?
)
}