{"version":3,"sources":["../../registry/default/ui/carousel.tsx","../../lib/utils.ts","../../registry/default/ui/button.tsx","../../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../../../../node_modules/.pnpm/@radix-ui+react-slot@1.0.2_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx"],"names":["carousel_exports","__export","Carousel","CarouselContent","CarouselItem","CarouselNext","CarouselPrevious","__toCommonJS","React","import_embla_carousel_react","import_lucide_react","import_clsx","import_tailwind_merge","cn","inputs","_extends","target","i","source","key","setRef","ref","value","current","composeRefs","refs","node","forEach","Slot","props","forwardedRef","children","slotProps","childrenArray","toArray","slottable","find","isSlottable","newElement","newChildren","map","child","count","only","$9IrjX$createElement","$5e63c961fc1ce211$var$SlotClone","undefined","displayName","SlotClone","mergeProps","Slottable","$9IrjX$Fragment","type","childProps","overrideProps","propName","slotPropValue","childPropValue","test","args","filter","Boolean","join","import_class_variance_authority","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","$5e63c961fc1ce211$export$8c6ed5c666ac1360","CarouselContext","useCarousel","context","orientation","opts","setApi","plugins","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event"],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/default/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nconst Carousel = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n  (\n    {\n      orientation = \"horizontal\",\n      opts,\n      setApi,\n      plugins,\n      className,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const [carouselRef, api] = useEmblaCarousel(\n      {\n        ...opts,\n        axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n      },\n      plugins\n    )\n    const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n    const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n    const onSelect = React.useCallback((api: CarouselApi) => {\n      if (!api) {\n        return\n      }\n\n      setCanScrollPrev(api.canScrollPrev())\n      setCanScrollNext(api.canScrollNext())\n    }, [])\n\n    const scrollPrev = React.useCallback(() => {\n      api?.scrollPrev()\n    }, [api])\n\n    const scrollNext = React.useCallback(() => {\n      api?.scrollNext()\n    }, [api])\n\n    const handleKeyDown = React.useCallback(\n      (event: React.KeyboardEvent<HTMLDivElement>) => {\n        if (event.key === \"ArrowLeft\") {\n          event.preventDefault()\n          scrollPrev()\n        } else if (event.key === \"ArrowRight\") {\n          event.preventDefault()\n          scrollNext()\n        }\n      },\n      [scrollPrev, scrollNext]\n    )\n\n    React.useEffect(() => {\n      if (!api || !setApi) {\n        return\n      }\n\n      setApi(api)\n    }, [api, setApi])\n\n    React.useEffect(() => {\n      if (!api) {\n        return\n      }\n\n      onSelect(api)\n      api.on(\"reInit\", onSelect)\n      api.on(\"select\", onSelect)\n\n      return () => {\n        api?.off(\"select\", onSelect)\n      }\n    }, [api, onSelect])\n\n    return (\n      <CarouselContext.Provider\n        value={{\n          carouselRef,\n          api: api,\n          opts,\n          orientation:\n            orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n          scrollPrev,\n          scrollNext,\n          canScrollPrev,\n          canScrollNext,\n        }}\n      >\n        <div\n          ref={ref}\n          onKeyDownCapture={handleKeyDown}\n          className={cn(\"relative\", className)}\n          role=\"region\"\n          aria-roledescription=\"carousel\"\n          {...props}\n        >\n          {children}\n        </div>\n      </CarouselContext.Provider>\n    )\n  }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div ref={carouselRef} className=\"overflow-hidden\">\n      <div\n        ref={ref}\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      ref={ref}\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      ref={ref}\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute  h-8 w-8 rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-left-12 top-1/2 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ArrowLeft className=\"h-4 w-4\" />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      ref={ref}\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute h-8 w-8 rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-right-12 top-1/2 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ArrowRight className=\"h-4 w-4\" />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n}\n","import * as React from \"react\"\nimport { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function formatDate(input: string | number): string {\n  const date = new Date(input)\n  return date.toLocaleDateString(\"en-US\", {\n    month: \"long\",\n    day: \"numeric\",\n    year: \"numeric\",\n  })\n}\n\nexport function absoluteUrl(path: string) {\n  return `${process.env.NEXT_PUBLIC_APP_URL}${path}`\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-md px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref !== null && ref !== undefined) {\n    (ref as React.MutableRefObject<T>).current = value;\n  }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]) {\n  return (node: T) => refs.forEach((ref) => setRef(ref, node));\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]) {\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n  children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  const childrenArray = React.Children.toArray(children);\n  const slottable = childrenArray.find(isSlottable);\n\n  if (slottable) {\n    // the new element to render is the one passed as a child of `Slottable`\n    const newElement = slottable.props.children as React.ReactNode;\n\n    const newChildren = childrenArray.map((child) => {\n      if (child === slottable) {\n        // because the new element will be the one rendered, we are only interested\n        // in grabbing its children (`newElement.props.children`)\n        if (React.Children.count(newElement) > 1) return React.Children.only(null);\n        return React.isValidElement(newElement)\n          ? (newElement.props.children as React.ReactNode)\n          : null;\n      } else {\n        return child;\n      }\n    });\n\n    return (\n      <SlotClone {...slotProps} ref={forwardedRef}>\n        {React.isValidElement(newElement)\n          ? React.cloneElement(newElement, undefined, newChildren)\n          : null}\n      </SlotClone>\n    );\n  }\n\n  return (\n    <SlotClone {...slotProps} ref={forwardedRef}>\n      {children}\n    </SlotClone>\n  );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n  children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n\n  if (React.isValidElement(children)) {\n    return React.cloneElement(children, {\n      ...mergeProps(slotProps, children.props),\n      ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref,\n    });\n  }\n\n  return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n  return <>{children}</>;\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\n  return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n  // all child props should override\n  const overrideProps = { ...childProps };\n\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      // if the handler exists on both, we compose them\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args: unknown[]) => {\n          childPropValue(...args);\n          slotPropValue(...args);\n        };\n      }\n      // but if it exists only on the slot, we use only this one\n      else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    }\n    // if it's `style`, we merge them\n    else if (propName === 'style') {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === 'className') {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n    }\n  }\n\n  return { ...slotProps, ...overrideProps };\n}\n\nconst Root = Slot;\n\nexport {\n  Slot,\n  Slottable,\n  //\n  Root,\n};\nexport type { SlotProps };\n"]}