@next-degree/pickle-shared-js 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/layout.cjs +1 -1
- package/dist/app/layout.cjs.map +1 -1
- package/dist/app/layout.css.map +1 -1
- package/dist/app/layout.d.cts +2 -2
- package/dist/app/layout.d.ts +2 -2
- package/dist/app/layout.js +1 -1
- package/dist/app/layout.js.map +1 -1
- package/dist/app/page.cjs +1 -1
- package/dist/app/page.cjs.map +1 -1
- package/dist/app/page.d.cts +2 -2
- package/dist/app/page.d.ts +2 -2
- package/dist/app/page.js +1 -1
- package/dist/app/page.js.map +1 -1
- package/dist/components/demos/ComboboxDemo.cjs +1 -1
- package/dist/components/demos/ComboboxDemo.cjs.map +1 -1
- package/dist/components/demos/ComboboxDemo.d.cts +2 -2
- package/dist/components/demos/ComboboxDemo.d.ts +2 -2
- package/dist/components/demos/ComboboxDemo.js +1 -1
- package/dist/components/demos/ComboboxDemo.js.map +1 -1
- package/dist/components/demos/index.cjs +1 -1
- package/dist/components/demos/index.cjs.map +1 -1
- package/dist/components/demos/index.d.cts +2 -2
- package/dist/components/demos/index.d.ts +2 -2
- package/dist/components/demos/index.js +1 -1
- package/dist/components/demos/index.js.map +1 -1
- package/dist/components/primitives/command.cjs +1 -1
- package/dist/components/primitives/command.cjs.map +1 -1
- package/dist/components/primitives/command.d.cts +3 -2
- package/dist/components/primitives/command.d.ts +3 -2
- package/dist/components/primitives/command.js +1 -1
- package/dist/components/primitives/command.js.map +1 -1
- package/dist/components/primitives/dialog.cjs +1 -1
- package/dist/components/primitives/dialog.cjs.map +1 -1
- package/dist/components/primitives/dialog.d.cts +3 -2
- package/dist/components/primitives/dialog.d.ts +3 -2
- package/dist/components/primitives/dialog.js +1 -1
- package/dist/components/primitives/dialog.js.map +1 -1
- package/dist/components/primitives/popover.cjs +1 -1
- package/dist/components/primitives/popover.cjs.map +1 -1
- package/dist/components/primitives/popover.js +1 -1
- package/dist/components/primitives/popover.js.map +1 -1
- package/dist/components/primitives/separator.cjs +1 -1
- package/dist/components/primitives/separator.cjs.map +1 -1
- package/dist/components/primitives/separator.js +1 -1
- package/dist/components/primitives/separator.js.map +1 -1
- package/dist/components/ui/Badge.cjs +1 -1
- package/dist/components/ui/Badge.cjs.map +1 -1
- package/dist/components/ui/Badge.d.cts +2 -1
- package/dist/components/ui/Badge.d.ts +2 -1
- package/dist/components/ui/Badge.js +1 -1
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Button.cjs +1 -1
- package/dist/components/ui/Button.cjs.map +1 -1
- package/dist/components/ui/Button.js +1 -1
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Checkbox.cjs +1 -1
- package/dist/components/ui/Checkbox.cjs.map +1 -1
- package/dist/components/ui/Checkbox.js +1 -1
- package/dist/components/ui/Checkbox.js.map +1 -1
- package/dist/components/ui/Chip.cjs +1 -1
- package/dist/components/ui/Chip.cjs.map +1 -1
- package/dist/components/ui/Chip.d.cts +2 -1
- package/dist/components/ui/Chip.d.ts +2 -1
- package/dist/components/ui/Chip.js +1 -1
- package/dist/components/ui/Chip.js.map +1 -1
- package/dist/components/ui/Combobox.cjs +1 -1
- package/dist/components/ui/Combobox.cjs.map +1 -1
- package/dist/components/ui/Combobox.js +1 -1
- package/dist/components/ui/Combobox.js.map +1 -1
- package/dist/components/ui/Label.cjs +1 -1
- package/dist/components/ui/Label.cjs.map +1 -1
- package/dist/components/ui/Label.d.cts +2 -2
- package/dist/components/ui/Label.d.ts +2 -2
- package/dist/components/ui/Label.js +1 -1
- package/dist/components/ui/Label.js.map +1 -1
- package/dist/components/ui/ListItem.cjs +1 -1
- package/dist/components/ui/ListItem.cjs.map +1 -1
- package/dist/components/ui/ListItem.d.cts +2 -2
- package/dist/components/ui/ListItem.d.ts +2 -2
- package/dist/components/ui/ListItem.js +1 -1
- package/dist/components/ui/ListItem.js.map +1 -1
- package/dist/components/ui/Select.cjs +1 -1
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +1 -1
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/styles/globals.css.map +1 -1
- package/package.json +8 -4
- package/.eslintrc.cjs +0 -58
- package/next-env.d.ts +0 -5
- package/next.config.ts +0 -7
- package/postcss.config.mjs +0 -9
- package/prettier.config.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/Label.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { type ComponentPropsWithoutRef } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ninterface Props extends ComponentPropsWithoutRef<'label'> {\n text?: string\n}\n\nfunction Label({ text, className, ...props }: Readonly<Props>) {\n if (!text) return null\n\n return (\n <label\n className={cn(\n 'text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {text}\n </label>\n )\n}\n\nexport default Label\n"],"mappings":"AAAA,OAA0B,QAAAA,MAAY,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/Label.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { type ComponentPropsWithoutRef } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ninterface Props extends ComponentPropsWithoutRef<'label'> {\n text?: string\n}\n\nfunction Label({ text, className, ...props }: Readonly<Props>) {\n if (!text) return null\n\n return (\n <label\n className={cn(\n 'text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {text}\n </label>\n )\n}\n\nexport default Label\n"],"mappings":"AAAA,OAA0B,QAAAA,MAAY,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CCOI,cAAAC,MAAA,oBAJJ,SAASC,EAAM,CAAE,KAAAC,EAAM,UAAAC,EAAW,GAAGC,CAAM,EAAoB,CAC7D,OAAKF,EAGHF,EAAC,SACC,UAAWK,EACT,iFACAF,CACF,EACC,GAAGC,EAEH,SAAAF,EACH,EAXgB,IAapB,CAEA,IAAOI,EAAQL","names":["clsx","twMerge","cn","inputs","jsx","Label","text","className","props","cn","Label_default"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var w=Object.create;var m=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var z=(e,o)=>{for(var t in o)m(e,t,{get:o[t],enumerable:!0})},x=(e,o,t,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of V(o))!L.call(e,r)&&r!==t&&m(e,r,{get:()=>o[r],enumerable:!(n=W(o,r))||n.enumerable});return e};var K=(e,o,t)=>(t=e!=null?w(E(e)):{},x(o||!e||!e.__esModule?m(t,"default",{value:e,enumerable:!0}):t,e)),M=e=>x(m({},"__esModule",{value:!0}),e);var S={};z(S,{default:()=>F});module.exports=M(S);var k=require("clsx"),C=require("tailwind-merge");function s(...e){return(0,C.twMerge)((0,k.clsx)(e))}var N=require("lucide-react");var c=K(require("@radix-ui/react-checkbox"),1),p=require("lucide-react"),h=require("react");var a=require("react/jsx-runtime"),y=(0,h.forwardRef)(({className:e,...o},t)=>(0,a.jsx)(c.Root,{ref:t,className:s("group","peer","h-5","w-5","shrink-0","rounded-md","border","border-grey-10","outline","outline-1","outline-offset-2","outline-transparent","hover:border-grey-20","focus:outline-purple-100","active:border-green-80","disabled:cursor-not-allowed","disabled:opacity-50","data-[state=checked]:bg-green-80","data-[state=indeterminate]:bg-green-80","data-[state=checked]:text-white","data-[state=indeterminate]:text-primary-foreground",o.disabled&&"data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",e),...o,children:(0,a.jsxs)(c.Indicator,{className:"flex items-center justify-center text-current",children:[(0,a.jsx)(p.Check,{className:"hidden h-4 w-4 group-data-[state=checked]:block"}),(0,a.jsx)(p.Minus,{className:"hidden h-4 w-4 group-data-[state=indeterminate]:block"})]})}));y.displayName=c.Root.displayName;var v=(0,h.forwardRef)(({classNames:e,children:o,...t},n)=>{let{disabled:r}=t,l=t.id??`${t.name??t.value?.toString()}-checkbox`,f=r?"text-grey-40 pointer-events-none":"";return(0,a.jsxs)("div",{className:s("flex space-x-2",e?.wrapper),children:[(0,a.jsx)(y,{id:l,disabled:r,ref:n,...t}),(0,a.jsx)("label",{htmlFor:l,className:s(f,e?.label),children:o})]})});v.displayName="Checkbox";var P=v;var u=require("lucide-react"),i=require("react/jsx-runtime");function D({icon:e,hasCheckbox:o,isSelected:t,className:n,title:r,value:l,description:f,...R}){let b=e?(d=>{if(d in u.icons){let I=u.icons[d];return(0,i.jsx)(I,{size:14})}return null})(e):void 0;return(0,i.jsxs)("li",{className:s("group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",n),...R,"data-state":t?"checked":"unchecked",children:[b&&(0,i.jsx)("span",{className:"mr-2",children:b}),o&&(0,i.jsx)(P,{id:l,checked:t,onClick:d=>d.preventDefault()}),(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{children:r}),(0,i.jsx)("p",{className:"text-xs text-grey-80",children:f})]}),(0,i.jsx)(N.CheckIcon,{className:"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",size:16})]})}var F=D;
|
|
2
2
|
//# sourceMappingURL=ListItem.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ui/ListItem.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Checkbox.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { CheckIcon } from 'lucide-react'\nimport { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport Checkbox from '@/components/ui/Checkbox'\nimport { icons } from 'lucide-react'\n\ntype IconKey = keyof typeof icons\n\ninterface ListItemProps extends ComponentPropsWithoutRef<'li'> {\n icon?: string\n hasCheckbox?: boolean\n isSelected?: boolean\n title: string\n value: string\n description?: string\n}\n\nfunction ListItem({\n icon,\n hasCheckbox,\n isSelected,\n className,\n title,\n value,\n description,\n ...props\n}: ListItemProps) {\n const getIconIfValid = (icon: string): ReactNode => {\n if (icon in icons) {\n const IconComponent = icons[icon as IconKey]\n return <IconComponent size={14} />\n }\n return null\n }\n\n const optionIcon = icon ? getIconIfValid(icon) : undefined\n\n return (\n <li\n className={cn(\n 'group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm',\n className\n )}\n {...props}\n data-state={isSelected ? 'checked' : 'unchecked'}\n >\n {optionIcon && <span className=\"mr-2\">{optionIcon}</span>}\n {hasCheckbox && (\n <Checkbox id={value} checked={isSelected} onClick={(e) => e.preventDefault()} />\n )}\n <div>\n <p>{title}</p>\n <p className=\"text-xs text-grey-80\">{description}</p>\n </div>\n\n <CheckIcon\n className=\"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block\"\n size={16}\n />\n </li>\n )\n}\n\nexport default ListItem\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n type ElementRef,\n forwardRef,\n type PropsWithChildren,\n} from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst CheckboxToggle = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'group',\n 'peer',\n 'h-5',\n 'w-5',\n 'shrink-0',\n 'rounded-md',\n 'border',\n 'border-grey-10',\n 'outline',\n 'outline-1',\n 'outline-offset-2',\n 'outline-transparent',\n 'hover:border-grey-20',\n 'focus:outline-purple-100',\n 'active:border-green-80',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=checked]:bg-green-80',\n 'data-[state=indeterminate]:bg-green-80',\n 'data-[state=checked]:text-white',\n 'data-[state=indeterminate]:text-primary-foreground',\n props.disabled &&\n 'data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"hidden h-4 w-4 group-data-[state=checked]:block\" />\n <Minus className=\"hidden h-4 w-4 group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckboxToggle.displayName = CheckboxPrimitive.Root.displayName\n\ninterface Props extends CheckboxPrimitive.CheckboxProps, PropsWithChildren {\n error?: string\n classNames?: {\n wrapper?: string\n label?: string\n }\n}\n\nconst Checkbox = forwardRef<ElementRef<typeof CheckboxPrimitive.Root>, Props>(\n ({ classNames, children, ...props }, ref) => {\n const { disabled } = props\n const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`\n const labelClassName = disabled ? 'text-grey-40 pointer-events-none' : ''\n return (\n <div className={cn('flex space-x-2', classNames?.wrapper)}>\n <CheckboxToggle id={id} disabled={disabled} ref={ref} {...props} />\n <label htmlFor={id} className={cn(labelClassName, classNames?.label)}>\n {children}\n </label>\n </div>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GCAA,IAAAI,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CDJA,IAAAC,EAA0B,wBEC1B,IAAAC,EAAmC,yCACnCC,EAA6B,wBAC7BC,EAKO,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/ListItem.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Checkbox.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { CheckIcon } from 'lucide-react'\nimport { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport Checkbox from '@/components/ui/Checkbox'\nimport { icons } from 'lucide-react'\n\ntype IconKey = keyof typeof icons\n\ninterface ListItemProps extends ComponentPropsWithoutRef<'li'> {\n icon?: string\n hasCheckbox?: boolean\n isSelected?: boolean\n title: string\n value: string\n description?: string\n}\n\nfunction ListItem({\n icon,\n hasCheckbox,\n isSelected,\n className,\n title,\n value,\n description,\n ...props\n}: ListItemProps) {\n const getIconIfValid = (icon: string): ReactNode => {\n if (icon in icons) {\n const IconComponent = icons[icon as IconKey]\n return <IconComponent size={14} />\n }\n return null\n }\n\n const optionIcon = icon ? getIconIfValid(icon) : undefined\n\n return (\n <li\n className={cn(\n 'group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm',\n className\n )}\n {...props}\n data-state={isSelected ? 'checked' : 'unchecked'}\n >\n {optionIcon && <span className=\"mr-2\">{optionIcon}</span>}\n {hasCheckbox && (\n <Checkbox id={value} checked={isSelected} onClick={(e) => e.preventDefault()} />\n )}\n <div>\n <p>{title}</p>\n <p className=\"text-xs text-grey-80\">{description}</p>\n </div>\n\n <CheckIcon\n className=\"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block\"\n size={16}\n />\n </li>\n )\n}\n\nexport default ListItem\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n type ElementRef,\n forwardRef,\n type PropsWithChildren,\n} from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst CheckboxToggle = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'group',\n 'peer',\n 'h-5',\n 'w-5',\n 'shrink-0',\n 'rounded-md',\n 'border',\n 'border-grey-10',\n 'outline',\n 'outline-1',\n 'outline-offset-2',\n 'outline-transparent',\n 'hover:border-grey-20',\n 'focus:outline-purple-100',\n 'active:border-green-80',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=checked]:bg-green-80',\n 'data-[state=indeterminate]:bg-green-80',\n 'data-[state=checked]:text-white',\n 'data-[state=indeterminate]:text-primary-foreground',\n props.disabled &&\n 'data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"hidden h-4 w-4 group-data-[state=checked]:block\" />\n <Minus className=\"hidden h-4 w-4 group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckboxToggle.displayName = CheckboxPrimitive.Root.displayName\n\ninterface Props extends CheckboxPrimitive.CheckboxProps, PropsWithChildren {\n error?: string\n classNames?: {\n wrapper?: string\n label?: string\n }\n}\n\nconst Checkbox = forwardRef<ElementRef<typeof CheckboxPrimitive.Root>, Props>(\n ({ classNames, children, ...props }, ref) => {\n const { disabled } = props\n const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`\n const labelClassName = disabled ? 'text-grey-40 pointer-events-none' : ''\n return (\n <div className={cn('flex space-x-2', classNames?.wrapper)}>\n <CheckboxToggle id={id} disabled={disabled} ref={ref} {...props} />\n <label htmlFor={id} className={cn(labelClassName, classNames?.label)}>\n {children}\n </label>\n </div>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GCAA,IAAAI,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CDJA,IAAAC,EAA0B,wBEC1B,IAAAC,EAAmC,yCACnCC,EAA6B,wBAC7BC,EAKO,iBAsCH,IAAAC,EAAA,6BAlCEC,KAAiB,cAGrB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAGC,OAC1B,OAAmB,OAAlB,CACC,IAAKA,EACL,UAAWC,EACT,QACA,OACA,MACA,MACA,WACA,aACA,SACA,iBACA,UACA,YACA,mBACA,sBACA,uBACA,2BACA,yBACA,8BACA,sBACA,mCACA,yCACA,kCACA,qDACAF,EAAM,UACJ,kFACFD,CACF,EACC,GAAGC,EAEJ,oBAAmB,YAAlB,CAA4B,UAAU,gDACrC,oBAAC,SAAM,UAAU,kDAAkD,KACnE,OAAC,SAAM,UAAU,wDAAwD,GAC3E,EACF,CACD,EACDF,EAAe,YAAgC,OAAK,YAUpD,IAAMK,KAAW,cACf,CAAC,CAAE,WAAAC,EAAY,SAAAC,EAAU,GAAGL,CAAM,EAAGC,IAAQ,CAC3C,GAAM,CAAE,SAAAK,CAAS,EAAIN,EACfO,EAAKP,EAAM,IAAM,GAAGA,EAAM,MAAQA,EAAM,OAAO,SAAS,CAAC,YACzDQ,EAAiBF,EAAW,mCAAqC,GACvE,SACE,QAAC,OAAI,UAAWJ,EAAG,iBAAkBE,GAAY,OAAO,EACtD,oBAACN,EAAA,CAAe,GAAIS,EAAI,SAAUD,EAAU,IAAKL,EAAM,GAAGD,EAAO,KACjE,OAAC,SAAM,QAASO,EAAI,UAAWL,EAAGM,EAAgBJ,GAAY,KAAK,EAChE,SAAAC,EACH,GACF,CAEJ,CACF,EACAF,EAAS,YAAc,WAEvB,IAAOM,EAAQN,EF5Ef,IAAAO,EAAsB,wBA0BTC,EAAA,6BAbb,SAASC,EAAS,CAChB,KAAAC,EACA,YAAAC,EACA,WAAAC,EACA,UAAAC,EACA,MAAAC,EACA,MAAAC,EACA,YAAAC,EACA,GAAGC,CACL,EAAkB,CAShB,IAAMC,EAAaR,GARKA,GAA4B,CAClD,GAAIA,KAAQ,QAAO,CACjB,IAAMS,EAAgB,QAAMT,CAAe,EAC3C,SAAO,OAACS,EAAA,CAAc,KAAM,GAAI,CAClC,CACA,OAAO,IACT,GAEyCT,CAAI,EAAI,OAEjD,SACE,QAAC,MACC,UAAWU,EACT,kFACAP,CACF,EACC,GAAGI,EACJ,aAAYL,EAAa,UAAY,YAEpC,UAAAM,MAAc,OAAC,QAAK,UAAU,OAAQ,SAAAA,EAAW,EACjDP,MACC,OAACU,EAAA,CAAS,GAAIN,EAAO,QAASH,EAAY,QAAUU,GAAMA,EAAE,eAAe,EAAG,KAEhF,QAAC,OACC,oBAAC,KAAG,SAAAR,EAAM,KACV,OAAC,KAAE,UAAU,uBAAwB,SAAAE,EAAY,GACnD,KAEA,OAAC,aACC,UAAU,gGACV,KAAM,GACR,GACF,CAEJ,CAEA,IAAOO,EAAQd","names":["ListItem_exports","__export","ListItem_default","__toCommonJS","import_clsx","import_tailwind_merge","cn","inputs","import_lucide_react","CheckboxPrimitive","import_lucide_react","import_react","import_jsx_runtime","CheckboxToggle","className","props","ref","cn","Checkbox","classNames","children","disabled","id","labelClassName","Checkbox_default","import_lucide_react","import_jsx_runtime","ListItem","icon","hasCheckbox","isSelected","className","title","value","description","props","optionIcon","IconComponent","cn","Checkbox_default","e","ListItem_default"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ComponentPropsWithoutRef } from 'react';
|
|
3
3
|
|
|
4
4
|
interface ListItemProps extends ComponentPropsWithoutRef<'li'> {
|
|
@@ -9,6 +9,6 @@ interface ListItemProps extends ComponentPropsWithoutRef<'li'> {
|
|
|
9
9
|
value: string;
|
|
10
10
|
description?: string;
|
|
11
11
|
}
|
|
12
|
-
declare function ListItem({ icon, hasCheckbox, isSelected, className, title, value, description, ...props }: ListItemProps):
|
|
12
|
+
declare function ListItem({ icon, hasCheckbox, isSelected, className, title, value, description, ...props }: ListItemProps): react_jsx_runtime.JSX.Element;
|
|
13
13
|
|
|
14
14
|
export { ListItem as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ComponentPropsWithoutRef } from 'react';
|
|
3
3
|
|
|
4
4
|
interface ListItemProps extends ComponentPropsWithoutRef<'li'> {
|
|
@@ -9,6 +9,6 @@ interface ListItemProps extends ComponentPropsWithoutRef<'li'> {
|
|
|
9
9
|
value: string;
|
|
10
10
|
description?: string;
|
|
11
11
|
}
|
|
12
|
-
declare function ListItem({ icon, hasCheckbox, isSelected, className, title, value, description, ...props }: ListItemProps):
|
|
12
|
+
declare function ListItem({ icon, hasCheckbox, isSelected, className, title, value, description, ...props }: ListItemProps): react_jsx_runtime.JSX.Element;
|
|
13
13
|
|
|
14
14
|
export { ListItem as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{clsx as
|
|
1
|
+
import{clsx as N}from"clsx";import{twMerge as R}from"tailwind-merge";function r(...t){return R(N(t))}import{CheckIcon as W}from"lucide-react";import*as n from"@radix-ui/react-checkbox";import{Check as I,Minus as w}from"lucide-react";import{forwardRef as u}from"react";import{jsx as a,jsxs as k}from"react/jsx-runtime";var b=u(({className:t,...o},e)=>a(n.Root,{ref:e,className:r("group","peer","h-5","w-5","shrink-0","rounded-md","border","border-grey-10","outline","outline-1","outline-offset-2","outline-transparent","hover:border-grey-20","focus:outline-purple-100","active:border-green-80","disabled:cursor-not-allowed","disabled:opacity-50","data-[state=checked]:bg-green-80","data-[state=indeterminate]:bg-green-80","data-[state=checked]:text-white","data-[state=indeterminate]:text-primary-foreground",o.disabled&&"data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",t),...o,children:k(n.Indicator,{className:"flex items-center justify-center text-current",children:[a(I,{className:"hidden h-4 w-4 group-data-[state=checked]:block"}),a(w,{className:"hidden h-4 w-4 group-data-[state=indeterminate]:block"})]})}));b.displayName=n.Root.displayName;var x=u(({classNames:t,children:o,...e},d)=>{let{disabled:s}=e,c=e.id??`${e.name??e.value?.toString()}-checkbox`,m=s?"text-grey-40 pointer-events-none":"";return k("div",{className:r("flex space-x-2",t?.wrapper),children:[a(b,{id:c,disabled:s,ref:d,...e}),a("label",{htmlFor:c,className:r(m,t?.label),children:o})]})});x.displayName="Checkbox";var g=x;import{icons as C}from"lucide-react";import{jsx as i,jsxs as y}from"react/jsx-runtime";function V({icon:t,hasCheckbox:o,isSelected:e,className:d,title:s,value:c,description:m,...v}){let p=t?(l=>{if(l in C){let P=C[l];return i(P,{size:14})}return null})(t):void 0;return y("li",{className:r("group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",d),...v,"data-state":e?"checked":"unchecked",children:[p&&i("span",{className:"mr-2",children:p}),o&&i(g,{id:c,checked:e,onClick:l=>l.preventDefault()}),y("div",{children:[i("p",{children:s}),i("p",{className:"text-xs text-grey-80",children:m})]}),i(W,{className:"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",size:16})]})}var J=V;export{J as default};
|
|
2
2
|
//# sourceMappingURL=ListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/ListItem.tsx","../../../src/components/ui/Checkbox.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from '@/lib/utils'\nimport { CheckIcon } from 'lucide-react'\nimport { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport Checkbox from '@/components/ui/Checkbox'\nimport { icons } from 'lucide-react'\n\ntype IconKey = keyof typeof icons\n\ninterface ListItemProps extends ComponentPropsWithoutRef<'li'> {\n icon?: string\n hasCheckbox?: boolean\n isSelected?: boolean\n title: string\n value: string\n description?: string\n}\n\nfunction ListItem({\n icon,\n hasCheckbox,\n isSelected,\n className,\n title,\n value,\n description,\n ...props\n}: ListItemProps) {\n const getIconIfValid = (icon: string): ReactNode => {\n if (icon in icons) {\n const IconComponent = icons[icon as IconKey]\n return <IconComponent size={14} />\n }\n return null\n }\n\n const optionIcon = icon ? getIconIfValid(icon) : undefined\n\n return (\n <li\n className={cn(\n 'group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm',\n className\n )}\n {...props}\n data-state={isSelected ? 'checked' : 'unchecked'}\n >\n {optionIcon && <span className=\"mr-2\">{optionIcon}</span>}\n {hasCheckbox && (\n <Checkbox id={value} checked={isSelected} onClick={(e) => e.preventDefault()} />\n )}\n <div>\n <p>{title}</p>\n <p className=\"text-xs text-grey-80\">{description}</p>\n </div>\n\n <CheckIcon\n className=\"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block\"\n size={16}\n />\n </li>\n )\n}\n\nexport default ListItem\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n type ElementRef,\n forwardRef,\n type PropsWithChildren,\n} from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst CheckboxToggle = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'group',\n 'peer',\n 'h-5',\n 'w-5',\n 'shrink-0',\n 'rounded-md',\n 'border',\n 'border-grey-10',\n 'outline',\n 'outline-1',\n 'outline-offset-2',\n 'outline-transparent',\n 'hover:border-grey-20',\n 'focus:outline-purple-100',\n 'active:border-green-80',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=checked]:bg-green-80',\n 'data-[state=indeterminate]:bg-green-80',\n 'data-[state=checked]:text-white',\n 'data-[state=indeterminate]:text-primary-foreground',\n props.disabled &&\n 'data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"hidden h-4 w-4 group-data-[state=checked]:block\" />\n <Minus className=\"hidden h-4 w-4 group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckboxToggle.displayName = CheckboxPrimitive.Root.displayName\n\ninterface Props extends CheckboxPrimitive.CheckboxProps, PropsWithChildren {\n error?: string\n classNames?: {\n wrapper?: string\n label?: string\n }\n}\n\nconst Checkbox = forwardRef<ElementRef<typeof CheckboxPrimitive.Root>, Props>(\n ({ classNames, children, ...props }, ref) => {\n const { disabled } = props\n const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`\n const labelClassName = disabled ? 'text-grey-40 pointer-events-none' : ''\n return (\n <div className={cn('flex space-x-2', classNames?.wrapper)}>\n <CheckboxToggle id={id} disabled={disabled} ref={ref} {...props} />\n <label htmlFor={id} className={cn(labelClassName, classNames?.label)}>\n {children}\n </label>\n </div>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n"],"mappings":"AAAA,OAA0B,QAAAA,MAAY,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CCJA,OAAS,aAAAC,MAAiB,eCC1B,UAAYC,MAAuB,2BACnC,OAAS,SAAAC,EAAO,SAAAC,MAAa,eAC7B,OAGE,cAAAC,MAEK,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/ListItem.tsx","../../../src/components/ui/Checkbox.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from '@/lib/utils'\nimport { CheckIcon } from 'lucide-react'\nimport { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport Checkbox from '@/components/ui/Checkbox'\nimport { icons } from 'lucide-react'\n\ntype IconKey = keyof typeof icons\n\ninterface ListItemProps extends ComponentPropsWithoutRef<'li'> {\n icon?: string\n hasCheckbox?: boolean\n isSelected?: boolean\n title: string\n value: string\n description?: string\n}\n\nfunction ListItem({\n icon,\n hasCheckbox,\n isSelected,\n className,\n title,\n value,\n description,\n ...props\n}: ListItemProps) {\n const getIconIfValid = (icon: string): ReactNode => {\n if (icon in icons) {\n const IconComponent = icons[icon as IconKey]\n return <IconComponent size={14} />\n }\n return null\n }\n\n const optionIcon = icon ? getIconIfValid(icon) : undefined\n\n return (\n <li\n className={cn(\n 'group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm',\n className\n )}\n {...props}\n data-state={isSelected ? 'checked' : 'unchecked'}\n >\n {optionIcon && <span className=\"mr-2\">{optionIcon}</span>}\n {hasCheckbox && (\n <Checkbox id={value} checked={isSelected} onClick={(e) => e.preventDefault()} />\n )}\n <div>\n <p>{title}</p>\n <p className=\"text-xs text-grey-80\">{description}</p>\n </div>\n\n <CheckIcon\n className=\"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block\"\n size={16}\n />\n </li>\n )\n}\n\nexport default ListItem\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n type ElementRef,\n forwardRef,\n type PropsWithChildren,\n} from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst CheckboxToggle = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'group',\n 'peer',\n 'h-5',\n 'w-5',\n 'shrink-0',\n 'rounded-md',\n 'border',\n 'border-grey-10',\n 'outline',\n 'outline-1',\n 'outline-offset-2',\n 'outline-transparent',\n 'hover:border-grey-20',\n 'focus:outline-purple-100',\n 'active:border-green-80',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=checked]:bg-green-80',\n 'data-[state=indeterminate]:bg-green-80',\n 'data-[state=checked]:text-white',\n 'data-[state=indeterminate]:text-primary-foreground',\n props.disabled &&\n 'data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"hidden h-4 w-4 group-data-[state=checked]:block\" />\n <Minus className=\"hidden h-4 w-4 group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckboxToggle.displayName = CheckboxPrimitive.Root.displayName\n\ninterface Props extends CheckboxPrimitive.CheckboxProps, PropsWithChildren {\n error?: string\n classNames?: {\n wrapper?: string\n label?: string\n }\n}\n\nconst Checkbox = forwardRef<ElementRef<typeof CheckboxPrimitive.Root>, Props>(\n ({ classNames, children, ...props }, ref) => {\n const { disabled } = props\n const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`\n const labelClassName = disabled ? 'text-grey-40 pointer-events-none' : ''\n return (\n <div className={cn('flex space-x-2', classNames?.wrapper)}>\n <CheckboxToggle id={id} disabled={disabled} ref={ref} {...props} />\n <label htmlFor={id} className={cn(labelClassName, classNames?.label)}>\n {children}\n </label>\n </div>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\n"],"mappings":"AAAA,OAA0B,QAAAA,MAAY,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CCJA,OAAS,aAAAC,MAAiB,eCC1B,UAAYC,MAAuB,2BACnC,OAAS,SAAAC,EAAO,SAAAC,MAAa,eAC7B,OAGE,cAAAC,MAEK,QAsCH,OACE,OAAAC,EADF,QAAAC,MAAA,oBAlCJ,IAAMC,EAAiBC,EAGrB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAGC,IAC1BN,EAAmB,OAAlB,CACC,IAAKM,EACL,UAAWC,EACT,QACA,OACA,MACA,MACA,WACA,aACA,SACA,iBACA,UACA,YACA,mBACA,sBACA,uBACA,2BACA,yBACA,8BACA,sBACA,mCACA,yCACA,kCACA,qDACAF,EAAM,UACJ,kFACFD,CACF,EACC,GAAGC,EAEJ,SAAAJ,EAAmB,YAAlB,CAA4B,UAAU,gDACrC,UAAAD,EAACQ,EAAA,CAAM,UAAU,kDAAkD,EACnER,EAACS,EAAA,CAAM,UAAU,wDAAwD,GAC3E,EACF,CACD,EACDP,EAAe,YAAgC,OAAK,YAUpD,IAAMQ,EAAWP,EACf,CAAC,CAAE,WAAAQ,EAAY,SAAAC,EAAU,GAAGP,CAAM,EAAGC,IAAQ,CAC3C,GAAM,CAAE,SAAAO,CAAS,EAAIR,EACfS,EAAKT,EAAM,IAAM,GAAGA,EAAM,MAAQA,EAAM,OAAO,SAAS,CAAC,YACzDU,EAAiBF,EAAW,mCAAqC,GACvE,OACEZ,EAAC,OAAI,UAAWM,EAAG,iBAAkBI,GAAY,OAAO,EACtD,UAAAX,EAACE,EAAA,CAAe,GAAIY,EAAI,SAAUD,EAAU,IAAKP,EAAM,GAAGD,EAAO,EACjEL,EAAC,SAAM,QAASc,EAAI,UAAWP,EAAGQ,EAAgBJ,GAAY,KAAK,EAChE,SAAAC,EACH,GACF,CAEJ,CACF,EACAF,EAAS,YAAc,WAEvB,IAAOM,EAAQN,ED5Ef,OAAS,SAAAO,MAAa,eA0BT,cAAAC,EAoBP,QAAAC,MApBO,oBAbb,SAASC,EAAS,CAChB,KAAAC,EACA,YAAAC,EACA,WAAAC,EACA,UAAAC,EACA,MAAAC,EACA,MAAAC,EACA,YAAAC,EACA,GAAGC,CACL,EAAkB,CAShB,IAAMC,EAAaR,GARKA,GAA4B,CAClD,GAAIA,KAAQJ,EAAO,CACjB,IAAMa,EAAgBb,EAAMI,CAAe,EAC3C,OAAOH,EAACY,EAAA,CAAc,KAAM,GAAI,CAClC,CACA,OAAO,IACT,GAEyCT,CAAI,EAAI,OAEjD,OACEF,EAAC,MACC,UAAWY,EACT,kFACAP,CACF,EACC,GAAGI,EACJ,aAAYL,EAAa,UAAY,YAEpC,UAAAM,GAAcX,EAAC,QAAK,UAAU,OAAQ,SAAAW,EAAW,EACjDP,GACCJ,EAACc,EAAA,CAAS,GAAIN,EAAO,QAASH,EAAY,QAAUU,GAAMA,EAAE,eAAe,EAAG,EAEhFd,EAAC,OACC,UAAAD,EAAC,KAAG,SAAAO,EAAM,EACVP,EAAC,KAAE,UAAU,uBAAwB,SAAAS,EAAY,GACnD,EAEAT,EAACgB,EAAA,CACC,UAAU,gGACV,KAAM,GACR,GACF,CAEJ,CAEA,IAAOC,EAAQf","names":["clsx","twMerge","cn","inputs","CheckIcon","CheckboxPrimitive","Check","Minus","forwardRef","jsx","jsxs","CheckboxToggle","forwardRef","className","props","ref","cn","Check","Minus","Checkbox","classNames","children","disabled","id","labelClassName","Checkbox_default","icons","jsx","jsxs","ListItem","icon","hasCheckbox","isSelected","className","title","value","description","props","optionIcon","IconComponent","cn","Checkbox_default","e","CheckIcon","ListItem_default"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
1
|
+
"use strict";"use client";var Y=Object.create;var v=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty;var re=(t,r)=>{for(var o in r)v(t,o,{get:r[o],enumerable:!0})},E=(t,r,o,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of _(r))!te.call(t,s)&&s!==o&&v(t,s,{get:()=>r[s],enumerable:!(n=Z(r,s))||n.enumerable});return t};var P=(t,r,o)=>(o=t!=null?Y(ee(t)):{},E(r||!t||!t.__esModule?v(o,"default",{value:t,enumerable:!0}):o,t)),ae=t=>E(v({},"__esModule",{value:!0}),t);var se={};re(se,{default:()=>le});module.exports=ae(se);var i=P(require("@radix-ui/react-select"),1),d=require("lucide-react"),p=require("react");var V=require("clsx"),z=require("tailwind-merge");function m(...t){return(0,z.twMerge)((0,V.clsx)(t))}var O=require("react/jsx-runtime");function ie({text:t,className:r,...o}){return t?(0,O.jsx)("label",{className:m("text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",r),...o,children:t}):null}var L=ie;var T=require("cva"),D=require("tailwind-merge"),M=require("react/jsx-runtime"),oe=({className:t,variant:r,size:o,...n})=>(0,M.jsx)("div",{className:(0,D.twMerge)(ne({variant:r,size:o,className:t})),...n}),ne=(0,T.cva)(["flex","items-center","rounded-3xl","border","w-fit"],{variants:{variant:{neutral:["text-grey-80","border-grey-10"],primary:["text-purple-100","border-purple-20"],danger:["text-pumpkin-100","border-pumpkin-20"],onboarding:["text-green-100","bg-green-10","cursor-pointer"],onboardingSelected:["text-white","bg-green-90","cursor-pointer"]},size:{small:["text-sm","leading-5","px-2","py-1","gap-1.5"],medium:["text-base","leading-6","px-3","py-2","gap-2"]}},defaultVariants:{variant:"neutral",size:"medium"}}),I=oe;var S=P(require("@radix-ui/react-separator"),1),W=P(require("react"),1);var K=require("react/jsx-runtime"),C=W.forwardRef(({className:t,orientation:r="horizontal",decorative:o=!0,...n},s)=>(0,K.jsx)(S.Root,{ref:s,decorative:o,orientation:r,className:m("shrink-0 bg-grey-10",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...n}));C.displayName=S.Root.displayName;var a=require("react/jsx-runtime"),H=(0,p.forwardRef)(({label:t,options:r,placeholder:o,multiselect:n,classNames:s,...A},B)=>{let{value:f,defaultValue:w,dir:G,className:$,onChange:X,...j}=A,[u,b]=(0,p.useState)([]),[q,x]=(0,p.useState)(!1),R=(0,p.useRef)(null);(0,p.useEffect)(()=>{if(!f)return b([]);b(Array.isArray(f)?f:[f])},[f]);let F=()=>x(e=>!e),J=e=>e.key==="Escape"&&x(!1),Q=(e,l)=>e.key==="Enter"&&g(l),k=u?.map(e=>r?.find(({value:l})=>l===e)).filter(Boolean);function N(){return n?u.map(e=>r?.find(l=>l.value===e)?.title).join(", "):r?.find(e=>e.value===u.join())?.title}function U(e){(!n||e)&&x(e)}function g(e){let l=[];b(c=>(l=c.includes(e)?c.filter(y=>y!==e):[...c,e],n?l:[e])),X?.(n?l:e)}return(0,a.jsxs)("div",{className:m("flex flex-col space-y-2",$),ref:R,children:[(0,a.jsx)(L,{text:t,className:s?.label}),(0,a.jsxs)(i.Root,{open:q,value:u.join(","),onOpenChange:U,onValueChange:n?void 0:g,defaultValue:typeof w=="string"?w:void 0,dir:G==="rtl"?"rtl":"ltr",...j,children:[(0,a.jsxs)(i.Trigger,{ref:B,"data-testid":`${t.toLowerCase()}-select-element`,className:"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",children:[(0,a.jsx)("span",{className:"truncate",children:(0,a.jsx)(i.Value,{placeholder:o??"Select an option","aria-label":N(),children:N()})}),(0,a.jsx)(d.ChevronDownIcon,{className:"transform text-black group-data-[state=open]:rotate-180",size:"16"})]}),(0,a.jsx)(i.Portal,{container:R.current,children:(0,a.jsx)(i.Content,{hideWhenDetached:!0,className:"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",position:"popper",sideOffset:4,onPointerDownOutside:F,onKeyDown:J,children:(0,a.jsxs)(i.Viewport,{children:[n&&!!k?.length&&(0,a.jsx)(i.Group,{className:"mb-2 flex flex-row flex-wrap gap-1 px-2","data-testid":"selected-labels",children:k?.map(e=>e&&(0,a.jsxs)(I,{size:"small",variant:"primary",children:[(0,a.jsx)("span",{children:e.title}),(0,a.jsx)(d.X,{size:18,"data-testid":`chip-remove-${e.value}`,className:"cursor-pointer",onClick:()=>g(e.value)})]},e.title))}),(0,a.jsx)(C,{}),r?.map(({id:e,title:l,value:c})=>(0,a.jsxs)(i.Item,{value:c,className:"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100","data-state":u.includes(c)?"checked":"unchecked",onKeyDown:y=>Q(y,c),onClick:()=>g(c),children:[(0,a.jsx)(i.ItemText,{children:l}),(0,a.jsx)(d.CheckIcon,{className:"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",size:16})]},e))]})})})]})]})});H.displayName="Select";var le=H;
|
|
2
2
|
//# sourceMappingURL=Select.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ui/Select.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Label.tsx","../../../src/components/ui/Chip.tsx","../../../src/components/primitives/separator.tsx"],"sourcesContent":["'use client'\n\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { CheckIcon, ChevronDownIcon, X } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type KeyboardEvent,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport Label from '@/components/ui/Label'\nimport Chip from '@/components/ui/Chip'\nimport { Separator } from '@/components/primitives/separator'\nimport { cn } from '@/lib/utils'\n\ninterface Props extends Omit<ComponentPropsWithoutRef<'select'>, 'value' | 'onChange'> {\n label: string\n value?: string | string[]\n options?: { id: string | number; value: string; title: string }[]\n placeholder?: string\n multiselect?: boolean\n onChange?: (value: string | string[]) => void\n classNames?: { label?: string }\n}\n\nconst Select = forwardRef<HTMLButtonElement, Props>(\n ({ label, options, placeholder, multiselect, classNames, ...props }, ref) => {\n const { value, defaultValue, dir, className, onChange, ...rest } = props\n const [selected, setSelected] = useState<string[]>([])\n const [open, setOpen] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!value) return setSelected([])\n setSelected(Array.isArray(value) ? value : [value])\n }, [value])\n\n const toggleOpen = () => setOpen((prev) => !prev)\n const closeOnEscape = (event: KeyboardEvent) => event.key === 'Escape' && setOpen(false)\n const setValueOnEnter = (event: KeyboardEvent, value: string) =>\n event.key === 'Enter' && handleChange(value)\n\n const chipLabels = selected\n ?.map((s) => options?.find(({ value }) => value === s))\n .filter(Boolean)\n\n function handleLabels() {\n if (multiselect) {\n return selected.map((o) => options?.find((option) => option.value === o)?.title).join(', ')\n }\n return options?.find((option) => option.value === selected.join())?.title\n }\n\n function handleOnOpenChange(isOpen: boolean) {\n if (!multiselect || isOpen) setOpen(isOpen)\n }\n\n function handleChange(newValue: string) {\n let newSelected: string[] = []\n setSelected((prev) => {\n newSelected = prev.includes(newValue)\n ? prev.filter((item) => item !== newValue)\n : [...prev, newValue]\n return multiselect ? newSelected : [newValue]\n })\n onChange?.(multiselect ? newSelected : newValue)\n }\n\n return (\n <div className={cn('flex flex-col space-y-2', className)} ref={containerRef}>\n <Label text={label} className={classNames?.label} />\n\n <SelectPrimitive.Root\n open={open}\n value={selected.join(',')}\n onOpenChange={handleOnOpenChange}\n onValueChange={multiselect ? undefined : handleChange}\n defaultValue={typeof defaultValue === 'string' ? defaultValue : undefined}\n dir={dir === 'rtl' ? 'rtl' : 'ltr'}\n {...rest}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n data-testid={`${label.toLowerCase()}-select-element`}\n className=\"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40\"\n >\n <span className=\"truncate\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n aria-label={handleLabels()}\n >\n {handleLabels()}\n </SelectPrimitive.Value>\n </span>\n\n <ChevronDownIcon\n className=\"transform text-black group-data-[state=open]:rotate-180\"\n size=\"16\"\n />\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal container={containerRef.current}>\n <SelectPrimitive.Content\n hideWhenDetached\n className=\"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg\"\n position=\"popper\"\n sideOffset={4}\n onPointerDownOutside={toggleOpen}\n onKeyDown={closeOnEscape}\n >\n <SelectPrimitive.Viewport>\n {multiselect && !!chipLabels?.length && (\n <SelectPrimitive.Group\n className=\"mb-2 flex flex-row flex-wrap gap-1 px-2\"\n data-testid=\"selected-labels\"\n >\n {chipLabels?.map(\n (chip) =>\n chip && (\n <Chip key={chip.title} size=\"small\" variant=\"primary\">\n <span>{chip.title}</span>\n <X\n size={18}\n data-testid={`chip-remove-${chip.value}`}\n className=\"cursor-pointer\"\n onClick={() => handleChange(chip.value)}\n />\n </Chip>\n )\n )}\n </SelectPrimitive.Group>\n )}\n <Separator />\n {options?.map(({ id, title, value }) => (\n <SelectPrimitive.Item\n key={id}\n value={value}\n className=\"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100\"\n data-state={selected.includes(value) ? 'checked' : 'unchecked'}\n onKeyDown={(e) => setValueOnEnter(e, value)}\n onClick={() => handleChange(value)}\n >\n <SelectPrimitive.ItemText>{title}</SelectPrimitive.ItemText>\n <CheckIcon\n className=\"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block\"\n size={16}\n />\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { type ComponentPropsWithoutRef } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ninterface Props extends ComponentPropsWithoutRef<'label'> {\n text?: string\n}\n\nfunction Label({ text, className, ...props }: Readonly<Props>) {\n if (!text) return null\n\n return (\n <label\n className={cn(\n 'text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {text}\n </label>\n )\n}\n\nexport default Label\n","import { cva, type VariantProps } from 'cva'\nimport React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\ninterface ChipProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {}\n\nconst Chip = ({ className, variant, size, ...props }: ChipProps) => (\n <div className={twMerge(chipVariants({ variant, size, className }))} {...props} />\n)\n\nconst chipVariants = cva(['flex', 'items-center', 'rounded-3xl', 'border', 'w-fit'], {\n variants: {\n variant: {\n neutral: ['text-grey-80', 'border-grey-10'],\n primary: ['text-purple-100', 'border-purple-20'],\n danger: ['text-pumpkin-100', 'border-pumpkin-20'],\n onboarding: ['text-green-100', 'bg-green-10', 'cursor-pointer'],\n onboardingSelected: ['text-white', 'bg-green-90', 'cursor-pointer'],\n },\n size: {\n small: ['text-sm', 'leading-5', 'px-2', 'py-1', 'gap-1.5'],\n medium: ['text-base', 'leading-6', 'px-3', 'py-2', 'gap-2'],\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'medium',\n },\n})\n\nexport default Chip\n","'use client'\r\n\r\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\r\nimport * as React from 'react'\r\n\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\r\n 'shrink-0 bg-grey-10',\r\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n"],"mappings":"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","names":["Select_exports","__export","Select_default","__toCommonJS","SelectPrimitive","import_lucide_react","import_react","import_clsx","import_tailwind_merge","cn","inputs","Label","text","className","props","cn","Label_default","import_cva","import_react","import_tailwind_merge","Chip","className","variant","size","props","React","chipVariants","Chip_default","SeparatorPrimitive","React","Separator","className","orientation","decorative","props","ref","cn","Select","label","options","placeholder","multiselect","classNames","props","ref","value","defaultValue","dir","className","onChange","rest","selected","setSelected","open","setOpen","containerRef","toggleOpen","prev","closeOnEscape","event","setValueOnEnter","handleChange","chipLabels","s","handleLabels","o","option","handleOnOpenChange","isOpen","newValue","newSelected","item","cn","Label_default","chip","Chip_default","Separator","id","title","e","Select_default"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/Select.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Label.tsx","../../../src/components/ui/Chip.tsx","../../../src/components/primitives/separator.tsx"],"sourcesContent":["'use client'\n\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { CheckIcon, ChevronDownIcon, X } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type KeyboardEvent,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport Label from '@/components/ui/Label'\nimport Chip from '@/components/ui/Chip'\nimport { Separator } from '@/components/primitives/separator'\nimport { cn } from '@/lib/utils'\n\ninterface Props extends Omit<ComponentPropsWithoutRef<'select'>, 'value' | 'onChange'> {\n label: string\n value?: string | string[]\n options?: { id: string | number; value: string; title: string }[]\n placeholder?: string\n multiselect?: boolean\n onChange?: (value: string | string[]) => void\n classNames?: { label?: string }\n}\n\nconst Select = forwardRef<HTMLButtonElement, Props>(\n ({ label, options, placeholder, multiselect, classNames, ...props }, ref) => {\n const { value, defaultValue, dir, className, onChange, ...rest } = props\n const [selected, setSelected] = useState<string[]>([])\n const [open, setOpen] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!value) return setSelected([])\n setSelected(Array.isArray(value) ? value : [value])\n }, [value])\n\n const toggleOpen = () => setOpen((prev) => !prev)\n const closeOnEscape = (event: KeyboardEvent) => event.key === 'Escape' && setOpen(false)\n const setValueOnEnter = (event: KeyboardEvent, value: string) =>\n event.key === 'Enter' && handleChange(value)\n\n const chipLabels = selected\n ?.map((s) => options?.find(({ value }) => value === s))\n .filter(Boolean)\n\n function handleLabels() {\n if (multiselect) {\n return selected.map((o) => options?.find((option) => option.value === o)?.title).join(', ')\n }\n return options?.find((option) => option.value === selected.join())?.title\n }\n\n function handleOnOpenChange(isOpen: boolean) {\n if (!multiselect || isOpen) setOpen(isOpen)\n }\n\n function handleChange(newValue: string) {\n let newSelected: string[] = []\n setSelected((prev) => {\n newSelected = prev.includes(newValue)\n ? prev.filter((item) => item !== newValue)\n : [...prev, newValue]\n return multiselect ? newSelected : [newValue]\n })\n onChange?.(multiselect ? newSelected : newValue)\n }\n\n return (\n <div className={cn('flex flex-col space-y-2', className)} ref={containerRef}>\n <Label text={label} className={classNames?.label} />\n\n <SelectPrimitive.Root\n open={open}\n value={selected.join(',')}\n onOpenChange={handleOnOpenChange}\n onValueChange={multiselect ? undefined : handleChange}\n defaultValue={typeof defaultValue === 'string' ? defaultValue : undefined}\n dir={dir === 'rtl' ? 'rtl' : 'ltr'}\n {...rest}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n data-testid={`${label.toLowerCase()}-select-element`}\n className=\"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40\"\n >\n <span className=\"truncate\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n aria-label={handleLabels()}\n >\n {handleLabels()}\n </SelectPrimitive.Value>\n </span>\n\n <ChevronDownIcon\n className=\"transform text-black group-data-[state=open]:rotate-180\"\n size=\"16\"\n />\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal container={containerRef.current}>\n <SelectPrimitive.Content\n hideWhenDetached\n className=\"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg\"\n position=\"popper\"\n sideOffset={4}\n onPointerDownOutside={toggleOpen}\n onKeyDown={closeOnEscape}\n >\n <SelectPrimitive.Viewport>\n {multiselect && !!chipLabels?.length && (\n <SelectPrimitive.Group\n className=\"mb-2 flex flex-row flex-wrap gap-1 px-2\"\n data-testid=\"selected-labels\"\n >\n {chipLabels?.map(\n (chip) =>\n chip && (\n <Chip key={chip.title} size=\"small\" variant=\"primary\">\n <span>{chip.title}</span>\n <X\n size={18}\n data-testid={`chip-remove-${chip.value}`}\n className=\"cursor-pointer\"\n onClick={() => handleChange(chip.value)}\n />\n </Chip>\n )\n )}\n </SelectPrimitive.Group>\n )}\n <Separator />\n {options?.map(({ id, title, value }) => (\n <SelectPrimitive.Item\n key={id}\n value={value}\n className=\"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100\"\n data-state={selected.includes(value) ? 'checked' : 'unchecked'}\n onKeyDown={(e) => setValueOnEnter(e, value)}\n onClick={() => handleChange(value)}\n >\n <SelectPrimitive.ItemText>{title}</SelectPrimitive.ItemText>\n <CheckIcon\n className=\"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block\"\n size={16}\n />\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { type ComponentPropsWithoutRef } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ninterface Props extends ComponentPropsWithoutRef<'label'> {\n text?: string\n}\n\nfunction Label({ text, className, ...props }: Readonly<Props>) {\n if (!text) return null\n\n return (\n <label\n className={cn(\n 'text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {text}\n </label>\n )\n}\n\nexport default Label\n","import { cva, type VariantProps } from 'cva'\nimport React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\ninterface ChipProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {}\n\nconst Chip = ({ className, variant, size, ...props }: ChipProps) => (\n <div className={twMerge(chipVariants({ variant, size, className }))} {...props} />\n)\n\nconst chipVariants = cva(['flex', 'items-center', 'rounded-3xl', 'border', 'w-fit'], {\n variants: {\n variant: {\n neutral: ['text-grey-80', 'border-grey-10'],\n primary: ['text-purple-100', 'border-purple-20'],\n danger: ['text-pumpkin-100', 'border-pumpkin-20'],\n onboarding: ['text-green-100', 'bg-green-10', 'cursor-pointer'],\n onboardingSelected: ['text-white', 'bg-green-90', 'cursor-pointer'],\n },\n size: {\n small: ['text-sm', 'leading-5', 'px-2', 'py-1', 'gap-1.5'],\n medium: ['text-base', 'leading-6', 'px-3', 'py-2', 'gap-2'],\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'medium',\n },\n})\n\nexport default Chip\n","'use client'\r\n\r\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\r\nimport * as React from 'react'\r\n\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\r\n 'shrink-0 bg-grey-10',\r\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n"],"mappings":"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","names":["Select_exports","__export","Select_default","__toCommonJS","SelectPrimitive","import_lucide_react","import_react","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","Label","text","className","props","cn","Label_default","import_cva","import_tailwind_merge","import_jsx_runtime","Chip","className","variant","size","props","chipVariants","Chip_default","SeparatorPrimitive","React","import_jsx_runtime","Separator","className","orientation","decorative","props","ref","cn","import_jsx_runtime","Select","label","options","placeholder","multiselect","classNames","props","ref","value","defaultValue","dir","className","onChange","rest","selected","setSelected","open","setOpen","containerRef","toggleOpen","prev","closeOnEscape","event","setValueOnEnter","handleChange","chipLabels","s","handleLabels","o","option","handleOnOpenChange","isOpen","newValue","newSelected","item","cn","Label_default","chip","Chip_default","Separator","id","title","e","Select_default"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import*as t from"@radix-ui/react-select";import{CheckIcon as
|
|
1
|
+
"use client";import*as t from"@radix-ui/react-select";import{CheckIcon as Z,ChevronDownIcon as _,X as ee}from"lucide-react";import{forwardRef as te,useEffect as re,useRef as ae,useState as V}from"react";import{clsx as G}from"clsx";import{twMerge as $}from"tailwind-merge";function p(...a){return $(G(a))}import{jsx as j}from"react/jsx-runtime";function X({text:a,className:i,...s}){return a?j("label",{className:p("text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",i),...s,children:a}):null}var k=X;import{cva as q}from"cva";import{twMerge as F}from"tailwind-merge";import{jsx as U}from"react/jsx-runtime";var J=({className:a,variant:i,size:s,...n})=>U("div",{className:F(Q({variant:i,size:s,className:a})),...n}),Q=q(["flex","items-center","rounded-3xl","border","w-fit"],{variants:{variant:{neutral:["text-grey-80","border-grey-10"],primary:["text-purple-100","border-purple-20"],danger:["text-pumpkin-100","border-pumpkin-20"],onboarding:["text-green-100","bg-green-10","cursor-pointer"],onboardingSelected:["text-white","bg-green-90","cursor-pointer"]},size:{small:["text-sm","leading-5","px-2","py-1","gap-1.5"],medium:["text-base","leading-6","px-3","py-2","gap-2"]}},defaultVariants:{variant:"neutral",size:"medium"}}),N=J;import*as y from"@radix-ui/react-separator";import*as E from"react";import{jsx as Y}from"react/jsx-runtime";var P=E.forwardRef(({className:a,orientation:i="horizontal",decorative:s=!0,...n},v)=>Y(y.Root,{ref:v,decorative:s,orientation:i,className:p("shrink-0 bg-grey-10",i==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",a),...n}));P.displayName=y.Root.displayName;import{jsx as r,jsxs as c}from"react/jsx-runtime";var z=te(({label:a,options:i,placeholder:s,multiselect:n,classNames:v,...L},O)=>{let{value:m,defaultValue:S,dir:T,className:D,onChange:I,...M}=L,[d,h]=V([]),[W,b]=V(!1),C=ae(null);re(()=>{if(!m)return h([]);h(Array.isArray(m)?m:[m])},[m]);let K=()=>b(e=>!e),H=e=>e.key==="Escape"&&b(!1),A=(e,o)=>e.key==="Enter"&&f(o),w=d?.map(e=>i?.find(({value:o})=>o===e)).filter(Boolean);function R(){return n?d.map(e=>i?.find(o=>o.value===e)?.title).join(", "):i?.find(e=>e.value===d.join())?.title}function B(e){(!n||e)&&b(e)}function f(e){let o=[];h(l=>(o=l.includes(e)?l.filter(x=>x!==e):[...l,e],n?o:[e])),I?.(n?o:e)}return c("div",{className:p("flex flex-col space-y-2",D),ref:C,children:[r(k,{text:a,className:v?.label}),c(t.Root,{open:W,value:d.join(","),onOpenChange:B,onValueChange:n?void 0:f,defaultValue:typeof S=="string"?S:void 0,dir:T==="rtl"?"rtl":"ltr",...M,children:[c(t.Trigger,{ref:O,"data-testid":`${a.toLowerCase()}-select-element`,className:"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",children:[r("span",{className:"truncate",children:r(t.Value,{placeholder:s??"Select an option","aria-label":R(),children:R()})}),r(_,{className:"transform text-black group-data-[state=open]:rotate-180",size:"16"})]}),r(t.Portal,{container:C.current,children:r(t.Content,{hideWhenDetached:!0,className:"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",position:"popper",sideOffset:4,onPointerDownOutside:K,onKeyDown:H,children:c(t.Viewport,{children:[n&&!!w?.length&&r(t.Group,{className:"mb-2 flex flex-row flex-wrap gap-1 px-2","data-testid":"selected-labels",children:w?.map(e=>e&&c(N,{size:"small",variant:"primary",children:[r("span",{children:e.title}),r(ee,{size:18,"data-testid":`chip-remove-${e.value}`,className:"cursor-pointer",onClick:()=>f(e.value)})]},e.title))}),r(P,{}),i?.map(({id:e,title:o,value:l})=>c(t.Item,{value:l,className:"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100","data-state":d.includes(l)?"checked":"unchecked",onKeyDown:x=>A(x,l),onClick:()=>f(l),children:[r(t.ItemText,{children:o}),r(Z,{className:"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",size:16})]},e))]})})})]})]})});z.displayName="Select";var Ne=z;export{Ne as default};
|
|
2
2
|
//# sourceMappingURL=Select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ui/Select.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Label.tsx","../../../src/components/ui/Chip.tsx","../../../src/components/primitives/separator.tsx"],"sourcesContent":["'use client'\n\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { CheckIcon, ChevronDownIcon, X } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type KeyboardEvent,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport Label from '@/components/ui/Label'\nimport Chip from '@/components/ui/Chip'\nimport { Separator } from '@/components/primitives/separator'\nimport { cn } from '@/lib/utils'\n\ninterface Props extends Omit<ComponentPropsWithoutRef<'select'>, 'value' | 'onChange'> {\n label: string\n value?: string | string[]\n options?: { id: string | number; value: string; title: string }[]\n placeholder?: string\n multiselect?: boolean\n onChange?: (value: string | string[]) => void\n classNames?: { label?: string }\n}\n\nconst Select = forwardRef<HTMLButtonElement, Props>(\n ({ label, options, placeholder, multiselect, classNames, ...props }, ref) => {\n const { value, defaultValue, dir, className, onChange, ...rest } = props\n const [selected, setSelected] = useState<string[]>([])\n const [open, setOpen] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!value) return setSelected([])\n setSelected(Array.isArray(value) ? value : [value])\n }, [value])\n\n const toggleOpen = () => setOpen((prev) => !prev)\n const closeOnEscape = (event: KeyboardEvent) => event.key === 'Escape' && setOpen(false)\n const setValueOnEnter = (event: KeyboardEvent, value: string) =>\n event.key === 'Enter' && handleChange(value)\n\n const chipLabels = selected\n ?.map((s) => options?.find(({ value }) => value === s))\n .filter(Boolean)\n\n function handleLabels() {\n if (multiselect) {\n return selected.map((o) => options?.find((option) => option.value === o)?.title).join(', ')\n }\n return options?.find((option) => option.value === selected.join())?.title\n }\n\n function handleOnOpenChange(isOpen: boolean) {\n if (!multiselect || isOpen) setOpen(isOpen)\n }\n\n function handleChange(newValue: string) {\n let newSelected: string[] = []\n setSelected((prev) => {\n newSelected = prev.includes(newValue)\n ? prev.filter((item) => item !== newValue)\n : [...prev, newValue]\n return multiselect ? newSelected : [newValue]\n })\n onChange?.(multiselect ? newSelected : newValue)\n }\n\n return (\n <div className={cn('flex flex-col space-y-2', className)} ref={containerRef}>\n <Label text={label} className={classNames?.label} />\n\n <SelectPrimitive.Root\n open={open}\n value={selected.join(',')}\n onOpenChange={handleOnOpenChange}\n onValueChange={multiselect ? undefined : handleChange}\n defaultValue={typeof defaultValue === 'string' ? defaultValue : undefined}\n dir={dir === 'rtl' ? 'rtl' : 'ltr'}\n {...rest}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n data-testid={`${label.toLowerCase()}-select-element`}\n className=\"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40\"\n >\n <span className=\"truncate\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n aria-label={handleLabels()}\n >\n {handleLabels()}\n </SelectPrimitive.Value>\n </span>\n\n <ChevronDownIcon\n className=\"transform text-black group-data-[state=open]:rotate-180\"\n size=\"16\"\n />\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal container={containerRef.current}>\n <SelectPrimitive.Content\n hideWhenDetached\n className=\"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg\"\n position=\"popper\"\n sideOffset={4}\n onPointerDownOutside={toggleOpen}\n onKeyDown={closeOnEscape}\n >\n <SelectPrimitive.Viewport>\n {multiselect && !!chipLabels?.length && (\n <SelectPrimitive.Group\n className=\"mb-2 flex flex-row flex-wrap gap-1 px-2\"\n data-testid=\"selected-labels\"\n >\n {chipLabels?.map(\n (chip) =>\n chip && (\n <Chip key={chip.title} size=\"small\" variant=\"primary\">\n <span>{chip.title}</span>\n <X\n size={18}\n data-testid={`chip-remove-${chip.value}`}\n className=\"cursor-pointer\"\n onClick={() => handleChange(chip.value)}\n />\n </Chip>\n )\n )}\n </SelectPrimitive.Group>\n )}\n <Separator />\n {options?.map(({ id, title, value }) => (\n <SelectPrimitive.Item\n key={id}\n value={value}\n className=\"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100\"\n data-state={selected.includes(value) ? 'checked' : 'unchecked'}\n onKeyDown={(e) => setValueOnEnter(e, value)}\n onClick={() => handleChange(value)}\n >\n <SelectPrimitive.ItemText>{title}</SelectPrimitive.ItemText>\n <CheckIcon\n className=\"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block\"\n size={16}\n />\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { type ComponentPropsWithoutRef } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ninterface Props extends ComponentPropsWithoutRef<'label'> {\n text?: string\n}\n\nfunction Label({ text, className, ...props }: Readonly<Props>) {\n if (!text) return null\n\n return (\n <label\n className={cn(\n 'text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {text}\n </label>\n )\n}\n\nexport default Label\n","import { cva, type VariantProps } from 'cva'\nimport React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\ninterface ChipProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {}\n\nconst Chip = ({ className, variant, size, ...props }: ChipProps) => (\n <div className={twMerge(chipVariants({ variant, size, className }))} {...props} />\n)\n\nconst chipVariants = cva(['flex', 'items-center', 'rounded-3xl', 'border', 'w-fit'], {\n variants: {\n variant: {\n neutral: ['text-grey-80', 'border-grey-10'],\n primary: ['text-purple-100', 'border-purple-20'],\n danger: ['text-pumpkin-100', 'border-pumpkin-20'],\n onboarding: ['text-green-100', 'bg-green-10', 'cursor-pointer'],\n onboardingSelected: ['text-white', 'bg-green-90', 'cursor-pointer'],\n },\n size: {\n small: ['text-sm', 'leading-5', 'px-2', 'py-1', 'gap-1.5'],\n medium: ['text-base', 'leading-6', 'px-3', 'py-2', 'gap-2'],\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'medium',\n },\n})\n\nexport default Chip\n","'use client'\r\n\r\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\r\nimport * as React from 'react'\r\n\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\r\n 'shrink-0 bg-grey-10',\r\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n"],"mappings":"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","names":["SelectPrimitive","CheckIcon","ChevronDownIcon","X","forwardRef","useEffect","useRef","useState","clsx","twMerge","cn","inputs","Label","text","className","props","cn","Label_default","cva","React","twMerge","Chip","className","variant","size","props","chipVariants","Chip_default","SeparatorPrimitive","React","Separator","className","orientation","decorative","props","ref","cn","Select","forwardRef","label","options","placeholder","multiselect","classNames","props","ref","value","defaultValue","dir","className","onChange","rest","selected","setSelected","useState","open","setOpen","containerRef","useRef","useEffect","toggleOpen","prev","closeOnEscape","event","setValueOnEnter","handleChange","chipLabels","s","handleLabels","o","option","handleOnOpenChange","isOpen","newValue","newSelected","item","cn","Label_default","ChevronDownIcon","chip","Chip_default","X","Separator","id","title","e","CheckIcon","Select_default"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/Select.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Label.tsx","../../../src/components/ui/Chip.tsx","../../../src/components/primitives/separator.tsx"],"sourcesContent":["'use client'\n\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { CheckIcon, ChevronDownIcon, X } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type KeyboardEvent,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport Label from '@/components/ui/Label'\nimport Chip from '@/components/ui/Chip'\nimport { Separator } from '@/components/primitives/separator'\nimport { cn } from '@/lib/utils'\n\ninterface Props extends Omit<ComponentPropsWithoutRef<'select'>, 'value' | 'onChange'> {\n label: string\n value?: string | string[]\n options?: { id: string | number; value: string; title: string }[]\n placeholder?: string\n multiselect?: boolean\n onChange?: (value: string | string[]) => void\n classNames?: { label?: string }\n}\n\nconst Select = forwardRef<HTMLButtonElement, Props>(\n ({ label, options, placeholder, multiselect, classNames, ...props }, ref) => {\n const { value, defaultValue, dir, className, onChange, ...rest } = props\n const [selected, setSelected] = useState<string[]>([])\n const [open, setOpen] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!value) return setSelected([])\n setSelected(Array.isArray(value) ? value : [value])\n }, [value])\n\n const toggleOpen = () => setOpen((prev) => !prev)\n const closeOnEscape = (event: KeyboardEvent) => event.key === 'Escape' && setOpen(false)\n const setValueOnEnter = (event: KeyboardEvent, value: string) =>\n event.key === 'Enter' && handleChange(value)\n\n const chipLabels = selected\n ?.map((s) => options?.find(({ value }) => value === s))\n .filter(Boolean)\n\n function handleLabels() {\n if (multiselect) {\n return selected.map((o) => options?.find((option) => option.value === o)?.title).join(', ')\n }\n return options?.find((option) => option.value === selected.join())?.title\n }\n\n function handleOnOpenChange(isOpen: boolean) {\n if (!multiselect || isOpen) setOpen(isOpen)\n }\n\n function handleChange(newValue: string) {\n let newSelected: string[] = []\n setSelected((prev) => {\n newSelected = prev.includes(newValue)\n ? prev.filter((item) => item !== newValue)\n : [...prev, newValue]\n return multiselect ? newSelected : [newValue]\n })\n onChange?.(multiselect ? newSelected : newValue)\n }\n\n return (\n <div className={cn('flex flex-col space-y-2', className)} ref={containerRef}>\n <Label text={label} className={classNames?.label} />\n\n <SelectPrimitive.Root\n open={open}\n value={selected.join(',')}\n onOpenChange={handleOnOpenChange}\n onValueChange={multiselect ? undefined : handleChange}\n defaultValue={typeof defaultValue === 'string' ? defaultValue : undefined}\n dir={dir === 'rtl' ? 'rtl' : 'ltr'}\n {...rest}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n data-testid={`${label.toLowerCase()}-select-element`}\n className=\"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40\"\n >\n <span className=\"truncate\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n aria-label={handleLabels()}\n >\n {handleLabels()}\n </SelectPrimitive.Value>\n </span>\n\n <ChevronDownIcon\n className=\"transform text-black group-data-[state=open]:rotate-180\"\n size=\"16\"\n />\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal container={containerRef.current}>\n <SelectPrimitive.Content\n hideWhenDetached\n className=\"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg\"\n position=\"popper\"\n sideOffset={4}\n onPointerDownOutside={toggleOpen}\n onKeyDown={closeOnEscape}\n >\n <SelectPrimitive.Viewport>\n {multiselect && !!chipLabels?.length && (\n <SelectPrimitive.Group\n className=\"mb-2 flex flex-row flex-wrap gap-1 px-2\"\n data-testid=\"selected-labels\"\n >\n {chipLabels?.map(\n (chip) =>\n chip && (\n <Chip key={chip.title} size=\"small\" variant=\"primary\">\n <span>{chip.title}</span>\n <X\n size={18}\n data-testid={`chip-remove-${chip.value}`}\n className=\"cursor-pointer\"\n onClick={() => handleChange(chip.value)}\n />\n </Chip>\n )\n )}\n </SelectPrimitive.Group>\n )}\n <Separator />\n {options?.map(({ id, title, value }) => (\n <SelectPrimitive.Item\n key={id}\n value={value}\n className=\"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100\"\n data-state={selected.includes(value) ? 'checked' : 'unchecked'}\n onKeyDown={(e) => setValueOnEnter(e, value)}\n onClick={() => handleChange(value)}\n >\n <SelectPrimitive.ItemText>{title}</SelectPrimitive.ItemText>\n <CheckIcon\n className=\"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block\"\n size={16}\n />\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { type ComponentPropsWithoutRef } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ninterface Props extends ComponentPropsWithoutRef<'label'> {\n text?: string\n}\n\nfunction Label({ text, className, ...props }: Readonly<Props>) {\n if (!text) return null\n\n return (\n <label\n className={cn(\n 'text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className\n )}\n {...props}\n >\n {text}\n </label>\n )\n}\n\nexport default Label\n","import { cva, type VariantProps } from 'cva'\nimport React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\ninterface ChipProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof chipVariants> {}\n\nconst Chip = ({ className, variant, size, ...props }: ChipProps) => (\n <div className={twMerge(chipVariants({ variant, size, className }))} {...props} />\n)\n\nconst chipVariants = cva(['flex', 'items-center', 'rounded-3xl', 'border', 'w-fit'], {\n variants: {\n variant: {\n neutral: ['text-grey-80', 'border-grey-10'],\n primary: ['text-purple-100', 'border-purple-20'],\n danger: ['text-pumpkin-100', 'border-pumpkin-20'],\n onboarding: ['text-green-100', 'bg-green-10', 'cursor-pointer'],\n onboardingSelected: ['text-white', 'bg-green-90', 'cursor-pointer'],\n },\n size: {\n small: ['text-sm', 'leading-5', 'px-2', 'py-1', 'gap-1.5'],\n medium: ['text-base', 'leading-6', 'px-3', 'py-2', 'gap-2'],\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'medium',\n },\n})\n\nexport default Chip\n","'use client'\r\n\r\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\r\nimport * as React from 'react'\r\n\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\r\n 'shrink-0 bg-grey-10',\r\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n"],"mappings":"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","names":["SelectPrimitive","CheckIcon","ChevronDownIcon","X","forwardRef","useEffect","useRef","useState","clsx","twMerge","cn","inputs","jsx","Label","text","className","props","cn","Label_default","cva","twMerge","jsx","Chip","className","variant","size","props","chipVariants","Chip_default","SeparatorPrimitive","React","jsx","Separator","className","orientation","decorative","props","ref","cn","jsx","jsxs","Select","forwardRef","label","options","placeholder","multiselect","classNames","props","ref","value","defaultValue","dir","className","onChange","rest","selected","setSelected","useState","open","setOpen","containerRef","useRef","useEffect","toggleOpen","prev","closeOnEscape","event","setValueOnEnter","handleChange","chipLabels","s","handleLabels","o","option","handleOnOpenChange","isOpen","newValue","newSelected","item","cn","Label_default","ChevronDownIcon","chip","Chip_default","X","Separator","id","title","e","CheckIcon","Select_default"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var ze=Object.create;var A=Object.defineProperty;var We=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty;var He=(e,t)=>{for(var o in t)A(e,o,{get:t[o],enumerable:!0})},de=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Me(t))!Oe.call(e,n)&&n!==o&&A(e,n,{get:()=>t[n],enumerable:!(i=We(t,n))||i.enumerable});return e};var v=(e,t,o)=>(o=e!=null?ze(_e(e)):{},de(t||!e||!e.__esModule?A(o,"default",{value:e,enumerable:!0}):o,e)),Be=e=>de(A({},"__esModule",{value:!0}),e);var tt={};He(tt,{Badge:()=>J,Button:()=>oe,Checkbox:()=>$,Chip:()=>G,Combobox:()=>pe,Label:()=>L,ListItem:()=>X,Select:()=>xe,cn:()=>a});module.exports=Be(tt);var l=v(require("@radix-ui/react-select"),1),T=require("lucide-react"),P=require("react");var ce=require("clsx"),fe=require("tailwind-merge");function a(...e){return(0,fe.twMerge)((0,ce.clsx)(e))}function je({text:e,className:t,...o}){return e?React.createElement("label",{className:a("text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",t),...o},e):null}var L=je;var ue=require("cva"),ge=v(require("react"),1),ve=require("tailwind-merge"),Ae=({className:e,variant:t,size:o,...i})=>ge.default.createElement("div",{className:(0,ve.twMerge)(Ge({variant:t,size:o,className:e})),...i}),Ge=(0,ue.cva)(["flex","items-center","rounded-3xl","border","w-fit"],{variants:{variant:{neutral:["text-grey-80","border-grey-10"],primary:["text-purple-100","border-purple-20"],danger:["text-pumpkin-100","border-pumpkin-20"],onboarding:["text-green-100","bg-green-10","cursor-pointer"],onboardingSelected:["text-white","bg-green-90","cursor-pointer"]},size:{small:["text-sm","leading-5","px-2","py-1","gap-1.5"],medium:["text-base","leading-6","px-3","py-2","gap-2"]}},defaultVariants:{variant:"neutral",size:"medium"}}),G=Ae;var Z=v(require("@radix-ui/react-separator"),1),K=v(require("react"),1);var W=K.forwardRef(({className:e,orientation:t="horizontal",decorative:o=!0,...i},n)=>K.createElement(Z.Root,{ref:n,decorative:o,orientation:t,className:a("shrink-0 bg-grey-10",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...i}));W.displayName=Z.Root.displayName;var he=(0,P.forwardRef)(({label:e,options:t,placeholder:o,multiselect:i,classNames:n,...c},h)=>{let{value:b,defaultValue:N,dir:D,className:R,onChange:E,...O}=c,[w,f]=(0,P.useState)([]),[H,I]=(0,P.useState)(!1),V=(0,P.useRef)(null);(0,P.useEffect)(()=>{if(!b)return f([]);f(Array.isArray(b)?b:[b])},[b]);let Q=()=>I(r=>!r),z=r=>r.key==="Escape"&&I(!1),U=(r,x)=>r.key==="Enter"&&g(x),B=w?.map(r=>t?.find(({value:x})=>x===r)).filter(Boolean);function j(){return i?w.map(r=>t?.find(x=>x.value===r)?.title).join(", "):t?.find(r=>r.value===w.join())?.title}function y(r){(!i||r)&&I(r)}function g(r){let x=[];f(k=>(x=k.includes(r)?k.filter(Y=>Y!==r):[...k,r],i?x:[r])),E?.(i?x:r)}return React.createElement("div",{className:a("flex flex-col space-y-2",R),ref:V},React.createElement(L,{text:e,className:n?.label}),React.createElement(l.Root,{open:H,value:w.join(","),onOpenChange:y,onValueChange:i?void 0:g,defaultValue:typeof N=="string"?N:void 0,dir:D==="rtl"?"rtl":"ltr",...O},React.createElement(l.Trigger,{ref:h,"data-testid":`${e.toLowerCase()}-select-element`,className:"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40"},React.createElement("span",{className:"truncate"},React.createElement(l.Value,{placeholder:o??"Select an option","aria-label":j()},j())),React.createElement(T.ChevronDownIcon,{className:"transform text-black group-data-[state=open]:rotate-180",size:"16"})),React.createElement(l.Portal,{container:V.current},React.createElement(l.Content,{hideWhenDetached:!0,className:"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",position:"popper",sideOffset:4,onPointerDownOutside:Q,onKeyDown:z},React.createElement(l.Viewport,null,i&&!!B?.length&&React.createElement(l.Group,{className:"mb-2 flex flex-row flex-wrap gap-1 px-2","data-testid":"selected-labels"},B?.map(r=>r&&React.createElement(G,{key:r.title,size:"small",variant:"primary"},React.createElement("span",null,r.title),React.createElement(T.X,{size:18,"data-testid":`chip-remove-${r.value}`,className:"cursor-pointer",onClick:()=>g(r.value)})))),React.createElement(W,null),t?.map(({id:r,title:x,value:k})=>React.createElement(l.Item,{key:r,value:k,className:"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100","data-state":w.includes(k)?"checked":"unchecked",onKeyDown:Y=>U(Y,k),onClick:()=>g(k)},React.createElement(l.ItemText,null,x),React.createElement(T.CheckIcon,{className:"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",size:16}))))))))});he.displayName="Select";var xe=he;var M=v(require("@radix-ui/react-checkbox"),1),F=require("lucide-react"),ee=require("react");var ye=(0,ee.forwardRef)(({className:e,...t},o)=>React.createElement(M.Root,{ref:o,className:a("group","peer","h-5","w-5","shrink-0","rounded-md","border","border-grey-10","outline","outline-1","outline-offset-2","outline-transparent","hover:border-grey-20","focus:outline-purple-100","active:border-green-80","disabled:cursor-not-allowed","disabled:opacity-50","data-[state=checked]:bg-green-80","data-[state=indeterminate]:bg-green-80","data-[state=checked]:text-white","data-[state=indeterminate]:text-primary-foreground",t.disabled&&"data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",e),...t},React.createElement(M.Indicator,{className:"flex items-center justify-center text-current"},React.createElement(F.Check,{className:"hidden h-4 w-4 group-data-[state=checked]:block"}),React.createElement(F.Minus,{className:"hidden h-4 w-4 group-data-[state=indeterminate]:block"}))));ye.displayName=M.Root.displayName;var be=(0,ee.forwardRef)(({classNames:e,children:t,...o},i)=>{let{disabled:n}=o,c=o.id??`${o.name??o.value?.toString()}-checkbox`,h=n?"text-grey-40 pointer-events-none":"";return React.createElement("div",{className:a("flex space-x-2",e?.wrapper)},React.createElement(ye,{id:c,disabled:n,ref:i,...o}),React.createElement("label",{htmlFor:c,className:a(h,e?.label)},t))});be.displayName="Checkbox";var $=be;var Pe=require("lucide-react");var te=require("lucide-react");function Ke({icon:e,hasCheckbox:t,isSelected:o,className:i,title:n,value:c,description:h,...b}){let D=e?(R=>{if(R in te.icons){let E=te.icons[R];return React.createElement(E,{size:14})}return null})(e):void 0;return React.createElement("li",{className:a("group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",i),...b,"data-state":o?"checked":"unchecked"},D&&React.createElement("span",{className:"mr-2"},D),t&&React.createElement($,{id:c,checked:o,onClick:R=>R.preventDefault()}),React.createElement("div",null,React.createElement("p",null,n),React.createElement("p",{className:"text-xs text-grey-80"},h)),React.createElement(Pe.CheckIcon,{className:"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",size:16}))}var X=Ke;var Ce=require("@radix-ui/react-slot"),Re=require("cva"),q=v(require("react"),1),oe=(0,q.forwardRef)(({className:e,variant:t,size:o,asChild:i=!1,...n},c)=>q.default.createElement(i?Ce.Slot:"button",{className:a(Fe({variant:t,size:o,className:e})),ref:c,...n}));oe.displayName="Button";var Fe=(0,Re.cva)(["flex","items-center","justify-center","gap-2","rounded-full","font-bold","outline-2","outline-offset-2","outline-dashed","outline-transparent"],{variants:{variant:{neutral:["bg-black","text-white","hover:bg-grey-90","active:bg-grey-80","focus:outline-purple-100","disabled:text-grey-40","disabled:bg-grey-10"],primary:["bg-pickle-100","text-black","hover:bg-pickle-80","active:bg-pickle-60","focus:outline-purple-100","disabled:text-grey-40","disabled:bg-grey-10"],secondary:["bg-green-80","text-white","hover:bg-green-90","active:bg-green-100","focus:outline-pickle-100","disabled:text-grey-40","disabled:bg-grey-10"],transparent:["text-white","hover:bg-green-80","active:bg-green-100","focus:outline-pickle-100","disabled:text-grey-40"],link:["leading-tight","text-black","underline","hover:text-purple-100","focus:text-black","focus:outline-purple-100","active:text-purple-80"]},size:{small:["h-10","text-sm","px-4","py-2"],medium:["h-12","text-base","px-6","py-3"],large:["h-14","text-lg","px-8","py-4"]}},defaultVariants:{variant:"neutral",size:"medium"},compoundVariants:[{variant:"link",size:"small",class:["h-3","text-xs","p-0"]},{variant:"link",size:"medium",class:["h-4","text-sm","p-0"]},{variant:"link",size:"large",class:["h-6","text-base","p-0"]}]});var S=require("react"),Te=require("lucide-react"),Ve=require("cva");var d=require("cmdk"),Se=require("lucide-react"),s=v(require("react"),1);var m=v(require("@radix-ui/react-dialog"),1),ke=require("lucide-react"),p=v(require("react"),1);var $e=m.Portal;var Ne=p.forwardRef(({className:e,...t},o)=>p.createElement(m.Overlay,{ref:o,className:a("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Ne.displayName=m.Overlay.displayName;var we=p.forwardRef(({className:e,children:t,...o},i)=>p.createElement($e,null,p.createElement(Ne,null),p.createElement(m.Content,{ref:i,className:a("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg dark:border-neutral-800 dark:bg-neutral-950",e),...o},t,p.createElement(m.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-500 dark:ring-offset-neutral-950 dark:focus:ring-neutral-300 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-400"},p.createElement(ke.X,{className:"h-4 w-4"}),p.createElement("span",{className:"sr-only"},"Close")))));we.displayName=m.Content.displayName;var Xe=({className:e,...t})=>p.createElement("div",{className:a("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Xe.displayName="DialogHeader";var qe=({className:e,...t})=>p.createElement("div",{className:a("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});qe.displayName="DialogFooter";var Je=p.forwardRef(({className:e,...t},o)=>p.createElement(m.Title,{ref:o,className:a("text-lg font-semibold leading-none tracking-tight",e),...t}));Je.displayName=m.Title.displayName;var Qe=p.forwardRef(({className:e,...t},o)=>p.createElement(m.Description,{ref:o,className:a("text-sm text-neutral-500 dark:text-neutral-400",e),...t}));Qe.displayName=m.Description.displayName;var ae=s.forwardRef(({className:e,...t},o)=>s.createElement(d.Command,{ref:o,className:a("flex h-full w-full flex-col overflow-hidden rounded-xl bg-white text-neutral-950",e),...t}));ae.displayName=d.Command.displayName;var re=s.forwardRef(({className:e,...t},o)=>s.createElement("div",{className:"m-1 flex items-center rounded-xl border px-3","cmdk-input-wrapper":""},s.createElement(Se.Search,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),s.createElement(d.Command.Input,{ref:o,className:a("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-neutral-500 disabled:cursor-not-allowed disabled:opacity-50",e),...t})));re.displayName=d.Command.Input.displayName;var ie=s.forwardRef(({className:e,...t},o)=>s.createElement(d.Command.List,{ref:o,className:a("overflow-y-auto overflow-x-hidden",e),...t}));ie.displayName=d.Command.List.displayName;var ne=s.forwardRef((e,t)=>s.createElement(d.Command.Empty,{ref:t,className:"py-6 text-center text-sm",...e}));ne.displayName=d.Command.Empty.displayName;var se=s.forwardRef(({className:e,...t},o)=>s.createElement(d.Command.Group,{ref:o,className:a("overflow-hidden p-1 text-neutral-950 [&_[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-neutral-500",e),...t}));se.displayName=d.Command.Group.displayName;var Ue=s.forwardRef(({className:e,...t},o)=>s.createElement(d.Command.Separator,{ref:o,className:a("-mx-1 h-px bg-neutral-200",e),...t}));Ue.displayName=d.Command.Separator.displayName;var le=s.forwardRef(({className:e,...t},o)=>s.createElement(d.Command.Item,{ref:o,className:a("relative flex cursor-pointer select-none items-center rounded-xl px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-neutral-100 data-[selected=true]:text-neutral-900 data-[disabled=true]:opacity-50",e),...t}));le.displayName=d.Command.Item.displayName;var Ye=({className:e,...t})=>s.createElement("span",{className:a("ml-auto text-xs tracking-widest text-neutral-500",e),...t});Ye.displayName="CommandShortcut";var _=v(require("react"),1),C=v(require("@radix-ui/react-popover"),1);var De=C.Root,Ee=C.Trigger,me=_.forwardRef(({className:e,align:t="center",sideOffset:o=4,...i},n)=>_.createElement(C.Portal,null,_.createElement(C.Content,{ref:n,align:t,sideOffset:o,className:a("z-50 rounded-2xl border bg-white p-4 text-black 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",e),...i})));me.displayName=C.Content.displayName;var Ie=require("cva"),Le=v(require("react"),1);var Ze=(0,Ie.cva)("rounded-full px-2 py-0.5 text-xs font-semibold",{variants:{variant:{green:"bg-green-90 text-white",pickle:"bg-pickle-100 text-black",purple:"bg-purple-100 text-white"}},defaultVariants:{variant:"green"}});function J({className:e,variant:t,...o}){return Le.createElement("div",{className:a(Ze({variant:t}),e),...o})}var pe=(0,S.forwardRef)((e,t)=>{let{value:o,label:i,options:n,classNames:c,multiselect:h,placeholder:b,variant:N="default",size:D,className:R,onChange:E,children:O}=e,w=h?o??[]:o?[o]:[],[f,H]=(0,S.useState)(w),[I,V]=(0,S.useState)(!1),Q=n?.length<=5,z=N==="default",U=N==="chip";(0,S.useEffect)(()=>{E?.(h?f:f[0])},[f]);let B=y=>{if(h)return H(g=>g.includes(y)?g.filter(r=>r!==y):[...g,y]);H([y]),V(!1)},j=()=>{let y=f.length>0?f.join(", "):b;return z?y:i};return React.createElement("div",{className:a("flex flex-col gap-2",R)},z&&i&&React.createElement(L,{text:i,className:c?.label}),React.createElement(De,{open:I,onOpenChange:V},React.createElement(Ee,{asChild:!0,disabled:n.length===0},React.createElement("div",{ref:t,className:a(et({variant:N,size:D}),c?.trigger),"aria-expanded":I},U&&f.length>0&&React.createElement(J,{variant:"purple"},f.length),React.createElement("span",{className:a("truncate leading-normal",z&&f.length==0&&"text-grey-40")},j()),React.createElement(Te.ChevronDownIcon,{className:"transform group-data-[state=open]:rotate-180",size:"16"}))),React.createElement(ae,null,React.createElement(me,{className:a("flex w-full max-w-xs flex-col overflow-hidden p-0","max-h-[--radix-popover-content-available-height]",c?.content),collisionPadding:8,sideOffset:4,align:"start"},!Q&&React.createElement(re,{placeholder:"Search..."}),React.createElement(ie,null,React.createElement(ne,null,"No results"),React.createElement(se,null,n.map(({id:y,...g})=>React.createElement(le,{key:y,value:g.value,onSelect:B},React.createElement(X,{className:a(c?.items,"truncate py-1"),isSelected:f?.includes(g.value),hasCheckbox:h,...g}))))),!!O&&React.createElement(W,null),O))))});pe.displayName="Combobox";var et=(0,Ve.cva)("group relative cursor-pointer flex flex-row items-center justify-between gap-2 border border-grey-20 focus:outline-green-80 disabled:bg-grey-5",{variants:{variant:{default:["w-full","max-w-80","rounded-lg"],chip:["font-bold","rounded-3xl","data-[state=open]:bg-black","data-[state=open]:text-white"]},size:{small:["h-8","p-1","pl-2","text-xs"],normal:["h-9","p-2","pl-3","text-sm"],large:["h-10","p-3","pl-4","text-base"]}},defaultVariants:{variant:"default",size:"normal"}});0&&(module.exports={Badge,Button,Checkbox,Chip,Combobox,Label,ListItem,Select,cn});
|
|
1
|
+
"use strict";var Fe=Object.create;var q=Object.defineProperty;var $e=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var qe=Object.getPrototypeOf,Je=Object.prototype.hasOwnProperty;var Qe=(e,t)=>{for(var o in t)q(e,o,{get:t[o],enumerable:!0})},ge=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Xe(t))!Je.call(e,n)&&n!==o&&q(e,n,{get:()=>t[n],enumerable:!(i=$e(t,n))||i.enumerable});return e};var R=(e,t,o)=>(o=e!=null?Fe(qe(e)):{},ge(t||!e||!e.__esModule?q(o,"default",{value:e,enumerable:!0}):o,e)),Ue=e=>ge(q({},"__esModule",{value:!0}),e);var dt={};Qe(dt,{Badge:()=>Z,Button:()=>ie,Checkbox:()=>U,Chip:()=>J,Combobox:()=>ue,Label:()=>M,ListItem:()=>Y,Select:()=>Ne,cn:()=>a});module.exports=Ue(dt);var m=R(require("@radix-ui/react-select"),1),_=require("lucide-react"),k=require("react");var ve=require("clsx"),he=require("tailwind-merge");function a(...e){return(0,he.twMerge)((0,ve.clsx)(e))}var xe=require("react/jsx-runtime");function Ye({text:e,className:t,...o}){return e?(0,xe.jsx)("label",{className:a("text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",t),...o,children:e}):null}var M=Ye;var ye=require("cva"),be=require("tailwind-merge"),Pe=require("react/jsx-runtime"),Ze=({className:e,variant:t,size:o,...i})=>(0,Pe.jsx)("div",{className:(0,be.twMerge)(je({variant:t,size:o,className:e})),...i}),je=(0,ye.cva)(["flex","items-center","rounded-3xl","border","w-fit"],{variants:{variant:{neutral:["text-grey-80","border-grey-10"],primary:["text-purple-100","border-purple-20"],danger:["text-pumpkin-100","border-pumpkin-20"],onboarding:["text-green-100","bg-green-10","cursor-pointer"],onboardingSelected:["text-white","bg-green-90","cursor-pointer"]},size:{small:["text-sm","leading-5","px-2","py-1","gap-1.5"],medium:["text-base","leading-6","px-3","py-2","gap-2"]}},defaultVariants:{variant:"neutral",size:"medium"}}),J=Ze;var oe=R(require("@radix-ui/react-separator"),1),Ce=R(require("react"),1);var Re=require("react/jsx-runtime"),B=Ce.forwardRef(({className:e,orientation:t="horizontal",decorative:o=!0,...i},n)=>(0,Re.jsx)(oe.Root,{ref:n,decorative:o,orientation:t,className:a("shrink-0 bg-grey-10",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...i}));B.displayName=oe.Root.displayName;var l=require("react/jsx-runtime"),ke=(0,k.forwardRef)(({label:e,options:t,placeholder:o,multiselect:i,classNames:n,...c},x)=>{let{value:C,defaultValue:I,dir:V,className:S,onChange:z,...K}=c,[L,f]=(0,k.useState)([]),[F,W]=(0,k.useState)(!1),O=(0,k.useRef)(null);(0,k.useEffect)(()=>{if(!C)return f([]);f(Array.isArray(C)?C:[C])},[C]);let j=()=>W(r=>!r),H=r=>r.key==="Escape"&&W(!1),ee=(r,y)=>r.key==="Enter"&&v(y),$=L?.map(r=>t?.find(({value:y})=>y===r)).filter(Boolean);function X(){return i?L.map(r=>t?.find(y=>y.value===r)?.title).join(", "):t?.find(r=>r.value===L.join())?.title}function b(r){(!i||r)&&W(r)}function v(r){let y=[];f(D=>(y=D.includes(r)?D.filter(te=>te!==r):[...D,r],i?y:[r])),z?.(i?y:r)}return(0,l.jsxs)("div",{className:a("flex flex-col space-y-2",S),ref:O,children:[(0,l.jsx)(M,{text:e,className:n?.label}),(0,l.jsxs)(m.Root,{open:F,value:L.join(","),onOpenChange:b,onValueChange:i?void 0:v,defaultValue:typeof I=="string"?I:void 0,dir:V==="rtl"?"rtl":"ltr",...K,children:[(0,l.jsxs)(m.Trigger,{ref:x,"data-testid":`${e.toLowerCase()}-select-element`,className:"group flex min-w-80 flex-row items-center justify-between gap-3 rounded-lg border border-grey-20 px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",children:[(0,l.jsx)("span",{className:"truncate",children:(0,l.jsx)(m.Value,{placeholder:o??"Select an option","aria-label":X(),children:X()})}),(0,l.jsx)(_.ChevronDownIcon,{className:"transform text-black group-data-[state=open]:rotate-180",size:"16"})]}),(0,l.jsx)(m.Portal,{container:O.current,children:(0,l.jsx)(m.Content,{hideWhenDetached:!0,className:"z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",position:"popper",sideOffset:4,onPointerDownOutside:j,onKeyDown:H,children:(0,l.jsxs)(m.Viewport,{children:[i&&!!$?.length&&(0,l.jsx)(m.Group,{className:"mb-2 flex flex-row flex-wrap gap-1 px-2","data-testid":"selected-labels",children:$?.map(r=>r&&(0,l.jsxs)(J,{size:"small",variant:"primary",children:[(0,l.jsx)("span",{children:r.title}),(0,l.jsx)(_.X,{size:18,"data-testid":`chip-remove-${r.value}`,className:"cursor-pointer",onClick:()=>v(r.value)})]},r.title))}),(0,l.jsx)(B,{}),t?.map(({id:r,title:y,value:D})=>(0,l.jsxs)(m.Item,{value:D,className:"group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100","data-state":L.includes(D)?"checked":"unchecked",onKeyDown:te=>ee(te,D),onClick:()=>v(D),children:[(0,l.jsx)(m.ItemText,{children:y}),(0,l.jsx)(_.CheckIcon,{className:"absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",size:16})]},r))]})})})]})]})});ke.displayName="Select";var Ne=ke;var A=R(require("@radix-ui/react-checkbox"),1),Q=require("lucide-react"),ae=require("react");var N=require("react/jsx-runtime"),we=(0,ae.forwardRef)(({className:e,...t},o)=>(0,N.jsx)(A.Root,{ref:o,className:a("group","peer","h-5","w-5","shrink-0","rounded-md","border","border-grey-10","outline","outline-1","outline-offset-2","outline-transparent","hover:border-grey-20","focus:outline-purple-100","active:border-green-80","disabled:cursor-not-allowed","disabled:opacity-50","data-[state=checked]:bg-green-80","data-[state=indeterminate]:bg-green-80","data-[state=checked]:text-white","data-[state=indeterminate]:text-primary-foreground",t.disabled&&"data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",e),...t,children:(0,N.jsxs)(A.Indicator,{className:"flex items-center justify-center text-current",children:[(0,N.jsx)(Q.Check,{className:"hidden h-4 w-4 group-data-[state=checked]:block"}),(0,N.jsx)(Q.Minus,{className:"hidden h-4 w-4 group-data-[state=indeterminate]:block"})]})}));we.displayName=A.Root.displayName;var Se=(0,ae.forwardRef)(({classNames:e,children:t,...o},i)=>{let{disabled:n}=o,c=o.id??`${o.name??o.value?.toString()}-checkbox`,x=n?"text-grey-40 pointer-events-none":"";return(0,N.jsxs)("div",{className:a("flex space-x-2",e?.wrapper),children:[(0,N.jsx)(we,{id:c,disabled:n,ref:i,...o}),(0,N.jsx)("label",{htmlFor:c,className:a(x,e?.label),children:t})]})});Se.displayName="Checkbox";var U=Se;var De=require("lucide-react");var re=require("lucide-react"),P=require("react/jsx-runtime");function et({icon:e,hasCheckbox:t,isSelected:o,className:i,title:n,value:c,description:x,...C}){let V=e?(S=>{if(S in re.icons){let z=re.icons[S];return(0,P.jsx)(z,{size:14})}return null})(e):void 0;return(0,P.jsxs)("li",{className:a("group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",i),...C,"data-state":o?"checked":"unchecked",children:[V&&(0,P.jsx)("span",{className:"mr-2",children:V}),t&&(0,P.jsx)(U,{id:c,checked:o,onClick:S=>S.preventDefault()}),(0,P.jsxs)("div",{children:[(0,P.jsx)("p",{children:n}),(0,P.jsx)("p",{className:"text-xs text-grey-80",children:x})]}),(0,P.jsx)(De.CheckIcon,{className:"absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",size:16})]})}var Y=et;var Ee=require("@radix-ui/react-slot"),Ie=require("cva"),Le=require("react"),Te=require("react/jsx-runtime"),ie=(0,Le.forwardRef)(({className:e,variant:t,size:o,asChild:i=!1,...n},c)=>(0,Te.jsx)(i?Ee.Slot:"button",{className:a(tt({variant:t,size:o,className:e})),ref:c,...n}));ie.displayName="Button";var tt=(0,Ie.cva)(["flex","items-center","justify-center","gap-2","rounded-full","font-bold","outline-2","outline-offset-2","outline-dashed","outline-transparent"],{variants:{variant:{neutral:["bg-black","text-white","hover:bg-grey-90","active:bg-grey-80","focus:outline-purple-100","disabled:text-grey-40","disabled:bg-grey-10"],primary:["bg-pickle-100","text-black","hover:bg-pickle-80","active:bg-pickle-60","focus:outline-purple-100","disabled:text-grey-40","disabled:bg-grey-10"],secondary:["bg-green-80","text-white","hover:bg-green-90","active:bg-green-100","focus:outline-pickle-100","disabled:text-grey-40","disabled:bg-grey-10"],transparent:["text-white","hover:bg-green-80","active:bg-green-100","focus:outline-pickle-100","disabled:text-grey-40"],link:["leading-tight","text-black","underline","hover:text-purple-100","focus:text-black","focus:outline-purple-100","active:text-purple-80"]},size:{small:["h-10","text-sm","px-4","py-2"],medium:["h-12","text-base","px-6","py-3"],large:["h-14","text-lg","px-8","py-4"]}},defaultVariants:{variant:"neutral",size:"medium"},compoundVariants:[{variant:"link",size:"small",class:["h-3","text-xs","p-0"]},{variant:"link",size:"medium",class:["h-4","text-sm","p-0"]},{variant:"link",size:"large",class:["h-6","text-base","p-0"]}]});var T=require("react"),Ge=require("lucide-react"),Ke=require("cva");var d=require("cmdk"),Me=require("lucide-react"),E=R(require("react"),1);var p=R(require("@radix-ui/react-dialog"),1),Ve=require("lucide-react"),G=R(require("react"),1),g=require("react/jsx-runtime");var ot=p.Portal;var ze=G.forwardRef(({className:e,...t},o)=>(0,g.jsx)(p.Overlay,{ref:o,className:a("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));ze.displayName=p.Overlay.displayName;var We=G.forwardRef(({className:e,children:t,...o},i)=>(0,g.jsxs)(ot,{children:[(0,g.jsx)(ze,{}),(0,g.jsxs)(p.Content,{ref:i,className:a("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg dark:border-neutral-800 dark:bg-neutral-950",e),...o,children:[t,(0,g.jsxs)(p.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-500 dark:ring-offset-neutral-950 dark:focus:ring-neutral-300 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-400",children:[(0,g.jsx)(Ve.X,{className:"h-4 w-4"}),(0,g.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));We.displayName=p.Content.displayName;var at=({className:e,...t})=>(0,g.jsx)("div",{className:a("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});at.displayName="DialogHeader";var rt=({className:e,...t})=>(0,g.jsx)("div",{className:a("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});rt.displayName="DialogFooter";var it=G.forwardRef(({className:e,...t},o)=>(0,g.jsx)(p.Title,{ref:o,className:a("text-lg font-semibold leading-none tracking-tight",e),...t}));it.displayName=p.Title.displayName;var nt=G.forwardRef(({className:e,...t},o)=>(0,g.jsx)(p.Description,{ref:o,className:a("text-sm text-neutral-500 dark:text-neutral-400",e),...t}));nt.displayName=p.Description.displayName;var h=require("react/jsx-runtime"),ne=E.forwardRef(({className:e,...t},o)=>(0,h.jsx)(d.Command,{ref:o,className:a("flex h-full w-full flex-col overflow-hidden rounded-xl bg-white text-neutral-950",e),...t}));ne.displayName=d.Command.displayName;var le=E.forwardRef(({className:e,...t},o)=>(0,h.jsxs)("div",{className:"m-1 flex items-center rounded-xl border px-3","cmdk-input-wrapper":"",children:[(0,h.jsx)(Me.Search,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,h.jsx)(d.Command.Input,{ref:o,className:a("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-neutral-500 disabled:cursor-not-allowed disabled:opacity-50",e),...t})]}));le.displayName=d.Command.Input.displayName;var se=E.forwardRef(({className:e,...t},o)=>(0,h.jsx)(d.Command.List,{ref:o,className:a("overflow-y-auto overflow-x-hidden",e),...t}));se.displayName=d.Command.List.displayName;var me=E.forwardRef((e,t)=>(0,h.jsx)(d.Command.Empty,{ref:t,className:"py-6 text-center text-sm",...e}));me.displayName=d.Command.Empty.displayName;var pe=E.forwardRef(({className:e,...t},o)=>(0,h.jsx)(d.Command.Group,{ref:o,className:a("overflow-hidden p-1 text-neutral-950 [&_[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-neutral-500",e),...t}));pe.displayName=d.Command.Group.displayName;var lt=E.forwardRef(({className:e,...t},o)=>(0,h.jsx)(d.Command.Separator,{ref:o,className:a("-mx-1 h-px bg-neutral-200",e),...t}));lt.displayName=d.Command.Separator.displayName;var de=E.forwardRef(({className:e,...t},o)=>(0,h.jsx)(d.Command.Item,{ref:o,className:a("relative flex cursor-pointer select-none items-center rounded-xl px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-neutral-100 data-[selected=true]:text-neutral-900 data-[disabled=true]:opacity-50",e),...t}));de.displayName=d.Command.Item.displayName;var st=({className:e,...t})=>(0,h.jsx)("span",{className:a("ml-auto text-xs tracking-widest text-neutral-500",e),...t});st.displayName="CommandShortcut";var _e=R(require("react"),1),w=R(require("@radix-ui/react-popover"),1);var ce=require("react/jsx-runtime"),Oe=w.Root,He=w.Trigger,fe=_e.forwardRef(({className:e,align:t="center",sideOffset:o=4,...i},n)=>(0,ce.jsx)(w.Portal,{children:(0,ce.jsx)(w.Content,{ref:n,align:t,sideOffset:o,className:a("z-50 rounded-2xl border bg-white p-4 text-black 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",e),...i})}));fe.displayName=w.Content.displayName;var Be=require("cva");var Ae=require("react/jsx-runtime"),mt=(0,Be.cva)("rounded-full px-2 py-0.5 text-xs font-semibold",{variants:{variant:{green:"bg-green-90 text-white",pickle:"bg-pickle-100 text-black",purple:"bg-purple-100 text-white"}},defaultVariants:{variant:"green"}});function Z({className:e,variant:t,...o}){return(0,Ae.jsx)("div",{className:a(mt({variant:t}),e),...o})}var s=require("react/jsx-runtime"),ue=(0,T.forwardRef)((e,t)=>{let{value:o,label:i,options:n,classNames:c,multiselect:x,placeholder:C,variant:I="default",size:V,className:S,onChange:z,children:K}=e,L=x?o??[]:o?[o]:[],[f,F]=(0,T.useState)(L),[W,O]=(0,T.useState)(!1),j=n?.length<=5,H=I==="default",ee=I==="chip";(0,T.useEffect)(()=>{z?.(x?f:f[0])},[f]);let $=b=>{if(x)return F(v=>v.includes(b)?v.filter(r=>r!==b):[...v,b]);F([b]),O(!1)},X=()=>{let b=f.length>0?f.join(", "):C;return H?b:i};return(0,s.jsxs)("div",{className:a("flex flex-col gap-2",S),children:[H&&i&&(0,s.jsx)(M,{text:i,className:c?.label}),(0,s.jsxs)(Oe,{open:W,onOpenChange:O,children:[(0,s.jsx)(He,{asChild:!0,disabled:n.length===0,children:(0,s.jsxs)("div",{ref:t,className:a(pt({variant:I,size:V}),c?.trigger),"aria-expanded":W,children:[ee&&f.length>0&&(0,s.jsx)(Z,{variant:"purple",children:f.length}),(0,s.jsx)("span",{className:a("truncate leading-normal",H&&f.length==0&&"text-grey-40"),children:X()}),(0,s.jsx)(Ge.ChevronDownIcon,{className:"transform group-data-[state=open]:rotate-180",size:"16"})]})}),(0,s.jsx)(ne,{children:(0,s.jsxs)(fe,{className:a("flex w-full max-w-xs flex-col overflow-hidden p-0","max-h-[--radix-popover-content-available-height]",c?.content),collisionPadding:8,sideOffset:4,align:"start",children:[!j&&(0,s.jsx)(le,{placeholder:"Search..."}),(0,s.jsxs)(se,{children:[(0,s.jsx)(me,{children:"No results"}),(0,s.jsx)(pe,{children:n.map(({id:b,...v})=>(0,s.jsx)(de,{value:v.value,onSelect:$,children:(0,s.jsx)(Y,{className:a(c?.items,"truncate py-1"),isSelected:f?.includes(v.value),hasCheckbox:x,...v})},b))})]}),!!K&&(0,s.jsx)(B,{}),K]})})]})]})});ue.displayName="Combobox";var pt=(0,Ke.cva)("group relative cursor-pointer flex flex-row items-center justify-between gap-2 border border-grey-20 focus:outline-green-80 disabled:bg-grey-5",{variants:{variant:{default:["w-full","max-w-80","rounded-lg"],chip:["font-bold","rounded-3xl","data-[state=open]:bg-black","data-[state=open]:text-white"]},size:{small:["h-8","p-1","pl-2","text-xs"],normal:["h-9","p-2","pl-3","text-sm"],large:["h-10","p-3","pl-4","text-base"]}},defaultVariants:{variant:"default",size:"normal"}});0&&(module.exports={Badge,Button,Checkbox,Chip,Combobox,Label,ListItem,Select,cn});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|