vite-shadcn-ui-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/components.json +21 -0
- package/eslint.config.js +28 -0
- package/index.html +13 -0
- package/package.json +55 -0
- package/postcss.config.js +6 -0
- package/public/vite.svg +1 -0
- package/src/App.css +5 -0
- package/src/App.tsx +14 -0
- package/src/assets/react.svg +1 -0
- package/src/components/ui/accordion.tsx +58 -0
- package/src/components/ui/alert-dialog.tsx +141 -0
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/aspect-ratio.tsx +7 -0
- package/src/components/ui/avatar.tsx +50 -0
- package/src/components/ui/badge.tsx +36 -0
- package/src/components/ui/breadcrumb.tsx +115 -0
- package/src/components/ui/button.tsx +57 -0
- package/src/components/ui/calendar.tsx +66 -0
- package/src/components/ui/card.tsx +79 -0
- package/src/components/ui/carousel.tsx +262 -0
- package/src/components/ui/chart.tsx +365 -0
- package/src/components/ui/checkbox.tsx +30 -0
- package/src/components/ui/collapsible.tsx +11 -0
- package/src/components/ui/command.tsx +155 -0
- package/src/components/ui/context-menu.tsx +200 -0
- package/src/components/ui/dialog.tsx +122 -0
- package/src/components/ui/drawer.tsx +118 -0
- package/src/components/ui/dropdown-menu.tsx +200 -0
- package/src/components/ui/form.tsx +178 -0
- package/src/components/ui/hover-card.tsx +29 -0
- package/src/components/ui/input-otp.tsx +71 -0
- package/src/components/ui/input.tsx +25 -0
- package/src/components/ui/label.tsx +26 -0
- package/src/components/ui/menubar.tsx +236 -0
- package/src/components/ui/navigation-menu.tsx +128 -0
- package/src/components/ui/pagination.tsx +67 -0
- package/src/components/ui/popover.tsx +31 -0
- package/src/components/ui/progress.tsx +28 -0
- package/src/components/ui/radio-group.tsx +44 -0
- package/src/components/ui/resizable.tsx +45 -0
- package/src/components/ui/scroll-area.tsx +48 -0
- package/src/components/ui/select.tsx +160 -0
- package/src/components/ui/separator.tsx +31 -0
- package/src/components/ui/sheet.tsx +140 -0
- package/src/components/ui/skeleton.tsx +15 -0
- package/src/components/ui/slider.tsx +28 -0
- package/src/components/ui/sonner.tsx +31 -0
- package/src/components/ui/switch.tsx +29 -0
- package/src/components/ui/table.tsx +117 -0
- package/src/components/ui/tabs.tsx +55 -0
- package/src/components/ui/textarea.tsx +24 -0
- package/src/components/ui/toast.tsx +129 -0
- package/src/components/ui/toaster.tsx +35 -0
- package/src/components/ui/toggle-group.tsx +61 -0
- package/src/components/ui/toggle.tsx +45 -0
- package/src/components/ui/tooltip.tsx +30 -0
- package/src/index.css +93 -0
- package/src/lib/utils.ts +6 -0
- package/src/main.tsx +10 -0
- package/src/vite-env.d.ts +1 -0
- package/tailwind.config.js +57 -0
- package/tsconfig.app.json +32 -0
- package/tsconfig.json +17 -0
- package/tsconfig.node.json +24 -0
- package/vite.config.ts +12 -0
| @@ -0,0 +1,178 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import * as React from "react"
         | 
| 4 | 
            +
            import * as LabelPrimitive from "@radix-ui/react-label"
         | 
| 5 | 
            +
            import { Slot } from "@radix-ui/react-slot"
         | 
| 6 | 
            +
            import {
         | 
| 7 | 
            +
              Controller,
         | 
| 8 | 
            +
              ControllerProps,
         | 
| 9 | 
            +
              FieldPath,
         | 
| 10 | 
            +
              FieldValues,
         | 
| 11 | 
            +
              FormProvider,
         | 
| 12 | 
            +
              useFormContext,
         | 
| 13 | 
            +
            } from "react-hook-form"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 16 | 
            +
            import { Label } from "@/components/ui/label"
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            const Form = FormProvider
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            type FormFieldContextValue<
         | 
| 21 | 
            +
              TFieldValues extends FieldValues = FieldValues,
         | 
| 22 | 
            +
              TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>
         | 
| 23 | 
            +
            > = {
         | 
| 24 | 
            +
              name: TName
         | 
| 25 | 
            +
            }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            const FormFieldContext = React.createContext<FormFieldContextValue>(
         | 
| 28 | 
            +
              {} as FormFieldContextValue
         | 
| 29 | 
            +
            )
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            const FormField = <
         | 
| 32 | 
            +
              TFieldValues extends FieldValues = FieldValues,
         | 
| 33 | 
            +
              TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>
         | 
