Home / File/ directory-list.tsx — ui Source File

directory-list.tsx — ui Source File

Architecture documentation for directory-list.tsx, a tsx file in the ui codebase. 9 imports, 0 dependents.

File tsx Internationalization RTLLayout 9 imports 2 functions

Entity Profile

Dependency Diagram

graph LR
  3efca8a9_c761_49f2_7986_266f8b6c8fb6["directory-list.tsx"]
  f34c1490_de6c_039c_8593_c5f7699bd714["search-directory.tsx"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> f34c1490_de6c_039c_8593_c5f7699bd714
  81a13e24_67ef_2515_15ef_fbef5b7f6a8f["SearchDirectory"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 81a13e24_67ef_2515_15ef_fbef5b7f6a8f
  1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2
  39a0d62e_8e7d_d097_eb95_91d2bca361f7["icons-react"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 39a0d62e_8e7d_d097_eb95_91d2bca361f7
  9a720389_619b_f0f8_ab98_100af17f6d90["use-search-registry"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 9a720389_619b_f0f8_ab98_100af17f6d90
  5cc2e542_4b80_220e_4c3a_9de32188bcab["directory-add-button"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 5cc2e542_4b80_220e_4c3a_9de32188bcab
  3da222af_82f8_70c2_55f5_748b08929a10["directory.json"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 3da222af_82f8_70c2_55f5_748b08929a10
  57e86e45_ac6e_7278_be08_9092724e8401["button"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 57e86e45_ac6e_7278_be08_9092724e8401
  58f4fa76_4350_6209_54e6_f19a58e0eda4["item"]
  3efca8a9_c761_49f2_7986_266f8b6c8fb6 --> 58f4fa76_4350_6209_54e6_f19a58e0eda4
  style 3efca8a9_c761_49f2_7986_266f8b6c8fb6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"use client"

import * as React from "react"
import { IconArrowUpRight } from "@tabler/icons-react"

import { useSearchRegistry } from "@/hooks/use-search-registry"
import { DirectoryAddButton } from "@/components/directory-add-button"
import globalRegistries from "@/registry/directory.json"
import { Button } from "@/registry/new-york-v4/ui/button"
import {
  Item,
  ItemActions,
  ItemContent,
  ItemDescription,
  ItemFooter,
  ItemGroup,
  ItemMedia,
  ItemSeparator,
  ItemTitle,
} from "@/registry/new-york-v4/ui/item"

import { SearchDirectory } from "./search-directory"

function getHomepageUrl(homepage: string) {
  const url = new URL(homepage)
  url.searchParams.set("utm_source", "ui.shadcn.com")
  url.searchParams.set("utm_medium", "referral")
  url.searchParams.set("utm_campaign", "directory")
  return url.toString()
}

export function DirectoryList() {
  const { registries } = useSearchRegistry()

  return (
    <div className="mt-6">
      <SearchDirectory />
      <ItemGroup className="my-8">
        {registries.map((registry, index) => (
          <React.Fragment key={index}>
            <Item className="group/item relative gap-6 px-0">
              <ItemMedia
                variant="image"
                dangerouslySetInnerHTML={{ __html: registry.logo }}
                className="*:[svg]:fill-foreground grayscale *:[svg]:size-8"
              />
              <ItemContent>
                <ItemTitle>
                  <a
                    href={getHomepageUrl(registry.homepage)}
                    target="_blank"
                    rel="noopener noreferrer external"
                    className="group flex items-center gap-1"
                  >
                    {registry.name}{" "}
                    <IconArrowUpRight className="size-4 opacity-0 group-hover:opacity-100" />
                  </a>
                </ItemTitle>
                {registry.description && (
                  <ItemDescription className="text-pretty">
                    {registry.description}
                  </ItemDescription>
                )}
              </ItemContent>
              <ItemActions className="relative z-10 hidden self-start sm:flex">
                <DirectoryAddButton registry={registry} />
              </ItemActions>
              <ItemFooter className="justify-start pl-16 sm:hidden">
                <Button size="sm" variant="outline">
                  View <IconArrowUpRight />
                </Button>
                <DirectoryAddButton registry={registry} />
              </ItemFooter>
            </Item>
            {index < globalRegistries.length - 1 && (
              <ItemSeparator className="my-1" />
            )}
          </React.Fragment>
        ))}
      </ItemGroup>
    </div>
  )
}

Subdomains

Dependencies

Frequently Asked Questions

What does directory-list.tsx do?
directory-list.tsx is a source file in the ui codebase, written in tsx. It belongs to the Internationalization domain, RTLLayout subdomain.
What functions are defined in directory-list.tsx?
directory-list.tsx defines 2 function(s): DirectoryList, getHomepageUrl.
What does directory-list.tsx depend on?
directory-list.tsx imports 9 module(s): SearchDirectory, button, directory-add-button, directory.json, icons-react, item, react, search-directory.tsx, and 1 more.
Where is directory-list.tsx in the architecture?
directory-list.tsx is located at apps/v4/components/directory-list.tsx (domain: Internationalization, subdomain: RTLLayout, directory: apps/v4/components).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free