Home / Function/ Extensions() — supabase Function Reference

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>
    </>
  )
}

Subdomains

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