@solace-health/ui 0.10.719 → 0.10.721

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/chunk-6K6WXMWB.cjs +2 -0
  2. package/dist/chunk-6K6WXMWB.cjs.map +1 -0
  3. package/dist/chunk-K63JFA6C.cjs +2 -0
  4. package/dist/chunk-K63JFA6C.cjs.map +1 -0
  5. package/dist/chunk-N27L7K64.js +2 -0
  6. package/dist/chunk-N27L7K64.js.map +1 -0
  7. package/dist/chunk-UQCNRDXB.js +2 -0
  8. package/dist/chunk-UQCNRDXB.js.map +1 -0
  9. package/dist/metafile-cjs.json +1 -1
  10. package/dist/metafile-esm.json +1 -1
  11. package/dist/v2/address-input/address-input.cjs +1 -1
  12. package/dist/v2/address-input/address-input.js +1 -1
  13. package/dist/v2/combobox/combobox.cjs +1 -1
  14. package/dist/v2/combobox/combobox.d.ts +6 -0
  15. package/dist/v2/combobox/combobox.js +1 -1
  16. package/dist/v2/combobox/combobox.stories.d.ts +1 -0
  17. package/dist/v2/date-picker/date-picker-input.cjs +1 -1
  18. package/dist/v2/date-picker/date-picker-input.js +1 -1
  19. package/dist/v2/date-picker/date-picker.cjs +1 -1
  20. package/dist/v2/date-picker/date-picker.js +1 -1
  21. package/dist/v2/image-preview/image-preview.cjs +1 -1
  22. package/dist/v2/image-preview/image-preview.js +1 -1
  23. package/dist/v2/index.cjs +1 -1
  24. package/dist/v2/index.js +1 -1
  25. package/dist/v2/radio-button-group/radio-button-group.cjs +1 -1
  26. package/dist/v2/radio-button-group/radio-button-group.d.ts +1 -1
  27. package/dist/v2/radio-button-group/radio-button-group.js +1 -1
  28. package/dist/v2/radio-button-group/radio-button-group.stories.d.ts +1 -0
  29. package/dist/v2/time-select/time-select.cjs +1 -1
  30. package/dist/v2/time-select/time-select.js +1 -1
  31. package/package.json +2 -2
  32. package/dist/chunk-NRPSJWVS.js +0 -2
  33. package/dist/chunk-NRPSJWVS.js.map +0 -1
  34. package/dist/chunk-RW4X7LSI.cjs +0 -2
  35. package/dist/chunk-RW4X7LSI.cjs.map +0 -1
  36. package/dist/chunk-YNO7JCKX.cjs +0 -2
  37. package/dist/chunk-YNO7JCKX.cjs.map +0 -1
  38. package/dist/chunk-YOXQYCZI.js +0 -2
  39. package/dist/chunk-YOXQYCZI.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),classVarianceAuthority=require('class-variance-authority'),react=require('motion/react'),l=require('radix-ui/radio-group'),pi=require('react-icons/pi'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var l__namespace=/*#__PURE__*/_interopNamespace(l);var y=classVarianceAuthority.cva(["focus-visible:border-ring","focus-visible:ring-ring/50","aria-invalid:ring-destructive/20","dark:aria-invalid:ring-destructive/40","aria-invalid:border-destructive","text-dark-green","disabled:text-secondary-foreground","h-auto","min-h-12","shrink-0","cursor-pointer","rounded-md","border","bg-white","px-4","py-3","leading-tight","font-bold","whitespace-normal","outline-none","hover:bg-green-100","focus-visible:ring-[3px]","disabled:pointer-events-none","disabled:border-gray-300","disabled:bg-white","disabled:opacity-50","[&_svg]:pointer-events-none","[&_svg]:shrink-0","[&_svg:not([class*='size-'])]:size-5"],{variants:{variant:{primary:["inline-flex","items-center","justify-between","gap-2","transition-all"],dark:["inline-flex","items-center","justify-between","gap-2","transition-all","bg-transparent","text-white","hover:border-green-600","hover:bg-transparent","disabled:border-gray-500","disabled:bg-transparent","disabled:text-white"],card:["group","w-full","grid","grid-cols-[1fr_auto]","gap-y-4","p-4","transition-colors","min-w-48"]},size:{default:"",sm:'h-8 px-3 [&_svg:not([class*="size-"])]:size-4'},checked:{true:"border-dark-green"}},compoundVariants:[{variant:"primary",checked:false,className:"border-gray-400"},{variant:"card",checked:false,className:"border-gray-200"},{variant:"dark",checked:false,className:"border-gray-500"},{variant:"dark",checked:true,className:"border-green-600 bg-green-900/20"}],defaultVariants:{variant:"primary",size:"default",checked:false}});function R({label:e,value:a,className:i=void 0,...t}){return jsxRuntime.jsxs(l__namespace.Item,{"data-slot":"radio-group-item",value:a,className:chunkQRO22BPZ_cjs.a("flex h-8 w-full cursor-pointer items-center gap-2 disabled:cursor-not-allowed disabled:opacity-50",i),...t,children:[jsxRuntime.jsx("span",{className:chunkQRO22BPZ_cjs.a("flex h-5 w-5 items-center justify-center rounded-full border border-gray-400 transition-colors",t.checked&&"border-dark-green","bg-white","relative"),children:t.checked&&jsxRuntime.jsx("span",{className:"bg-dark-green h-3 w-3 rounded-full"})}),!!e&&jsxRuntime.jsx("span",{className:"min-w-0 flex-1 text-left break-words select-none",children:e})]})}function G({label:e,value:a,className:i=void 0,...t}){return jsxRuntime.jsxs(l__namespace.Item,{"data-slot":"radio-group-item",value:a,className:chunkQRO22BPZ_cjs.a("group flex w-full cursor-pointer items-center gap-2 rounded-md border-1 border-gray-400 bg-white px-2 py-3 transition-colors outline-none",t.checked&&"border-dark-green","enabled:hover:bg-green-100","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","disabled:cursor-not-allowed disabled:border-gray-300 disabled:opacity-50",i),...t,children:[jsxRuntime.jsx("span",{className:chunkQRO22BPZ_cjs.a("group-enabled:group-hover:border-dark-green flex size-5 shrink-0 items-center justify-center rounded-full border border-gray-400 bg-white transition-colors",t.checked&&"border-dark-green"),children:t.checked&&jsxRuntime.jsx("span",{className:"bg-dark-green size-3 rounded-full"})}),!!e&&jsxRuntime.jsx("span",{className:"text-primary min-w-0 flex-1 text-left break-words select-none",children:e})]})}function C({children:e,label:a=void 0,className:i=""}){return a?jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("text-primary text-left font-bold",i),children:a}):jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("flex w-full items-center gap-4",i),children:e})}function z({className:e,children:a}){return jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("text-primary col-span-2 text-left font-normal",e),children:a})}function B({children:e,open:a,className:i=""}){return jsxRuntime.jsx(react.motion.div,{initial:false,animate:a?{height:"auto",opacity:1}:{height:0,opacity:0},transition:{height:{duration:.24,ease:"easeInOut"},opacity:{duration:.18,ease:"easeInOut"}},className:chunkQRO22BPZ_cjs.a("col-span-2 overflow-hidden text-left font-normal",i),"aria-hidden":!a,children:e})}function V({icon:e=void 0,className:a="",unstyled:i=false}){let t=chunkQRO22BPZ_cjs.a("opacity-0 group-data-[state=checked]:opacity-100",a);return e?i?e:jsxRuntime.jsx("span",{className:t,children:e}):jsxRuntime.jsx(pi.PiCheckCircleFill,{className:t})}function k({label:e=void 0,value:a,size:i="default",variant:t="primary",className:n=void 0,children:u=void 0,...d}){return t==="basic"?jsxRuntime.jsx(R,{label:e,value:a,className:n,...d}):t==="radio-left"?jsxRuntime.jsx(G,{label:e,value:a,className:n,...d}):jsxRuntime.jsx(l__namespace.Item,{"data-slot":"radio-group-item",value:a,className:chunkQRO22BPZ_cjs.a(y({variant:t,size:i,checked:d.checked}),n),...d,children:t==="card"?u:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!!e&&jsxRuntime.jsx("div",{className:"text-left",children:e})," ",t==="dark"?jsxRuntime.jsx("span",{className:chunkQRO22BPZ_cjs.a("flex size-5 items-center justify-center rounded-full bg-green-600 transition-opacity",d.checked?"opacity-100":"opacity-0"),children:jsxRuntime.jsx(pi.PiCheckBold,{className:"size-3 text-white"})}):jsxRuntime.jsx(pi.PiCheckCircleFill,{className:chunkQRO22BPZ_cjs.a(d.checked?"opacity-100":"opacity-0")})]})})}function _({className:e,id:a,value:i,children:t=null,columns:n=1,items:u=[],size:d="default",variant:g="primary",itemClassName:f=void 0,...p}){return jsxRuntime.jsx(l__namespace.Root,{"data-slot":"radio-group",className:chunkQRO22BPZ_cjs.a("grid gap-2",n===1&&"grid-cols-1",n===2&&"grid-cols-2",n===3&&"grid-cols-3",n===4&&"grid-cols-4",e),id:a,value:i,...p,children:u?.length?u.map(s=>jsxRuntime.jsx(k,{"data-slot":"radio-group-item",value:s.value,label:s.label,id:`${a}-${s.value}`,checked:i===s.value,disabled:s.disabled,onValueChange:p.onValueChange,size:d,variant:g,className:f},s.value)):t})}exports.a=C;exports.b=z;exports.c=B;exports.d=V;exports.e=k;exports.f=_;//# sourceMappingURL=chunk-6K6WXMWB.cjs.map
