gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/components/ui/breadcrumb.tsx · v0.5.1
Source
1 88bd1b0 Mrdn 2y ago import * as React from "react"
2 88bd1b0 Mrdn 2y ago import { Slot } from "@radix-ui/react-slot"
3 88bd1b0 Mrdn 2y ago import { ChevronRight, MoreHorizontal } from "lucide-react"
4 88bd1b0 Mrdn 2y ago
5 88bd1b0 Mrdn 2y ago import { cn } from "@marzneshin/utils"
6 88bd1b0 Mrdn 2y ago
7 88bd1b0 Mrdn 2y ago const Breadcrumb = React.forwardRef<
8 88bd1b0 Mrdn 2y ago HTMLElement,
9 88bd1b0 Mrdn 2y ago React.ComponentPropsWithoutRef<"nav"> & {
10 88bd1b0 Mrdn 2y ago separator?: React.ReactNode
11 88bd1b0 Mrdn 2y ago }
12 88bd1b0 Mrdn 2y ago >(({ ...props }, ref) => <nav ref={ref} aria-label="breadcrumb" {...props} />)
13 88bd1b0 Mrdn 2y ago Breadcrumb.displayName = "Breadcrumb"
14 88bd1b0 Mrdn 2y ago
15 88bd1b0 Mrdn 2y ago const BreadcrumbList = React.forwardRef<
16 88bd1b0 Mrdn 2y ago HTMLOListElement,
17 88bd1b0 Mrdn 2y ago React.ComponentPropsWithoutRef<"ol">
18 88bd1b0 Mrdn 2y ago >(({ className, ...props }, ref) => (
19 88bd1b0 Mrdn 2y ago <ol
20 88bd1b0 Mrdn 2y ago ref={ref}
21 88bd1b0 Mrdn 2y ago className={cn(
22 88bd1b0 Mrdn 2y ago "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
23 88bd1b0 Mrdn 2y ago className
24 88bd1b0 Mrdn 2y ago )}
25 88bd1b0 Mrdn 2y ago {...props}
26 88bd1b0 Mrdn 2y ago />
27 88bd1b0 Mrdn 2y ago ))
28 88bd1b0 Mrdn 2y ago BreadcrumbList.displayName = "BreadcrumbList"
29 88bd1b0 Mrdn 2y ago
30 88bd1b0 Mrdn 2y ago const BreadcrumbItem = React.forwardRef<
31 88bd1b0 Mrdn 2y ago HTMLLIElement,
32 88bd1b0 Mrdn 2y ago React.ComponentPropsWithoutRef<"li">
33 88bd1b0 Mrdn 2y ago >(({ className, ...props }, ref) => (
34 88bd1b0 Mrdn 2y ago <li
35 88bd1b0 Mrdn 2y ago ref={ref}
36 88bd1b0 Mrdn 2y ago className={cn("inline-flex items-center gap-1.5", className)}
37 88bd1b0 Mrdn 2y ago {...props}
38 88bd1b0 Mrdn 2y ago />
39 88bd1b0 Mrdn 2y ago ))
40 88bd1b0 Mrdn 2y ago BreadcrumbItem.displayName = "BreadcrumbItem"
41 88bd1b0 Mrdn 2y ago
42 88bd1b0 Mrdn 2y ago const BreadcrumbLink = React.forwardRef<
43 88bd1b0 Mrdn 2y ago HTMLAnchorElement,
44 88bd1b0 Mrdn 2y ago React.ComponentPropsWithoutRef<"a"> & {
45 88bd1b0 Mrdn 2y ago asChild?: boolean
46 88bd1b0 Mrdn 2y ago }
47 88bd1b0 Mrdn 2y ago >(({ asChild, className, ...props }, ref) => {
48 88bd1b0 Mrdn 2y ago const Comp = asChild ? Slot : "a"
49 88bd1b0 Mrdn 2y ago
50 88bd1b0 Mrdn 2y ago return (
51 88bd1b0 Mrdn 2y ago <Comp
52 88bd1b0 Mrdn 2y ago ref={ref}
53 88bd1b0 Mrdn 2y ago className={cn("transition-colors hover:text-foreground", className)}
54 88bd1b0 Mrdn 2y ago {...props}
55 88bd1b0 Mrdn 2y ago />
56 88bd1b0 Mrdn 2y ago )
57 88bd1b0 Mrdn 2y ago })
58 88bd1b0 Mrdn 2y ago BreadcrumbLink.displayName = "BreadcrumbLink"
59 88bd1b0 Mrdn 2y ago
60 88bd1b0 Mrdn 2y ago const BreadcrumbPage = React.forwardRef<
61 88bd1b0 Mrdn 2y ago HTMLSpanElement,
62 88bd1b0 Mrdn 2y ago React.ComponentPropsWithoutRef<"span">
63 88bd1b0 Mrdn 2y ago >(({ className, ...props }, ref) => (
64 88bd1b0 Mrdn 2y ago <span
65 88bd1b0 Mrdn 2y ago ref={ref}
66 88bd1b0 Mrdn 2y ago role="link"
67 88bd1b0 Mrdn 2y ago aria-disabled="true"
68 88bd1b0 Mrdn 2y ago aria-current="page"
69 88bd1b0 Mrdn 2y ago className={cn("font-normal text-foreground", className)}
70 88bd1b0 Mrdn 2y ago {...props}
71 88bd1b0 Mrdn 2y ago />
72 88bd1b0 Mrdn 2y ago ))
73 88bd1b0 Mrdn 2y ago BreadcrumbPage.displayName = "BreadcrumbPage"
74 88bd1b0 Mrdn 2y ago
75 88bd1b0 Mrdn 2y ago const BreadcrumbSeparator = ({
76 88bd1b0 Mrdn 2y ago children,
77 88bd1b0 Mrdn 2y ago className,
78 88bd1b0 Mrdn 2y ago ...props
79 88bd1b0 Mrdn 2y ago }: React.ComponentProps<"li">) => (
80 88bd1b0 Mrdn 2y ago <li
81 88bd1b0 Mrdn 2y ago role="presentation"
82 88bd1b0 Mrdn 2y ago aria-hidden="true"
83 88bd1b0 Mrdn 2y ago className={cn("[&>svg]:size-3.5", className)}
84 88bd1b0 Mrdn 2y ago {...props}
85 88bd1b0 Mrdn 2y ago >
86 88bd1b0 Mrdn 2y ago {children ?? <ChevronRight />}
87 88bd1b0 Mrdn 2y ago </li>
88 88bd1b0 Mrdn 2y ago )
89 88bd1b0 Mrdn 2y ago BreadcrumbSeparator.displayName = "BreadcrumbSeparator"
90 88bd1b0 Mrdn 2y ago
91 88bd1b0 Mrdn 2y ago const BreadcrumbEllipsis = ({
92 88bd1b0 Mrdn 2y ago className,
93 88bd1b0 Mrdn 2y ago ...props
94 88bd1b0 Mrdn 2y ago }: React.ComponentProps<"span">) => (
95 88bd1b0 Mrdn 2y ago <span
96 88bd1b0 Mrdn 2y ago role="presentation"
97 88bd1b0 Mrdn 2y ago aria-hidden="true"
98 88bd1b0 Mrdn 2y ago className={cn("flex h-9 w-9 items-center justify-center", className)}
99 88bd1b0 Mrdn 2y ago {...props}
100 88bd1b0 Mrdn 2y ago >
101 88bd1b0 Mrdn 2y ago <MoreHorizontal className="h-4 w-4" />
102 88bd1b0 Mrdn 2y ago <span className="sr-only">More</span>
103 88bd1b0 Mrdn 2y ago </span>
104 88bd1b0 Mrdn 2y ago )
105 88bd1b0 Mrdn 2y ago BreadcrumbEllipsis.displayName = "BreadcrumbElipssis"
106 88bd1b0 Mrdn 2y ago
107 88bd1b0 Mrdn 2y ago export {
108 88bd1b0 Mrdn 2y ago Breadcrumb,
109 88bd1b0 Mrdn 2y ago BreadcrumbList,
110 88bd1b0 Mrdn 2y ago BreadcrumbItem,
111 88bd1b0 Mrdn 2y ago BreadcrumbLink,
112 88bd1b0 Mrdn 2y ago BreadcrumbPage,
113 88bd1b0 Mrdn 2y ago BreadcrumbSeparator,
114 88bd1b0 Mrdn 2y ago BreadcrumbEllipsis,
115 88bd1b0 Mrdn 2y ago }