Extensions() — supabase Function Reference
Architecture documentation for the Extensions() function in Extensions.tsx from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 7fe2e614_76ff_c020_bf84_9cb256dc6a8a["Extensions()"] 1b9bdc24_5c3b_f45b_436e_1c4352e69c4c["getUniqueTags()"] 7fe2e614_76ff_c020_bf84_9cb256dc6a8a -->|calls| 1b9bdc24_5c3b_f45b_436e_1c4352e69c4c bbce051c_b011_aa3a_f53e_8e068d69406d["getLinkTarget()"] 7fe2e614_76ff_c020_bf84_9cb256dc6a8a -->|calls| bbce051c_b011_aa3a_f53e_8e068d69406d style 7fe2e614_76ff_c020_bf84_9cb256dc6a8a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/docs/components/Extensions/Extensions.tsx lines 36–132
export default function Extensions() {
const [searchTerm, setSearchTerm] = useState<string>('')
const [filters, setFilters] = useState<string[]>([])
const tags = getUniqueTags(extensions)
function handleChecked(tag: string) {
if (filters.includes(tag)) {
setFilters(filters.filter((x) => x !== tag))
} else {
setFilters([...filters, tag])
}
}
return (
<>
<div className="mb-8 grid">
<label className="mb-2 text-xs text-foreground-light">Search extensions</label>
<Input
type="text"
placeholder="Extension name"
onChange={(e) => setSearchTerm(e.target.value)}
/>
</div>
<div className="lg:grid lg:grid-cols-12">
<div className="col-span-3 not-prose">
<div className="lg:sticky top-32">
<h3 className="text-sm text-foreground-light">Filter</h3>
<ul className="mt-3 flex flex-wrap lg:grid gap-2 grow">
{tags.sort().map((tag) => (
<li key={tag}>
<label
htmlFor={tag}
className={`text-sm text-foreground-lighter py-0.5 px-2 capitalize inline-block rounded-lg hover:bg-surface-100 cursor-pointer border ${
filters.includes(tag) ? 'bg-surface-100 ' : ''
}`}
>
<span className="flex items-center gap-1">
<input
type="checkbox"
className="sr-only"
id={tag}
name={tag}
value={tag}
onChange={() => handleChecked(tag)}
checked={filters.includes(tag)}
/>
{tag}
<span>{filters.includes(tag) && <X size={12} />}</span>
</span>
</label>
</li>
))}
</ul>
<p className="mt-2">
<button
type="reset"
className="text-xs hover:underline"
onClick={() => setFilters([])}
>
Reset
</button>
</p>
</div>
</div>
<div className="col-span-9 mt-4 lg:mt-0">
<div className="grid gap-4">
{extensions
.filter((x) => x.name.indexOf(searchTerm) >= 0)
.filter((x) =>
filters.length === 0 ? x : x.tags.some((item) => filters.includes(item))
)
.map((extension) => (
<Link
href={extension.link}
target={getLinkTarget(extension.link)}
className="no-underline"
>
<GlassPanel title={extension.name} background={false} key={extension.name}>
<p className="mt-4">
{extension.comment.charAt(0).toUpperCase() + extension.comment.slice(1)}
</p>
{extension.deprecated && (
<Badge variant="destructive">
Deprecated in {extension.deprecated.join(', ')}
</Badge>
)}
</GlassPanel>
</Link>
))}
</div>
</div>
</div>
</>
)
}
Domain
Subdomains
Source
Frequently Asked Questions
What does Extensions() do?
Extensions() is a function in the supabase codebase.
What does Extensions() call?
Extensions() calls 2 function(s): getLinkTarget, getUniqueTags.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free