| 34 | 
            +
            >({
         | 
| 35 | 
            +
              ...props
         | 
| 36 | 
            +
            }: ControllerProps<TFieldValues, TName>) => {
         | 
| 37 | 
            +
              return (
         | 
| 38 | 
            +
                <FormFieldContext.Provider value={{ name: props.name }}>
         | 
| 39 | 
            +
                  <Controller {...props} />
         | 
| 40 | 
            +
                </FormFieldContext.Provider>
         | 
| 41 | 
            +
              )
         | 
| 42 | 
            +
            }
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            const useFormField = () => {
         | 
| 45 | 
            +
              const fieldContext = React.useContext(FormFieldContext)
         | 
| 46 | 
            +
              const itemContext = React.useContext(FormItemContext)
         | 
| 47 | 
            +
              const { getFieldState, formState } = useFormContext()
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              const fieldState = getFieldState(fieldContext.name, formState)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              if (!fieldContext) {
         | 
| 52 | 
            +
                throw new Error("useFormField should be used within <FormField>")
         | 
| 53 | 
            +
              }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              const { id } = itemContext
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              return {
         | 
| 58 | 
            +
                id,
         | 
| 59 | 
            +
                name: fieldContext.name,
         | 
| 60 | 
            +
                formItemId: `${id}-form-item`,
         | 
| 61 | 
            +
                formDescriptionId: `${id}-form-item-description`,
         | 
| 62 | 
            +
                formMessageId: `${id}-form-item-message`,
         | 
| 63 | 
            +
                ...fieldState,
         | 
| 64 | 
            +
              }
         | 
| 65 | 
            +
            }
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            type FormItemContextValue = {
         | 
| 68 | 
            +
              id: string
         | 
| 69 | 
            +
            }
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            const FormItemContext = React.createContext<FormItemContextValue>(
         | 
| 72 | 
            +
              {} as FormItemContextValue
         | 
| 73 | 
            +
            )
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            const FormItem = React.forwardRef<
         | 
| 76 | 
            +
              HTMLDivElement,
         | 
| 77 | 
            +
              React.HTMLAttributes<HTMLDivElement>
         | 
| 78 | 
            +
            >(({ className, ...props }, ref) => {
         | 
| 79 | 
            +
              const id = React.useId()
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              return (
         | 
| 82 | 
            +
                <FormItemContext.Provider value={{ id }}>
         | 
| 83 | 
            +
                  <div ref={ref} className={cn("space-y-2", className)} {...props} />
         | 
| 84 | 
            +
                </FormItemContext.Provider>
         | 
| 85 | 
            +
              )
         | 
| 86 | 
            +
            })
         | 
| 87 | 
            +
            FormItem.displayName = "FormItem"
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            const FormLabel = React.forwardRef<
         | 
| 90 | 
            +
              React.ElementRef<typeof LabelPrimitive.Root>,
         | 
| 91 | 
            +
              React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>
         | 
| 92 | 
            +
            >(({ className, ...props }, ref) => {
         | 
| 93 | 
            +
              const { error, formItemId } = useFormField()
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              return (
         | 
| 96 | 
            +
                <Label
         | 
| 97 | 
            +
                  ref={ref}
         | 
| 98 | 
            +
                  className={cn(error && "text-destructive", className)}
         | 
| 99 | 
            +
                  htmlFor={formItemId}
         | 
| 100 | 
            +
                  {...props}
         | 
| 101 | 
            +
                />
         | 
| 102 | 
            +
              )
         | 
| 103 | 
            +
            })
         | 
| 104 | 
            +
            FormLabel.displayName = "FormLabel"
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            const FormControl = React.forwardRef<
         | 
| 107 | 
            +
              React.ElementRef<typeof Slot>,
         | 
| 108 | 
            +
              React.ComponentPropsWithoutRef<typeof Slot>
         | 
| 109 | 
            +
            >(({ ...props }, ref) => {
         | 
| 110 | 
            +
              const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              return (
         | 
| 113 | 
            +
                <Slot
         | 
| 114 | 
            +
                  ref={ref}
         | 
| 115 | 
            +
                  id={formItemId}
         | 
| 116 | 
            +
                  aria-describedby={
         | 
| 117 | 
            +
                    !error
         | 
| 118 | 
            +
                      ? `${formDescriptionId}`
         | 
| 119 | 
            +
                      : `${formDescriptionId} ${formMessageId}`
         | 
| 120 | 
            +
                  }
         | 
| 121 | 
            +
                  aria-invalid={!!error}
         | 
| 122 | 
            +
                  {...props}
         | 
| 123 | 
            +
                />
         | 
| 124 | 
            +
              )
         | 
| 125 | 
            +
            })
         | 
| 126 | 
            +
            FormControl.displayName = "FormControl"
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            const FormDescription = React.forwardRef<
         | 
| 129 | 
            +
              HTMLParagraphElement,
         | 
| 130 | 
            +
              React.HTMLAttributes<HTMLParagraphElement>
         | 
