import{j as C,k as s,r as j}from"./iframe-B4rglaWu.js";import{D as y}from"./dropdown.esm-f2g0kIxn.js";import{F as P,E as R}from"./ErrorMessage-DFhVHOBn.js";import"./preload-helper-PPVm8Dsz.js";import"./componentbase.esm-O764U3c0.js";import"./index.esm-ykNyILbO.js";import"./iconbase.esm-CeJUwaxq.js";import"./index.esm-Bp9biEJw.js";import"./overlayservice.esm-C5VFRSbT.js";import"./tooltip.esm-C17X5ypA.js";import"./portal.esm-9O3HNf5A.js";import"./ripple.esm-Bd7Vm0vw.js";import"./index.esm-WSOT0cb2.js";const D=i=>{const e=C.c(24);let a,o,r,n,l,u;e[0]!==i?({className:a,id:r,label:n,required:u,error:o,...l}=i,e[0]=i,e[1]=a,e[2]=o,e[3]=r,e[4]=n,e[5]=l,e[6]=u):(a=e[1],o=e[2],r=e[3],n=e[4],l=e[5],u=e[6]);const q=!!o;let d;e[7]!==r||e[8]!==l||e[9]!==q?(d=s.jsx(y,{id:r,placeholder:"Selecione...",...l,className:"w-full",invalid:q}),e[7]=r,e[8]=l,e[9]=q,e[10]=d):d=e[10];const w=u?"*":"";let c;e[11]!==r||e[12]!==n||e[13]!==w?(c=s.jsxs("label",{htmlFor:r,children:[n," ",w]}),e[11]=r,e[12]=n,e[13]=w,e[14]=c):c=e[14];let p;e[15]!==d||e[16]!==c?(p=s.jsxs(P,{className:"w-full",children:[d,c]}),e[15]=d,e[16]=c,e[17]=p):p=e[17];let m;e[18]!==o?(m=s.jsx(R,{error:o}),e[18]=o,e[19]=m):m=e[19];let b;return e[20]!==a||e[21]!==p||e[22]!==m?(b=s.jsx(s.Fragment,{children:s.jsxs("div",{className:a,children:[p,m]})}),e[20]=a,e[21]=p,e[22]=m,e[23]=b):b=e[23],b};D.__docgenInfo={description:`Componente de seleção dropdown com label flutuante e suporte a mensagens de erro.

Utiliza o Dropdown do PrimeReact com FloatLabel para criar um campo de seleção
estilizado e consistente com o design system da aplicação.
Inclui placeholder padrão "Selecione...".

@example
\`\`\`tsx
const opcoes = [
  { label: 'Opção 1', value: '1' },
  { label: 'Opção 2', value: '2' },
]

<UiDropdown
  id="tipo"
  label="Tipo"
  options={opcoes}
  value={valor}
  onChange={(e) => setValor(e.value)}
  required
  error={errors.tipo?.message}
/>
\`\`\`

@see {@link https://primereact.org/dropdown/ | PrimeReact Dropdown}`,methods:[],displayName:"UiDropdown",props:{id:{required:!0,tsType:{name:"string"},description:"Identificador único do campo, usado para associar o label ao input"},label:{required:!0,tsType:{name:"string"},description:"Texto do label flutuante exibido acima do campo"},className:{required:!1,tsType:{name:"string"},description:"Classes CSS adicionais para o container do componente"},required:{required:!1,tsType:{name:"boolean"},description:"Indica se o campo é obrigatório (adiciona asterisco ao label)"},error:{required:!1,tsType:{name:"string"},description:"Mensagem de erro a ser exibida abaixo do campo"}},composes:["DropdownProps"]};const t=[{label:"São Paulo",value:"SP"},{label:"Rio de Janeiro",value:"RJ"},{label:"Minas Gerais",value:"MG"},{label:"Bahia",value:"BA"},{label:"Paraná",value:"PR"}],J={title:"Components/Form/UiDropdown",component:D,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{error:{control:"text",description:"Mensagem de erro exibida abaixo do campo"},required:{control:"boolean",description:"Indica se o campo é obrigatório"},disabled:{control:"boolean",description:"Desabilita o campo"},filter:{control:"boolean",description:"Habilita filtro de busca nas opções"},showClear:{control:"boolean",description:"Exibe botão para limpar seleção"}},render:i=>{const[e,a]=j.useState(i.value);return s.jsx(D,{...i,value:e,onChange:o=>a(o.value)})}},g={args:{id:"estado",label:"Estado",options:t}},f={args:{id:"estado-obrigatorio",label:"Estado",options:t,required:!0}},E={args:{id:"estado-erro",label:"Estado",options:t,error:"Selecione um estado",required:!0}},h={args:{id:"estado-filtro",label:"Estado",options:t,filter:!0,filterPlaceholder:"Buscar..."}},x={args:{id:"estado-clear",label:"Estado",options:t,showClear:!0}},v={args:{id:"estado-desabilitado",label:"Estado",options:t,disabled:!0}},S={args:{id:"estado-editavel",label:"Estado",options:t,editable:!0}};g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado',
    label: 'Estado',
    options: opcoes
  }
}`,...g.parameters?.docs?.source}}};f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-obrigatorio',
    label: 'Estado',
    options: opcoes,
    required: true
  }
}`,...f.parameters?.docs?.source}}};E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-erro',
    label: 'Estado',
    options: opcoes,
    error: 'Selecione um estado',
    required: true
  }
}`,...E.parameters?.docs?.source}}};h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-filtro',
    label: 'Estado',
    options: opcoes,
    filter: true,
    filterPlaceholder: 'Buscar...'
  }
}`,...h.parameters?.docs?.source}}};x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-clear',
    label: 'Estado',
    options: opcoes,
    showClear: true
  }
}`,...x.parameters?.docs?.source}}};v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-desabilitado',
    label: 'Estado',
    options: opcoes,
    disabled: true
  }
}`,...v.parameters?.docs?.source}}};S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
  args: {
    id: 'estado-editavel',
    label: 'Estado',
    options: opcoes,
    editable: true
  }
}`,...S.parameters?.docs?.source}}};const L=["Default","Required","WithError","WithFilter","WithClearButton","Disabled","Editable"];export{g as Default,v as Disabled,S as Editable,f as Required,x as WithClearButton,E as WithError,h as WithFilter,L as __namedExportsOrder,J as default};
