{"version":3,"sources":["../components/form/select.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from '../ui/select';\n\nexport interface SelectOption {\n  label: string;\n  value: string;\n}\n\nfunction listToSelectOptions(items: string[]) {\n  return items.map((item) => {\n    return { label: item, value: item };\n  });\n}\n\nexport interface FormSelectProps {\n  id?: string;\n  name: string;\n  label?: string;\n  placeholder?: string;\n  data: SelectOption[] | string[];\n  defaultValue?: string;\n  value?: string;\n  onChange: (value?: string) => void;\n  classNames?: {\n    wrapper?: string;\n    label?: string;\n    input?: string;\n  };\n  required?: boolean;\n  disabled?: boolean;\n}\n\nexport function FormSelect({\n  id,\n  name,\n  label,\n  placeholder = '',\n  data,\n  defaultValue,\n  value,\n  onChange,\n  classNames,\n  required,\n  disabled,\n  ...rest\n}: FormSelectProps) {\n  let _options: SelectOption[] = [];\n  if (data.length > 0) {\n    if (_isString(data[0])) {\n      _options = listToSelectOptions(data as string[]);\n    } else {\n      _options = data as SelectOption[];\n    }\n  }\n\n  if (!id) id = _kebabCase(name);\n\n  return (\n    <div className={cn('$form-select space-y-1', classNames?.wrapper)}>\n      {label && (\n        <Label htmlFor={id} className={classNames?.label} required={required}>\n          {label}\n        </Label>\n      )}\n\n      <Select onValueChange={onChange} defaultValue={defaultValue ?? value ?? ''} value={value}>\n        <SelectTrigger className=\"mb-0\">\n          <SelectValue placeholder={placeholder} />\n        </SelectTrigger>\n\n        <SelectContent className={cn(classNames?.input)}>\n          {_options.map((option, index) => {\n            return (\n              <SelectItem key={option.value} value={option.value}>\n                {option.label}\n              </SelectItem>\n            );\n          })}\n        </SelectContent>\n      </Select>\n    </div>\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,OAAO,eAAe;AAUtB,SAAS,oBAAoB,OAAiB;AAC5C,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,WAAO,EAAE,OAAO,MAAM,OAAO,KAAK;AAAA,EACpC,CAAC;AACH;AAoBO,SAAS,WAAW,IAaP;AAbO,eACzB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAhDF,IAqC2B,IAYtB,iBAZsB,IAYtB;AAAA,IAXH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAhDF,MAAAA;AAmDE,MAAI,WAA2B,CAAC;AAChC,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,UAAU,KAAK,CAAC,CAAC,GAAG;AACtB,iBAAW,oBAAoB,IAAgB;AAAA,IACjD,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,0BAA0B,yCAAY,OAAO,KAC7D,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAGF,oCAAC,UAAO,eAAe,UAAU,eAAcA,MAAA,sCAAgB,UAAhB,OAAAA,MAAyB,IAAI,SAC1E,oCAAC,iBAAc,WAAU,UACvB,oCAAC,eAAY,aAA0B,CACzC,GAEA,oCAAC,iBAAc,WAAW,GAAG,yCAAY,KAAK,KAC3C,SAAS,IAAI,CAAC,QAAQ,UAAU;AAC/B,WACE,oCAAC,cAAW,KAAK,OAAO,OAAO,OAAO,OAAO,SAC1C,OAAO,KACV;AAAA,EAEJ,CAAC,CACH,CACF,CACF;AAEJ;","names":["_a"]}