| 131 | 
            +
            >(({ className, ...props }, ref) => {
         | 
| 132 | 
            +
              const { formDescriptionId } = useFormField()
         | 
| 133 | 
            +
             | 
| 134 | 
            +
              return (
         | 
| 135 | 
            +
                <p
         | 
| 136 | 
            +
                  ref={ref}
         | 
| 137 | 
            +
                  id={formDescriptionId}
         | 
| 138 | 
            +
                  className={cn("text-sm text-muted-foreground", className)}
         | 
| 139 | 
            +
                  {...props}
         | 
| 140 | 
            +
                />
         | 
| 141 | 
            +
              )
         | 
| 142 | 
            +
            })
         | 
| 143 | 
            +
            FormDescription.displayName = "FormDescription"
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            const FormMessage = React.forwardRef<
         | 
| 146 | 
            +
              HTMLParagraphElement,
         | 
| 147 | 
            +
              React.HTMLAttributes<HTMLParagraphElement>
         | 
| 148 | 
            +
            >(({ className, children, ...props }, ref) => {
         | 
| 149 | 
            +
              const { error, formMessageId } = useFormField()
         | 
| 150 | 
            +
              const body = error ? String(error?.message) : children
         | 
| 151 | 
            +
             | 
| 152 | 
            +
              if (!body) {
         | 
| 153 | 
            +
                return null
         | 
| 154 | 
            +
              }
         | 
| 155 | 
            +
             | 
| 156 | 
            +
              return (
         | 
| 157 | 
            +
                <p
         | 
| 158 | 
            +
                  ref={ref}
         | 
| 159 | 
            +
                  id={formMessageId}
         | 
| 160 | 
            +
                  className={cn("text-sm font-medium text-destructive", className)}
         | 
| 161 | 
            +
                  {...props}
         | 
| 162 | 
            +
                >
         | 
| 163 | 
            +
                  {body}
         | 
| 164 | 
            +
                </p>
         | 
| 165 | 
            +
              )
         | 
| 166 | 
            +
            })
         | 
| 167 | 
            +
            FormMessage.displayName = "FormMessage"
         | 
| 168 | 
            +
             | 
| 169 | 
            +
            export {
         | 
| 170 | 
            +
              useFormField,
         | 
| 171 | 
            +
              Form,
         | 
| 172 | 
            +
              FormItem,
         | 
| 173 | 
            +
              FormLabel,
         | 
| 174 | 
            +
              FormControl,
         | 
| 175 | 
            +
              FormDescription,
         | 
| 176 | 
            +
              FormMessage,
         | 
| 177 | 
            +
              FormField,
         | 
| 178 | 
            +
            }
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import * as React from "react"
         | 
| 4 | 
            +
            import * as HoverCardPrimitive from "@radix-ui/react-hover-card"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            const HoverCard = HoverCardPrimitive.Root
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            const HoverCardTrigger = HoverCardPrimitive.Trigger
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            const HoverCardContent = React.forwardRef<
         | 
| 13 | 
            +
              React.ElementRef<typeof HoverCardPrimitive.Content>,
         | 
| 14 | 
            +
              React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>
         | 
| 15 | 
            +
            >(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
         | 
| 16 | 
            +
              <HoverCardPrimitive.Content
         | 
| 17 | 
            +
                ref={ref}
         | 
| 18 | 
            +
                align={align}
         | 
| 19 | 
            +
                sideOffset={sideOffset}
         | 
| 20 | 
            +
                className={cn(
         | 
| 21 | 
            +
                  "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
         | 
| 22 | 
            +
                  className
         | 
| 23 | 
            +
                )}
         | 
| 24 | 
            +
                {...props}
         | 
| 25 | 
            +
              />
         | 
| 26 | 
            +
            ))
         | 
| 27 | 
            +
            HoverCardContent.displayName = HoverCardPrimitive.Content.displayName
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            export { HoverCard, HoverCardTrigger, HoverCardContent }
         | 
| @@ -0,0 +1,71 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import * as React from "react"
         | 
| 4 | 
            +
            import { OTPInput, OTPInputContext } from "input-otp"
         | 
| 5 | 
            +
            import { Dot } from "lucide-react"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            const InputOTP = React.forwardRef<
         | 
| 10 | 
            +
              React.ElementRef<typeof OTPInput>,
         | 
| 11 | 
            +
              React.ComponentPropsWithoutRef<typeof OTPInput>
         | 
| 12 | 
            +
            >(({ className, containerClassName, ...props }, ref) => (
         | 
| 13 | 
            +
              <OTPInput
         | 
| 14 | 
            +
                ref={ref}
         | 
| 15 | 
            +
                containerClassName={cn(
         | 
| 16 | 
            +
                  "flex items-center gap-2 has-[:disabled]:opacity-50",
         | 
| 17 | 
            +
                  containerClassName
         | 
| 18 | 
            +
                )}
         | 
| 19 | 
            +
                className={cn("disabled:cursor-not-allowed", className)}
         | 
| 20 | 
            +
                {...props}
         | 
| 21 | 
            +
              />
         | 
| 22 | 
            +
            ))
         | 
