@egose/shadcn-theme 0.1.6 → 0.1.8

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 (94) hide show
  1. package/chunk-ELSPE6GB.mjs +43 -0
  2. package/chunk-ELSPE6GB.mjs.map +1 -0
  3. package/{chunk-3ZN766EW.js → chunk-G6WKPZTL.js} +3 -3
  4. package/{chunk-3ZN766EW.js.map → chunk-G6WKPZTL.js.map} +1 -1
  5. package/{chunk-AJLAS62X.js → chunk-LAIO3QZX.js} +4 -4
  6. package/{chunk-AJLAS62X.js.map → chunk-LAIO3QZX.js.map} +1 -1
  7. package/{chunk-MJT6B7OJ.js → chunk-LPDYWZN6.js} +3 -3
  8. package/{chunk-MJT6B7OJ.js.map → chunk-LPDYWZN6.js.map} +1 -1
  9. package/chunk-NCJI2DCV.mjs +130 -0
  10. package/chunk-NCJI2DCV.mjs.map +1 -0
  11. package/chunk-P6L4JTWO.js +44 -0
  12. package/chunk-P6L4JTWO.js.map +1 -0
  13. package/{chunk-432PQWGO.mjs → chunk-RJVQU443.mjs} +2 -2
  14. package/{components/ui/extension/multi-select.mjs → chunk-RNKMPQDZ.mjs} +66 -64
  15. package/chunk-RNKMPQDZ.mjs.map +1 -0
  16. package/chunk-RSFL2TUC.mjs +82 -0
  17. package/chunk-RSFL2TUC.mjs.map +1 -0
  18. package/chunk-S6HQ25BZ.js +83 -0
  19. package/chunk-S6HQ25BZ.js.map +1 -0
  20. package/chunk-WK4MG4VT.js +131 -0
  21. package/chunk-WK4MG4VT.js.map +1 -0
  22. package/{components/ui/extension/multi-select.js → chunk-WXEEDLLR.js} +78 -76
  23. package/chunk-WXEEDLLR.js.map +1 -0
  24. package/{chunk-HKZRXGJ7.mjs → chunk-YDRPNCWF.mjs} +4 -4
  25. package/{chunk-ZMMYQNQV.mjs → chunk-ZFBUIBJH.mjs} +2 -2
  26. package/components/form/hook-multi-select.d.mts +14 -0
  27. package/components/form/hook-multi-select.d.ts +14 -0
  28. package/components/form/hook-multi-select.js +76 -0
  29. package/components/form/hook-multi-select.js.map +1 -0
  30. package/components/form/hook-multi-select.mjs +75 -0
  31. package/components/form/hook-multi-select.mjs.map +1 -0
  32. package/components/form/hook-searchable-select.js +5 -5
  33. package/components/form/hook-searchable-select.mjs +4 -4
  34. package/components/form/hook-tag-picker.d.mts +12 -0
  35. package/components/form/hook-tag-picker.d.ts +12 -0
  36. package/components/form/hook-tag-picker.js +66 -0
  37. package/components/form/hook-tag-picker.js.map +1 -0
  38. package/components/form/hook-tag-picker.mjs +65 -0
  39. package/components/form/hook-tag-picker.mjs.map +1 -0
  40. package/components/form/multi-select.d.mts +25 -1
  41. package/components/form/multi-select.d.ts +25 -1
  42. package/components/form/multi-select.js +20 -1
  43. package/components/form/multi-select.js.map +1 -1
  44. package/components/form/multi-select.mjs +19 -0
  45. package/components/form/searchable-select.js +5 -5
  46. package/components/form/searchable-select.mjs +4 -4
  47. package/components/form/tag-picker.d.mts +21 -0
  48. package/components/form/tag-picker.d.ts +21 -0
  49. package/components/form/tag-picker.js +14 -0
  50. package/components/form/tag-picker.js.map +1 -0
  51. package/components/form/tag-picker.mjs +13 -0
  52. package/components/form/tag-picker.mjs.map +1 -0
  53. package/components/ui/combobox.js +5 -5
  54. package/components/ui/combobox.mjs +2 -2
  55. package/components/ui/command.js +4 -4
  56. package/components/ui/command.mjs +3 -3
  57. package/components/ui/input-group.js +3 -3
  58. package/components/ui/input-group.mjs +2 -2
  59. package/components/ui/multi-select.d.mts +54 -0
  60. package/components/ui/multi-select.d.ts +54 -0
  61. package/components/ui/multi-select.js +29 -0
  62. package/components/ui/multi-select.js.map +1 -0
  63. package/components/ui/multi-select.mjs +28 -0
  64. package/components/ui/multi-select.mjs.map +1 -0
  65. package/components/ui/tag-picker.d.mts +14 -0
  66. package/components/ui/tag-picker.d.ts +14 -0
  67. package/components/ui/tag-picker.js +12 -0
  68. package/components/ui/tag-picker.js.map +1 -0
  69. package/components/ui/tag-picker.mjs +11 -0
  70. package/components/ui/tag-picker.mjs.map +1 -0
  71. package/components/widgets/dialog-manager/index.js +1 -1
  72. package/components/widgets/dialog-manager/index.js.map +1 -1
  73. package/components/widgets/dialog-manager/index.mjs +1 -1
  74. package/layouts/sidebar1/app-sidebar.js +2 -2
  75. package/layouts/sidebar1/app-sidebar.mjs +2 -2
  76. package/layouts/sidebar1/context-switcher.js +1 -1
  77. package/layouts/sidebar1/context-switcher.mjs +1 -1
  78. package/layouts/sidebar1/index.js +3 -3
  79. package/layouts/sidebar1/index.js.map +1 -1
  80. package/layouts/sidebar1/index.mjs +3 -3
  81. package/layouts/sidebar1/nav-menus.js +1 -1
  82. package/layouts/sidebar1/nav-menus.mjs +1 -1
  83. package/layouts/sidebar1/nav-user.js +2 -2
  84. package/layouts/sidebar1/nav-user.mjs +2 -2
  85. package/layouts/simple/index.js +2 -2
  86. package/layouts/simple/index.mjs +3 -3
  87. package/package.json +1 -1
  88. package/components/ui/extension/multi-select.d.mts +0 -53
  89. package/components/ui/extension/multi-select.d.ts +0 -53
  90. package/components/ui/extension/multi-select.js.map +0 -1
  91. package/components/ui/extension/multi-select.mjs.map +0 -1
  92. /package/{chunk-432PQWGO.mjs.map → chunk-RJVQU443.mjs.map} +0 -0
  93. /package/{chunk-HKZRXGJ7.mjs.map → chunk-YDRPNCWF.mjs.map} +0 -0
  94. /package/{chunk-ZMMYQNQV.mjs.map → chunk-ZFBUIBJH.mjs.map} +0 -0
