UNPKG

ivt

Version:

Ivt Components Library

1 lines 19.7 kB
{"version":3,"file":"index.mjs","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-x.js","../../node_modules/lucide-react/dist/esm/icons/wand-sparkles.js","../../src/components/ui/multi-select/multi-select.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.479.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n];\nconst CircleX = createLucideIcon(\"CircleX\", __iconNode);\n\nexport { __iconNode, CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n","/**\n * @license lucide-react v0.479.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72\",\n key: \"ul74o6\"\n }\n ],\n [\"path\", { d: \"m14 7 3 3\", key: \"1r5n42\" }],\n [\"path\", { d: \"M5 6v4\", key: \"ilb8ba\" }],\n [\"path\", { d: \"M19 14v4\", key: \"blhpug\" }],\n [\"path\", { d: \"M10 2v2\", key: \"7u0qdc\" }],\n [\"path\", { d: \"M7 8H3\", key: \"zfb6yr\" }],\n [\"path\", { d: \"M21 16h-4\", key: \"1cnmox\" }],\n [\"path\", { d: \"M11 3H9\", key: \"1obp7u\" }]\n];\nconst WandSparkles = createLucideIcon(\"WandSparkles\", __iconNode);\n\nexport { __iconNode, WandSparkles as default };\n//# sourceMappingURL=wand-sparkles.js.map\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport { CheckIcon, ChevronDown, WandSparkles, XCircle, XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n\tCommandSeparator,\n} from \"@/components/ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Variants for the multi-select component to handle different styles.\n * Uses class-variance-authority (cva) to define different styles based on \"variant\" prop.\n */\nconst multiSelectVariants = cva(\n\t\"m-1 transition ease-in-out delay-150 hover:-translate-y-1 hover:scale-110 duration-300\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-foreground/10 text-foreground bg-card hover:bg-card/80\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"border-foreground/10 bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n\t\t\t\tinverted: \"inverted\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t},\n\t},\n);\n\n/**\n * Props for MultiSelect component\n */\ninterface MultiSelectProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tVariantProps<typeof multiSelectVariants> {\n\t/**\n\t * An array of option objects to be displayed in the multi-select component.\n\t * Each option object has a label, value, and an optional icon.\n\t */\n\toptions: {\n\t\t/** The text to display for the option. */\n\t\tlabel: string;\n\t\t/** The unique value associated with the option. */\n\t\tvalue: string;\n\t\t/** Optional icon component to display alongside the option. */\n\t\ticon?: React.ComponentType<{ className?: string }>;\n\t}[];\n\n\t/**\n\t * Callback function triggered when the selected values change.\n\t * Receives an array of the new selected values.\n\t */\n\tonValueChange: (value: string[]) => void;\n\n\t/** The default selected values when the component mounts. */\n\tdefaultValue?: string[];\n\n\t/**\n\t * Placeholder text to be displayed when no values are selected.\n\t * Optional, defaults to \"Select options\".\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Animation duration in seconds for the visual effects (e.g., bouncing badges).\n\t * Optional, defaults to 0 (no animation).\n\t */\n\tanimation?: number;\n\n\t/**\n\t * Maximum number of items to display. Extra selected items will be summarized.\n\t * Optional, defaults to 3.\n\t */\n\tmaxCount?: number;\n\n\t/**\n\t * The modality of the popover. When set to true, interaction with outside elements\n\t * will be disabled and only popover content will be visible to screen readers.\n\t * Optional, defaults to false.\n\t */\n\tmodalPopover?: boolean;\n\n\t/**\n\t * If true, renders the multi-select component as a child of another component.\n\t * Optional, defaults to false.\n\t */\n\tasChild?: boolean;\n\n\t/**\n\t * Additional class names to apply custom styles to the multi-select component.\n\t * Optional, can be used to add custom styles.\n\t */\n\tclassName?: string;\n}\n\nexport const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(\n\t(\n\t\t{\n\t\t\toptions,\n\t\t\tonValueChange,\n\t\t\tvariant,\n\t\t\tdefaultValue = [],\n\t\t\tplaceholder = \"Select options\",\n\t\t\tanimation = 0,\n\t\t\tmaxCount = 3,\n\t\t\tmodalPopover = false,\n\t\t\tasChild = false,\n\t\t\tclassName,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst [selectedValues, setSelectedValues] = React.useState<string[]>(defaultValue);\n\t\tconst [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n\t\tconst [isAnimating, setIsAnimating] = React.useState(false);\n\n\t\tconst handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tsetIsPopoverOpen(true);\n\t\t\t} else if (event.key === \"Backspace\" && !event.currentTarget.value) {\n\t\t\t\tconst newSelectedValues = [...selectedValues];\n\t\t\t\tnewSelectedValues.pop();\n\t\t\t\tsetSelectedValues(newSelectedValues);\n\t\t\t\tonValueChange(newSelectedValues);\n\t\t\t}\n\t\t};\n\n\t\tconst toggleOption = (option: string) => {\n\t\t\tconst newSelectedValues = selectedValues.includes(option)\n\t\t\t\t? selectedValues.filter((value) => value !== option)\n\t\t\t\t: [...selectedValues, option];\n\t\t\tsetSelectedValues(newSelectedValues);\n\t\t\tonValueChange(newSelectedValues);\n\t\t};\n\n\t\tconst handleClear = () => {\n\t\t\tsetSelectedValues([]);\n\t\t\tonValueChange([]);\n\t\t};\n\n\t\tconst handleTogglePopover = () => {\n\t\t\tsetIsPopoverOpen((prev) => !prev);\n\t\t};\n\n\t\tconst clearExtraOptions = () => {\n\t\t\tconst newSelectedValues = selectedValues.slice(0, maxCount);\n\t\t\tsetSelectedValues(newSelectedValues);\n\t\t\tonValueChange(newSelectedValues);\n\t\t};\n\n\t\tconst toggleAll = () => {\n\t\t\tif (selectedValues.length === options.length) {\n\t\t\t\thandleClear();\n\t\t\t} else {\n\t\t\t\tconst allValues = options.map((option) => option.value);\n\t\t\t\tsetSelectedValues(allValues);\n\t\t\t\tonValueChange(allValues);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<Popover open={isPopoverOpen} onOpenChange={setIsPopoverOpen} modal={modalPopover}>\n\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tonClick={handleTogglePopover}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex h-auto min-h-10 w-full items-center justify-between rounded-md border bg-inherit p-1 hover:bg-inherit [&_svg]:pointer-events-auto\",\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{selectedValues.length > 0 ? (\n\t\t\t\t\t\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t\t\t\t\t\t<div className=\"flex flex-wrap items-center\">\n\t\t\t\t\t\t\t\t\t{selectedValues.slice(0, maxCount).map((value) => {\n\t\t\t\t\t\t\t\t\t\tconst option = options.find((o) => o.value === value);\n\t\t\t\t\t\t\t\t\t\tconst IconComponent = option?.icon;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\tkey={value}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\tisAnimating ? \"animate-bounce\" : \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiSelectVariants({ variant }),\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ animationDuration: `${animation}s` }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{IconComponent && <IconComponent className=\"mr-2 h-4 w-4\" />}\n\t\t\t\t\t\t\t\t\t\t\t\t{option?.label}\n\t\t\t\t\t\t\t\t\t\t\t\t<XCircle\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-2 h-4 w-4 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleOption(value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t{selectedValues.length > maxCount && (\n\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\"text-foreground border-foreground/1 bg-transparent hover:bg-transparent\",\n\t\t\t\t\t\t\t\t\t\t\t\tisAnimating ? \"animate-bounce\" : \"\",\n\t\t\t\t\t\t\t\t\t\t\t\tmultiSelectVariants({ variant }),\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ animationDuration: `${animation}s` }}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{`+ ${selectedValues.length - maxCount} more`}\n\t\t\t\t\t\t\t\t\t\t\t<XCircle\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-2 h-4 w-4 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\tclearExtraOptions();\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t<XIcon\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground mx-2 h-4 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\thandleClear();\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Separator orientation=\"vertical\" className=\"flex h-full min-h-6\" />\n\t\t\t\t\t\t\t\t\t<ChevronDown className=\"text-muted-foreground mx-2 h-4 cursor-pointer\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"mx-auto flex w-full items-center justify-between\">\n\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground mx-3 text-sm\">{placeholder}</span>\n\t\t\t\t\t\t\t\t<ChevronDown className=\"text-muted-foreground mx-2 h-4 cursor-pointer\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</PopoverTrigger>\n\t\t\t\t<PopoverContent\n\t\t\t\t\tclassName=\"w-auto p-0\"\n\t\t\t\t\talign=\"start\"\n\t\t\t\t\tonEscapeKeyDown={() => setIsPopoverOpen(false)}\n\t\t\t\t>\n\t\t\t\t\t<Command>\n\t\t\t\t\t\t<CommandInput placeholder=\"Search...\" onKeyDown={handleInputKeyDown} />\n\t\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t\t<CommandEmpty>No results found.</CommandEmpty>\n\t\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t\t<CommandItem key=\"all\" onSelect={toggleAll} className=\"cursor-pointer\">\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"border-primary mr-2 flex h-4 w-4 items-center justify-center rounded-sm border\",\n\t\t\t\t\t\t\t\t\t\t\tselectedValues.length === options.length\n\t\t\t\t\t\t\t\t\t\t\t\t? \"bg-primary text-primary-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t: \"opacity-50 [&_svg]:invisible\",\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<CheckIcon className=\"h-4 w-4 text-white\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<span>(Select All)</span>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t{options.map((option) => {\n\t\t\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(option.value);\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={() => toggleOption(option.value)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"border-primary mr-2 flex h-4 w-4 items-center justify-center rounded-sm border\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"bg-primary text-primary-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"opacity-50 [&_svg]:invisible\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CheckIcon className=\"h-4 w-4 text-white\" />\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t{option.icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t<option.icon className=\"text-muted-foreground mr-2 h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span>{option.label}</span>\n\t\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t\t\t<CommandSeparator />\n\t\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t{selectedValues.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\t\t\tonSelect={handleClear}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex-1 cursor-pointer justify-center\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tClear\n\t\t\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t\t\t<Separator orientation=\"vertical\" className=\"flex h-full min-h-6\" />\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\tonSelect={() => setIsPopoverOpen(false)}\n\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-full flex-1 cursor-pointer justify-center\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tClose\n\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t\t</CommandList>\n\t\t\t\t\t</Command>\n\t\t\t\t</PopoverContent>\n\t\t\t\t{animation > 0 && selectedValues.length > 0 && (\n\t\t\t\t\t<WandSparkles\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"text-foreground bg-background my-2 h-3 w-3 cursor-pointer\",\n\t\t\t\t\t\t\tisAnimating ? \"\" : \"text-muted-foreground\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={() => setIsAnimating(!isAnimating)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Popover>\n\t\t);\n\t},\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n"],"names":["CircleX","createLucideIcon","cx","cy","r","key","d","WandSparkles","multiSelectVariants","cva","variants","variant","default","secondary","destructive","inverted","defaultVariants","MultiSelect","React","forwardRef","options","onValueChange","defaultValue","placeholder","animation","maxCount","modalPopover","asChild","className","props","ref","selectedValues","setSelectedValues","useState","isPopoverOpen","setIsPopoverOpen","isAnimating","setIsAnimating","toggleOption","option","newSelectedValues","includes","filter","value","handleClear","createElement","Popover","open","onOpenChange","modal","PopoverTrigger","Button","onClick","prev","cn","length","div","slice","map","find","o","IconComponent","icon","Badge","style","animationDuration","label","XCircle","event","stopPropagation","clearExtraOptions","XIcon","Separator","orientation","ChevronDown","span","PopoverContent","align","onEscapeKeyDown","Command","CommandInput","onKeyDown","currentTarget","pop","CommandList","CommandEmpty","CommandGroup","CommandItem","onSelect","allValues","CheckIcon","isSelected","CommandSeparator","Fragment","displayName"],"mappings":"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","x_google_ignoreList":[0,1]}