| 23 | 
            +
            InputOTP.displayName = "InputOTP"
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            const InputOTPGroup = React.forwardRef<
         | 
| 26 | 
            +
              React.ElementRef<"div">,
         | 
| 27 | 
            +
              React.ComponentPropsWithoutRef<"div">
         | 
| 28 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 29 | 
            +
              <div ref={ref} className={cn("flex items-center", className)} {...props} />
         | 
| 30 | 
            +
            ))
         | 
| 31 | 
            +
            InputOTPGroup.displayName = "InputOTPGroup"
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            const InputOTPSlot = React.forwardRef<
         | 
| 34 | 
            +
              React.ElementRef<"div">,
         | 
| 35 | 
            +
              React.ComponentPropsWithoutRef<"div"> & { index: number }
         | 
| 36 | 
            +
            >(({ index, className, ...props }, ref) => {
         | 
| 37 | 
            +
              const inputOTPContext = React.useContext(OTPInputContext)
         | 
| 38 | 
            +
              const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              return (
         | 
| 41 | 
            +
                <div
         | 
| 42 | 
            +
                  ref={ref}
         | 
| 43 | 
            +
                  className={cn(
         | 
| 44 | 
            +
                    "relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",
         | 
| 45 | 
            +
                    isActive && "z-10 ring-2 ring-ring ring-offset-background",
         | 
| 46 | 
            +
                    className
         | 
| 47 | 
            +
                  )}
         | 
| 48 | 
            +
                  {...props}
         | 
| 49 | 
            +
                >
         | 
| 50 | 
            +
                  {char}
         | 
| 51 | 
            +
                  {hasFakeCaret && (
         | 
| 52 | 
            +
                    <div className="pointer-events-none absolute inset-0 flex items-center justify-center">
         | 
| 53 | 
            +
                      <div className="h-4 w-px animate-caret-blink bg-foreground duration-1000" />
         | 
| 54 | 
            +
                    </div>
         | 
| 55 | 
            +
                  )}
         | 
| 56 | 
            +
                </div>
         | 
| 57 | 
            +
              )
         | 
| 58 | 
            +
            })
         | 
| 59 | 
            +
            InputOTPSlot.displayName = "InputOTPSlot"
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            const InputOTPSeparator = React.forwardRef<
         | 
| 62 | 
            +
              React.ElementRef<"div">,
         | 
| 63 | 
            +
              React.ComponentPropsWithoutRef<"div">
         | 
| 64 | 
            +
            >(({ ...props }, ref) => (
         | 
| 65 | 
            +
              <div ref={ref} role="separator" {...props}>
         | 
| 66 | 
            +
                <Dot />
         | 
| 67 | 
            +
              </div>
         | 
| 68 | 
            +
            ))
         | 
| 69 | 
            +
            InputOTPSeparator.displayName = "InputOTPSeparator"
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            import * as React from "react"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            export interface InputProps
         | 
| 6 | 
            +
              extends React.InputHTMLAttributes<HTMLInputElement> {}
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            const Input = React.forwardRef<HTMLInputElement, InputProps>(
         | 
| 9 | 
            +
              ({ className, type, ...props }, ref) => {
         | 
| 10 | 
            +
                return (
         | 
| 11 | 
            +
                  <input
         | 
| 12 | 
            +
                    type={type}
         | 
| 13 | 
            +
                    className={cn(
         | 
| 14 | 
            +
                      "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
         | 
| 15 | 
            +
                      className
         | 
| 16 | 
            +
                    )}
         | 
| 17 | 
            +
                    ref={ref}
         | 
| 18 | 
            +
                    {...props}
         | 
| 19 | 
            +
                  />
         | 
| 20 | 
            +
                )
         | 
| 21 | 
            +
              }
         | 
| 22 | 
            +
            )
         | 
| 23 | 
            +
            Input.displayName = "Input"
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            export { Input }
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import * as React from "react"
         | 
| 4 | 
            +
            import * as LabelPrimitive from "@radix-ui/react-label"
         | 
| 5 | 
            +
            import { cva, type VariantProps } from "class-variance-authority"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            const labelVariants = cva(
         | 
| 10 | 
            +
              "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
         | 
| 11 | 
            +
            )
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            const Label = React.forwardRef<
         | 
| 14 | 
            +
              React.ElementRef<typeof LabelPrimitive.Root>,
         | 
| 15 | 
            +
              React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &
         | 
| 16 | 
            +
                VariantProps<typeof labelVariants>
         | 
| 17 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 18 | 
            +
              <LabelPrimitive.Root
         | 
| 19 | 
            +
                ref={ref}
         | 
| 20 | 
            +
                className={cn(labelVariants(), className)}
         | 
| 21 | 
            +
                {...props}
         | 
| 22 | 
            +
              />
         | 
| 23 | 
            +
            ))
         | 
| 24 | 
            +
            Label.displayName = LabelPrimitive.Root.displayName
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            export { Label }
         | 