2
+ //# sourceMappingURL=chunk-6K6WXMWB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/radio-button-group/radio-button-group.tsx"],"names":["radioGroupVariants","cva","BasicRadioButtonGroupItem","label","value","className","props","jsxs","l","cn","jsx","RadioLeftButtonGroupItem","RadioGroupItemHeader","children","RadioGroupItemContent","RadioGroupItemCollapseContent","open","motion","RadioGroupItemIcon","icon","unstyled","iconClassName","PiCheckCircleFill","RadioGroupItem","size","variant","Fragment","PiCheckBold","RadioButtonGroup","id","columns","items","itemClassName","item"],"mappings":"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","file":"chunk-6K6WXMWB.cjs","sourcesContent":["import { cva } from 'class-variance-authority';\nimport { motion } from 'motion/react';\nimport * as React from 'react';\nimport * as RadioGroupPrimitive from 'radix-ui/radio-group';\n\nimport { PiCheckBold, PiCheckCircleFill } from 'react-icons/pi';\nimport { cn } from '@/lib/utils';\nimport { type ButtonSize } from '@/v2/button/button';\n\ntype Variant = 'primary' | 'basic' | 'card' | 'dark' | 'radio-left';\n\ntype RadioButtonGroupItemProps = React.ComponentProps<typeof RadioGroupPrimitive.Item> & {\n label?: string | React.ReactElement;\n value: string;\n onValueChange?: (value: string) => void;\n size?: ButtonSize;\n variant?: Variant;\n};\n\nconst radioGroupVariants = cva(\n [\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'aria-invalid:ring-destructive/20',\n 'dark:aria-invalid:ring-destructive/40',\n 'aria-invalid:border-destructive',\n 'text-dark-green',\n 'disabled:text-secondary-foreground',\n 'h-auto',\n 'min-h-12',\n 'shrink-0',\n 'cursor-pointer',\n 'rounded-md',\n 'border',\n 'bg-white',\n 'px-4',\n 'py-3',\n 'leading-tight',\n 'font-bold',\n 'whitespace-normal',\n 'outline-none',\n 'hover:bg-green-100',\n 'focus-visible:ring-[3px]',\n 'disabled:pointer-events-none',\n 'disabled:border-gray-300',\n 'disabled:bg-white',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-5\",\n ],\n {\n variants: {\n variant: {\n primary: ['inline-flex', 'items-center', 'justify-between', 'gap-2', 'transition-all'],\n dark: [\n 'inline-flex',\n 'items-center',\n 'justify-between',\n 'gap-2',\n 'transition-all',\n 'bg-transparent',\n 'text-white',\n 'hover:border-green-600',\n 'hover:bg-transparent',\n 'disabled:border-gray-500',\n 'disabled:bg-transparent',\n 'disabled:text-white',\n ],\n card: [\n 'group',\n 'w-full',\n 'grid',\n 'grid-cols-[1fr_auto]',\n 'gap-y-4',\n 'p-4',\n 'transition-colors',\n 'min-w-48',\n ],\n },\n size: {\n default: '',\n sm: 'h-8 px-3 [&_svg:not([class*=\"size-\"])]:size-4',\n },\n checked: {\n true: 'border-dark-green',\n },\n },\n compoundVariants: [\n {\n variant: 'primary',\n checked: false,\n className: 'border-gray-400',\n },\n {\n variant: 'card',\n checked: false,\n className: 'border-gray-200',\n },\n {\n variant: 'dark',\n checked: false,\n className: 'border-gray-500',\n },\n {\n variant: 'dark',\n checked: true,\n className: 'border-green-600 bg-green-900/20',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n checked: false,\n },\n },\n);\n\nfunction BasicRadioButtonGroupItem({\n label,\n value,\n className = undefined,\n ...props\n}: Omit<RadioButtonGroupItemProps, 'variant' | 'size'>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n value={value}\n className={cn(\n 'flex h-8 w-full cursor-pointer items-center gap-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <span\n className={cn(\n 'flex h-5 w-5 items-center justify-center rounded-full border border-gray-400 transition-colors',\n props.checked && 'border-dark-green',\n 'bg-white',\n 'relative',\n )}\n >\n {props.checked && <span className=\"bg-dark-green h-3 w-3 rounded-full\" />}\n </span>\n {!!label && <span className=\"min-w-0 flex-1 text-left break-words select-none\">{label}</span>}\n </RadioGroupPrimitive.Item>\n );\n}\n\nfunction RadioLeftButtonGroupItem({\n label,\n value,\n className = undefined,\n ...props\n}: Omit<RadioButtonGroupItemProps, 'variant' | 'size'>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n value={value}\n className={cn(\n 'group flex w-full cursor-pointer items-center gap-2 rounded-md border-1 border-gray-400 bg-white px-2 py-3 transition-colors outline-none',\n props.checked && 'border-dark-green',\n 'enabled:hover:bg-green-100',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'disabled:cursor-not-allowed disabled:border-gray-300 disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <span\n className={cn(\n 'group-enabled:group-hover:border-dark-green flex size-5 shrink-0 items-center justify-center rounded-full border border-gray-400 bg-white transition-colors',\n props.checked && 'border-dark-green',\n )}\n >\n {props.checked && <span className=\"bg-dark-green size-3 rounded-full\" />}\n </span>\n {!!label && (\n <span className=\"text-primary min-w-0 flex-1 text-left break-words select-none\">\n {label}\n </span>\n )}\n </RadioGroupPrimitive.Item>\n );\n}\n\ntype RadioGroupItemHeaderProps = React.PropsWithChildren & {\n label?: string | React.ReactNode;\n className?: string;\n};\n\n/** Display the header section of a radio group item. Defaults to `label` prop if provided.\n *\n * Recommended for use with the `card` variant.\n */\nfunction RadioGroupItemHeader({\n children,\n label = undefined,\n className = '',\n}: RadioGroupItemHeaderProps) {\n if (label) {\n return <div className={cn('text-primary text-left font-bold', className)}>{label}</div>;\n }\n\n return <div className={cn('flex w-full items-center gap-4', className)}>{children}</div>;\n}\n\ntype RadioGroupItemContentProps = Pick<RadioButtonGroupItemProps, 'children' | 'className'>;\n\nfunction RadioGroupItemContent({ className, children }: RadioGroupItemContentProps) {\n return (\n <div className={cn('text-primary col-span-2 text-left font-normal', className)}>{children}</div>\n );\n}\n\ntype RadioGroupItemCollapseContentProps = React.PropsWithChildren & {\n className?: string;\n open: boolean;\n};\n\n/** Display a collapsible content section within a radio group item.\n *\n * Recommended for use with the `card` variant.\n */\nfunction RadioGroupItemCollapseContent({\n children,\n open,\n className = '',\n}: RadioGroupItemCollapseContentProps) {\n return (\n <motion.div\n initial={false}\n animate={open ? { height: 'auto', opacity: 1 } : { height: 0, opacity: 0 }}\n transition={{\n height: { duration: 0.24, ease: 'easeInOut' },\n opacity: { duration: 0.18, ease: 'easeInOut' },\n }}\n className={cn('col-span-2 overflow-hidden text-left font-normal', className)}\n aria-hidden={!open}\n >\n {children}\n </motion.div>\n );\n}\n\ntype RadioGroupItemIconProps = {\n className?: string;\n icon?: React.ReactNode;\n unstyled?: boolean;\n};\n\n/** Display a custom icon or a default check icon when the radio button is checked.\n *\n * Recommended for use with the `card` variant.\n */\nfunction RadioGroupItemIcon({\n icon = undefined,\n className = '',\n unstyled = false,\n}: RadioGroupItemIconProps) {\n const iconClassName = cn('opacity-0 group-data-[state=checked]:opacity-100', className);\n\n if (icon) {\n return unstyled ? icon : <span className={iconClassName}>{icon}</span>;\n }\n\n return <PiCheckCircleFill className={iconClassName} />;\n}\n\n/** Display a radio group item. Must be used inside of a `RadioButtonGroup`. */\nfunction RadioGroupItem({\n label = undefined,\n value,\n size = 'default',\n variant = 'primary',\n className = undefined,\n children = undefined,\n ...props\n}: RadioButtonGroupItemProps) {\n if (variant === 'basic') {\n return (\n <BasicRadioButtonGroupItem label={label} value={value} className={className} {...props} />\n );\n }\n\n if (variant === 'radio-left') {\n return (\n <RadioLeftButtonGroupItem label={label} value={value} className={className} {...props} />\n );\n }\n\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n value={value}\n className={cn(radioGroupVariants({ variant, size, checked: props.checked }), className)}\n {...props}\n >\n {variant === 'card' ? (\n children\n ) : (\n <>\n {!!label && <div className=\"text-left\">{label}</div>}{' '}\n {variant === 'dark' ? (\n <span\n className={cn(\n 'flex size-5 items-center justify-center rounded-full bg-green-600 transition-opacity',\n props.checked ? 'opacity-100' : 'opacity-0',\n )}\n >\n <PiCheckBold className=\"size-3 text-white\" />\n </span>\n ) : (\n <PiCheckCircleFill className={cn(props.checked ? 'opacity-100' : 'opacity-0')} />\n )}\n </>\n )}\n </RadioGroupPrimitive.Item>\n );\n}\n\ntype RadioGroupProps = React.ComponentProps<typeof RadioGroupPrimitive.Root> & {\n columns?: 1 | 2 | 3 | 4;\n items?: { label: string | React.ReactElement; value: string; disabled?: boolean }[];\n size?: ButtonSize;\n variant?: Variant;\n itemClassName?: string;\n};\n\nfunction RadioButtonGroup({\n className,\n id,\n value,\n children = null,\n columns = 1,\n items = [],\n size = 'default',\n variant = 'primary',\n itemClassName = undefined,\n ...props\n}: RadioGroupProps) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\n 'grid gap-2',\n columns === 1 && 'grid-cols-1',\n columns === 2 && 'grid-cols-2',\n columns === 3 && 'grid-cols-3',\n columns === 4 && 'grid-cols-4',\n className,\n )}\n id={id}\n value={value}\n {...props}\n >\n {items?.length\n ? items.map((item) => (\n <RadioGroupItem\n data-slot=\"radio-group-item\"\n key={item.value}\n value={item.value}\n label={item.label}\n id={`${id}-${item.value}`}\n checked={value === item.value}\n disabled={item.disabled}\n onValueChange={props.onValueChange}\n size={size}\n variant={variant}\n className={itemClassName}\n />\n ))\n : children}\n </RadioGroupPrimitive.Root>\n );\n}\n\nexport {\n RadioButtonGroup,\n RadioGroupItem,\n RadioGroupItemContent,\n RadioGroupItemCollapseContent,\n RadioGroupItemIcon,\n RadioGroupItemHeader,\n type RadioGroupProps,\n type RadioButtonGroupItemProps,\n type RadioGroupItemContentProps,\n type RadioGroupItemCollapseContentProps,\n type RadioGroupItemIconProps,\n type RadioGroupItemHeaderProps,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkODAOIGPB_cjs=require('./chunk-ODAOIGPB.cjs'),chunk5EK4BBD6_cjs=require('./chunk-5EK4BBD6.cjs'),chunk4CHRDQR7_cjs=require('./chunk-4CHRDQR7.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),lu=require('react-icons/lu'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var A=({classNames:i=void 0,disabled:l=false,options:p,preSearchOptions:I=void 0,search:c=void 0,onSearchChange:u=void 0,onChange:T=void 0,onOpenChange:b=void 0,placeholder:D="Select an option",searchLabel:E="Search...",notFoundMessage:G="Not found.",value:n=void 0,size:R="default",error:f=false,shouldFilter:V=true,pinnedOption:a=void 0})=>{let[d,h]=react.useState(false),[H,g]=react.useState(false),v=c!==void 0,K=(v?!!c:H)?p:I||p,[M,s]=react.useState(""),U=()=>{h(!d),g(false),s(""),!d&&v&&u?.(""),b?.(!d);},C=e=>{T?.(e===n?"":e),h(false),g(false),s(""),b?.(false);},W=a&&a.value===n?a:p.find(e=>e.value===n);return jsxRuntime.jsxs(chunkODAOIGPB_cjs.a,{open:d,onOpenChange:U,children:[jsxRuntime.jsxs(chunkODAOIGPB_cjs.b,{"aria-invalid":f,"data-placeholder":n?void 0:"",disabled:l,className:chunkQRO22BPZ_cjs.a("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",R==="sm"&&"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4",i?.trigger),children:[jsxRuntime.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!n&&jsxRuntime.jsx(lu.LuSearch,{className:chunkQRO22BPZ_cjs.a(f&&"text-red")}),jsxRuntime.jsx("span",{className:chunkQRO22BPZ_cjs.a("block min-w-0 truncate",!n&&"text-gray-700"),children:n?W?.label:D})]}),jsxRuntime.jsx(lu.LuChevronsUpDown,{className:"opacity-50"})]}),jsxRuntime.jsx(chunkODAOIGPB_cjs.c,{align:"start",className:chunkQRO22BPZ_cjs.a("w-[var(--radix-popover-trigger-width)] p-0",i?.content),children:jsxRuntime.jsxs(chunk4CHRDQR7_cjs.a,{shouldFilter:V,value:M,onValueChange:s,children:[jsxRuntime.jsx(chunk4CHRDQR7_cjs.c,{placeholder:E,className:chunkQRO22BPZ_cjs.a("h-9",i?.input),value:c,onValueChange:e=>{g(!!e),u?.(e);}}),jsxRuntime.jsxs(chunk4CHRDQR7_cjs.d,{onWheel:e=>e.stopPropagation(),children:[jsxRuntime.jsx(chunk4CHRDQR7_cjs.e,{children:G}),jsxRuntime.jsx(chunk4CHRDQR7_cjs.f,{children:K.map(e=>jsxRuntime.jsxs(chunk4CHRDQR7_cjs.h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:C,className:i?.item,disabled:e.disabled,children:[e.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",n===e.value?"opacity-100":"opacity-0")})]},e.value))})]}),a&&jsxRuntime.jsx(chunk4CHRDQR7_cjs.j,{className:"border-t-0",children:jsxRuntime.jsxs("button",{type:"button",disabled:a.disabled,onClick:()=>C(a.value),onPointerEnter:()=>s(""),onFocus:()=>s(""),onKeyDown:e=>{e.key==="Enter"&&e.stopPropagation();},className:chunkQRO22BPZ_cjs.a("text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",i?.pinnedOption),children:[a.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",n===a.value?"opacity-100":"opacity-0")})]})})]})})]})},ee=({variant:i="default",...l})=>i==="input"?jsxRuntime.jsx(chunk5EK4BBD6_cjs.a,{...l}):jsxRuntime.jsx(A,{...l});exports.a=ee;//# sourceMappingURL=chunk-K63JFA6C.cjs.map
2
+ //# sourceMappingURL=chunk-K63JFA6C.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/combobox/combobox.tsx"],"names":["DefaultCombobox","classNames","disabled","options","preSearchOptions","search","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","pinnedOption","open","setOpen","useState","isSearching","setIsSearching","isSearchControlled","optionsToDisplay","highlighted","setHighlighted","handleOpenChange","handleSelect","selectedValue","selectedOption","item","jsxs","Popover","PopoverTrigger","cn","jsx","LuSearch","LuChevronsUpDown","PopoverContent","Command","CommandInput","val","CommandList","CommandEmpty","CommandGroup","CommandItem","LuCheck","CommandFooter","Combobox","variant","props","InputVariantCombobox"],"mappings":"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","file":"chunk-K63JFA6C.cjs","sourcesContent":["import { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { useState } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/v2/popover/popover';\nimport { cn } from '@/lib/utils';\nimport {\n Command,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/v2/command/command';\nimport { InputVariantCombobox } from './input-variant';\n\nexport type ComboboxOption = {\n label: string | React.ReactNode;\n value: string;\n additionalSearchText?: string;\n secondaryLabel?: string;\n disabled?: boolean;\n};\n\nexport type ComboboxProps = {\n classNames?: {\n content?: string;\n input?: string;\n item?: string;\n pinnedOption?: string;\n positioner?: string;\n trigger?: string;\n };\n disabled?: boolean;\n options: ComboboxOption[];\n preSearchOptions?: ComboboxOption[];\n /**\n * Controls the search input's text. Leave it out to let the Combobox manage the search itself.\n * When set, the Combobox calls `onSearchChange('')` each time it opens, so the parent can\n * reset the search. Only the default variant supports it.\n */\n search?: string;\n onSearchChange?: (value: string) => void;\n onChange?: (value: string) => void;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchLabel?: string;\n notFoundMessage?: string;\n value?: string;\n size?: 'default' | 'sm';\n error?: boolean;\n shouldFilter?: boolean;\n /**\n * An option pinned below the scrollable list, always visible and never filtered.\n * Selecting it calls `onChange` like any other option.\n */\n pinnedOption?: ComboboxOption;\n side?: 'top' | 'bottom';\n variant?: 'default' | 'input';\n};\n\nconst DefaultCombobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n search = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n pinnedOption = undefined,\n}: Omit<ComboboxProps, 'side' | 'variant'>) => {\n const [open, setOpen] = useState(false);\n\n // Allow filtering down to just a subset of options before searching\n // NOTE: preSearchOptions is optional, while options is a required prop that we can fallback to\n const [isSearching, setIsSearching] = useState(false);\n const isSearchControlled = search !== undefined;\n const hasSearch = isSearchControlled ? !!search : isSearching;\n const optionsToDisplay = hasSearch ? options : preSearchOptions || options;\n\n // cmdk's highlighted item, controlled so hovering the pinned option can clear it\n const [highlighted, setHighlighted] = useState('');\n\n const handleOpenChange = () => {\n setOpen(!open);\n setIsSearching(false);\n setHighlighted('');\n // The uncontrolled input clears itself on open; a controlled one needs the parent to clear it\n if (!open && isSearchControlled) onSearchChange?.('');\n onOpenChange?.(!open);\n };\n\n // Shared by the list items and the pinned option so they can't drift apart\n const handleSelect = (selectedValue: string) => {\n onChange?.(selectedValue === value ? '' : selectedValue);\n setOpen(false);\n setIsSearching(false);\n setHighlighted('');\n onOpenChange?.(false);\n };\n\n const selectedOption =\n pinnedOption && pinnedOption.value === value\n ? pinnedOption\n : options.find((item) => item.value === value);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n aria-invalid={error}\n data-placeholder={!value ? '' : undefined}\n disabled={disabled}\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {!value && <LuSearch className={cn(error && 'text-red')} />}\n <span className={cn('block min-w-0 truncate', !value && 'text-gray-700')}>\n {value ? selectedOption?.label : placeholder}\n </span>\n </div>\n <LuChevronsUpDown className=\"opacity-50\" />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <Command\n shouldFilter={\n // This should be mainly be driven by the presence of the `onSearchChange` function\n // to match multiselect's behavior, however we omit this for backwards compatibility.\n shouldFilter\n }\n value={highlighted}\n onValueChange={setHighlighted}\n >\n <CommandInput\n placeholder={searchLabel}\n className={cn('h-9', classNames?.input)}\n value={search}\n onValueChange={(val) => {\n setIsSearching(!!val);\n onSearchChange?.(val);\n }}\n />\n <CommandList onWheel={(e) => e.stopPropagation()}>\n <CommandEmpty>{notFoundMessage}</CommandEmpty>\n <CommandGroup>\n {optionsToDisplay.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n keywords={[\n typeof item.label === 'string' ? item.label : '',\n item.additionalSearchText ?? '',\n ]}\n onSelect={handleSelect}\n className={classNames?.item}\n disabled={item.disabled}\n >\n {item.label}\n <LuCheck\n className={cn('ml-auto', value === item.value ? 'opacity-100' : 'opacity-0')}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n {pinnedOption && (\n // A plain button, not a CommandItem, so cmdk never filters it out. The trade-off is\n // that arrow keys don't reach it; it's reachable with Tab from the search input instead.\n <CommandFooter className=\"border-t-0\">\n <button\n type=\"button\"\n disabled={pinnedOption.disabled}\n onClick={() => handleSelect(pinnedOption.value)}\n // cmdk keeps the last hovered item highlighted; clear it so only one row looks active\n onPointerEnter={() => setHighlighted('')}\n onFocus={() => setHighlighted('')}\n onKeyDown={(e) => {\n // cmdk's root handles Enter by preventing the default and selecting the\n // highlighted option, which would swallow this button's own activation\n if (e.key === 'Enter') e.stopPropagation();\n }}\n className={cn(\n \"text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\",\n classNames?.pinnedOption,\n )}\n >\n {pinnedOption.label}\n <LuCheck\n className={cn(\n 'ml-auto',\n value === pinnedOption.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </button>\n </CommandFooter>\n )}\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Combobox = ({ variant = 'default', ...props }: ComboboxProps) =>\n variant === 'input' ? <InputVariantCombobox {...props} /> : <DefaultCombobox {...props} />;\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-YTIIAU4W.js';import {cva}from'class-variance-authority';import {motion}from'motion/react';import*as l from'radix-ui/radio-group';import {PiCheckCircleFill,PiCheckBold}from'react-icons/pi';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var y=cva(["focus-visible:border-ring","focus-visible:ring-ring/50","aria-invalid:ring-destructive/20","dark:aria-invalid:ring-destructive/40","aria-invalid:border-destructive","text-dark-green","disabled:text-secondary-foreground","h-auto","min-h-12","shrink-0","cursor-pointer","rounded-md","border","bg-white","px-4","py-3","leading-tight","font-bold","whitespace-normal","outline-none","hover:bg-green-100","focus-visible:ring-[3px]","disabled:pointer-events-none","disabled:border-gray-300","disabled:bg-white","disabled:opacity-50","[&_svg]:pointer-events-none","[&_svg]:shrink-0","[&_svg:not([class*='size-'])]:size-5"],{variants:{variant:{primary:["inline-flex","items-center","justify-between","gap-2","transition-all"],dark:["inline-flex","items-center","justify-between","gap-2","transition-all","bg-transparent","text-white","hover:border-green-600","hover:bg-transparent","disabled:border-gray-500","disabled:bg-transparent","disabled:text-white"],card:["group","w-full","grid","grid-cols-[1fr_auto]","gap-y-4","p-4","transition-colors","min-w-48"]},size:{default:"",sm:'h-8 px-3 [&_svg:not([class*="size-"])]:size-4'},checked:{true:"border-dark-green"}},compoundVariants:[{variant:"primary",checked:false,className:"border-gray-400"},{variant:"card",checked:false,className:"border-gray-200"},{variant:"dark",checked:false,className:"border-gray-500"},{variant:"dark",checked:true,className:"border-green-600 bg-green-900/20"}],defaultVariants:{variant:"primary",size:"default",checked:false}});function R({label:e,value:a$1,className:i=void 0,...t}){return jsxs(l.Item,{"data-slot":"radio-group-item",value:a$1,className:a("flex h-8 w-full cursor-pointer items-center gap-2 disabled:cursor-not-allowed disabled:opacity-50",i),...t,children:[jsx("span",{className:a("flex h-5 w-5 items-center justify-center rounded-full border border-gray-400 transition-colors",t.checked&&"border-dark-green","bg-white","relative"),children:t.checked&&jsx("span",{className:"bg-dark-green h-3 w-3 rounded-full"})}),!!e&&jsx("span",{className:"min-w-0 flex-1 text-left break-words select-none",children:e})]})}function G({label:e,value:a$1,className:i=void 0,...t}){return jsxs(l.Item,{"data-slot":"radio-group-item",value:a$1,className:a("group flex w-full cursor-pointer items-center gap-2 rounded-md border-1 border-gray-400 bg-white px-2 py-3 transition-colors outline-none",t.checked&&"border-dark-green","enabled:hover:bg-green-100","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","disabled:cursor-not-allowed disabled:border-gray-300 disabled:opacity-50",i),...t,children:[jsx("span",{className:a("group-enabled:group-hover:border-dark-green flex size-5 shrink-0 items-center justify-center rounded-full border border-gray-400 bg-white transition-colors",t.checked&&"border-dark-green"),children:t.checked&&jsx("span",{className:"bg-dark-green size-3 rounded-full"})}),!!e&&jsx("span",{className:"text-primary min-w-0 flex-1 text-left break-words select-none",children:e})]})}function C({children:e,label:a$1=void 0,className:i=""}){return a$1?jsx("div",{className:a("text-primary text-left font-bold",i),children:a$1}):jsx("div",{className:a("flex w-full items-center gap-4",i),children:e})}function z({className:e,children:a$1}){return jsx("div",{className:a("text-primary col-span-2 text-left font-normal",e),children:a$1})}function B({children:e,open:a$1,className:i=""}){return jsx(motion.div,{initial:false,animate:a$1?{height:"auto",opacity:1}:{height:0,opacity:0},transition:{height:{duration:.24,ease:"easeInOut"},opacity:{duration:.18,ease:"easeInOut"}},className:a("col-span-2 overflow-hidden text-left font-normal",i),"aria-hidden":!a$1,children:e})}function V({icon:e=void 0,className:a$1="",unstyled:i=false}){let t=a("opacity-0 group-data-[state=checked]:opacity-100",a$1);return e?i?e:jsx("span",{className:t,children:e}):jsx(PiCheckCircleFill,{className:t})}function k({label:e=void 0,value:a$1,size:i="default",variant:t="primary",className:n=void 0,children:u=void 0,...d}){return t==="basic"?jsx(R,{label:e,value:a$1,className:n,...d}):t==="radio-left"?jsx(G,{label:e,value:a$1,className:n,...d}):jsx(l.Item,{"data-slot":"radio-group-item",value:a$1,className:a(y({variant:t,size:i,checked:d.checked}),n),...d,children:t==="card"?u:jsxs(Fragment,{children:[!!e&&jsx("div",{className:"text-left",children:e})," ",t==="dark"?jsx("span",{className:a("flex size-5 items-center justify-center rounded-full bg-green-600 transition-opacity",d.checked?"opacity-100":"opacity-0"),children:jsx(PiCheckBold,{className:"size-3 text-white"})}):jsx(PiCheckCircleFill,{className:a(d.checked?"opacity-100":"opacity-0")})]})})}function _({className:e,id:a$1,value:i,children:t=null,columns:n=1,items:u=[],size:d="default",variant:g="primary",itemClassName:f=void 0,...p}){return jsx(l.Root,{"data-slot":"radio-group",className:a("grid gap-2",n===1&&"grid-cols-1",n===2&&"grid-cols-2",n===3&&"grid-cols-3",n===4&&"grid-cols-4",e),id:a$1,value:i,...p,children:u?.length?u.map(s=>jsx(k,{"data-slot":"radio-group-item",value:s.value,label:s.label,id:`${a$1}-${s.value}`,checked:i===s.value,disabled:s.disabled,onValueChange:p.onValueChange,size:d,variant:g,className:f},s.value)):t})}export{C as a,z as b,B as c,V as d,k as e,_ as f};//# sourceMappingURL=chunk-N27L7K64.js.map
2
+ //# sourceMappingURL=chunk-N27L7K64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/radio-button-group/radio-button-group.tsx"],"names":["radioGroupVariants","cva","BasicRadioButtonGroupItem","label","value","className","props","jsxs","cn","jsx","RadioLeftButtonGroupItem","RadioGroupItemHeader","children","RadioGroupItemContent","RadioGroupItemCollapseContent","open","motion","RadioGroupItemIcon","icon","unstyled","iconClassName","PiCheckCircleFill","RadioGroupItem","size","variant","Fragment","PiCheckBold","RadioButtonGroup","id","columns","items","itemClassName","item"],"mappings":"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","file":"chunk-N27L7K64.js","sourcesContent":["import { cva } from 'class-variance-authority';\nimport { motion } from 'motion/react';\nimport * as React from 'react';\nimport * as RadioGroupPrimitive from 'radix-ui/radio-group';\n\nimport { PiCheckBold, PiCheckCircleFill } from 'react-icons/pi';\nimport { cn } from '@/lib/utils';\nimport { type ButtonSize } from '@/v2/button/button';\n\ntype Variant = 'primary' | 'basic' | 'card' | 'dark' | 'radio-left';\n\ntype RadioButtonGroupItemProps = React.ComponentProps<typeof RadioGroupPrimitive.Item> & {\n label?: string | React.ReactElement;\n value: string;\n onValueChange?: (value: string) => void;\n size?: ButtonSize;\n variant?: Variant;\n};\n\nconst radioGroupVariants = cva(\n [\n 'focus-visible:border-ring',\n 'focus-visible:ring-ring/50',\n 'aria-invalid:ring-destructive/20',\n 'dark:aria-invalid:ring-destructive/40',\n 'aria-invalid:border-destructive',\n 'text-dark-green',\n 'disabled:text-secondary-foreground',\n 'h-auto',\n 'min-h-12',\n 'shrink-0',\n 'cursor-pointer',\n 'rounded-md',\n 'border',\n 'bg-white',\n 'px-4',\n 'py-3',\n 'leading-tight',\n 'font-bold',\n 'whitespace-normal',\n 'outline-none',\n 'hover:bg-green-100',\n 'focus-visible:ring-[3px]',\n 'disabled:pointer-events-none',\n 'disabled:border-gray-300',\n 'disabled:bg-white',\n 'disabled:opacity-50',\n '[&_svg]:pointer-events-none',\n '[&_svg]:shrink-0',\n \"[&_svg:not([class*='size-'])]:size-5\",\n ],\n {\n variants: {\n variant: {\n primary: ['inline-flex', 'items-center', 'justify-between', 'gap-2', 'transition-all'],\n dark: [\n 'inline-flex',\n 'items-center',\n 'justify-between',\n 'gap-2',\n 'transition-all',\n 'bg-transparent',\n 'text-white',\n 'hover:border-green-600',\n 'hover:bg-transparent',\n 'disabled:border-gray-500',\n 'disabled:bg-transparent',\n 'disabled:text-white',\n ],\n card: [\n 'group',\n 'w-full',\n 'grid',\n 'grid-cols-[1fr_auto]',\n 'gap-y-4',\n 'p-4',\n 'transition-colors',\n 'min-w-48',\n ],\n },\n size: {\n default: '',\n sm: 'h-8 px-3 [&_svg:not([class*=\"size-\"])]:size-4',\n },\n checked: {\n true: 'border-dark-green',\n },\n },\n compoundVariants: [\n {\n variant: 'primary',\n checked: false,\n className: 'border-gray-400',\n },\n {\n variant: 'card',\n checked: false,\n className: 'border-gray-200',\n },\n {\n variant: 'dark',\n checked: false,\n className: 'border-gray-500',\n },\n {\n variant: 'dark',\n checked: true,\n className: 'border-green-600 bg-green-900/20',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n checked: false,\n },\n },\n);\n\nfunction BasicRadioButtonGroupItem({\n label,\n value,\n className = undefined,\n ...props\n}: Omit<RadioButtonGroupItemProps, 'variant' | 'size'>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n value={value}\n className={cn(\n 'flex h-8 w-full cursor-pointer items-center gap-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <span\n className={cn(\n 'flex h-5 w-5 items-center justify-center rounded-full border border-gray-400 transition-colors',\n props.checked && 'border-dark-green',\n 'bg-white',\n 'relative',\n )}\n >\n {props.checked && <span className=\"bg-dark-green h-3 w-3 rounded-full\" />}\n </span>\n {!!label && <span className=\"min-w-0 flex-1 text-left break-words select-none\">{label}</span>}\n </RadioGroupPrimitive.Item>\n );\n}\n\nfunction RadioLeftButtonGroupItem({\n label,\n value,\n className = undefined,\n ...props\n}: Omit<RadioButtonGroupItemProps, 'variant' | 'size'>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n value={value}\n className={cn(\n 'group flex w-full cursor-pointer items-center gap-2 rounded-md border-1 border-gray-400 bg-white px-2 py-3 transition-colors outline-none',\n props.checked && 'border-dark-green',\n 'enabled:hover:bg-green-100',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'disabled:cursor-not-allowed disabled:border-gray-300 disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <span\n className={cn(\n 'group-enabled:group-hover:border-dark-green flex size-5 shrink-0 items-center justify-center rounded-full border border-gray-400 bg-white transition-colors',\n props.checked && 'border-dark-green',\n )}\n >\n {props.checked && <span className=\"bg-dark-green size-3 rounded-full\" />}\n </span>\n {!!label && (\n <span className=\"text-primary min-w-0 flex-1 text-left break-words select-none\">\n {label}\n </span>\n )}\n </RadioGroupPrimitive.Item>\n );\n}\n\ntype RadioGroupItemHeaderProps = React.PropsWithChildren & {\n label?: string | React.ReactNode;\n className?: string;\n};\n\n/** Display the header section of a radio group item. Defaults to `label` prop if provided.\n *\n * Recommended for use with the `card` variant.\n */\nfunction RadioGroupItemHeader({\n children,\n label = undefined,\n className = '',\n}: RadioGroupItemHeaderProps) {\n if (label) {\n return <div className={cn('text-primary text-left font-bold', className)}>{label}</div>;\n }\n\n return <div className={cn('flex w-full items-center gap-4', className)}>{children}</div>;\n}\n\ntype RadioGroupItemContentProps = Pick<RadioButtonGroupItemProps, 'children' | 'className'>;\n\nfunction RadioGroupItemContent({ className, children }: RadioGroupItemContentProps) {\n return (\n <div className={cn('text-primary col-span-2 text-left font-normal', className)}>{children}</div>\n );\n}\n\ntype RadioGroupItemCollapseContentProps = React.PropsWithChildren & {\n className?: string;\n open: boolean;\n};\n\n/** Display a collapsible content section within a radio group item.\n *\n * Recommended for use with the `card` variant.\n */\nfunction RadioGroupItemCollapseContent({\n children,\n open,\n className = '',\n}: RadioGroupItemCollapseContentProps) {\n return (\n <motion.div\n initial={false}\n animate={open ? { height: 'auto', opacity: 1 } : { height: 0, opacity: 0 }}\n transition={{\n height: { duration: 0.24, ease: 'easeInOut' },\n opacity: { duration: 0.18, ease: 'easeInOut' },\n }}\n className={cn('col-span-2 overflow-hidden text-left font-normal', className)}\n aria-hidden={!open}\n >\n {children}\n </motion.div>\n );\n}\n\ntype RadioGroupItemIconProps = {\n className?: string;\n icon?: React.ReactNode;\n unstyled?: boolean;\n};\n\n/** Display a custom icon or a default check icon when the radio button is checked.\n *\n * Recommended for use with the `card` variant.\n */\nfunction RadioGroupItemIcon({\n icon = undefined,\n className = '',\n unstyled = false,\n}: RadioGroupItemIconProps) {\n const iconClassName = cn('opacity-0 group-data-[state=checked]:opacity-100', className);\n\n if (icon) {\n return unstyled ? icon : <span className={iconClassName}>{icon}</span>;\n }\n\n return <PiCheckCircleFill className={iconClassName} />;\n}\n\n/** Display a radio group item. Must be used inside of a `RadioButtonGroup`. */\nfunction RadioGroupItem({\n label = undefined,\n value,\n size = 'default',\n variant = 'primary',\n className = undefined,\n children = undefined,\n ...props\n}: RadioButtonGroupItemProps) {\n if (variant === 'basic') {\n return (\n <BasicRadioButtonGroupItem label={label} value={value} className={className} {...props} />\n );\n }\n\n if (variant === 'radio-left') {\n return (\n <RadioLeftButtonGroupItem label={label} value={value} className={className} {...props} />\n );\n }\n\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n value={value}\n className={cn(radioGroupVariants({ variant, size, checked: props.checked }), className)}\n {...props}\n >\n {variant === 'card' ? (\n children\n ) : (\n <>\n {!!label && <div className=\"text-left\">{label}</div>}{' '}\n {variant === 'dark' ? (\n <span\n className={cn(\n 'flex size-5 items-center justify-center rounded-full bg-green-600 transition-opacity',\n props.checked ? 'opacity-100' : 'opacity-0',\n )}\n >\n <PiCheckBold className=\"size-3 text-white\" />\n </span>\n ) : (\n <PiCheckCircleFill className={cn(props.checked ? 'opacity-100' : 'opacity-0')} />\n )}\n </>\n )}\n </RadioGroupPrimitive.Item>\n );\n}\n\ntype RadioGroupProps = React.ComponentProps<typeof RadioGroupPrimitive.Root> & {\n columns?: 1 | 2 | 3 | 4;\n items?: { label: string | React.ReactElement; value: string; disabled?: boolean }[];\n size?: ButtonSize;\n variant?: Variant;\n itemClassName?: string;\n};\n\nfunction RadioButtonGroup({\n className,\n id,\n value,\n children = null,\n columns = 1,\n items = [],\n size = 'default',\n variant = 'primary',\n itemClassName = undefined,\n ...props\n}: RadioGroupProps) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\n 'grid gap-2',\n columns === 1 && 'grid-cols-1',\n columns === 2 && 'grid-cols-2',\n columns === 3 && 'grid-cols-3',\n columns === 4 && 'grid-cols-4',\n className,\n )}\n id={id}\n value={value}\n {...props}\n >\n {items?.length\n ? items.map((item) => (\n <RadioGroupItem\n data-slot=\"radio-group-item\"\n key={item.value}\n value={item.value}\n label={item.label}\n id={`${id}-${item.value}`}\n checked={value === item.value}\n disabled={item.disabled}\n onValueChange={props.onValueChange}\n size={size}\n variant={variant}\n className={itemClassName}\n />\n ))\n : children}\n </RadioGroupPrimitive.Root>\n );\n}\n\nexport {\n RadioButtonGroup,\n RadioGroupItem,\n RadioGroupItemContent,\n RadioGroupItemCollapseContent,\n RadioGroupItemIcon,\n RadioGroupItemHeader,\n type RadioGroupProps,\n type RadioButtonGroupItemProps,\n type RadioGroupItemContentProps,\n type RadioGroupItemCollapseContentProps,\n type RadioGroupItemIconProps,\n type RadioGroupItemHeaderProps,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1,b,c}from'./chunk-YVP6QCW6.js';import {a}from'./chunk-J3TZ7WPF.js';import {a as a$3,c as c$1,d,e,f,h,j}from'./chunk-J624VXFX.js';import {a as a$2}from'./chunk-YTIIAU4W.js';import {LuSearch,LuChevronsUpDown,LuCheck}from'react-icons/lu';import {useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';var A=({classNames:i=void 0,disabled:l=false,options:p,preSearchOptions:I=void 0,search:c$2=void 0,onSearchChange:u=void 0,onChange:T=void 0,onOpenChange:b$1=void 0,placeholder:D="Select an option",searchLabel:E="Search...",notFoundMessage:G="Not found.",value:n=void 0,size:R="default",error:f$1=false,shouldFilter:V=true,pinnedOption:a=void 0})=>{let[d$1,h$1]=useState(false),[H,g]=useState(false),v=c$2!==void 0,K=(v?!!c$2:H)?p:I||p,[M,s]=useState(""),U=()=>{h$1(!d$1),g(false),s(""),!d$1&&v&&u?.(""),b$1?.(!d$1);},C=e=>{T?.(e===n?"":e),h$1(false),g(false),s(""),b$1?.(false);},W=a&&a.value===n?a:p.find(e=>e.value===n);return jsxs(a$1,{open:d$1,onOpenChange:U,children:[jsxs(b,{"aria-invalid":f$1,"data-placeholder":n?void 0:"",disabled:l,className:a$2("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",R==="sm"&&"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4",i?.trigger),children:[jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!n&&jsx(LuSearch,{className:a$2(f$1&&"text-red")}),jsx("span",{className:a$2("block min-w-0 truncate",!n&&"text-gray-700"),children:n?W?.label:D})]}),jsx(LuChevronsUpDown,{className:"opacity-50"})]}),jsx(c,{align:"start",className:a$2("w-[var(--radix-popover-trigger-width)] p-0",i?.content),children:jsxs(a$3,{shouldFilter:V,value:M,onValueChange:s,children:[jsx(c$1,{placeholder:E,className:a$2("h-9",i?.input),value:c$2,onValueChange:e=>{g(!!e),u?.(e);}}),jsxs(d,{onWheel:e=>e.stopPropagation(),children:[jsx(e,{children:G}),jsx(f,{children:K.map(e=>jsxs(h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:C,className:i?.item,disabled:e.disabled,children:[e.label,jsx(LuCheck,{className:a$2("ml-auto",n===e.value?"opacity-100":"opacity-0")})]},e.value))})]}),a&&jsx(j,{className:"border-t-0",children:jsxs("button",{type:"button",disabled:a.disabled,onClick:()=>C(a.value),onPointerEnter:()=>s(""),onFocus:()=>s(""),onKeyDown:e=>{e.key==="Enter"&&e.stopPropagation();},className:a$2("text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",i?.pinnedOption),children:[a.label,jsx(LuCheck,{className:a$2("ml-auto",n===a.value?"opacity-100":"opacity-0")})]})})]})})]})},ee=({variant:i="default",...l})=>i==="input"?jsx(a,{...l}):jsx(A,{...l});export{ee as a};//# sourceMappingURL=chunk-UQCNRDXB.js.map
2
+ //# sourceMappingURL=chunk-UQCNRDXB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/combobox/combobox.tsx"],"names":["DefaultCombobox","classNames","disabled","options","preSearchOptions","search","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","pinnedOption","open","setOpen","useState","isSearching","setIsSearching","isSearchControlled","optionsToDisplay","highlighted","setHighlighted","handleOpenChange","handleSelect","selectedValue","selectedOption","item","jsxs","Popover","PopoverTrigger","cn","jsx","LuSearch","LuChevronsUpDown","PopoverContent","Command","CommandInput","val","CommandList","CommandEmpty","CommandGroup","CommandItem","LuCheck","CommandFooter","Combobox","variant","props","InputVariantCombobox"],"mappings":"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","file":"chunk-UQCNRDXB.js","sourcesContent":["import { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { useState } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/v2/popover/popover';\nimport { cn } from '@/lib/utils';\nimport {\n Command,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/v2/command/command';\nimport { InputVariantCombobox } from './input-variant';\n\nexport type ComboboxOption = {\n label: string | React.ReactNode;\n value: string;\n additionalSearchText?: string;\n secondaryLabel?: string;\n disabled?: boolean;\n};\n\nexport type ComboboxProps = {\n classNames?: {\n content?: string;\n input?: string;\n item?: string;\n pinnedOption?: string;\n positioner?: string;\n trigger?: string;\n };\n disabled?: boolean;\n options: ComboboxOption[];\n preSearchOptions?: ComboboxOption[];\n /**\n * Controls the search input's text. Leave it out to let the Combobox manage the search itself.\n * When set, the Combobox calls `onSearchChange('')` each time it opens, so the parent can\n * reset the search. Only the default variant supports it.\n */\n search?: string;\n onSearchChange?: (value: string) => void;\n onChange?: (value: string) => void;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchLabel?: string;\n notFoundMessage?: string;\n value?: string;\n size?: 'default' | 'sm';\n error?: boolean;\n shouldFilter?: boolean;\n /**\n * An option pinned below the scrollable list, always visible and never filtered.\n * Selecting it calls `onChange` like any other option.\n */\n pinnedOption?: ComboboxOption;\n side?: 'top' | 'bottom';\n variant?: 'default' | 'input';\n};\n\nconst DefaultCombobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n search = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n pinnedOption = undefined,\n}: Omit<ComboboxProps, 'side' | 'variant'>) => {\n const [open, setOpen] = useState(false);\n\n // Allow filtering down to just a subset of options before searching\n // NOTE: preSearchOptions is optional, while options is a required prop that we can fallback to\n const [isSearching, setIsSearching] = useState(false);\n const isSearchControlled = search !== undefined;\n const hasSearch = isSearchControlled ? !!search : isSearching;\n const optionsToDisplay = hasSearch ? options : preSearchOptions || options;\n\n // cmdk's highlighted item, controlled so hovering the pinned option can clear it\n const [highlighted, setHighlighted] = useState('');\n\n const handleOpenChange = () => {\n setOpen(!open);\n setIsSearching(false);\n setHighlighted('');\n // The uncontrolled input clears itself on open; a controlled one needs the parent to clear it\n if (!open && isSearchControlled) onSearchChange?.('');\n onOpenChange?.(!open);\n };\n\n // Shared by the list items and the pinned option so they can't drift apart\n const handleSelect = (selectedValue: string) => {\n onChange?.(selectedValue === value ? '' : selectedValue);\n setOpen(false);\n setIsSearching(false);\n setHighlighted('');\n onOpenChange?.(false);\n };\n\n const selectedOption =\n pinnedOption && pinnedOption.value === value\n ? pinnedOption\n : options.find((item) => item.value === value);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n aria-invalid={error}\n data-placeholder={!value ? '' : undefined}\n disabled={disabled}\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {!value && <LuSearch className={cn(error && 'text-red')} />}\n <span className={cn('block min-w-0 truncate', !value && 'text-gray-700')}>\n {value ? selectedOption?.label : placeholder}\n </span>\n </div>\n <LuChevronsUpDown className=\"opacity-50\" />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <Command\n shouldFilter={\n // This should be mainly be driven by the presence of the `onSearchChange` function\n // to match multiselect's behavior, however we omit this for backwards compatibility.\n shouldFilter\n }\n value={highlighted}\n onValueChange={setHighlighted}\n >\n <CommandInput\n placeholder={searchLabel}\n className={cn('h-9', classNames?.input)}\n value={search}\n onValueChange={(val) => {\n setIsSearching(!!val);\n onSearchChange?.(val);\n }}\n />\n <CommandList onWheel={(e) => e.stopPropagation()}>\n <CommandEmpty>{notFoundMessage}</CommandEmpty>\n <CommandGroup>\n {optionsToDisplay.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n keywords={[\n typeof item.label === 'string' ? item.label : '',\n item.additionalSearchText ?? '',\n ]}\n onSelect={handleSelect}\n className={classNames?.item}\n disabled={item.disabled}\n >\n {item.label}\n <LuCheck\n className={cn('ml-auto', value === item.value ? 'opacity-100' : 'opacity-0')}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n {pinnedOption && (\n // A plain button, not a CommandItem, so cmdk never filters it out. The trade-off is\n // that arrow keys don't reach it; it's reachable with Tab from the search input instead.\n <CommandFooter className=\"border-t-0\">\n <button\n type=\"button\"\n disabled={pinnedOption.disabled}\n onClick={() => handleSelect(pinnedOption.value)}\n // cmdk keeps the last hovered item highlighted; clear it so only one row looks active\n onPointerEnter={() => setHighlighted('')}\n onFocus={() => setHighlighted('')}\n onKeyDown={(e) => {\n // cmdk's root handles Enter by preventing the default and selecting the\n // highlighted option, which would swallow this button's own activation\n if (e.key === 'Enter') e.stopPropagation();\n }}\n className={cn(\n \"text-dark-green hover:bg-accent focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-left italic outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\",\n classNames?.pinnedOption,\n )}\n >\n {pinnedOption.label}\n <LuCheck\n className={cn(\n 'ml-auto',\n value === pinnedOption.value ? 'opacity-100' : 'opacity-0',\n )}\n />\n </button>\n </CommandFooter>\n )}\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Combobox = ({ variant = 'default', ...props }: ComboboxProps) =>\n variant === 'input' ? <InputVariantCombobox {...props} /> : <DefaultCombobox {...props} />;\n"]}