@@ -1,53 +0,0 @@
1
- import { Command } from 'cmdk';
2
- import React__default from 'react';
3
-
4
- type MultiSelectValue = {
5
- value: string;
6
- label: string;
7
- };
8
- interface MultiSelectorProps extends React__default.ComponentPropsWithoutRef<typeof Command> {
9
- values: MultiSelectValue[];
10
- onValuesChange: (value: MultiSelectValue[]) => void;
11
- loop?: boolean;
12
- className?: string;
13
- children?: React__default.ReactNode;
14
- dir?: 'ltr' | 'rtl';
15
- }
16
- declare const MultiSelector: ({ values: value, onValuesChange: onValueChange, loop, className, children, dir, ...props }: MultiSelectorProps) => React__default.JSX.Element;
17
- declare const MultiSelectorTrigger: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
18
- declare const MultiSelectorInput: React__default.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React__default.DetailedHTMLProps<React__default.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, keyof React__default.InputHTMLAttributes<HTMLInputElement> | "key"> & {
19
- ref?: React__default.Ref<HTMLInputElement>;
20
- } & {
21
- asChild?: boolean;
22
- }, keyof React__default.InputHTMLAttributes<HTMLInputElement> | "key" | "asChild">, "type" | "value" | "onChange"> & {
23
- value?: string;
24
- onValueChange?: (search: string) => void;
25
- } & React__default.RefAttributes<HTMLInputElement>, "ref"> & React__default.RefAttributes<HTMLInputElement>>;
26
- declare const MultiSelectorContent: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
27
- declare const MultiSelectorList: React__default.ForwardRefExoticComponent<Omit<{
28
- children?: React__default.ReactNode;
29
- } & Pick<Pick<React__default.DetailedHTMLProps<React__default.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React__default.HTMLAttributes<HTMLDivElement>> & {
30
- ref?: React__default.Ref<HTMLDivElement>;
31
- } & {
32
- asChild?: boolean;
33
- }, "key" | "asChild" | keyof React__default.HTMLAttributes<HTMLDivElement>> & {
34
- label?: string;
35
- } & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
36
- declare const MultiSelectorItem: React__default.ForwardRefExoticComponent<{
37
- value: string;
38
- label: string;
39
- } & Omit<{
40
- children?: React__default.ReactNode;
41
- } & Omit<Pick<Pick<React__default.DetailedHTMLProps<React__default.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React__default.HTMLAttributes<HTMLDivElement>> & {
42
- ref?: React__default.Ref<HTMLDivElement>;
43
- } & {
44
- asChild?: boolean;
45
- }, "key" | "asChild" | keyof React__default.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
46
- disabled?: boolean;
47
- onSelect?: (value: string) => void;
48
- value?: string;
49
- keywords?: string[];
50
- forceMount?: boolean;
51
- } & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
52
-
53
- export { type MultiSelectValue, MultiSelector, MultiSelectorContent, MultiSelectorInput, MultiSelectorItem, MultiSelectorList, MultiSelectorTrigger };
@@ -1,53 +0,0 @@
1
- import { Command } from 'cmdk';
2
- import React__default from 'react';
3
-
4
- type MultiSelectValue = {
5
- value: string;
6
- label: string;
7
- };
8
- interface MultiSelectorProps extends React__default.ComponentPropsWithoutRef<typeof Command> {
9
- values: MultiSelectValue[];
10
- onValuesChange: (value: MultiSelectValue[]) => void;
11
- loop?: boolean;
12
- className?: string;
13
- children?: React__default.ReactNode;
14
- dir?: 'ltr' | 'rtl';
15
- }
16
- declare const MultiSelector: ({ values: value, onValuesChange: onValueChange, loop, className, children, dir, ...props }: MultiSelectorProps) => React__default.JSX.Element;
17
- declare const MultiSelectorTrigger: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
18
- declare const MultiSelectorInput: React__default.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React__default.DetailedHTMLProps<React__default.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, keyof React__default.InputHTMLAttributes<HTMLInputElement> | "key"> & {
19
- ref?: React__default.Ref<HTMLInputElement>;
20
- } & {
21
- asChild?: boolean;
22
- }, keyof React__default.InputHTMLAttributes<HTMLInputElement> | "key" | "asChild">, "type" | "value" | "onChange"> & {
23
- value?: string;
24
- onValueChange?: (search: string) => void;
25
- } & React__default.RefAttributes<HTMLInputElement>, "ref"> & React__default.RefAttributes<HTMLInputElement>>;
26
- declare const MultiSelectorContent: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
27
- declare const MultiSelectorList: React__default.ForwardRefExoticComponent<Omit<{
28
- children?: React__default.ReactNode;
29
- } & Pick<Pick<React__default.DetailedHTMLProps<React__default.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React__default.HTMLAttributes<HTMLDivElement>> & {
30
- ref?: React__default.Ref<HTMLDivElement>;
31
- } & {
32
- asChild?: boolean;
33
- }, "key" | "asChild" | keyof React__default.HTMLAttributes<HTMLDivElement>> & {
34
- label?: string;
35
- } & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
36
- declare const MultiSelectorItem: React__default.ForwardRefExoticComponent<{
37
- value: string;
38
- label: string;
39
- } & Omit<{
40
- children?: React__default.ReactNode;
41
- } & Omit<Pick<Pick<React__default.DetailedHTMLProps<React__default.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React__default.HTMLAttributes<HTMLDivElement>> & {
42
- ref?: React__default.Ref<HTMLDivElement>;
43
- } & {
44
- asChild?: boolean;
45
- }, "key" | "asChild" | keyof React__default.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
46
- disabled?: boolean;
47
- onSelect?: (value: string) => void;
48
- value?: string;
49
- keywords?: string[];
50
- forceMount?: boolean;
51
- } & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
52
-
53
- export { type MultiSelectValue, MultiSelector, MultiSelectorContent, MultiSelectorInput, MultiSelectorItem, MultiSelectorList, MultiSelectorTrigger };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/ui/extension/multi-select.js","../../../../components/ui/extension/multi-select.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/components/ui/extension/multi-select.js","sourcesContent":[null,"\"use client\";\nimport { Badge } from '../badge';\nimport { Command, CommandItem, CommandEmpty, CommandList } from '../command';\nimport { IconX, IconCheck } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport React, { type KeyboardEvent, createContext, forwardRef, useCallback, useContext, useState } from 'react';\n\nimport { cn } from '../../../utils/ui';\n\nexport type MultiSelectValue = {\n value: string;\n label: string;\n};\n\ninterface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive> {\n values: MultiSelectValue[];\n onValuesChange: (value: MultiSelectValue[]) => void;\n loop?: boolean;\n className?: string;\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n}\n\ninterface MultiSelectContextProps {\n value: MultiSelectValue[];\n onValueChange: (value: any) => void;\n open: boolean;\n setOpen: (value: boolean) => void;\n inputValue: string;\n setInputValue: React.Dispatch<React.SetStateAction<string>>;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n ref: React.RefObject<HTMLInputElement | null>;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextProps | null>(null);\n\nconst useMultiSelect = () => {\n const context = useContext(MultiSelectContext);\n if (!context) {\n throw new Error('useMultiSelect must be used within MultiSelectProvider');\n }\n return context;\n};\n\n/**\n * MultiSelect Docs: {@link: https://shadcn-extension.vercel.app/docs/multi-select}\n */\n\n// TODO : expose the visibility of the popup\n\nfunction searchForValue(source: MultiSelectValue[], value: MultiSelectValue) {\n for (let i = 0; i < source.length; i++) {\n if (source[i].value === value.value) {\n return i;\n }\n }\n return -1;\n}\n\nconst MultiSelector = ({\n values: value,\n onValuesChange: onValueChange,\n loop = false,\n className,\n children,\n dir,\n ...props\n}: MultiSelectorProps) => {\n const [inputValue, setInputValue] = useState('');\n const [open, setOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const onValueChangeHandler = useCallback(\n (val: MultiSelectValue) => {\n const element = searchForValue(value, val);\n if (element !== -1) {\n onValueChange(value.filter((_, index) => index !== element));\n } else {\n onValueChange([...value, val]);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n e.stopPropagation();\n const target = inputRef.current;\n\n if (!target) return;\n\n const selectionStart = target.selectionStart ?? 0;\n const selectionEnd = target.selectionEnd ?? 0;\n\n // If there's a selection, do nothing and let the default behavior take over\n if (selectionStart !== selectionEnd) {\n return;\n }\n\n const moveNext = () => {\n const nextIndex = activeIndex + 1;\n setActiveIndex(nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex);\n };\n\n const movePrev = () => {\n const prevIndex = activeIndex - 1;\n setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex);\n };\n\n const moveCurrent = () => {\n const newIndex = activeIndex - 1 <= 0 ? (value.length - 1 === 0 ? -1 : 0) : activeIndex - 1;\n setActiveIndex(newIndex);\n };\n\n switch (e.key) {\n case 'ArrowLeft':\n if (dir === 'rtl') {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n } else {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n }\n break;\n\n case 'ArrowRight':\n if (dir === 'rtl') {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n } else {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n }\n break;\n\n case 'Backspace':\n case 'Delete':\n if (value.length > 0) {\n if (activeIndex !== -1 && activeIndex < value.length) {\n onValueChangeHandler(value[activeIndex]);\n moveCurrent();\n } else {\n if (target.selectionStart === 0) {\n onValueChangeHandler(value[value.length - 1]);\n }\n }\n }\n break;\n\n case 'Enter':\n setOpen(true);\n break;\n\n case 'Escape':\n if (activeIndex !== -1) {\n setActiveIndex(-1);\n } else if (open) {\n setInputValue('');\n setOpen(false);\n }\n break;\n }\n },\n [value, activeIndex, loop],\n );\n\n return (\n <MultiSelectContext.Provider\n value={{\n value,\n onValueChange: onValueChangeHandler,\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeIndex,\n setActiveIndex,\n ref: inputRef,\n }}\n >\n <Command\n onKeyDown={handleKeyDown}\n className={cn('overflow-visible bg-transparent flex flex-col space-y-2', className)}\n dir={dir}\n {...props}\n >\n {children}\n </Command>\n </MultiSelectContext.Provider>\n );\n};\n\nconst MultiSelectorTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { value, onValueChange, activeIndex } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap gap-1 px-2 py-2 ring-1 ring-muted rounded-lg bg-background border rounded-sm',\n {\n 'ring-1 focus-within:ring-ring': activeIndex === -1,\n },\n className,\n )}\n {...props}\n >\n {value.map((item, index) => (\n <Badge\n key={item.value}\n className={cn(\n 'px-1.5 rounded-md flex items-center gap-1',\n activeIndex === index && 'ring-2 ring-muted-foreground ',\n )}\n variant=\"secondary\"\n >\n <span className=\"text-xs\">{item.label}</span>\n\n <button\n aria-label={`Remove ${item} option`}\n aria-roledescription=\"button to remove option\"\n type=\"button\"\n onMouseDown={mousePreventDefault}\n onClick={() => onValueChange(item)}\n >\n <span className=\"sr-only\">Remove {item.label} option</span>\n\n <IconX className=\"h-4 w-4 hover:stroke-destructive\" />\n </button>\n </Badge>\n ))}\n {children}\n </div>\n );\n },\n);\n\nMultiSelectorTrigger.displayName = 'MultiSelectorTrigger';\n\nconst MultiSelectorInput = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => {\n const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef } = useMultiSelect();\n\n return (\n <CommandPrimitive.Input\n {...props}\n tabIndex={0}\n ref={inputRef}\n value={inputValue}\n onValueChange={activeIndex === -1 ? setInputValue : undefined}\n onBlur={() => {\n setInputValue('');\n setOpen(false);\n }}\n onFocus={() => setOpen(true)}\n onClick={() => setActiveIndex(-1)}\n className={cn(\n 'p-0 bg-transparent border-none outline-none focus:outline-none focus:ring-0 placeholder:text-muted-foreground flex-1 text-sm',\n className,\n activeIndex !== -1 && 'caret-transparent',\n )}\n />\n );\n});\n\nMultiSelectorInput.displayName = 'MultiSelectorInput';\n\nconst MultiSelectorContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ children }, ref) => {\n const { open } = useMultiSelect();\n return (\n <div ref={ref} className=\"relative\">\n {open ? children : null}\n </div>\n );\n});\n\nMultiSelectorContent.displayName = 'MultiSelectorContent';\n\nconst MultiSelectorList = forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, children }, ref) => {\n return (\n <CommandList\n ref={ref}\n className={cn(\n 'p-2 flex flex-col gap-2 rounded-md scrollbar-thin scrollbar-track-transparent transition-colors scrollbar-thumb-muted-foreground dark:scrollbar-thumb-muted scrollbar-thumb-rounded-lg w-full absolute bg-background shadow-md z-100 border border-muted top-0',\n className,\n )}\n >\n {children}\n\n <CommandEmpty>\n <span className=\"text-muted-foreground\">No results found</span>\n </CommandEmpty>\n </CommandList>\n );\n});\n\nMultiSelectorList.displayName = 'MultiSelectorList';\n\nconst MultiSelectorItem = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n { value: string; label: string } & React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, value, label, children, ...props }, ref) => {\n const { value: Options, onValueChange, setInputValue } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const isIncluded =\n searchForValue(Options, {\n value: value,\n label: label,\n }) !== -1;\n\n return (\n <CommandItem\n ref={ref}\n {...props}\n onSelect={() => {\n onValueChange({\n value: value,\n label: label,\n });\n setInputValue('');\n }}\n className={cn(\n 'rounded-md cursor-pointer px-2 py-1 transition-colors flex justify-between',\n className,\n isIncluded && 'opacity-50 cursor-default',\n props.disabled && 'opacity-50 cursor-not-allowed',\n )}\n onMouseDown={mousePreventDefault}\n >\n {children}\n {isIncluded && <IconCheck className=\"h-4 w-4\" />}\n </CommandItem>\n );\n});\n\nMultiSelectorItem.displayName = 'MultiSelectorItem';\n\nexport {\n MultiSelector,\n MultiSelectorTrigger,\n MultiSelectorInput,\n MultiSelectorContent,\n MultiSelectorList,\n MultiSelectorItem,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../components/ui/extension/multi-select.tsx"],"sourcesContent":["\"use client\";\nimport { Badge } from '../badge';\nimport { Command, CommandItem, CommandEmpty, CommandList } from '../command';\nimport { IconX, IconCheck } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport React, { type KeyboardEvent, createContext, forwardRef, useCallback, useContext, useState } from 'react';\n\nimport { cn } from '../../../utils/ui';\n\nexport type MultiSelectValue = {\n value: string;\n label: string;\n};\n\ninterface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive> {\n values: MultiSelectValue[];\n onValuesChange: (value: MultiSelectValue[]) => void;\n loop?: boolean;\n className?: string;\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n}\n\ninterface MultiSelectContextProps {\n value: MultiSelectValue[];\n onValueChange: (value: any) => void;\n open: boolean;\n setOpen: (value: boolean) => void;\n inputValue: string;\n setInputValue: React.Dispatch<React.SetStateAction<string>>;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n ref: React.RefObject<HTMLInputElement | null>;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextProps | null>(null);\n\nconst useMultiSelect = () => {\n const context = useContext(MultiSelectContext);\n if (!context) {\n throw new Error('useMultiSelect must be used within MultiSelectProvider');\n }\n return context;\n};\n\n/**\n * MultiSelect Docs: {@link: https://shadcn-extension.vercel.app/docs/multi-select}\n */\n\n// TODO : expose the visibility of the popup\n\nfunction searchForValue(source: MultiSelectValue[], value: MultiSelectValue) {\n for (let i = 0; i < source.length; i++) {\n if (source[i].value === value.value) {\n return i;\n }\n }\n return -1;\n}\n\nconst MultiSelector = ({\n values: value,\n onValuesChange: onValueChange,\n loop = false,\n className,\n children,\n dir,\n ...props\n}: MultiSelectorProps) => {\n const [inputValue, setInputValue] = useState('');\n const [open, setOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const onValueChangeHandler = useCallback(\n (val: MultiSelectValue) => {\n const element = searchForValue(value, val);\n if (element !== -1) {\n onValueChange(value.filter((_, index) => index !== element));\n } else {\n onValueChange([...value, val]);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n e.stopPropagation();\n const target = inputRef.current;\n\n if (!target) return;\n\n const selectionStart = target.selectionStart ?? 0;\n const selectionEnd = target.selectionEnd ?? 0;\n\n // If there's a selection, do nothing and let the default behavior take over\n if (selectionStart !== selectionEnd) {\n return;\n }\n\n const moveNext = () => {\n const nextIndex = activeIndex + 1;\n setActiveIndex(nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex);\n };\n\n const movePrev = () => {\n const prevIndex = activeIndex - 1;\n setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex);\n };\n\n const moveCurrent = () => {\n const newIndex = activeIndex - 1 <= 0 ? (value.length - 1 === 0 ? -1 : 0) : activeIndex - 1;\n setActiveIndex(newIndex);\n };\n\n switch (e.key) {\n case 'ArrowLeft':\n if (dir === 'rtl') {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n } else {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n }\n break;\n\n case 'ArrowRight':\n if (dir === 'rtl') {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n } else {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n }\n break;\n\n case 'Backspace':\n case 'Delete':\n if (value.length > 0) {\n if (activeIndex !== -1 && activeIndex < value.length) {\n onValueChangeHandler(value[activeIndex]);\n moveCurrent();\n } else {\n if (target.selectionStart === 0) {\n onValueChangeHandler(value[value.length - 1]);\n }\n }\n }\n break;\n\n case 'Enter':\n setOpen(true);\n break;\n\n case 'Escape':\n if (activeIndex !== -1) {\n setActiveIndex(-1);\n } else if (open) {\n setInputValue('');\n setOpen(false);\n }\n break;\n }\n },\n [value, activeIndex, loop],\n );\n\n return (\n <MultiSelectContext.Provider\n value={{\n value,\n onValueChange: onValueChangeHandler,\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeIndex,\n setActiveIndex,\n ref: inputRef,\n }}\n >\n <Command\n onKeyDown={handleKeyDown}\n className={cn('overflow-visible bg-transparent flex flex-col space-y-2', className)}\n dir={dir}\n {...props}\n >\n {children}\n </Command>\n </MultiSelectContext.Provider>\n );\n};\n\nconst MultiSelectorTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { value, onValueChange, activeIndex } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap gap-1 px-2 py-2 ring-1 ring-muted rounded-lg bg-background border rounded-sm',\n {\n 'ring-1 focus-within:ring-ring': activeIndex === -1,\n },\n className,\n )}\n {...props}\n >\n {value.map((item, index) => (\n <Badge\n key={item.value}\n className={cn(\n 'px-1.5 rounded-md flex items-center gap-1',\n activeIndex === index && 'ring-2 ring-muted-foreground ',\n )}\n variant=\"secondary\"\n >\n <span className=\"text-xs\">{item.label}</span>\n\n <button\n aria-label={`Remove ${item} option`}\n aria-roledescription=\"button to remove option\"\n type=\"button\"\n onMouseDown={mousePreventDefault}\n onClick={() => onValueChange(item)}\n >\n <span className=\"sr-only\">Remove {item.label} option</span>\n\n <IconX className=\"h-4 w-4 hover:stroke-destructive\" />\n </button>\n </Badge>\n ))}\n {children}\n </div>\n );\n },\n);\n\nMultiSelectorTrigger.displayName = 'MultiSelectorTrigger';\n\nconst MultiSelectorInput = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => {\n const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef } = useMultiSelect();\n\n return (\n <CommandPrimitive.Input\n {...props}\n tabIndex={0}\n ref={inputRef}\n value={inputValue}\n onValueChange={activeIndex === -1 ? setInputValue : undefined}\n onBlur={() => {\n setInputValue('');\n setOpen(false);\n }}\n onFocus={() => setOpen(true)}\n onClick={() => setActiveIndex(-1)}\n className={cn(\n 'p-0 bg-transparent border-none outline-none focus:outline-none focus:ring-0 placeholder:text-muted-foreground flex-1 text-sm',\n className,\n activeIndex !== -1 && 'caret-transparent',\n )}\n />\n );\n});\n\nMultiSelectorInput.displayName = 'MultiSelectorInput';\n\nconst MultiSelectorContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ children }, ref) => {\n const { open } = useMultiSelect();\n return (\n <div ref={ref} className=\"relative\">\n {open ? children : null}\n </div>\n );\n});\n\nMultiSelectorContent.displayName = 'MultiSelectorContent';\n\nconst MultiSelectorList = forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, children }, ref) => {\n return (\n <CommandList\n ref={ref}\n className={cn(\n 'p-2 flex flex-col gap-2 rounded-md scrollbar-thin scrollbar-track-transparent transition-colors scrollbar-thumb-muted-foreground dark:scrollbar-thumb-muted scrollbar-thumb-rounded-lg w-full absolute bg-background shadow-md z-100 border border-muted top-0',\n className,\n )}\n >\n {children}\n\n <CommandEmpty>\n <span className=\"text-muted-foreground\">No results found</span>\n </CommandEmpty>\n </CommandList>\n );\n});\n\nMultiSelectorList.displayName = 'MultiSelectorList';\n\nconst MultiSelectorItem = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n { value: string; label: string } & React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, value, label, children, ...props }, ref) => {\n const { value: Options, onValueChange, setInputValue } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const isIncluded =\n searchForValue(Options, {\n value: value,\n label: label,\n }) !== -1;\n\n return (\n <CommandItem\n ref={ref}\n {...props}\n onSelect={() => {\n onValueChange({\n value: value,\n label: label,\n });\n setInputValue('');\n }}\n className={cn(\n 'rounded-md cursor-pointer px-2 py-1 transition-colors flex justify-between',\n className,\n isIncluded && 'opacity-50 cursor-default',\n props.disabled && 'opacity-50 cursor-not-allowed',\n )}\n onMouseDown={mousePreventDefault}\n >\n {children}\n {isIncluded && <IconCheck className=\"h-4 w-4\" />}\n </CommandItem>\n );\n});\n\nMultiSelectorItem.displayName = 'MultiSelectorItem';\n\nexport {\n MultiSelector,\n MultiSelectorTrigger,\n MultiSelectorInput,\n MultiSelectorContent,\n MultiSelectorList,\n MultiSelectorItem,\n};\n"],"mappings":"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","names":["_a","_b"]}