| @@ -0,0 +1,236 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import * as React from "react"
         | 
| 4 | 
            +
            import * as MenubarPrimitive from "@radix-ui/react-menubar"
         | 
| 5 | 
            +
            import { Check, ChevronRight, Circle } from "lucide-react"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            const MenubarMenu = MenubarPrimitive.Menu
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            const MenubarGroup = MenubarPrimitive.Group
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            const MenubarPortal = MenubarPrimitive.Portal
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            const MenubarSub = MenubarPrimitive.Sub
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            const MenubarRadioGroup = MenubarPrimitive.RadioGroup
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            const Menubar = React.forwardRef<
         | 
| 20 | 
            +
              React.ElementRef<typeof MenubarPrimitive.Root>,
         | 
| 21 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>
         | 
| 22 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 23 | 
            +
              <MenubarPrimitive.Root
         | 
| 24 | 
            +
                ref={ref}
         | 
| 25 | 
            +
                className={cn(
         | 
| 26 | 
            +
                  "flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
         | 
| 27 | 
            +
                  className
         | 
| 28 | 
            +
                )}
         | 
| 29 | 
            +
                {...props}
         | 
| 30 | 
            +
              />
         | 
| 31 | 
            +
            ))
         | 
| 32 | 
            +
            Menubar.displayName = MenubarPrimitive.Root.displayName
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            const MenubarTrigger = React.forwardRef<
         | 
| 35 | 
            +
              React.ElementRef<typeof MenubarPrimitive.Trigger>,
         | 
| 36 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>
         | 
| 37 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 38 | 
            +
              <MenubarPrimitive.Trigger
         | 
| 39 | 
            +
                ref={ref}
         | 
| 40 | 
            +
                className={cn(
         | 
| 41 | 
            +
                  "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
         | 
| 42 | 
            +
                  className
         | 
| 43 | 
            +
                )}
         | 
| 44 | 
            +
                {...props}
         | 
| 45 | 
            +
              />
         | 
| 46 | 
            +
            ))
         | 
| 47 | 
            +
            MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            const MenubarSubTrigger = React.forwardRef<
         | 
| 50 | 
            +
              React.ElementRef<typeof MenubarPrimitive.SubTrigger>,
         | 
| 51 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {
         | 
| 52 | 
            +
                inset?: boolean
         | 
| 53 | 
            +
              }
         | 
| 54 | 
            +
            >(({ className, inset, children, ...props }, ref) => (
         | 
| 55 | 
            +
              <MenubarPrimitive.SubTrigger
         | 
| 56 | 
            +
                ref={ref}
         | 
| 57 | 
            +
                className={cn(
         | 
| 58 | 
            +
                  "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
         | 
| 59 | 
            +
                  inset && "pl-8",
         | 
| 60 | 
            +
                  className
         | 
| 61 | 
            +
                )}
         | 
| 62 | 
            +
                {...props}
         | 
| 63 | 
            +
              >
         | 
| 64 | 
            +
                {children}
         | 
| 65 | 
            +
                <ChevronRight className="ml-auto h-4 w-4" />
         | 
| 66 | 
            +
              </MenubarPrimitive.SubTrigger>
         | 
| 67 | 
            +
            ))
         | 
| 68 | 
            +
            MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            const MenubarSubContent = React.forwardRef<
         | 
| 71 | 
            +
              React.ElementRef<typeof MenubarPrimitive.SubContent>,
         | 
| 72 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>
         | 
| 73 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 74 | 
            +
              <MenubarPrimitive.SubContent
         | 
| 75 | 
            +
                ref={ref}
         | 
| 76 | 
            +
                className={cn(
         | 
| 77 | 
            +
                  "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
         | 
| 78 | 
            +
                  className
         | 
| 79 | 
            +
                )}
         | 
| 80 | 
            +
                {...props}
         | 
| 81 | 
            +
              />
         | 
| 82 | 
            +
            ))
         | 
| 83 | 
            +
            MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            const MenubarContent = React.forwardRef<
         | 
| 86 | 
            +
              React.ElementRef<typeof MenubarPrimitive.Content>,
         | 
| 87 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>
         | 
| 88 | 
            +
            >(
         | 
| 89 | 
            +
              (
         | 
| 90 | 
            +
                { className, align = "start", alignOffset = -4, sideOffset = 8, ...props },
         | 
| 91 | 
            +
                ref
         | 
| 92 | 
            +
              ) => (
         | 
| 93 | 
            +
                <MenubarPrimitive.Portal>
         | 
| 94 | 
            +
                  <MenubarPrimitive.Content
         | 
| 95 | 
            +
                    ref={ref}
         | 
| 96 | 
            +
                    align={align}
         | 
| 97 | 
            +
                    alignOffset={alignOffset}
         | 
| 98 | 
            +
                    sideOffset={sideOffset}
         | 
| 99 | 
            +
                    className={cn(
         | 
| 100 | 
            +
                      "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
         | 
| 101 | 
            +
                      className
         | 
| 102 | 
            +
                    )}
         | 
| 103 | 
            +
                    {...props}
         | 
| 104 | 
            +
                  />
         | 
| 105 | 
            +
                </MenubarPrimitive.Portal>
         | 
| 106 | 
            +
              )
         | 
| 107 | 
            +
            )
         | 
