@nuvia/components 1.2.0 → 1.4.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.
Files changed (49) hide show
  1. package/dist/index.cjs +12 -9
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +12 -9
  4. package/dist/index.js.map +1 -1
  5. package/dist/ui/alert-dialog.cjs +3 -3
  6. package/dist/ui/alert-dialog.cjs.map +1 -1
  7. package/dist/ui/alert-dialog.js +3 -3
  8. package/dist/ui/alert-dialog.js.map +1 -1
  9. package/dist/ui/badge.cjs +3 -3
  10. package/dist/ui/badge.cjs.map +1 -1
  11. package/dist/ui/badge.js +3 -3
  12. package/dist/ui/badge.js.map +1 -1
  13. package/dist/ui/button.cjs +3 -3
  14. package/dist/ui/button.cjs.map +1 -1
  15. package/dist/ui/button.js +3 -3
  16. package/dist/ui/button.js.map +1 -1
  17. package/dist/ui/calendar.cjs +3 -3
  18. package/dist/ui/calendar.cjs.map +1 -1
  19. package/dist/ui/calendar.js +3 -3
  20. package/dist/ui/calendar.js.map +1 -1
  21. package/dist/ui/carousel.cjs +3 -3
  22. package/dist/ui/carousel.cjs.map +1 -1
  23. package/dist/ui/carousel.js +3 -3
  24. package/dist/ui/carousel.js.map +1 -1
  25. package/dist/ui/chip.cjs +2 -2
  26. package/dist/ui/chip.cjs.map +1 -1
  27. package/dist/ui/chip.js +2 -2
  28. package/dist/ui/chip.js.map +1 -1
  29. package/dist/ui/combobox.cjs +3 -3
  30. package/dist/ui/combobox.cjs.map +1 -1
  31. package/dist/ui/combobox.js +3 -3
  32. package/dist/ui/combobox.js.map +1 -1
  33. package/dist/ui/multi-combobox.cjs +3 -3
  34. package/dist/ui/multi-combobox.cjs.map +1 -1
  35. package/dist/ui/multi-combobox.js +3 -3
  36. package/dist/ui/multi-combobox.js.map +1 -1
  37. package/dist/ui/pagination.cjs +3 -3
  38. package/dist/ui/pagination.cjs.map +1 -1
  39. package/dist/ui/pagination.js +3 -3
  40. package/dist/ui/pagination.js.map +1 -1
  41. package/dist/ui/sidebar.cjs +7 -4
  42. package/dist/ui/sidebar.cjs.map +1 -1
  43. package/dist/ui/sidebar.js +7 -4
  44. package/dist/ui/sidebar.js.map +1 -1
  45. package/dist/ui/skeleton.cjs +4 -1
  46. package/dist/ui/skeleton.cjs.map +1 -1
  47. package/dist/ui/skeleton.js +4 -1
  48. package/dist/ui/skeleton.js.map +1 -1
  49. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/carousel.tsx"],"names":["React","api","jsx"],"mappings":"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","file":"carousel.js","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow 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-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { cn } from \"../lib/utils\"\nimport { Button } from \"./button\"\nimport { ArrowLeftIcon, ArrowRightIcon } from \"@radix-ui/react-icons\"\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 <ArrowLeftIcon 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 <ArrowRightIcon 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"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/carousel.tsx"],"names":["React","api","jsx"],"mappings":"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","file":"carousel.js","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow hover:bg-primary-hover\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n outline:\n \"border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { cn } from \"../lib/utils\"\nimport { Button } from \"./button\"\nimport { ArrowLeftIcon, ArrowRightIcon } from \"@radix-ui/react-icons\"\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 <ArrowLeftIcon 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 <ArrowRightIcon 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"]}