| 108 | 
            +
            MenubarContent.displayName = MenubarPrimitive.Content.displayName
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            const MenubarItem = React.forwardRef<
         | 
| 111 | 
            +
              React.ElementRef<typeof MenubarPrimitive.Item>,
         | 
| 112 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {
         | 
| 113 | 
            +
                inset?: boolean
         | 
| 114 | 
            +
              }
         | 
| 115 | 
            +
            >(({ className, inset, ...props }, ref) => (
         | 
| 116 | 
            +
              <MenubarPrimitive.Item
         | 
| 117 | 
            +
                ref={ref}
         | 
| 118 | 
            +
                className={cn(
         | 
| 119 | 
            +
                  "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
         | 
| 120 | 
            +
                  inset && "pl-8",
         | 
| 121 | 
            +
                  className
         | 
| 122 | 
            +
                )}
         | 
| 123 | 
            +
                {...props}
         | 
| 124 | 
            +
              />
         | 
| 125 | 
            +
            ))
         | 
| 126 | 
            +
            MenubarItem.displayName = MenubarPrimitive.Item.displayName
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            const MenubarCheckboxItem = React.forwardRef<
         | 
| 129 | 
            +
              React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,
         | 
| 130 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>
         | 
| 131 | 
            +
            >(({ className, children, checked, ...props }, ref) => (
         | 
| 132 | 
            +
              <MenubarPrimitive.CheckboxItem
         | 
| 133 | 
            +
                ref={ref}
         | 
| 134 | 
            +
                className={cn(
         | 
| 135 | 
            +
                  "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
         | 
| 136 | 
            +
                  className
         | 
| 137 | 
            +
                )}
         | 
| 138 | 
            +
                checked={checked}
         | 
| 139 | 
            +
                {...props}
         | 
| 140 | 
            +
              >
         | 
| 141 | 
            +
                <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
         | 
| 142 | 
            +
                  <MenubarPrimitive.ItemIndicator>
         | 
| 143 | 
            +
                    <Check className="h-4 w-4" />
         | 
| 144 | 
            +
                  </MenubarPrimitive.ItemIndicator>
         | 
| 145 | 
            +
                </span>
         | 
| 146 | 
            +
                {children}
         | 
| 147 | 
            +
              </MenubarPrimitive.CheckboxItem>
         | 
| 148 | 
            +
            ))
         | 
| 149 | 
            +
            MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName
         | 
| 150 | 
            +
             | 
| 151 | 
            +
            const MenubarRadioItem = React.forwardRef<
         | 
| 152 | 
            +
              React.ElementRef<typeof MenubarPrimitive.RadioItem>,
         | 
| 153 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>
         | 
| 154 | 
            +
            >(({ className, children, ...props }, ref) => (
         | 
| 155 | 
            +
              <MenubarPrimitive.RadioItem
         | 
| 156 | 
            +
                ref={ref}
         | 
| 157 | 
            +
                className={cn(
         | 
| 158 | 
            +
                  "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
         | 
| 159 | 
            +
                  className
         | 
| 160 | 
            +
                )}
         | 
| 161 | 
            +
                {...props}
         | 
| 162 | 
            +
              >
         | 
| 163 | 
            +
                <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
         | 
| 164 | 
            +
                  <MenubarPrimitive.ItemIndicator>
         | 
| 165 | 
            +
                    <Circle className="h-2 w-2 fill-current" />
         | 
| 166 | 
            +
                  </MenubarPrimitive.ItemIndicator>
         | 
| 167 | 
            +
                </span>
         | 
| 168 | 
            +
                {children}
         | 
| 169 | 
            +
              </MenubarPrimitive.RadioItem>
         | 
| 170 | 
            +
            ))
         | 
| 171 | 
            +
            MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName
         | 
| 172 | 
            +
             | 
| 173 | 
            +
            const MenubarLabel = React.forwardRef<
         | 
| 174 | 
            +
              React.ElementRef<typeof MenubarPrimitive.Label>,
         | 
| 175 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {
         | 
| 176 | 
            +
                inset?: boolean
         | 
| 177 | 
            +
              }
         | 
| 178 | 
            +
            >(({ className, inset, ...props }, ref) => (
         | 
| 179 | 
            +
              <MenubarPrimitive.Label
         | 
| 180 | 
            +
                ref={ref}
         | 
| 181 | 
            +
                className={cn(
         | 
| 182 | 
            +
                  "px-2 py-1.5 text-sm font-semibold",
         | 
| 183 | 
            +
                  inset && "pl-8",
         | 
| 184 | 
            +
                  className
         | 
| 185 | 
            +
                )}
         | 
| 186 | 
            +
                {...props}
         | 
| 187 | 
            +
              />
         | 
| 188 | 
            +
            ))
         | 
| 189 | 
            +
            MenubarLabel.displayName = MenubarPrimitive.Label.displayName
         | 
| 190 | 
            +
             | 
| 191 | 
            +
            const MenubarSeparator = React.forwardRef<
         | 
| 192 | 
            +
              React.ElementRef<typeof MenubarPrimitive.Separator>,
         | 
| 193 | 
            +
              React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>
         | 
| 194 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 195 | 
            +
              <MenubarPrimitive.Separator
         | 
| 196 | 
            +
                ref={ref}
         | 
| 197 | 
            +
                className={cn("-mx-1 my-1 h-px bg-muted", className)}
         | 
| 198 | 
            +
                {...props}
         | 
| 199 | 
            +
              />
         | 
| 200 | 
            +
            ))
         | 
| 201 | 
            +
            MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName
         | 
| 202 | 
            +
             | 
| 203 | 
            +
            const MenubarShortcut = ({
         | 
| 204 | 
            +
              className,
         | 
| 205 | 
            +
              ...props
         | 
| 206 | 
            +
            }: React.HTMLAttributes<HTMLSpanElement>) => {
         | 
| 207 | 
            +
              return (
         | 
| 208 | 
            +
                <span
         | 
| 209 | 
            +
                  className={cn(
         | 
| 210 | 
            +
                    "ml-auto text-xs tracking-widest text-muted-foreground",
         | 
| 211 | 
            +
                    className
         | 
| 212 | 
            +
                  )}
         | 
| 213 | 
            +
                  {...props}
         | 
| 214 | 
            +
                />
         | 
| 215 | 
            +
              )
         | 
| 216 | 
            +
            }
         | 
| 217 | 
            +
            MenubarShortcut.displayname = "MenubarShortcut"
         | 
| 218 | 
            +
             | 
| 219 | 
            +
            export {
         | 
| 220 | 
            +
              Menubar,
         | 
| 221 | 
            +
              MenubarMenu,
         | 
| 222 | 
            +
              MenubarTrigger,
         | 
| 223 | 
            +
              MenubarContent,
         | 
| 224 | 
            +
              MenubarItem,
         | 
| 225 | 
            +
              MenubarSeparator,
         | 
| 226 | 
            +
              MenubarLabel,
         | 
| 227 | 
            +
              MenubarCheckboxItem,
         | 
| 228 | 
            +
              MenubarRadioGroup,
         | 
| 229 | 
            +
              MenubarRadioItem,
         | 
| 230 | 
            +
              MenubarPortal,
         | 
| 231 | 
            +
              MenubarSubContent,
         | 
| 232 | 
            +
              MenubarSubTrigger,
         | 
| 233 | 
            +
              MenubarGroup,
         | 
| 234 | 
            +
              MenubarSub,
         | 
| 235 | 
            +
              MenubarShortcut,
         | 
| 236 | 
            +
            }
         | 
| @@ -0,0 +1,128 @@ | |
| 1 | 
            +
            import * as React from "react"
         | 
| 2 | 
            +
            import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
         | 
| 3 | 
            +
            import { cva } from "class-variance-authority"
         | 
| 4 | 
            +
            import { ChevronDown } from "lucide-react"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            import { cn } from "@/lib/utils"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            const NavigationMenu = React.forwardRef<
         | 
| 9 | 
            +
              React.ElementRef<typeof NavigationMenuPrimitive.Root>,
         | 
| 10 | 
            +
              React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>
         | 
| 11 | 
            +
            >(({ className, children, ...props }, ref) => (
         | 
| 12 | 
            +
              <NavigationMenuPrimitive.Root
         | 
| 13 | 
            +
                ref={ref}
         | 
| 14 | 
            +
                className={cn(
         | 
| 15 | 
            +
                  "relative z-10 flex max-w-max flex-1 items-center justify-center",
         | 
| 16 | 
            +
                  className
         | 
| 17 | 
            +
                )}
         | 
| 18 | 
            +
                {...props}
         | 
| 19 | 
            +
              >
         | 
| 20 | 
            +
                {children}
         | 
| 21 | 
            +
                <NavigationMenuViewport />
         | 
| 22 | 
            +
              </NavigationMenuPrimitive.Root>
         | 
| 23 | 
            +
            ))
         | 
| 24 | 
            +
            NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            const NavigationMenuList = React.forwardRef<
         | 
| 27 | 
            +
              React.ElementRef<typeof NavigationMenuPrimitive.List>,
         | 
| 28 | 
            +
              React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>
         | 
| 29 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 30 | 
            +
              <NavigationMenuPrimitive.List
         | 
| 31 | 
            +
                ref={ref}
         | 
| 32 | 
            +
                className={cn(
         | 
| 33 | 
            +
                  "group flex flex-1 list-none items-center justify-center space-x-1",
         | 
| 34 | 
            +
                  className
         | 
| 35 | 
            +
                )}
         | 