package/dist/ui/chip.cjs CHANGED
@@ -35,8 +35,8 @@ var chipVariants = classVarianceAuthority.cva(
35
35
  {
36
36
  variants: {
37
37
  variant: {
38
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
39
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
38
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary-hover",
39
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
40
40
  outline: "border border-input bg-secondary/40 hover:bg-accent hover:bg-secondary/90",
41
41
  secondary: "bg-secondary/50 hover:bg-secondary dark:bg-secondary/25 text-secondary-foreground dark:hover:bg-secondary/40",
42
42
  ghost: "hover:bg-accent hover:text-accent-foreground",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/chip.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,KAAK,CAAA,GAAI,MAAA,KAAiCA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;ACC3E,IAAM,YAAA,GAAeC,0BAAA;AAAA,EACnB,gTAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,+DAAA;AAAA,QACF,WAAA,EACE,oEAAA;AAAA,QACF,OAAA,EACE,4EAAA;AAAA,QACF,SAAA,EACE,+GAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAQA,IAAM,IAAA,GAAaC,gBAAA,CAAA,UAAA;AAAA,EACjB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,OAAA,GAAU,OAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,MAAA;AAC9B,IAAA,uBACEC,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,QAClD,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAQnB,IAAM,SAAA,GAAsC,CAAC,EAAC,KAAA,EAAO,SAAO,KAAM;AAChE,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,SAAA,IAAa,KAAA,qBACnDC,eAAA,CAAC,QAAK,SAAA,EAAU,gBAAA,EAA6B,SAAkB,OAAA,EAC5D,QAAA,EAAA;AAAA,IAAA,QAAA,mCAAa,QAAA,EAAA,EAAS,CAAA;AAAA,oBACvBD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC5C,SAAA,mCAAc,SAAA,EAAA,EAAU;AAAA,GAAA,EAAA,EAHW,KAItC,CACD,CAAA,EACH,CAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,WAAA","file":"chip.cjs","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../lib/utils\"\nimport { IconProps } from \"@radix-ui/react-icons/dist/types\"\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-full text-xs h-6 px-2 font-bold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-secondary/40 hover:bg-accent hover:bg-secondary/90\",\n secondary:\n \"bg-secondary/50 hover:bg-secondary dark:bg-secondary/25 text-secondary-foreground dark:hover:bg-secondary/40\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface ChipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof chipVariants> {\n asChild?: boolean\n}\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, variant, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\"\n return (\n <Comp\n className={cn(chipVariants({ variant, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n)\nChip.displayName = \"Chip\"\n\n\nexport interface ChipGroupProps {\n chips:{value:string, onClick: () => void, LeftIcon?:React.FC, RightIcon?:React.FC}[],\n variant:\"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n}\n\nconst ChipGroup: React.FC<ChipGroupProps> = ({chips, variant}) => {\n return (\n <div className=\"flex gap-1 flex-wrap py-2 \">\n {chips.map(({ value, onClick, LeftIcon, RightIcon }, index) => (\n <Chip className=\"cursor-pointer\" key={index} onClick={onClick} variant={variant}>\n {LeftIcon && <LeftIcon />}\n <span className=\"truncate max-w-full\">{value}</span>\n {RightIcon && <RightIcon />}\n </Chip>\n ))}\n </div>\n )\n}\n\nChip.displayName = \"ChipGroup\"\n\nexport { Chip, ChipGroup, chipVariants }\n"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/chip.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,KAAK,CAAA,GAAI,MAAA,KAAiCA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;ACC3E,IAAM,YAAA,GAAeC,0BAAA;AAAA,EACnB,gTAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,kEAAA;AAAA,QACF,WAAA,EACE,uEAAA;AAAA,QACF,OAAA,EACE,4EAAA;AAAA,QACF,SAAA,EACE,+GAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAQA,IAAM,IAAA,GAAaC,gBAAA,CAAA,UAAA;AAAA,EACjB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,OAAA,GAAU,OAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,MAAA;AAC9B,IAAA,uBACEC,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,QAClD,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAQnB,IAAM,SAAA,GAAsC,CAAC,EAAC,KAAA,EAAO,SAAO,KAAM;AAChE,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,SAAA,IAAa,KAAA,qBACnDC,eAAA,CAAC,QAAK,SAAA,EAAU,gBAAA,EAA6B,SAAkB,OAAA,EAC5D,QAAA,EAAA;AAAA,IAAA,QAAA,mCAAa,QAAA,EAAA,EAAS,CAAA;AAAA,oBACvBD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC5C,SAAA,mCAAc,SAAA,EAAA,EAAU;AAAA,GAAA,EAAA,EAHW,KAItC,CACD,CAAA,EACH,CAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,WAAA","file":"chip.cjs","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../lib/utils\"\nimport { IconProps } from \"@radix-ui/react-icons/dist/types\"\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-full text-xs h-6 px-2 font-bold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary-hover\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n outline:\n \"border border-input bg-secondary/40 hover:bg-accent hover:bg-secondary/90\",\n secondary:\n \"bg-secondary/50 hover:bg-secondary dark:bg-secondary/25 text-secondary-foreground dark:hover:bg-secondary/40\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface ChipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof chipVariants> {\n asChild?: boolean\n}\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, variant, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\"\n return (\n <Comp\n className={cn(chipVariants({ variant, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n)\nChip.displayName = \"Chip\"\n\n\nexport interface ChipGroupProps {\n chips:{value:string, onClick: () => void, LeftIcon?:React.FC, RightIcon?:React.FC}[],\n variant:\"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n}\n\nconst ChipGroup: React.FC<ChipGroupProps> = ({chips, variant}) => {\n return (\n <div className=\"flex gap-1 flex-wrap py-2 \">\n {chips.map(({ value, onClick, LeftIcon, RightIcon }, index) => (\n <Chip className=\"cursor-pointer\" key={index} onClick={onClick} variant={variant}>\n {LeftIcon && <LeftIcon />}\n <span className=\"truncate max-w-full\">{value}</span>\n {RightIcon && <RightIcon />}\n </Chip>\n ))}\n </div>\n )\n}\n\nChip.displayName = \"ChipGroup\"\n\nexport { Chip, ChipGroup, chipVariants }\n"]}
package/dist/ui/chip.js CHANGED
@@ -13,8 +13,8 @@ var chipVariants = cva(
13
13
  {
14
14
  variants: {
15
15
  variant: {
16
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
17
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
16
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary-hover",
17
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
18
18
  outline: "border border-input bg-secondary/40 hover:bg-accent hover:bg-secondary/90",
19
19
  secondary: "bg-secondary/50 hover:bg-secondary dark:bg-secondary/25 text-secondary-foreground dark:hover:bg-secondary/40",
20
20
  ghost: "hover:bg-accent hover:text-accent-foreground",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/chip.tsx"],"names":[],"mappings":";;;;;;;;;AAKO,IAAM,KAAK,CAAA,GAAI,MAAA,KAAiC,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;ACC3E,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,gTAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,+DAAA;AAAA,QACF,WAAA,EACE,oEAAA;AAAA,QACF,OAAA,EACE,4EAAA;AAAA,QACF,SAAA,EACE,+GAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAQA,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA;AAAA,EACjB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,OAAA,GAAU,OAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpE,IAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,MAAA;AAC9B,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,QAClD,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAQnB,IAAM,SAAA,GAAsC,CAAC,EAAC,KAAA,EAAO,SAAO,KAAM;AAChE,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,SAAA,IAAa,KAAA,qBACnD,IAAA,CAAC,QAAK,SAAA,EAAU,gBAAA,EAA6B,SAAkB,OAAA,EAC5D,QAAA,EAAA;AAAA,IAAA,QAAA,wBAAa,QAAA,EAAA,EAAS,CAAA;AAAA,oBACvB,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC5C,SAAA,wBAAc,SAAA,EAAA,EAAU;AAAA,GAAA,EAAA,EAHW,KAItC,CACD,CAAA,EACH,CAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,WAAA","file":"chip.js","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../lib/utils\"\nimport { IconProps } from \"@radix-ui/react-icons/dist/types\"\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-full text-xs h-6 px-2 font-bold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-secondary/40 hover:bg-accent hover:bg-secondary/90\",\n secondary:\n \"bg-secondary/50 hover:bg-secondary dark:bg-secondary/25 text-secondary-foreground dark:hover:bg-secondary/40\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface ChipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof chipVariants> {\n asChild?: boolean\n}\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, variant, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\"\n return (\n <Comp\n className={cn(chipVariants({ variant, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n)\nChip.displayName = \"Chip\"\n\n\nexport interface ChipGroupProps {\n chips:{value:string, onClick: () => void, LeftIcon?:React.FC, RightIcon?:React.FC}[],\n variant:\"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n}\n\nconst ChipGroup: React.FC<ChipGroupProps> = ({chips, variant}) => {\n return (\n <div className=\"flex gap-1 flex-wrap py-2 \">\n {chips.map(({ value, onClick, LeftIcon, RightIcon }, index) => (\n <Chip className=\"cursor-pointer\" key={index} onClick={onClick} variant={variant}>\n {LeftIcon && <LeftIcon />}\n <span className=\"truncate max-w-full\">{value}</span>\n {RightIcon && <RightIcon />}\n </Chip>\n ))}\n </div>\n )\n}\n\nChip.displayName = \"ChipGroup\"\n\nexport { Chip, ChipGroup, chipVariants }\n"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/chip.tsx"],"names":[],"mappings":";;;;;;;;;AAKO,IAAM,KAAK,CAAA,GAAI,MAAA,KAAiC,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;ACC3E,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,gTAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,kEAAA;AAAA,QACF,WAAA,EACE,uEAAA;AAAA,QACF,OAAA,EACE,4EAAA;AAAA,QACF,SAAA,EACE,+GAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAQA,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA;AAAA,EACjB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,OAAA,GAAU,OAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpE,IAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,MAAA;AAC9B,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,QAClD,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAQnB,IAAM,SAAA,GAAsC,CAAC,EAAC,KAAA,EAAO,SAAO,KAAM;AAChE,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,SAAA,IAAa,KAAA,qBACnD,IAAA,CAAC,QAAK,SAAA,EAAU,gBAAA,EAA6B,SAAkB,OAAA,EAC5D,QAAA,EAAA;AAAA,IAAA,QAAA,wBAAa,QAAA,EAAA,EAAS,CAAA;AAAA,oBACvB,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC5C,SAAA,wBAAc,SAAA,EAAA,EAAU;AAAA,GAAA,EAAA,EAHW,KAItC,CACD,CAAA,EACH,CAAA;AAEJ;AAEA,IAAA,CAAK,WAAA,GAAc,WAAA","file":"chip.js","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../lib/utils\"\nimport { IconProps } from \"@radix-ui/react-icons/dist/types\"\n\nconst chipVariants = cva(\n \"inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-full text-xs h-6 px-2 font-bold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary-hover\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n outline:\n \"border border-input bg-secondary/40 hover:bg-accent hover:bg-secondary/90\",\n secondary:\n \"bg-secondary/50 hover:bg-secondary dark:bg-secondary/25 text-secondary-foreground dark:hover:bg-secondary/40\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface ChipProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof chipVariants> {\n asChild?: boolean\n}\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, variant, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"span\"\n return (\n <Comp\n className={cn(chipVariants({ variant, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n )\n }\n)\nChip.displayName = \"Chip\"\n\n\nexport interface ChipGroupProps {\n chips:{value:string, onClick: () => void, LeftIcon?:React.FC, RightIcon?:React.FC}[],\n variant:\"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n}\n\nconst ChipGroup: React.FC<ChipGroupProps> = ({chips, variant}) => {\n return (\n <div className=\"flex gap-1 flex-wrap py-2 \">\n {chips.map(({ value, onClick, LeftIcon, RightIcon }, index) => (\n <Chip className=\"cursor-pointer\" key={index} onClick={onClick} variant={variant}>\n {LeftIcon && <LeftIcon />}\n <span className=\"truncate max-w-full\">{value}</span>\n {RightIcon && <RightIcon />}\n </Chip>\n ))}\n </div>\n )\n}\n\nChip.displayName = \"ChipGroup\"\n\nexport { Chip, ChipGroup, chipVariants }\n"]}
@@ -34,12 +34,12 @@ var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
34
34
 
35
35
  var cn = (...inputs) => tailwindMerge.twMerge(clsx.clsx(inputs));
36
36
  var buttonVariants = classVarianceAuthority.cva(
37
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
37
+ "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
38
38
  {
39
39
  variants: {
40
40
  variant: {
41
- default: "bg-foreground-primary-medium text-white shadow hover:bg-primary/90",
42
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
41
+ default: "bg-foreground-primary-medium text-white shadow hover:bg-primary-hover",
42
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
43
43
  outline: "border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy",
44
44
  secondary: "bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy",
45
45
  ghost: "text-foreground-secondary-heavy hover:bg-background-secondary-light",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/command.tsx","../../src/ui/popover.tsx","../../src/ui/combobox.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","CommandPrimitive","jsxs","MagnifyingGlassIcon","React3","PopoverPrimitive","React4","Popover","PopoverTrigger","ChevronDownIcon","CheckIcon"],"mappings":"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","file":"combobox.cjs","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow 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-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\";\n\nimport * as React from \"react\";\nimport type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport { cn } from \"../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/25 data-[selected=true]:bg-secondary/50 data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { cn } from \"../lib/utils\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./command\"\nimport { PopoverContent } from \"./popover\"\nimport { CheckIcon, ChevronDownIcon } from \"@radix-ui/react-icons\"\n\ninterface ComboboxOption {\n value: string\n label: string\n}\n\ninterface ComboboxProps {\n children?: React.ReactNode\n options: ComboboxOption[]\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n className?: string\n\n asChild?: boolean\n \n value?: string | string[] // Allow single or multiple selection\n onValueChange?: (value: string | string[]) => void // Update type for value change\n onSelect?: (value: string | string[]) => void // Update type for select\n}\n\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(({\n options,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n className,\n value: controlledValue,\n onValueChange, \n onSelect,\n asChild,\n children,\n}, ref) => {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState<string | string[]>(controlledValue || (Array.isArray(controlledValue) ? [] : \"\"))\n const [search, setSearch] = React.useState(\"\")\n\n React.useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleSelect = React.useCallback((currentValue: string) => {\n let newValue: string | string[];\n if (Array.isArray(value)) {\n newValue = value.includes(currentValue) ? value.filter(v => v !== currentValue) : [...value, currentValue];\n } else {\n newValue = currentValue === value ? \"\" : currentValue;\n }\n setValue(newValue);\n onValueChange?.(newValue);\n onSelect?.(newValue);\n setOpen(false);\n }, [value, onValueChange, onSelect])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {\n asChild ? children : (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n >\n <span className=\"text-sm text-muted-foreground font-normal\">{Array.isArray(value) \n ? value.map(val => options.find(option => option.value === val)?.label).join(\", \") \n : options.find(option => option.value === value)?.label || placeholder}</span>\n <ChevronDownIcon className=\"opacity-50\" />\n </Button>\n )\n }\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-full p-0 !rounded-xl border-none\", className)}>\n <Command className=\"rounded-xl border\">\n <CommandInput value={search} onValueChange={setSearch} placeholder={searchPlaceholder} className=\"h-9 w-full\" />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n keywords={[option.label]}\n className=\"rounded-lg\"\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n onKeyUp={(e) => e.key === 'Enter' && handleSelect(option.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSelect(option.value)}\n >\n {option.label}\n <CheckIcon\n className={cn(\n \"ml-auto\",\n Array.isArray(value) ? (value.includes(option.value) ? \"opacity-100\" : \"opacity-0\") : (value === option.value ? \"opacity-100\" : \"opacity-0\")\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n})\n\nCombobox.displayName = \"Combobox\"\n\nexport { Combobox }"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/command.tsx","../../src/ui/popover.tsx","../../src/ui/combobox.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","CommandPrimitive","jsxs","MagnifyingGlassIcon","React3","PopoverPrimitive","React4","Popover","PopoverTrigger","ChevronDownIcon","CheckIcon"],"mappings":"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","file":"combobox.cjs","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow hover:bg-primary-hover\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n outline:\n \"border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\";\n\nimport * as React from \"react\";\nimport type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport { cn } from \"../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/25 data-[selected=true]:bg-secondary/50 data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { cn } from \"../lib/utils\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./command\"\nimport { PopoverContent } from \"./popover\"\nimport { CheckIcon, ChevronDownIcon } from \"@radix-ui/react-icons\"\n\ninterface ComboboxOption {\n value: string\n label: string\n}\n\ninterface ComboboxProps {\n children?: React.ReactNode\n options: ComboboxOption[]\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n className?: string\n\n asChild?: boolean\n \n value?: string | string[] // Allow single or multiple selection\n onValueChange?: (value: string | string[]) => void // Update type for value change\n onSelect?: (value: string | string[]) => void // Update type for select\n}\n\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(({\n options,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n className,\n value: controlledValue,\n onValueChange, \n onSelect,\n asChild,\n children,\n}, ref) => {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState<string | string[]>(controlledValue || (Array.isArray(controlledValue) ? [] : \"\"))\n const [search, setSearch] = React.useState(\"\")\n\n React.useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleSelect = React.useCallback((currentValue: string) => {\n let newValue: string | string[];\n if (Array.isArray(value)) {\n newValue = value.includes(currentValue) ? value.filter(v => v !== currentValue) : [...value, currentValue];\n } else {\n newValue = currentValue === value ? \"\" : currentValue;\n }\n setValue(newValue);\n onValueChange?.(newValue);\n onSelect?.(newValue);\n setOpen(false);\n }, [value, onValueChange, onSelect])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {\n asChild ? children : (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n >\n <span className=\"text-sm text-muted-foreground font-normal\">{Array.isArray(value) \n ? value.map(val => options.find(option => option.value === val)?.label).join(\", \") \n : options.find(option => option.value === value)?.label || placeholder}</span>\n <ChevronDownIcon className=\"opacity-50\" />\n </Button>\n )\n }\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-full p-0 !rounded-xl border-none\", className)}>\n <Command className=\"rounded-xl border\">\n <CommandInput value={search} onValueChange={setSearch} placeholder={searchPlaceholder} className=\"h-9 w-full\" />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n keywords={[option.label]}\n className=\"rounded-lg\"\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n onKeyUp={(e) => e.key === 'Enter' && handleSelect(option.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSelect(option.value)}\n >\n {option.label}\n <CheckIcon\n className={cn(\n \"ml-auto\",\n Array.isArray(value) ? (value.includes(option.value) ? \"opacity-100\" : \"opacity-0\") : (value === option.value ? \"opacity-100\" : \"opacity-0\")\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n})\n\nCombobox.displayName = \"Combobox\"\n\nexport { Combobox }"]}
@@ -12,12 +12,12 @@ import { MagnifyingGlassIcon, ChevronDownIcon, CheckIcon } from '@radix-ui/react
12
12
 
13
13
  var cn = (...inputs) => twMerge(clsx(inputs));
14
14
  var buttonVariants = cva(
15
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
15
+ "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
16
16
  {
17
17
  variants: {
18
18
  variant: {
19
- default: "bg-foreground-primary-medium text-white shadow hover:bg-primary/90",
20
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
19
+ default: "bg-foreground-primary-medium text-white shadow hover:bg-primary-hover",
20
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
21
21
  outline: "border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy",
22
22
  secondary: "bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy",
23
23
  ghost: "text-foreground-secondary-heavy hover:bg-background-secondary-light",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/command.tsx","../../src/ui/popover.tsx","../../src/ui/combobox.tsx"],"names":["React","jsx","CommandPrimitive","React3","React4","jsxs"],"mappings":"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","file":"combobox.js","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow 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-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\";\n\nimport * as React from \"react\";\nimport type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport { cn } from \"../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/25 data-[selected=true]:bg-secondary/50 data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { cn } from \"../lib/utils\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./command\"\nimport { PopoverContent } from \"./popover\"\nimport { CheckIcon, ChevronDownIcon } from \"@radix-ui/react-icons\"\n\ninterface ComboboxOption {\n value: string\n label: string\n}\n\ninterface ComboboxProps {\n children?: React.ReactNode\n options: ComboboxOption[]\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n className?: string\n\n asChild?: boolean\n \n value?: string | string[] // Allow single or multiple selection\n onValueChange?: (value: string | string[]) => void // Update type for value change\n onSelect?: (value: string | string[]) => void // Update type for select\n}\n\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(({\n options,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n className,\n value: controlledValue,\n onValueChange, \n onSelect,\n asChild,\n children,\n}, ref) => {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState<string | string[]>(controlledValue || (Array.isArray(controlledValue) ? [] : \"\"))\n const [search, setSearch] = React.useState(\"\")\n\n React.useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleSelect = React.useCallback((currentValue: string) => {\n let newValue: string | string[];\n if (Array.isArray(value)) {\n newValue = value.includes(currentValue) ? value.filter(v => v !== currentValue) : [...value, currentValue];\n } else {\n newValue = currentValue === value ? \"\" : currentValue;\n }\n setValue(newValue);\n onValueChange?.(newValue);\n onSelect?.(newValue);\n setOpen(false);\n }, [value, onValueChange, onSelect])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {\n asChild ? children : (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n >\n <span className=\"text-sm text-muted-foreground font-normal\">{Array.isArray(value) \n ? value.map(val => options.find(option => option.value === val)?.label).join(\", \") \n : options.find(option => option.value === value)?.label || placeholder}</span>\n <ChevronDownIcon className=\"opacity-50\" />\n </Button>\n )\n }\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-full p-0 !rounded-xl border-none\", className)}>\n <Command className=\"rounded-xl border\">\n <CommandInput value={search} onValueChange={setSearch} placeholder={searchPlaceholder} className=\"h-9 w-full\" />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n keywords={[option.label]}\n className=\"rounded-lg\"\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n onKeyUp={(e) => e.key === 'Enter' && handleSelect(option.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSelect(option.value)}\n >\n {option.label}\n <CheckIcon\n className={cn(\n \"ml-auto\",\n Array.isArray(value) ? (value.includes(option.value) ? \"opacity-100\" : \"opacity-0\") : (value === option.value ? \"opacity-100\" : \"opacity-0\")\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n})\n\nCombobox.displayName = \"Combobox\"\n\nexport { Combobox }"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/command.tsx","../../src/ui/popover.tsx","../../src/ui/combobox.tsx"],"names":["React","jsx","CommandPrimitive","React3","React4","jsxs"],"mappings":"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","file":"combobox.js","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow hover:bg-primary-hover\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n outline:\n \"border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\";\n\nimport * as React from \"react\";\nimport type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport { cn } from \"../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/25 data-[selected=true]:bg-secondary/50 data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { cn } from \"../lib/utils\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./command\"\nimport { PopoverContent } from \"./popover\"\nimport { CheckIcon, ChevronDownIcon } from \"@radix-ui/react-icons\"\n\ninterface ComboboxOption {\n value: string\n label: string\n}\n\ninterface ComboboxProps {\n children?: React.ReactNode\n options: ComboboxOption[]\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n className?: string\n\n asChild?: boolean\n \n value?: string | string[] // Allow single or multiple selection\n onValueChange?: (value: string | string[]) => void // Update type for value change\n onSelect?: (value: string | string[]) => void // Update type for select\n}\n\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(({\n options,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No option found.\",\n className,\n value: controlledValue,\n onValueChange, \n onSelect,\n asChild,\n children,\n}, ref) => {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState<string | string[]>(controlledValue || (Array.isArray(controlledValue) ? [] : \"\"))\n const [search, setSearch] = React.useState(\"\")\n\n React.useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleSelect = React.useCallback((currentValue: string) => {\n let newValue: string | string[];\n if (Array.isArray(value)) {\n newValue = value.includes(currentValue) ? value.filter(v => v !== currentValue) : [...value, currentValue];\n } else {\n newValue = currentValue === value ? \"\" : currentValue;\n }\n setValue(newValue);\n onValueChange?.(newValue);\n onSelect?.(newValue);\n setOpen(false);\n }, [value, onValueChange, onSelect])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {\n asChild ? children : (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n >\n <span className=\"text-sm text-muted-foreground font-normal\">{Array.isArray(value) \n ? value.map(val => options.find(option => option.value === val)?.label).join(\", \") \n : options.find(option => option.value === value)?.label || placeholder}</span>\n <ChevronDownIcon className=\"opacity-50\" />\n </Button>\n )\n }\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-full p-0 !rounded-xl border-none\", className)}>\n <Command className=\"rounded-xl border\">\n <CommandInput value={search} onValueChange={setSearch} placeholder={searchPlaceholder} className=\"h-9 w-full\" />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n keywords={[option.label]}\n className=\"rounded-lg\"\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n onKeyUp={(e) => e.key === 'Enter' && handleSelect(option.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSelect(option.value)}\n >\n {option.label}\n <CheckIcon\n className={cn(\n \"ml-auto\",\n Array.isArray(value) ? (value.includes(option.value) ? \"opacity-100\" : \"opacity-0\") : (value === option.value ? \"opacity-100\" : \"opacity-0\")\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n})\n\nCombobox.displayName = \"Combobox\"\n\nexport { Combobox }"]}
@@ -34,12 +34,12 @@ var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
34
34
 
35
35
  var cn = (...inputs) => tailwindMerge.twMerge(clsx.clsx(inputs));
36
36
  var buttonVariants = classVarianceAuthority.cva(
37
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
37
+ "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
38
38
  {
39
39
  variants: {
40
40
  variant: {
41
- default: "bg-foreground-primary-medium text-white shadow hover:bg-primary/90",
42
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
41
+ default: "bg-foreground-primary-medium text-white shadow hover:bg-primary-hover",
42
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
43
43
  outline: "border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy",
44
44
  secondary: "bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy",
45
45
  ghost: "text-foreground-secondary-heavy hover:bg-background-secondary-light",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/command.tsx","../../src/ui/popover.tsx","../../src/ui/multi-combobox.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","CommandPrimitive","jsxs","MagnifyingGlassIcon","React3","PopoverPrimitive","React4","Popover","PopoverTrigger","Cross2Icon","ChevronDownIcon","PlusIcon","CheckIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,KAAK,CAAA,GAAI,MAAA,KAAiCA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;ACE3E,IAAM,cAAA,GAAiBC,0BAAA;AAAA,EACrB,0RAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,oEAAA;AAAA,QACF,WAAA,EACE,oEAAA;AAAA,QACF,OAAA,EACE,mHAAA;AAAA,QACF,SAAA,EACE,mGAAA;AAAA,QACF,KAAA,EACE,qEAAA;AAAA,QACF,IAAA,EAAM,qDAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,kCAAA;AAAA,QACJ,EAAA,EAAI,6BAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM,oBAAA;AAAA,QACN,SAAA,EAAW,gCAAA;AAAA,QACX,SAAA,EAAW,iBAAA;AAAA,QACX,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAQA,IAAM,MAAA,GAAeC,iBAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAChE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAC9B,IAAA,uBACEC,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;ACpDrB,IAAM,OAAA,GAAgBC,6BAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,cAAAA;AAAA,EAACE,YAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,OAAA,CAAQ,cAAcA,YAAA,CAAiB,WAAA;AAcvC,IAAM,YAAA,GAAqBD,iBAAA,CAAA,UAAA,CAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BE,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAkC,sBAAmB,EAAA,EAClE,QAAA,EAAA;AAAA,kBAAAH,cAAAA,CAACI,8BAAA,EAAA,EAAoB,SAAA,EAAU,kCAAA,EAAmC,CAAA;AAAA,kBAClEJ,cAAAA;AAAA,IAACE,YAAA,CAAiB,KAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,wJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AACN,CAAA,EACF,CACD,CAAA;AAED,YAAA,CAAa,WAAA,GAAcA,aAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,WAAA,GAAoBD,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,cAAAA;AAAA,EAACE,YAAA,CAAiB,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA;AAAA,IACzE,GAAG;AAAA;AACN,CACD,CAAA;AAED,WAAA,CAAY,WAAA,GAAcA,aAAiB,IAAA,CAAK,WAAA;AAEhD,IAAM,YAAA,GAAqBD,iBAAA,CAAA,UAAA,CAGzB,CAAC,KAAA,EAAO,wBACRD,cAAAA;AAAA,EAACE,YAAA,CAAiB,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0BAAA;AAAA,IACT,GAAG;AAAA;AACN,CACD,CAAA;AAED,YAAA,CAAa,WAAA,GAAcA,aAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,YAAA,GAAqBD,6BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,cAAAA;AAAA,EAACE,YAAA,CAAiB,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AAED,YAAA,CAAa,WAAA,GAAcA,aAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,gBAAA,GAAyBD,6BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,cAAAA;AAAA,EAACE,YAAA,CAAiB,SAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA;AAAA,IAC9C,GAAG;AAAA;AACN,CACD,CAAA;AACD,gBAAA,CAAiB,WAAA,GAAcA,aAAiB,SAAA,CAAU,WAAA;AAE1D,IAAM,WAAA,GAAoBD,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,cAAAA;AAAA,EAACE,YAAA,CAAiB,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,kWAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AAED,WAAA,CAAY,WAAA,GAAcA,aAAiB,IAAA,CAAK,WAAA;AC9GhD,IAAM,iBAAuBG,iBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,QAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,OAAM,EAAG,GAAA,qBAC5DL,cAAAA,CAAkBM,2BAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAN,cAAAA;AAAA,EAAkBM,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD,CAAA;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;ACCtD,IAAM,aAAA,GAAsBC,6BAA+C,CAAC;AAAA,EAC1E,OAAA;AAAA,EACA,WAAA,GAAc,mBAAA;AAAA,EACd,iBAAA,GAAoB,WAAA;AAAA,EACpB,YAAA,GAAe,mBAAA;AAAA,EACf,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,KAAA,EAAO,eAAA;AAAA,EACP,aAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA,GAAoB,CAAA;AAAA,EACpB,OAAA;AAAA,EACA;AACF,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,2BAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAUA,iBAAA,CAAA,QAAA,CAAmB,eAAA,IAAmB,EAAE,CAAA;AACxE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,2BAAS,EAAE,CAAA;AAE7C,EAAMA,4BAAU,MAAM;AACpB,IAAA,IAAI,oBAAoB,MAAA,EAAW;AACjC,MAAA,QAAA,CAAS,eAAe,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAA,MAAM,YAAA,GAAqBA,iBAAA,CAAA,WAAA,CAAY,CAAC,YAAA,KAAyB;AAC/D,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,CAAS,YAAY,IACxC,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,YAAY,CAAA,GACpC,CAAC,GAAG,OAAO,YAAY,CAAA;AAE3B,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,aAAA,GAAgB,QAAQ,CAAA;AACxB,IAAA,QAAA,GAAW,QAAQ,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAA,EAAO,aAAA,EAAe,QAAQ,CAAC,CAAA;AAEnC,EAAA,MAAM,YAAA,GAAqBA,iBAAA,CAAA,WAAA,CAAY,CAAC,aAAA,KAA0B;AAChE,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,MAAM,aAAa,CAAA;AACtD,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,aAAA,GAAgB,QAAQ,CAAA;AACxB,IAAA,QAAA,GAAW,QAAQ,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAA,EAAO,aAAA,EAAe,QAAQ,CAAC,CAAA;AAEnC,EAAA,MAAM,cAAA,GAAuBA,0BAAQ,MAAM;AACzC,IAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAA,CAAA,KAAK,OAAA,CAAQ,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,KAAA,KAAU,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,EACnF,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAEnB,EAAA,uBACEJ,eAAAA,CAACK,wBAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,oBAAAR,eAACS,+BAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,OAAA,GAAU,2BACTN,eAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAe,IAAA;AAAA,QACf,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,QAEjD,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,CAAM,SAAS,CAAA,oBACdA,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sBAAA,EACZ,QAAA,EAAA;AAAA,cAAA,cAAA,CAAe,KAAA,CAAM,GAAG,iBAAiB,CAAA,CAAE,IAAI,CAAC,KAAA,EAAO,0BACtDA,eAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAU,qEAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAH,cAAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oCACbA,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,0BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,0BAAA,YAAA,CAAa,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,wBAC3B,CAAA;AAAA,wBACA,SAAA,EAAU,6CAAA;AAAA,wBAEV,QAAA,kBAAAA,cAAAA,CAACU,qBAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAClC;AAAA,iBAAA;AAAA,gBAZK;AAAA,eAcR,CAAA;AAAA,cACA,eAAe,MAAA,GAAS,iBAAA,oBACvBP,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAC5C,eAAe,MAAA,GAAS,iBAAA;AAAA,gBAAkB;AAAA,eAAA,EAC9C;AAAA,aAAA,EAEJ,CAAA;AAAA,YAED,KAAA,CAAM,WAAW,CAAA,oBAChBH,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6CACb,QAAA,EAAA,WAAA,EACH;AAAA,WAAA,EAEJ,CAAA;AAAA,0BACAA,cAAAA,CAACW,0BAAA,EAAA,EAAgB,SAAA,EAAU,YAAA,EAAa;AAAA;AAAA;AAAA,KAC1C,EAEJ,CAAA;AAAA,oBACAX,cAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,gBAAgB,CAAA,EAClF,QAAA,kBAAAG,eAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,mBAAA,EACjB,QAAA,EAAA;AAAA,sBAAAH,cAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,WAAA,EAAa,iBAAA;AAAA,UACb,SAAA,EAAU,YAAA;AAAA,UACV,KAAA,EAAO,MAAA;AAAA,UACP,aAAA,EAAe;AAAA;AAAA,OACjB;AAAA,sBACAG,gBAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,+BAAA,EACrB,QAAA,EAAA;AAAA,UAAA,CAAC,CAAC,QAAA,IAAY,MAAA,oBACbA,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,SAAS,MAAM;AACb,gBAAA,OAAA,CAAQ,KAAK,CAAA;AACb,gBAAA,QAAA,CAAS,MAAM,CAAA;AAAA,cACjB,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAH,cAAAA,CAACY,mBAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,gCAC9BT,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAW,QAAA,EAAA;AAAA,kBAAA,UAAA;AAAA,kBAAS,MAAA;AAAA,kBAAO;AAAA,iBAAA,EAAC;AAAA;AAAA;AAAA,WAC9C;AAAA,0BAEFH,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6CAA4C,QAAA,EAAA,kBAAA,EAE5D;AAAA,SAAA,EACF,CAAA;AAAA,wBACAA,cAAAA,CAAC,YAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,2BACZG,eAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,YAEvB,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,QAAA,EAAU,MAAM,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA;AAAA,YACzC,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,OAAA,IAAW,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,YAC9D,SAAA,EAAW,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,OAAA,IAAW,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,YAE/D,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,KAAA;AAAA,8BACRH,cAAAA;AAAA,gBAACa,oBAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,SAAA;AAAA,oBACA,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,KAAK,IAAI,aAAA,GAAgB;AAAA;AACjD;AAAA;AACF;AAAA,WAAA;AAAA,UAZK,MAAA,CAAO;AAAA,SAcf,CAAA,EACH;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,eAAA","file":"multi-combobox.cjs","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow 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-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\";\n\nimport * as React from \"react\";\nimport type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport { cn } from \"../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/25 data-[selected=true]:bg-secondary/50 data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { cn } from \"../lib/utils\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./command\"\nimport { PopoverContent } from \"./popover\"\nimport { CheckIcon, ChevronDownIcon, Cross2Icon, PlusIcon } from \"@radix-ui/react-icons\"\n\ninterface MultiComboboxOption {\n value: string\n label: string\n}\n\ninterface MultiComboboxProps {\n children?: React.ReactNode\n options: MultiComboboxOption[]\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n className?: string\n value?: string[]\n onValueChange?: (value: string[]) => void\n onCreate?: (value: string) => void;\n onSelect?: (value: string[]) => void\n maxDisplayedItems?: number\n contentClassName?: string\n asChild?: boolean\n}\n\nconst MultiCombobox = React.forwardRef<HTMLDivElement, MultiComboboxProps>(({\n options,\n placeholder = \"Select options...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No options found.\",\n className,\n contentClassName,\n value: controlledValue,\n onValueChange,\n onSelect,\n onCreate,\n maxDisplayedItems = 3,\n asChild,\n children,\n}, ref) => {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState<string[]>(controlledValue || [])\n const [search, setSearch] = React.useState(\"\")\n\n React.useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleSelect = React.useCallback((currentValue: string) => {\n const newValue = value.includes(currentValue)\n ? value.filter(v => v !== currentValue)\n : [...value, currentValue]\n \n setValue(newValue)\n onValueChange?.(newValue)\n onSelect?.(newValue)\n }, [value, onValueChange, onSelect])\n\n const handleRemove = React.useCallback((valueToRemove: string) => {\n const newValue = value.filter(v => v !== valueToRemove)\n setValue(newValue)\n onValueChange?.(newValue)\n onSelect?.(newValue)\n }, [value, onValueChange, onSelect])\n\n const selectedLabels = React.useMemo(() => {\n return value.map(v => options.find(opt => opt.value === v)?.label).filter(Boolean)\n }, [value, options])\n \n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {asChild ? children : (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n >\n <div className=\"flex flex-wrap gap-1 items-center\">\n {value.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {selectedLabels.slice(0, maxDisplayedItems).map((label, index) => (\n <div\n key={index}\n className=\"flex items-center gap-1 bg-secondary px-2 py-0.5 rounded-md text-sm\"\n >\n <span>{label}</span>\n <div\n onClick={(e) => {\n e.stopPropagation()\n handleRemove(value[index])\n }}\n className=\"hover:bg-secondary-foreground/20 rounded-sm\"\n >\n <Cross2Icon className=\"h-3 w-3\" />\n </div>\n </div>\n ))}\n {selectedLabels.length > maxDisplayedItems && (\n <span className=\"text-sm text-muted-foreground\">\n +{selectedLabels.length - maxDisplayedItems} more\n </span>\n )}\n </div>\n )}\n {value.length === 0 && (\n <span className=\"text-sm text-muted-foreground font-normal\">\n {placeholder}\n </span>\n )}\n </div>\n <ChevronDownIcon className=\"opacity-50\" />\n </Button>\n )}\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-full p-0 !rounded-xl border-none\", contentClassName)}>\n <Command className=\"rounded-xl border\">\n <CommandInput \n placeholder={searchPlaceholder} \n className=\"h-9 w-full\"\n value={search}\n onValueChange={setSearch}\n />\n <CommandList>\n <CommandEmpty className=\"flex flex-col gap-3 px-4 py-5\">\n {!!onCreate && search && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setOpen(false);\n onCreate(search);\n }}\n >\n <PlusIcon className=\"h-4 w-4\" />\n <span className=\"truncate\">Create \"{search}\"</span>\n </Button>\n )}\n <span className=\"text-center text-muted-foreground text-xs\">\n No results found\n </span>\n </CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n className=\"rounded-lg\"\n keywords={[option.label]}\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n onKeyUp={(e) => e.key === 'Enter' && handleSelect(option.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSelect(option.value)}\n >\n {option.label}\n <CheckIcon\n className={cn(\n \"ml-auto\",\n value.includes(option.value) ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n})\n\nMultiCombobox.displayName = \"MultiCombobox\"\n\nexport { MultiCombobox }"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/ui/button.tsx","../../src/ui/command.tsx","../../src/ui/popover.tsx","../../src/ui/multi-combobox.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","CommandPrimitive","jsxs","MagnifyingGlassIcon","React3","PopoverPrimitive","React4","Popover","PopoverTrigger","Cross2Icon","ChevronDownIcon","PlusIcon","CheckIcon"],"mappings":"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","file":"multi-combobox.cjs","sourcesContent":["import { clsx } from \"clsx\";\nimport type { ClassValue } from \"clsx\";\nimport { toast } from \"sonner\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));\n\nexport const capitalize = (str: string) =>\n str?.charAt(0)?.toUpperCase() + str?.slice(1);\n\nexport const handleError = (error: { message: string }): void => {\n toast.error(error.message);\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-foreground-primary-medium text-white shadow hover:bg-primary-hover\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive-hover\",\n outline:\n \"border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy\",\n secondary:\n \"bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy\",\n ghost:\n \"text-foreground-secondary-heavy hover:bg-background-secondary-light\",\n link: \"text-text-links hover:bg-background-secondary-light\",\n accent: \"bg-accent nuvia-gradient-1 text-white\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-[30px] px-3 rounded-xl text-xs\",\n sm: \"h-9 rounded-xl px-3 text-xs\",\n lg: \"h-12 rounded-xl px-8\",\n icon: \"h-10 w-10 min-w-10\",\n \"icon-xs\": \"h-[30px] w-[30px] min-w-[30px]\",\n \"icon-sm\": \"h-9 w-9 min-w-9\",\n bullet: \"h-8 w-8 min-w-8\",\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","\"use client\";\n\nimport * as React from \"react\";\nimport type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport { cn } from \"../lib/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary/25 data-[selected=true]:bg-secondary/50 data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-xl 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { cn } from \"../lib/utils\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./command\"\nimport { PopoverContent } from \"./popover\"\nimport { CheckIcon, ChevronDownIcon, Cross2Icon, PlusIcon } from \"@radix-ui/react-icons\"\n\ninterface MultiComboboxOption {\n value: string\n label: string\n}\n\ninterface MultiComboboxProps {\n children?: React.ReactNode\n options: MultiComboboxOption[]\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n className?: string\n value?: string[]\n onValueChange?: (value: string[]) => void\n onCreate?: (value: string) => void;\n onSelect?: (value: string[]) => void\n maxDisplayedItems?: number\n contentClassName?: string\n asChild?: boolean\n}\n\nconst MultiCombobox = React.forwardRef<HTMLDivElement, MultiComboboxProps>(({\n options,\n placeholder = \"Select options...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No options found.\",\n className,\n contentClassName,\n value: controlledValue,\n onValueChange,\n onSelect,\n onCreate,\n maxDisplayedItems = 3,\n asChild,\n children,\n}, ref) => {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState<string[]>(controlledValue || [])\n const [search, setSearch] = React.useState(\"\")\n\n React.useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue)\n }\n }, [controlledValue])\n\n const handleSelect = React.useCallback((currentValue: string) => {\n const newValue = value.includes(currentValue)\n ? value.filter(v => v !== currentValue)\n : [...value, currentValue]\n \n setValue(newValue)\n onValueChange?.(newValue)\n onSelect?.(newValue)\n }, [value, onValueChange, onSelect])\n\n const handleRemove = React.useCallback((valueToRemove: string) => {\n const newValue = value.filter(v => v !== valueToRemove)\n setValue(newValue)\n onValueChange?.(newValue)\n onSelect?.(newValue)\n }, [value, onValueChange, onSelect])\n\n const selectedLabels = React.useMemo(() => {\n return value.map(v => options.find(opt => opt.value === v)?.label).filter(Boolean)\n }, [value, options])\n \n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {asChild ? children : (\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"w-full justify-between\", className)}\n >\n <div className=\"flex flex-wrap gap-1 items-center\">\n {value.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {selectedLabels.slice(0, maxDisplayedItems).map((label, index) => (\n <div\n key={index}\n className=\"flex items-center gap-1 bg-secondary px-2 py-0.5 rounded-md text-sm\"\n >\n <span>{label}</span>\n <div\n onClick={(e) => {\n e.stopPropagation()\n handleRemove(value[index])\n }}\n className=\"hover:bg-secondary-foreground/20 rounded-sm\"\n >\n <Cross2Icon className=\"h-3 w-3\" />\n </div>\n </div>\n ))}\n {selectedLabels.length > maxDisplayedItems && (\n <span className=\"text-sm text-muted-foreground\">\n +{selectedLabels.length - maxDisplayedItems} more\n </span>\n )}\n </div>\n )}\n {value.length === 0 && (\n <span className=\"text-sm text-muted-foreground font-normal\">\n {placeholder}\n </span>\n )}\n </div>\n <ChevronDownIcon className=\"opacity-50\" />\n </Button>\n )}\n </PopoverTrigger>\n <PopoverContent className={cn(\"w-full p-0 !rounded-xl border-none\", contentClassName)}>\n <Command className=\"rounded-xl border\">\n <CommandInput \n placeholder={searchPlaceholder} \n className=\"h-9 w-full\"\n value={search}\n onValueChange={setSearch}\n />\n <CommandList>\n <CommandEmpty className=\"flex flex-col gap-3 px-4 py-5\">\n {!!onCreate && search && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setOpen(false);\n onCreate(search);\n }}\n >\n <PlusIcon className=\"h-4 w-4\" />\n <span className=\"truncate\">Create \"{search}\"</span>\n </Button>\n )}\n <span className=\"text-center text-muted-foreground text-xs\">\n No results found\n </span>\n </CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n className=\"rounded-lg\"\n keywords={[option.label]}\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n onKeyUp={(e) => e.key === 'Enter' && handleSelect(option.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSelect(option.value)}\n >\n {option.label}\n <CheckIcon\n className={cn(\n \"ml-auto\",\n value.includes(option.value) ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n})\n\nMultiCombobox.displayName = \"MultiCombobox\"\n\nexport { MultiCombobox }"]}
@@ -12,12 +12,12 @@ import { MagnifyingGlassIcon, Cross2Icon, ChevronDownIcon, PlusIcon, CheckIcon }
12
12
 
13
13
  var cn = (...inputs) => twMerge(clsx(inputs));
14
14
  var buttonVariants = cva(
15
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
15
+ "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#5A6FC0] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
16
16
  {
17
17
  variants: {
18
18
  variant: {
19
- default: "bg-foreground-primary-medium text-white shadow hover:bg-primary/90",
20
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
19
+ default: "bg-foreground-primary-medium text-white shadow hover:bg-primary-hover",
20
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
21
21
  outline: "border border-input bg-background hover:bg-secondary hover:text-accent-foreground text-foreground-secondary-heavy",
22
22
  secondary: "bg-background-secondary-light hover:background-secondary-light/40 text-foreground-secondary-heavy",
23
23
  ghost: "text-foreground-secondary-heavy hover:bg-background-secondary-light",