| 36 | 
            +
                {...props}
         | 
| 37 | 
            +
              />
         | 
| 38 | 
            +
            ))
         | 
| 39 | 
            +
            NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            const NavigationMenuItem = NavigationMenuPrimitive.Item
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            const navigationMenuTriggerStyle = cva(
         | 
| 44 | 
            +
              "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
         | 
| 45 | 
            +
            )
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            const NavigationMenuTrigger = React.forwardRef<
         | 
| 48 | 
            +
              React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,
         | 
| 49 | 
            +
              React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>
         | 
| 50 | 
            +
            >(({ className, children, ...props }, ref) => (
         | 
| 51 | 
            +
              <NavigationMenuPrimitive.Trigger
         | 
| 52 | 
            +
                ref={ref}
         | 
| 53 | 
            +
                className={cn(navigationMenuTriggerStyle(), "group", className)}
         | 
| 54 | 
            +
                {...props}
         | 
| 55 | 
            +
              >
         | 
| 56 | 
            +
                {children}{" "}
         | 
| 57 | 
            +
                <ChevronDown
         | 
| 58 | 
            +
                  className="relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
         | 
| 59 | 
            +
                  aria-hidden="true"
         | 
| 60 | 
            +
                />
         | 
| 61 | 
            +
              </NavigationMenuPrimitive.Trigger>
         | 
| 62 | 
            +
            ))
         | 
| 63 | 
            +
            NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            const NavigationMenuContent = React.forwardRef<
         | 
| 66 | 
            +
              React.ElementRef<typeof NavigationMenuPrimitive.Content>,
         | 
| 67 | 
            +
              React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>
         | 
| 68 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 69 | 
            +
              <NavigationMenuPrimitive.Content
         | 
| 70 | 
            +
                ref={ref}
         | 
| 71 | 
            +
                className={cn(
         | 
| 72 | 
            +
                  "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
         | 
| 73 | 
            +
                  className
         | 
| 74 | 
            +
                )}
         | 
| 75 | 
            +
                {...props}
         | 
| 76 | 
            +
              />
         | 
| 77 | 
            +
            ))
         | 
| 78 | 
            +
            NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            const NavigationMenuLink = NavigationMenuPrimitive.Link
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            const NavigationMenuViewport = React.forwardRef<
         | 
| 83 | 
            +
              React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,
         | 
| 84 | 
            +
              React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>
         | 
| 85 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 86 | 
            +
              <div className={cn("absolute left-0 top-full flex justify-center")}>
         | 
| 87 | 
            +
                <NavigationMenuPrimitive.Viewport
         | 
| 88 | 
            +
                  className={cn(
         | 
| 89 | 
            +
                    "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
         | 
| 90 | 
            +
                    className
         | 
| 91 | 
            +
                  )}
         | 
| 92 | 
            +
                  ref={ref}
         | 
| 93 | 
            +
                  {...props}
         | 
| 94 | 
            +
                />
         | 
| 95 | 
            +
              </div>
         | 
| 96 | 
            +
            ))
         | 
| 97 | 
            +
            NavigationMenuViewport.displayName =
         | 
| 98 | 
            +
              NavigationMenuPrimitive.Viewport.displayName
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            const NavigationMenuIndicator = React.forwardRef<
         | 
| 101 | 
            +
              React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,
         | 
| 102 | 
            +
              React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>
         | 
| 103 | 
            +
            >(({ className, ...props }, ref) => (
         | 
| 104 | 
            +
              <NavigationMenuPrimitive.Indicator
         | 
| 105 | 
            +
                ref={ref}
         | 
| 106 | 
            +
                className={cn(
         | 
| 107 | 
            +
                  "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
         | 
| 108 | 
            +
                  className
         | 
| 109 | 
            +
                )}
         | 
| 110 | 
            +
                {...props}
         | 
| 111 | 
            +
              >
         | 
| 112 | 
            +
                <div className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
         | 
| 113 | 
            +
              </NavigationMenuPrimitive.Indicator>
         | 
| 114 | 
            +
            ))
         | 
| 115 | 
            +
            NavigationMenuIndicator.displayName =
         | 
| 116 | 
            +
              NavigationMenuPrimitive.Indicator.displayName
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            export {
         | 
| 119 | 
            +
              navigationMenuTriggerStyle,
         | 
| 120 | 
            +
              NavigationMenu,
         | 
| 121 | 
            +
              NavigationMenuList,
         | 
| 122 | 
            +
              NavigationMenuItem,
         | 
| 123 | 
            +
              NavigationMenuContent,
         | 
| 124 | 
            +
              NavigationMenuTrigger,
         | 
| 125 | 
            +
              NavigationMenuLink,
         | 
| 126 | 
            +
              NavigationMenuIndicator,
         | 
| 127 | 
            +
              NavigationMenuViewport,
         | 
| 128 | 
            +
            }
         |