@soft-stech/bootsman-ui-shadcn 1.1.35 → 1.1.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (384) hide show
  1. package/dist/{BuiAccordion.vue_vue_type_script_setup_true_lang-BfKSXvSH.js → BuiAccordion.vue_vue_type_script_setup_true_lang-D6NZ2Glm.js} +1 -1
  2. package/dist/{BuiAccordionContent.vue_vue_type_script_setup_true_lang-BbhnWn3N.js → BuiAccordionContent.vue_vue_type_script_setup_true_lang-DWgwTZC3.js} +2 -2
  3. package/dist/{BuiAccordionItem.vue_vue_type_script_setup_true_lang-DxH0uB8i.js → BuiAccordionItem.vue_vue_type_script_setup_true_lang-VmckedPQ.js} +2 -2
  4. package/dist/{BuiAccordionTrigger.vue_vue_type_script_setup_true_lang-Brr7tYY4.js → BuiAccordionTrigger.vue_vue_type_script_setup_true_lang-CvrPKvEn.js} +3 -3
  5. package/dist/{BuiAlertDescription.vue_vue_type_script_setup_true_lang--5lclQDt.js → BuiAlertDescription.vue_vue_type_script_setup_true_lang-JGl4jOiY.js} +1 -1
  6. package/dist/{BuiAlertDialog.vue_vue_type_script_setup_true_lang-D8w0vAwB.js → BuiAlertDialog.vue_vue_type_script_setup_true_lang-CYOmW_Y5.js} +1 -1
  7. package/dist/{BuiAlertDialogAction.vue_vue_type_script_setup_true_lang-CiyEUlrT.js → BuiAlertDialogAction.vue_vue_type_script_setup_true_lang-B68AKQif.js} +2 -2
  8. package/dist/{BuiAlertDialogCancel.vue_vue_type_script_setup_true_lang-DGOF3es1.js → BuiAlertDialogCancel.vue_vue_type_script_setup_true_lang-Dwqlf8oj.js} +2 -2
  9. package/dist/{BuiAlertDialogContent.vue_vue_type_script_setup_true_lang-BbmS5S_E.js → BuiAlertDialogContent.vue_vue_type_script_setup_true_lang-DQ3MO21t.js} +2 -2
  10. package/dist/{BuiAlertDialogDescription.vue_vue_type_script_setup_true_lang-CH61yTmR.js → BuiAlertDialogDescription.vue_vue_type_script_setup_true_lang-C0nmsUbU.js} +2 -2
  11. package/dist/{BuiAlertDialogFooter.vue_vue_type_script_setup_true_lang-iuAyMnVQ.js → BuiAlertDialogFooter.vue_vue_type_script_setup_true_lang-Bwp16uCV.js} +1 -1
  12. package/dist/{BuiAlertDialogHeader.vue_vue_type_script_setup_true_lang-D0DhqzGI.js → BuiAlertDialogHeader.vue_vue_type_script_setup_true_lang-C9SdCMGG.js} +1 -1
  13. package/dist/{BuiAlertDialogTitle.vue_vue_type_script_setup_true_lang-JzKWF3os.js → BuiAlertDialogTitle.vue_vue_type_script_setup_true_lang-Dnbl9EtZ.js} +2 -2
  14. package/dist/{BuiAlertDialogTrigger.vue_vue_type_script_setup_true_lang-C3jyJvAh.js → BuiAlertDialogTrigger.vue_vue_type_script_setup_true_lang-DALyN6MC.js} +1 -1
  15. package/dist/{BuiAlertTitle.vue_vue_type_script_setup_true_lang-Ds0SdqSj.js → BuiAlertTitle.vue_vue_type_script_setup_true_lang-CgpdlY3s.js} +1 -1
  16. package/dist/{BuiAspectRatio.vue_vue_type_script_setup_true_lang-Dtn1AIPx.js → BuiAspectRatio.vue_vue_type_script_setup_true_lang-DfbboEQK.js} +1 -1
  17. package/dist/BuiAutoForm.vue_vue_type_script_setup_true_lang-CKS23plt.js +206 -0
  18. package/dist/BuiAutoFormField.vue_vue_type_script_setup_true_lang-DwgVv_fo.js +3062 -0
  19. package/dist/BuiAutoFormFieldBoolean.vue_vue_type_script_setup_true_lang-BKT85fgx.js +66 -0
  20. package/dist/BuiAutoFormFieldDate.vue_vue_type_script_setup_true_lang-DWyKdzS5.js +223 -0
  21. package/dist/BuiAutoFormFieldEnum.vue_vue_type_script_setup_true_lang-BECJ52JQ.js +120 -0
  22. package/dist/BuiAutoFormFieldFile.vue_vue_type_script_setup_true_lang-BFuZvVOr.js +114 -0
  23. package/dist/BuiAutoFormFieldInput.vue_vue_type_script_setup_true_lang-DGI0ZobZ.js +60 -0
  24. package/dist/BuiAutoFormFieldNumber.vue_vue_type_script_setup_true_lang-DmjImgRr.js +59 -0
  25. package/dist/BuiAutoFormLabel.vue_vue_type_script_setup_true_lang-Cnb5VI3E.js +23 -0
  26. package/dist/{BuiAvatarFallback.vue_vue_type_script_setup_true_lang-BZTk1ZO8.js → BuiAvatarFallback.vue_vue_type_script_setup_true_lang-jsKtoJ8h.js} +1 -1
  27. package/dist/{BuiAvatarImage.vue_vue_type_script_setup_true_lang-TPs2An4d.js → BuiAvatarImage.vue_vue_type_script_setup_true_lang-ZeFLLZLS.js} +1 -1
  28. package/dist/{BuiCalendar.vue_vue_type_style_index_0_lang-BWeH1wsj.js → BuiCalendar.vue_vue_type_style_index_0_lang-D428Q6Nh.js} +1 -1
  29. package/dist/{BuiCard.vue_vue_type_script_setup_true_lang-BMW80jD9.js → BuiCard.vue_vue_type_script_setup_true_lang-BdNbxFvi.js} +1 -1
  30. package/dist/{BuiCardContent.vue_vue_type_script_setup_true_lang-DKxhoB3d.js → BuiCardContent.vue_vue_type_script_setup_true_lang--U7YuaQv.js} +1 -1
  31. package/dist/{BuiCardDescription.vue_vue_type_script_setup_true_lang-D_7eKbkg.js → BuiCardDescription.vue_vue_type_script_setup_true_lang-CWcDrner.js} +1 -1
  32. package/dist/{BuiCardFooter.vue_vue_type_script_setup_true_lang-BY-01BUB.js → BuiCardFooter.vue_vue_type_script_setup_true_lang-DTYkTHzY.js} +1 -1
  33. package/dist/{BuiCardHeader.vue_vue_type_script_setup_true_lang-1Mhatm4p.js → BuiCardHeader.vue_vue_type_script_setup_true_lang-7H4mP92e.js} +1 -1
  34. package/dist/{BuiCardTitle.vue_vue_type_script_setup_true_lang-B_Y19N7R.js → BuiCardTitle.vue_vue_type_script_setup_true_lang-DR6fWGz9.js} +1 -1
  35. package/dist/{BuiCheckbox.vue_vue_type_script_setup_true_lang-DVGDSThf.js → BuiCheckbox.vue_vue_type_script_setup_true_lang-CyxEbO5t.js} +3 -3
  36. package/dist/{BuiCollapsible.vue_vue_type_script_setup_true_lang-mS4zvM_P.js → BuiCollapsible.vue_vue_type_script_setup_true_lang-x_Glw-gh.js} +1 -1
  37. package/dist/{BuiCollapsibleContent.vue_vue_type_script_setup_true_lang-DbI-Bsc-.js → BuiCollapsibleContent.vue_vue_type_script_setup_true_lang-B72_xwvG.js} +1 -1
  38. package/dist/{BuiCollapsibleTrigger.vue_vue_type_script_setup_true_lang-r01DxQ2Q.js → BuiCollapsibleTrigger.vue_vue_type_script_setup_true_lang-ByrCdFCy.js} +1 -1
  39. package/dist/{BuiCommand.vue_vue_type_script_setup_true_lang-vCZthg7w.js → BuiCommand.vue_vue_type_script_setup_true_lang-C1O7IDvd.js} +2 -2
  40. package/dist/{BuiCommandDialog.vue_vue_type_script_setup_true_lang-DCThty8N.js → BuiCommandDialog.vue_vue_type_script_setup_true_lang-BYYdrUJm.js} +4 -4
  41. package/dist/{BuiCommandEmpty.vue_vue_type_script_setup_true_lang-CLQ-baFY.js → BuiCommandEmpty.vue_vue_type_script_setup_true_lang-dM0MIDwK.js} +2 -2
  42. package/dist/{BuiCommandGroup.vue_vue_type_script_setup_true_lang-lLiGoA_4.js → BuiCommandGroup.vue_vue_type_script_setup_true_lang--JVL30Bq.js} +2 -2
  43. package/dist/{BuiCommandInput.vue_vue_type_script_setup_true_lang-CLrBYVpQ.js → BuiCommandInput.vue_vue_type_script_setup_true_lang-td41Iq0J.js} +2 -2
  44. package/dist/{BuiCommandItem.vue_vue_type_script_setup_true_lang-CnebUcLW.js → BuiCommandItem.vue_vue_type_script_setup_true_lang-Co-lQQqw.js} +2 -2
  45. package/dist/{BuiCommandList.vue_vue_type_script_setup_true_lang-CibMa0o2.js → BuiCommandList.vue_vue_type_script_setup_true_lang-Bp0LuoaV.js} +2 -2
  46. package/dist/{BuiCommandSeparator.vue_vue_type_script_setup_true_lang-BzrpvBvu.js → BuiCommandSeparator.vue_vue_type_script_setup_true_lang-ClosG8me.js} +2 -2
  47. package/dist/{BuiCommandShortcut.vue_vue_type_script_setup_true_lang-BaVBsojk.js → BuiCommandShortcut.vue_vue_type_script_setup_true_lang-DGMEA91e.js} +1 -1
  48. package/dist/{BuiContextMenu.vue_vue_type_script_setup_true_lang-PrqR-Z4o.js → BuiContextMenu.vue_vue_type_script_setup_true_lang-Bh8oJUyh.js} +1 -1
  49. package/dist/{BuiContextMenuCheckboxItem.vue_vue_type_script_setup_true_lang-B0Q6XLM9.js → BuiContextMenuCheckboxItem.vue_vue_type_script_setup_true_lang-BL5Zlqy2.js} +3 -3
  50. package/dist/{BuiContextMenuContent.vue_vue_type_script_setup_true_lang-CNzFm5sV.js → BuiContextMenuContent.vue_vue_type_script_setup_true_lang-DtIN0awe.js} +2 -2
  51. package/dist/{BuiContextMenuGroup.vue_vue_type_script_setup_true_lang-fvcZ-f6-.js → BuiContextMenuGroup.vue_vue_type_script_setup_true_lang-BUlkesJX.js} +1 -1
  52. package/dist/{BuiContextMenuItem.vue_vue_type_script_setup_true_lang-BpbecxMw.js → BuiContextMenuItem.vue_vue_type_script_setup_true_lang-BbuySkF5.js} +2 -2
  53. package/dist/{BuiContextMenuLabel.vue_vue_type_script_setup_true_lang-Ba0zgmX1.js → BuiContextMenuLabel.vue_vue_type_script_setup_true_lang-DQ3a_SwA.js} +2 -2
  54. package/dist/{BuiContextMenuRadioGroup.vue_vue_type_script_setup_true_lang-D3CJCQDQ.js → BuiContextMenuRadioGroup.vue_vue_type_script_setup_true_lang-CucdMx7c.js} +1 -1
  55. package/dist/{BuiContextMenuRadioItem.vue_vue_type_script_setup_true_lang-xJBxOtef.js → BuiContextMenuRadioItem.vue_vue_type_script_setup_true_lang-aA32tkEA.js} +3 -3
  56. package/dist/{BuiContextMenuSeparator.vue_vue_type_script_setup_true_lang-Da9k9Xjv.js → BuiContextMenuSeparator.vue_vue_type_script_setup_true_lang-DNb1vb3q.js} +2 -2
  57. package/dist/{BuiContextMenuShortcut.vue_vue_type_script_setup_true_lang-taRHZa-r.js → BuiContextMenuShortcut.vue_vue_type_script_setup_true_lang-ExJmRXvx.js} +1 -1
  58. package/dist/{BuiContextMenuSub.vue_vue_type_script_setup_true_lang-DJK6Y2q7.js → BuiContextMenuSub.vue_vue_type_script_setup_true_lang-CfEN3NAs.js} +1 -1
  59. package/dist/{BuiContextMenuSubContent.vue_vue_type_script_setup_true_lang-C_w8SnYz.js → BuiContextMenuSubContent.vue_vue_type_script_setup_true_lang-BZxR0wIO.js} +2 -2
  60. package/dist/{BuiContextMenuSubTrigger.vue_vue_type_script_setup_true_lang-F5AWjMF3.js → BuiContextMenuSubTrigger.vue_vue_type_script_setup_true_lang-CFcwqUKs.js} +3 -3
  61. package/dist/{BuiContextMenuTrigger.vue_vue_type_script_setup_true_lang-eoWRCIPI.js → BuiContextMenuTrigger.vue_vue_type_script_setup_true_lang-Bc2IaG-4.js} +1 -1
  62. package/dist/{BuiDataTable.vue_vue_type_script_setup_true_lang-Re8FHMAA.js → BuiDataTable.vue_vue_type_script_setup_true_lang-BWEYe7eA.js} +15 -15
  63. package/dist/{BuiDialog.vue_vue_type_script_setup_true_lang-BWW5P0oc.js → BuiDialog.vue_vue_type_script_setup_true_lang-BCbOviQn.js} +1 -1
  64. package/dist/{BuiDialogClose.vue_vue_type_script_setup_true_lang-Ci6G4VA5.js → BuiDialogClose.vue_vue_type_script_setup_true_lang-Fdp24YHC.js} +1 -1
  65. package/dist/{BuiDialogContent.vue_vue_type_script_setup_true_lang-CLUgaeYF.js → BuiDialogContent.vue_vue_type_script_setup_true_lang-DTS5OB86.js} +3 -3
  66. package/dist/{BuiDialogDescription.vue_vue_type_script_setup_true_lang-Dr-dU1PB.js → BuiDialogDescription.vue_vue_type_script_setup_true_lang-CPGwGG27.js} +2 -2
  67. package/dist/{BuiDialogFooter.vue_vue_type_script_setup_true_lang-Bv3lHEiX.js → BuiDialogFooter.vue_vue_type_script_setup_true_lang-Blm8xAsp.js} +1 -1
  68. package/dist/{BuiDialogHeader.vue_vue_type_script_setup_true_lang-D_9wEIjp.js → BuiDialogHeader.vue_vue_type_script_setup_true_lang-DIxMSIbx.js} +1 -1
  69. package/dist/{BuiDialogTitle.vue_vue_type_script_setup_true_lang-CBuggL21.js → BuiDialogTitle.vue_vue_type_script_setup_true_lang-Dw4OSpt_.js} +2 -2
  70. package/dist/{BuiDialogTrigger.vue_vue_type_script_setup_true_lang-CTPbIWJP.js → BuiDialogTrigger.vue_vue_type_script_setup_true_lang-C58hpmhT.js} +1 -1
  71. package/dist/{BuiDropdownMenu.vue_vue_type_script_setup_true_lang-DezLXrmo.js → BuiDropdownMenu.vue_vue_type_script_setup_true_lang-BV70HeIN.js} +1 -1
  72. package/dist/{BuiDropdownMenuCheckboxItem.vue_vue_type_script_setup_true_lang-B3n4HvKD.js → BuiDropdownMenuCheckboxItem.vue_vue_type_script_setup_true_lang-yS6gA48j.js} +3 -3
  73. package/dist/{BuiDropdownMenuContent.vue_vue_type_script_setup_true_lang-DZ_M0Jkq.js → BuiDropdownMenuContent.vue_vue_type_script_setup_true_lang-Bb4Q6tSz.js} +2 -2
  74. package/dist/{BuiDropdownMenuGroup.vue_vue_type_script_setup_true_lang-CZDidzDB.js → BuiDropdownMenuGroup.vue_vue_type_script_setup_true_lang-DfNb5nUo.js} +1 -1
  75. package/dist/{BuiDropdownMenuItem.vue_vue_type_script_setup_true_lang-DdB_o2Eh.js → BuiDropdownMenuItem.vue_vue_type_script_setup_true_lang--QP6Nby4.js} +2 -2
  76. package/dist/{BuiDropdownMenuLabel.vue_vue_type_script_setup_true_lang-CVo9G-zN.js → BuiDropdownMenuLabel.vue_vue_type_script_setup_true_lang-Dh1TMw9d.js} +2 -2
  77. package/dist/{BuiDropdownMenuRadioGroup.vue_vue_type_script_setup_true_lang-CAWGTQp0.js → BuiDropdownMenuRadioGroup.vue_vue_type_script_setup_true_lang-DTcNorlM.js} +1 -1
  78. package/dist/{BuiDropdownMenuRadioItem.vue_vue_type_script_setup_true_lang-Cim9HybM.js → BuiDropdownMenuRadioItem.vue_vue_type_script_setup_true_lang-ToMKHcEm.js} +3 -3
  79. package/dist/{BuiDropdownMenuSeparator.vue_vue_type_script_setup_true_lang-BQkOcCsm.js → BuiDropdownMenuSeparator.vue_vue_type_script_setup_true_lang-BbepqtDL.js} +1 -1
  80. package/dist/{BuiDropdownMenuShortcut.vue_vue_type_script_setup_true_lang-Dz8Ikto7.js → BuiDropdownMenuShortcut.vue_vue_type_script_setup_true_lang-BWgELWFx.js} +1 -1
  81. package/dist/{BuiDropdownMenuSub.vue_vue_type_script_setup_true_lang-C0dWO8aw.js → BuiDropdownMenuSub.vue_vue_type_script_setup_true_lang-Dnqs62GK.js} +1 -1
  82. package/dist/{BuiDropdownMenuSubContent.vue_vue_type_script_setup_true_lang-1QJ2MRDh.js → BuiDropdownMenuSubContent.vue_vue_type_script_setup_true_lang-DlTXSDu5.js} +2 -2
  83. package/dist/{BuiDropdownMenuSubTrigger.vue_vue_type_script_setup_true_lang-AiLl3Pzs.js → BuiDropdownMenuSubTrigger.vue_vue_type_script_setup_true_lang-B_LMNZ3o.js} +3 -3
  84. package/dist/{BuiDropdownMenuTrigger.vue_vue_type_script_setup_true_lang-BS0cV8wr.js → BuiDropdownMenuTrigger.vue_vue_type_script_setup_true_lang-CCSql0mq.js} +1 -1
  85. package/dist/{BuiFormControl.vue_vue_type_script_setup_true_lang-BkvrIzuO.js → BuiFormControl.vue_vue_type_script_setup_true_lang-DVx9ZDv-.js} +5 -5
  86. package/dist/BuiFormDescription.vue_vue_type_script_setup_true_lang-BPSgWb0t.js +19 -0
  87. package/dist/{BuiFormItem.vue_vue_type_script_setup_true_lang-DQtpoiOP.js → BuiFormItem.vue_vue_type_script_setup_true_lang-CP1K61n9.js} +2 -2
  88. package/dist/{BuiFormLabel.vue_vue_type_script_setup_true_lang-C6Rzvbdb.js → BuiFormLabel.vue_vue_type_script_setup_true_lang-BpCjAbUu.js} +10 -10
  89. package/dist/BuiFormMessage.vue_vue_type_script_setup_true_lang-CD9in3nQ.js +18 -0
  90. package/dist/{BuiHoverCard.vue_vue_type_script_setup_true_lang-DpR4myB6.js → BuiHoverCard.vue_vue_type_script_setup_true_lang-B4EJAZ1v.js} +1 -1
  91. package/dist/{BuiHoverCardContent.vue_vue_type_script_setup_true_lang-CN3tuOjB.js → BuiHoverCardContent.vue_vue_type_script_setup_true_lang-RFeTYn_w.js} +2 -2
  92. package/dist/{BuiHoverCardTrigger.vue_vue_type_script_setup_true_lang-BQQYYkqh.js → BuiHoverCardTrigger.vue_vue_type_script_setup_true_lang-DRHctQMn.js} +1 -1
  93. package/dist/{BuiLabel.vue_vue_type_script_setup_true_lang-1HYZx0Dk.js → BuiLabel.vue_vue_type_script_setup_true_lang-DIgQTfIk.js} +2 -2
  94. package/dist/{BuiPaginationCommon.vue_vue_type_script_setup_true_lang-BF-zRWuU.js → BuiPaginationCommon.vue_vue_type_script_setup_true_lang-VNCFXArM.js} +11 -11
  95. package/dist/{BuiPaginationEllipsis.vue_vue_type_script_setup_true_lang-C6Vso03Z.js → BuiPaginationEllipsis.vue_vue_type_script_setup_true_lang-sLLjg6Lo.js} +7 -7
  96. package/dist/{BuiPaginationFirst.vue_vue_type_script_setup_true_lang-DMZ4CAsc.js → BuiPaginationFirst.vue_vue_type_script_setup_true_lang-C1v4DiC-.js} +4 -4
  97. package/dist/{BuiPaginationLast.vue_vue_type_script_setup_true_lang-Bcz8UoI9.js → BuiPaginationLast.vue_vue_type_script_setup_true_lang-DU5XYLV2.js} +5 -5
  98. package/dist/{BuiPaginationNext.vue_vue_type_script_setup_true_lang-C4e2l3-p.js → BuiPaginationNext.vue_vue_type_script_setup_true_lang-vH3Cu1pW.js} +3 -3
  99. package/dist/{BuiPaginationPrev.vue_vue_type_script_setup_true_lang-hw27m8cJ.js → BuiPaginationPrev.vue_vue_type_script_setup_true_lang-CTNwqcX0.js} +3 -3
  100. package/dist/{BuiPopover.vue_vue_type_script_setup_true_lang-UcSh_GiH.js → BuiPopover.vue_vue_type_script_setup_true_lang-zW4DPswi.js} +1 -1
  101. package/dist/{BuiPopoverContent.vue_vue_type_script_setup_true_lang-Bn6LAyum.js → BuiPopoverContent.vue_vue_type_script_setup_true_lang-DmZlmmde.js} +2 -2
  102. package/dist/{BuiPopoverTrigger.vue_vue_type_script_setup_true_lang-Dw8pc308.js → BuiPopoverTrigger.vue_vue_type_script_setup_true_lang-BzLHQJIv.js} +1 -1
  103. package/dist/{BuiRadioGroup.vue_vue_type_script_setup_true_lang-_Hvn6kqs.js → BuiRadioGroup.vue_vue_type_script_setup_true_lang-Dyyf8FoV.js} +2 -2
  104. package/dist/{BuiRadioGroupItem.vue_vue_type_script_setup_true_lang-DEHQlTTt.js → BuiRadioGroupItem.vue_vue_type_script_setup_true_lang-CeYEovBc.js} +3 -3
  105. package/dist/{BuiScrollArea.vue_vue_type_script_setup_true_lang-CYaScauh.js → BuiScrollArea.vue_vue_type_script_setup_true_lang-C6sBLycG.js} +3 -3
  106. package/dist/{BuiScrollBar.vue_vue_type_script_setup_true_lang-upk9Vx_2.js → BuiScrollBar.vue_vue_type_script_setup_true_lang-D2FLjGPC.js} +2 -2
  107. package/dist/{BuiSelect.vue_vue_type_script_setup_true_lang-BRQVqTNO.js → BuiSelect.vue_vue_type_script_setup_true_lang-m2Wvc7wn.js} +1 -1
  108. package/dist/{BuiSelectContent.vue_vue_type_script_setup_true_lang-DIAEg4c7.js → BuiSelectContent.vue_vue_type_script_setup_true_lang-D10Iiz4m.js} +2 -2
  109. package/dist/{BuiSelectGroup.vue_vue_type_script_setup_true_lang-BzqDI83c.js → BuiSelectGroup.vue_vue_type_script_setup_true_lang-D_fNFsNW.js} +2 -2
  110. package/dist/{BuiSelectItem.vue_vue_type_script_setup_true_lang-CcUNDMwy.js → BuiSelectItem.vue_vue_type_script_setup_true_lang-DtVOu1-z.js} +3 -3
  111. package/dist/{BuiSelectItemText.vue_vue_type_script_setup_true_lang-D0U9ILtf.js → BuiSelectItemText.vue_vue_type_script_setup_true_lang-DnGPz6Zk.js} +1 -1
  112. package/dist/{BuiSelectLabel.vue_vue_type_script_setup_true_lang-nFBlYqoq.js → BuiSelectLabel.vue_vue_type_script_setup_true_lang-DScZZcu2.js} +2 -2
  113. package/dist/{BuiSelectSeparator.vue_vue_type_script_setup_true_lang-l0ZLnMbK.js → BuiSelectSeparator.vue_vue_type_script_setup_true_lang-BdOmkbIv.js} +2 -2
  114. package/dist/{BuiSelectTrigger.vue_vue_type_script_setup_true_lang-bVw81gmB.js → BuiSelectTrigger.vue_vue_type_script_setup_true_lang-B3jcBhnj.js} +3 -3
  115. package/dist/{BuiSelectValue.vue_vue_type_script_setup_true_lang-Do2Xen84.js → BuiSelectValue.vue_vue_type_script_setup_true_lang-Dj1zDTaG.js} +1 -1
  116. package/dist/{BuiSeparator.vue_vue_type_script_setup_true_lang-BOWDo0Nu.js → BuiSeparator.vue_vue_type_script_setup_true_lang-DdQNHu4h.js} +2 -2
  117. package/dist/{BuiSlider.vue_vue_type_script_setup_true_lang-DezjEUdU.js → BuiSlider.vue_vue_type_script_setup_true_lang-pzAiX1XP.js} +2 -2
  118. package/dist/{BuiSwitch.vue_vue_type_script_setup_true_lang-DDm9OTdj.js → BuiSwitch.vue_vue_type_script_setup_true_lang-C9ShckgE.js} +2 -2
  119. package/dist/{BuiTable.vue_vue_type_script_setup_true_lang-E1m-B1AB.js → BuiTable.vue_vue_type_script_setup_true_lang-DtvBDBVo.js} +3 -3
  120. package/dist/{BuiTableBody.vue_vue_type_script_setup_true_lang-063mcE3N.js → BuiTableBody.vue_vue_type_script_setup_true_lang-C8xJ4jmB.js} +1 -1
  121. package/dist/{BuiTableCaption.vue_vue_type_script_setup_true_lang-D0ip6gs5.js → BuiTableCaption.vue_vue_type_script_setup_true_lang-akgSakue.js} +1 -1
  122. package/dist/{BuiTableCell.vue_vue_type_script_setup_true_lang-BHXAudzN.js → BuiTableCell.vue_vue_type_script_setup_true_lang-Bg3H27w9.js} +1 -1
  123. package/dist/{BuiTableEmpty.vue_vue_type_script_setup_true_lang-BR_xIv44.js → BuiTableEmpty.vue_vue_type_script_setup_true_lang-DdNjsCQp.js} +3 -3
  124. package/dist/{BuiTableFooter.vue_vue_type_script_setup_true_lang-BmdXpa_A.js → BuiTableFooter.vue_vue_type_script_setup_true_lang-BBpzOKn2.js} +1 -1
  125. package/dist/{BuiTableHead.vue_vue_type_script_setup_true_lang-D6Im2R68.js → BuiTableHead.vue_vue_type_script_setup_true_lang-fjU0tzXQ.js} +1 -1
  126. package/dist/{BuiTableHeader.vue_vue_type_script_setup_true_lang-DDh2V0u_.js → BuiTableHeader.vue_vue_type_script_setup_true_lang-DPm0jnLo.js} +1 -1
  127. package/dist/{BuiTableRow.vue_vue_type_script_setup_true_lang-BmBGYRXt.js → BuiTableRow.vue_vue_type_script_setup_true_lang-BtsefcWm.js} +1 -1
  128. package/dist/{BuiTableRowSubrow.vue_vue_type_script_setup_true_lang-DgWwCXx7.js → BuiTableRowSubrow.vue_vue_type_script_setup_true_lang-o7uq1Evp.js} +4 -4
  129. package/dist/{BuiTabs.vue_vue_type_script_setup_true_lang-DG5EZdGM.js → BuiTabs.vue_vue_type_script_setup_true_lang-Bx9h7mN7.js} +1 -1
  130. package/dist/{BuiTabsContent.vue_vue_type_script_setup_true_lang-c2XxFeZy.js → BuiTabsContent.vue_vue_type_script_setup_true_lang-fhGgOsCb.js} +2 -2
  131. package/dist/{BuiToastAction.vue_vue_type_script_setup_true_lang-B6RTCAOj.js → BuiToastAction.vue_vue_type_script_setup_true_lang-CQdfsCpV.js} +2 -2
  132. package/dist/{BuiToastClose.vue_vue_type_script_setup_true_lang-DhZPWmS-.js → BuiToastClose.vue_vue_type_script_setup_true_lang-DKcinPYL.js} +3 -3
  133. package/dist/{BuiToastDescription.vue_vue_type_script_setup_true_lang-BM2gWJdK.js → BuiToastDescription.vue_vue_type_script_setup_true_lang-DilPK4c7.js} +2 -2
  134. package/dist/{BuiToastProvider.vue_vue_type_script_setup_true_lang-CYbeWPdz.js → BuiToastProvider.vue_vue_type_script_setup_true_lang-D6BsFeKl.js} +1 -1
  135. package/dist/{BuiToastTitle.vue_vue_type_script_setup_true_lang-DqCHgJnz.js → BuiToastTitle.vue_vue_type_script_setup_true_lang-DKYb0KDP.js} +2 -2
  136. package/dist/{BuiToastViewport.vue_vue_type_script_setup_true_lang-ClgIsZyT.js → BuiToastViewport.vue_vue_type_script_setup_true_lang-CNJXlkVy.js} +2 -2
  137. package/dist/{BuiToggleGroup.vue_vue_type_script_setup_true_lang-CKqhaBlv.js → BuiToggleGroup.vue_vue_type_script_setup_true_lang-BVLWma8L.js} +2 -2
  138. package/dist/{BuiToggleGroupItem.vue_vue_type_script_setup_true_lang-CSKN2QRX.js → BuiToggleGroupItem.vue_vue_type_script_setup_true_lang-CxIsZIZP.js} +2 -2
  139. package/dist/{BuiTooltip.vue_vue_type_script_setup_true_lang-C22CLrvM.js → BuiTooltip.vue_vue_type_script_setup_true_lang-BUpZD1YF.js} +1 -1
  140. package/dist/{BuiTooltipContent.vue_vue_type_script_setup_true_lang-HvNHYj5F.js → BuiTooltipContent.vue_vue_type_script_setup_true_lang-BlJipdor.js} +2 -2
  141. package/dist/{BuiTooltipProvider.vue_vue_type_script_setup_true_lang-C_LH0pQ_.js → BuiTooltipProvider.vue_vue_type_script_setup_true_lang-BPhsWP8Y.js} +1 -1
  142. package/dist/{BuiTooltipTrigger.vue_vue_type_script_setup_true_lang-C6uB9b0L.js → BuiTooltipTrigger.vue_vue_type_script_setup_true_lang-BQG5Ssoc.js} +1 -1
  143. package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-FYrckmcu.js → Skeleton.vue_vue_type_script_setup_true_lang-D5EVQxHg.js} +1 -1
  144. package/dist/assets/main.css +1 -1
  145. package/dist/{check-DU1dhTDR.js → check-DKcXJk1r.js} +1 -1
  146. package/dist/{chevron-down-AGPTmzx5.js → chevron-down-C5w5Vj70.js} +1 -1
  147. package/dist/{chevron-left-Dv6tDY3b.js → chevron-left-BqvZOD-Y.js} +1 -1
  148. package/dist/{chevron-right-BccHqh0e.js → chevron-right-ZmwmaSAu.js} +1 -1
  149. package/dist/{circle-BzFWsvRX.js → circle-Da-wgB2G.js} +1 -1
  150. package/dist/components/ui/accordion/BuiAccordion.js +1 -1
  151. package/dist/components/ui/accordion/BuiAccordionContent.js +1 -1
  152. package/dist/components/ui/accordion/BuiAccordionItem.js +1 -1
  153. package/dist/components/ui/accordion/BuiAccordionTrigger.js +1 -1
  154. package/dist/components/ui/accordion/index.js +4 -4
  155. package/dist/components/ui/alert/BuiAlertDescription.js +1 -1
  156. package/dist/components/ui/alert/BuiAlertTitle.js +1 -1
  157. package/dist/components/ui/alert/index.js +3 -3
  158. package/dist/components/ui/alert-dialog/BuiAlertDialog.js +1 -1
  159. package/dist/components/ui/alert-dialog/BuiAlertDialogAction.js +1 -1
  160. package/dist/components/ui/alert-dialog/BuiAlertDialogCancel.js +1 -1
  161. package/dist/components/ui/alert-dialog/BuiAlertDialogContent.js +1 -1
  162. package/dist/components/ui/alert-dialog/BuiAlertDialogDescription.js +1 -1
  163. package/dist/components/ui/alert-dialog/BuiAlertDialogFooter.js +1 -1
  164. package/dist/components/ui/alert-dialog/BuiAlertDialogHeader.js +1 -1
  165. package/dist/components/ui/alert-dialog/BuiAlertDialogTitle.js +1 -1
  166. package/dist/components/ui/alert-dialog/BuiAlertDialogTrigger.js +1 -1
  167. package/dist/components/ui/alert-dialog/index.js +9 -9
  168. package/dist/components/ui/aspect-ratio/BuiAspectRatio.js +1 -1
  169. package/dist/components/ui/aspect-ratio/index.js +1 -1
  170. package/dist/components/ui/auto-form/BuiAutoForm.js +4 -0
  171. package/dist/components/ui/auto-form/BuiAutoForm.vue.d.ts +90 -0
  172. package/dist/components/ui/auto-form/BuiAutoFormField.js +4 -0
  173. package/dist/components/ui/auto-form/BuiAutoFormField.vue.d.ts +43 -0
  174. package/dist/components/ui/auto-form/BuiAutoFormFieldArray.js +4 -0
  175. package/dist/components/ui/auto-form/BuiAutoFormFieldBoolean.js +4 -0
  176. package/dist/components/ui/auto-form/BuiAutoFormFieldBoolean.vue.d.ts +36 -0
  177. package/dist/components/ui/auto-form/BuiAutoFormFieldDate.js +4 -0
  178. package/dist/components/ui/auto-form/BuiAutoFormFieldDate.vue.d.ts +36 -0
  179. package/dist/components/ui/auto-form/BuiAutoFormFieldEnum.js +4 -0
  180. package/dist/components/ui/auto-form/BuiAutoFormFieldEnum.vue.d.ts +40 -0
  181. package/dist/components/ui/auto-form/BuiAutoFormFieldFile.js +4 -0
  182. package/dist/components/ui/auto-form/BuiAutoFormFieldFile.vue.d.ts +36 -0
  183. package/dist/components/ui/auto-form/BuiAutoFormFieldInput.js +4 -0
  184. package/dist/components/ui/auto-form/BuiAutoFormFieldInput.vue.d.ts +36 -0
  185. package/dist/components/ui/auto-form/BuiAutoFormFieldNumber.js +4 -0
  186. package/dist/components/ui/auto-form/BuiAutoFormFieldNumber.vue.d.ts +36 -0
  187. package/dist/components/ui/auto-form/BuiAutoFormFieldObject.js +4 -0
  188. package/dist/components/ui/auto-form/BuiAutoFormLabel.js +4 -0
  189. package/dist/components/ui/auto-form/BuiAutoFormLabel.vue.d.ts +22 -0
  190. package/dist/components/ui/auto-form/constant.js +11 -0
  191. package/dist/components/ui/auto-form/dependencies.d.ts +22 -0
  192. package/dist/components/ui/auto-form/dependencies.js +60 -0
  193. package/dist/components/ui/auto-form/index.d.ts +13 -0
  194. package/dist/components/ui/auto-form/index.js +26 -0
  195. package/dist/components/ui/auto-form/interface.d.ts +55 -0
  196. package/dist/components/ui/auto-form/interface.js +4 -0
  197. package/dist/components/ui/auto-form/utils.d.ts +46 -0
  198. package/dist/components/ui/auto-form/utils.js +74 -0
  199. package/dist/components/ui/avatar/BuiAvatarFallback.js +1 -1
  200. package/dist/components/ui/avatar/BuiAvatarImage.js +1 -1
  201. package/dist/components/ui/avatar/index.js +4 -4
  202. package/dist/components/ui/badge/index.js +2 -2
  203. package/dist/components/ui/button/BuiButton.js +1 -1
  204. package/dist/components/ui/button/BuiButton.vue.d.ts +4 -0
  205. package/dist/components/ui/button/index.js +1 -1
  206. package/dist/components/ui/calendar/BuiCalendar.js +1 -1
  207. package/dist/components/ui/calendar/index.js +5 -5
  208. package/dist/components/ui/card/BuiCard.js +1 -1
  209. package/dist/components/ui/card/BuiCardContent.js +1 -1
  210. package/dist/components/ui/card/BuiCardDescription.js +1 -1
  211. package/dist/components/ui/card/BuiCardFooter.js +1 -1
  212. package/dist/components/ui/card/BuiCardHeader.js +1 -1
  213. package/dist/components/ui/card/BuiCardTitle.js +1 -1
  214. package/dist/components/ui/card/index.js +6 -6
  215. package/dist/components/ui/checkbox/BuiCheckbox.js +1 -1
  216. package/dist/components/ui/checkbox/index.js +1 -1
  217. package/dist/components/ui/collapsible/BuiCollapsible.js +1 -1
  218. package/dist/components/ui/collapsible/BuiCollapsibleContent.js +1 -1
  219. package/dist/components/ui/collapsible/BuiCollapsibleTrigger.js +1 -1
  220. package/dist/components/ui/collapsible/index.js +3 -3
  221. package/dist/components/ui/command/BuiCommand.js +1 -1
  222. package/dist/components/ui/command/BuiCommandDialog.js +1 -1
  223. package/dist/components/ui/command/BuiCommandEmpty.js +1 -1
  224. package/dist/components/ui/command/BuiCommandGroup.js +1 -1
  225. package/dist/components/ui/command/BuiCommandInput.js +1 -1
  226. package/dist/components/ui/command/BuiCommandItem.js +1 -1
  227. package/dist/components/ui/command/BuiCommandList.js +1 -1
  228. package/dist/components/ui/command/BuiCommandSeparator.js +1 -1
  229. package/dist/components/ui/command/BuiCommandShortcut.js +1 -1
  230. package/dist/components/ui/command/index.js +9 -9
  231. package/dist/components/ui/context-menu/BuiContextMenu.js +1 -1
  232. package/dist/components/ui/context-menu/BuiContextMenuCheckboxItem.js +1 -1
  233. package/dist/components/ui/context-menu/BuiContextMenuContent.js +1 -1
  234. package/dist/components/ui/context-menu/BuiContextMenuGroup.js +1 -1
  235. package/dist/components/ui/context-menu/BuiContextMenuItem.js +1 -1
  236. package/dist/components/ui/context-menu/BuiContextMenuLabel.js +1 -1
  237. package/dist/components/ui/context-menu/BuiContextMenuPortal.js +1 -1
  238. package/dist/components/ui/context-menu/BuiContextMenuRadioGroup.js +1 -1
  239. package/dist/components/ui/context-menu/BuiContextMenuRadioItem.js +1 -1
  240. package/dist/components/ui/context-menu/BuiContextMenuSeparator.js +1 -1
  241. package/dist/components/ui/context-menu/BuiContextMenuShortcut.js +1 -1
  242. package/dist/components/ui/context-menu/BuiContextMenuSub.js +1 -1
  243. package/dist/components/ui/context-menu/BuiContextMenuSubContent.js +1 -1
  244. package/dist/components/ui/context-menu/BuiContextMenuSubTrigger.js +1 -1
  245. package/dist/components/ui/context-menu/BuiContextMenuTrigger.js +1 -1
  246. package/dist/components/ui/context-menu/index.js +14 -14
  247. package/dist/components/ui/dialog/BuiDialog.js +1 -1
  248. package/dist/components/ui/dialog/BuiDialogClose.js +1 -1
  249. package/dist/components/ui/dialog/BuiDialogContent.js +1 -1
  250. package/dist/components/ui/dialog/BuiDialogDescription.js +1 -1
  251. package/dist/components/ui/dialog/BuiDialogFooter.js +1 -1
  252. package/dist/components/ui/dialog/BuiDialogHeader.js +1 -1
  253. package/dist/components/ui/dialog/BuiDialogTitle.js +1 -1
  254. package/dist/components/ui/dialog/BuiDialogTrigger.js +1 -1
  255. package/dist/components/ui/dialog/index.js +8 -8
  256. package/dist/components/ui/dropdown-menu/BuiDropdownMenu.js +1 -1
  257. package/dist/components/ui/dropdown-menu/BuiDropdownMenuCheckboxItem.js +1 -1
  258. package/dist/components/ui/dropdown-menu/BuiDropdownMenuContent.js +1 -1
  259. package/dist/components/ui/dropdown-menu/BuiDropdownMenuGroup.js +1 -1
  260. package/dist/components/ui/dropdown-menu/BuiDropdownMenuItem.js +1 -1
  261. package/dist/components/ui/dropdown-menu/BuiDropdownMenuLabel.js +1 -1
  262. package/dist/components/ui/dropdown-menu/BuiDropdownMenuRadioGroup.js +1 -1
  263. package/dist/components/ui/dropdown-menu/BuiDropdownMenuRadioItem.js +1 -1
  264. package/dist/components/ui/dropdown-menu/BuiDropdownMenuSeparator.js +1 -1
  265. package/dist/components/ui/dropdown-menu/BuiDropdownMenuShortcut.js +1 -1
  266. package/dist/components/ui/dropdown-menu/BuiDropdownMenuSub.js +1 -1
  267. package/dist/components/ui/dropdown-menu/BuiDropdownMenuSubContent.js +1 -1
  268. package/dist/components/ui/dropdown-menu/BuiDropdownMenuSubTrigger.js +1 -1
  269. package/dist/components/ui/dropdown-menu/BuiDropdownMenuTrigger.js +1 -1
  270. package/dist/components/ui/dropdown-menu/index.js +15 -15
  271. package/dist/components/ui/form/BuiFormControl.js +1 -1
  272. package/dist/components/ui/form/BuiFormDescription.js +1 -1
  273. package/dist/components/ui/form/BuiFormItem.js +2 -2
  274. package/dist/components/ui/form/BuiFormLabel.js +1 -1
  275. package/dist/components/ui/form/BuiFormMessage.js +1 -1
  276. package/dist/components/ui/form/index.js +6 -6
  277. package/dist/components/ui/form/useFormField.js +23 -4
  278. package/dist/components/ui/health/index.js +1 -1
  279. package/dist/components/ui/hover-card/BuiHoverCard.js +1 -1
  280. package/dist/components/ui/hover-card/BuiHoverCardContent.js +1 -1
  281. package/dist/components/ui/hover-card/BuiHoverCardTrigger.js +1 -1
  282. package/dist/components/ui/hover-card/index.js +3 -3
  283. package/dist/components/ui/input/index.js +2 -2
  284. package/dist/components/ui/label/BuiLabel.js +1 -1
  285. package/dist/components/ui/label/index.js +1 -1
  286. package/dist/components/ui/pagination/BuiPaginationCommon.js +1 -1
  287. package/dist/components/ui/pagination/BuiPaginationEllipsis.js +1 -1
  288. package/dist/components/ui/pagination/BuiPaginationFirst.js +1 -1
  289. package/dist/components/ui/pagination/BuiPaginationLast.js +1 -1
  290. package/dist/components/ui/pagination/BuiPaginationNext.js +1 -1
  291. package/dist/components/ui/pagination/BuiPaginationPrev.js +1 -1
  292. package/dist/components/ui/pagination/index.js +7 -7
  293. package/dist/components/ui/popover/BuiPopover.js +1 -1
  294. package/dist/components/ui/popover/BuiPopoverContent.js +1 -1
  295. package/dist/components/ui/popover/BuiPopoverTrigger.js +1 -1
  296. package/dist/components/ui/popover/index.js +3 -3
  297. package/dist/components/ui/progress/index.js +2 -2
  298. package/dist/components/ui/radio-group/BuiRadioGroup.js +1 -1
  299. package/dist/components/ui/radio-group/BuiRadioGroupItem.js +1 -1
  300. package/dist/components/ui/radio-group/index.js +2 -2
  301. package/dist/components/ui/scroll-area/BuiScrollArea.js +1 -1
  302. package/dist/components/ui/scroll-area/BuiScrollBar.js +1 -1
  303. package/dist/components/ui/scroll-area/index.js +2 -2
  304. package/dist/components/ui/select/Bui.js +2 -2
  305. package/dist/components/ui/select/Bui.vue.d.ts +1 -1
  306. package/dist/components/ui/select/BuiSelect.js +1 -1
  307. package/dist/components/ui/select/BuiSelectContent.js +1 -1
  308. package/dist/components/ui/select/BuiSelectContent.vue.d.ts +1 -1
  309. package/dist/components/ui/select/BuiSelectGroup.js +1 -1
  310. package/dist/components/ui/select/BuiSelectItem.js +1 -1
  311. package/dist/components/ui/select/BuiSelectItemText.js +1 -1
  312. package/dist/components/ui/select/BuiSelectLabel.js +1 -1
  313. package/dist/components/ui/select/BuiSelectSeparator.js +1 -1
  314. package/dist/components/ui/select/BuiSelectTrigger.js +1 -1
  315. package/dist/components/ui/select/BuiSelectValue.js +1 -1
  316. package/dist/components/ui/select/index.js +9 -9
  317. package/dist/components/ui/separator/BuiSeparator.js +1 -1
  318. package/dist/components/ui/separator/index.js +1 -1
  319. package/dist/components/ui/skeleton/Skeleton.js +1 -1
  320. package/dist/components/ui/skeleton/index.js +1 -1
  321. package/dist/components/ui/slider/BuiSlider.js +1 -1
  322. package/dist/components/ui/slider/index.js +1 -1
  323. package/dist/components/ui/switch/BuiSwitch.js +1 -1
  324. package/dist/components/ui/switch/index.js +1 -1
  325. package/dist/components/ui/table/BuiDataTable.js +1 -1
  326. package/dist/components/ui/table/BuiTable.js +1 -1
  327. package/dist/components/ui/table/BuiTableBody.js +1 -1
  328. package/dist/components/ui/table/BuiTableCaption.js +1 -1
  329. package/dist/components/ui/table/BuiTableCell.js +1 -1
  330. package/dist/components/ui/table/BuiTableEmpty.js +1 -1
  331. package/dist/components/ui/table/BuiTableFooter.js +1 -1
  332. package/dist/components/ui/table/BuiTableHead.js +1 -1
  333. package/dist/components/ui/table/BuiTableHeader.js +1 -1
  334. package/dist/components/ui/table/BuiTableRow.js +1 -1
  335. package/dist/components/ui/table/BuiTableRowSubrow.js +1 -1
  336. package/dist/components/ui/table/index.js +11 -11
  337. package/dist/components/ui/tabs/BuiTabs.js +1 -1
  338. package/dist/components/ui/tabs/BuiTabsContent.js +1 -1
  339. package/dist/components/ui/tabs/index.js +10 -10
  340. package/dist/components/ui/textarea/index.js +2 -2
  341. package/dist/components/ui/toast/BuiToastAction.js +1 -1
  342. package/dist/components/ui/toast/BuiToastClose.js +1 -1
  343. package/dist/components/ui/toast/BuiToastDescription.js +1 -1
  344. package/dist/components/ui/toast/BuiToastProvider.js +1 -1
  345. package/dist/components/ui/toast/BuiToastTitle.js +1 -1
  346. package/dist/components/ui/toast/BuiToastViewport.js +1 -1
  347. package/dist/components/ui/toast/index.js +12 -12
  348. package/dist/components/ui/toggle/index.js +2 -2
  349. package/dist/components/ui/toggle-group/BuiToggleGroup.js +1 -1
  350. package/dist/components/ui/toggle-group/BuiToggleGroupItem.js +1 -1
  351. package/dist/components/ui/toggle-group/index.js +2 -2
  352. package/dist/components/ui/tooltip/BuiTooltip.js +1 -1
  353. package/dist/components/ui/tooltip/BuiTooltipContent.js +1 -1
  354. package/dist/components/ui/tooltip/BuiTooltipProvider.js +1 -1
  355. package/dist/components/ui/tooltip/BuiTooltipTrigger.js +1 -1
  356. package/dist/components/ui/tooltip/index.js +4 -4
  357. package/dist/{index-D3xpR8yT.js → index-BX_xuhSi.js} +1928 -1910
  358. package/dist/{index-DlKyQJKc.js → index-DBFwX7-c.js} +41 -41
  359. package/dist/index.js +137 -137
  360. package/dist/lib/utils.js +1 -1
  361. package/dist/{utils-C9G8Xvqo.js → utils-BNc3Bzhq.js} +15 -13
  362. package/dist/{useFormField-DauRmNq-.js → vee-validate.esm-BSPEJ8Vl.js} +440 -442
  363. package/dist/{x-tjPysJ-8.js → x-qxSNtB0B.js} +1 -1
  364. package/package.json +4 -3
  365. package/src/components/stories/BuiAutoForm.story.vue +98 -0
  366. package/src/components/ui/auto-form/BuiAutoForm.vue +109 -0
  367. package/src/components/ui/auto-form/BuiAutoFormField.vue +45 -0
  368. package/src/components/ui/auto-form/BuiAutoFormFieldArray.vue +105 -0
  369. package/src/components/ui/auto-form/BuiAutoFormFieldBoolean.vue +47 -0
  370. package/src/components/ui/auto-form/BuiAutoFormFieldDate.vue +73 -0
  371. package/src/components/ui/auto-form/BuiAutoFormFieldEnum.vue +75 -0
  372. package/src/components/ui/auto-form/BuiAutoFormFieldFile.vue +87 -0
  373. package/src/components/ui/auto-form/BuiAutoFormFieldInput.vue +42 -0
  374. package/src/components/ui/auto-form/BuiAutoFormFieldNumber.vue +42 -0
  375. package/src/components/ui/auto-form/BuiAutoFormFieldObject.vue +81 -0
  376. package/src/components/ui/auto-form/BuiAutoFormLabel.vue +14 -0
  377. package/src/components/ui/auto-form/constant.ts +39 -0
  378. package/src/components/ui/auto-form/dependencies.ts +95 -0
  379. package/src/components/ui/auto-form/index.ts +15 -0
  380. package/src/components/ui/auto-form/interface.ts +81 -0
  381. package/src/components/ui/auto-form/utils.ts +171 -0
  382. package/src/components/ui/button/BuiButton.vue +3 -0
  383. package/dist/BuiFormDescription.vue_vue_type_script_setup_true_lang-B6rDOqQf.js +0 -19
  384. package/dist/BuiFormMessage.vue_vue_type_script_setup_true_lang-CHvvMerX.js +0 -17
@@ -1,4 +1,4 @@
1
- import { d as e } from "./utils-C9G8Xvqo.js";
1
+ import { d as e } from "./utils-BNc3Bzhq.js";
2
2
  /**
3
3
  * @license lucide-vue-next v0.377.0 - ISC
4
4
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soft-stech/bootsman-ui-shadcn",
3
- "version": "1.1.35",
3
+ "version": "1.1.37",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -15,6 +15,7 @@
15
15
  "url": "https://github.com/soft-stech/bootsman-ui-shadcn"
16
16
  },
17
17
  "dependencies": {
18
+ "@internationalized/date": "^3.5.5",
18
19
  "@tanstack/vue-table": "8.16.0",
19
20
  "@vee-validate/zod": "4.13.1",
20
21
  "@vueuse/core": "10.9.0",
@@ -50,6 +51,7 @@
50
51
  "glob": "10.3.12",
51
52
  "histoire": "0.17.17",
52
53
  "jsdom": "23.2.0",
54
+ "mlly": "1.4.2",
53
55
  "npm-run-all2": "6.1.2",
54
56
  "postcss": "8.4.38",
55
57
  "prettier": "3.2.5",
@@ -59,8 +61,7 @@
59
61
  "vite": "5.2.11",
60
62
  "vite-plugin-dts": "3.9.0",
61
63
  "vitest": "1.5.3",
62
- "vue-tsc": "2.0.16",
63
- "mlly": "1.4.2"
64
+ "vue-tsc": "2.0.16"
64
65
  },
65
66
  "scripts": {
66
67
  "build": "run-p type-check \"build-only {@}\" --",
@@ -0,0 +1,98 @@
1
+ <script setup lang="ts">
2
+ import { BuiAutoForm } from '@/components/ui/auto-form'
3
+ import { z } from 'zod'
4
+ import { ref } from 'vue'
5
+ import { useBuiForm } from '@/components/ui/form'
6
+ import { toTypedSchema } from '@vee-validate/zod'
7
+
8
+ enum Sports {
9
+ Football = 'Football/Soccer',
10
+ Basketball = 'Basketball',
11
+ Baseball = 'Baseball',
12
+ Hockey = 'Hockey (Ice)',
13
+ None = "I don't like sports"
14
+ }
15
+
16
+ const schema = z.object({
17
+ addons: z.array(
18
+ z
19
+ .object({
20
+ type: z.nativeEnum(Sports),
21
+ name: z.string().min(1),
22
+ email: z.string().email()
23
+ })
24
+ .describe('Addon')
25
+ ),
26
+ username: z
27
+ .string({
28
+ required_error: 'Username is required.'
29
+ })
30
+ .min(2, {
31
+ message: 'Username must be at least 2 characters.'
32
+ }),
33
+
34
+ password: z
35
+ .string({
36
+ required_error: 'Password is required.'
37
+ })
38
+ .min(8, {
39
+ message: 'Password must be at least 8 characters.'
40
+ }),
41
+
42
+ favouriteNumber: z.coerce
43
+ .number({
44
+ invalid_type_error: 'Favourite number must be a number.'
45
+ })
46
+ .min(1, {
47
+ message: 'Favourite number must be at least 1.'
48
+ })
49
+ .max(10, {
50
+ message: 'Favourite number must be at most 10.'
51
+ })
52
+ .default(1)
53
+ .optional(),
54
+
55
+ acceptTerms: z.boolean().refine((value) => value, {
56
+ message: 'You must accept the terms and conditions.',
57
+ path: ['acceptTerms']
58
+ }),
59
+
60
+ sendMeMails: z.boolean().optional(),
61
+
62
+ birthday: z.coerce.date().optional(),
63
+
64
+ color: z.enum(['red', 'green', 'blue']).optional(),
65
+
66
+ // Another enum example
67
+ marshmallows: z.enum(['not many', 'a few', 'a lot', 'too many']),
68
+
69
+ // Native enum example
70
+ sports: z.nativeEnum(Sports).describe('What is your favourite sport?'),
71
+
72
+ bio: z
73
+ .string()
74
+ .min(10, {
75
+ message: 'Bio must be at least 10 characters.'
76
+ })
77
+ .max(160, {
78
+ message: 'Bio must not be longer than 30 characters.'
79
+ })
80
+ .optional(),
81
+
82
+ customParent: z.string().optional(),
83
+
84
+ file: z.string().optional()
85
+ })
86
+
87
+ const form = useBuiForm({
88
+ validationSchema: toTypedSchema(schema)
89
+ })
90
+ </script>
91
+
92
+ <template>
93
+ <Story title="BuiAutoForm" autoPropsDisabled :layout="{ type: 'grid', width: '100%' }">
94
+ <Variant title="Default">
95
+ <BuiAutoForm :schema="schema" :form="form" class="m-4" />
96
+ </Variant>
97
+ </Story>
98
+ </template>
@@ -0,0 +1,109 @@
1
+ <script setup lang="ts" generic="T extends ZodObjectOrWrapped">
2
+ import { computed, toRefs } from 'vue'
3
+ import type { ZodAny, z } from 'zod'
4
+ import { toTypedSchema } from '@vee-validate/zod'
5
+ import type { FormContext, GenericObject } from 'vee-validate'
6
+ import {
7
+ type ZodObjectOrWrapped,
8
+ getBaseSchema,
9
+ getBaseType,
10
+ getDefaultValueInZodStack,
11
+ getObjectFormSchema
12
+ } from './utils'
13
+ import type { Config, ConfigItem, Dependency, Shape } from './interface'
14
+ import AutoFormField from './BuiAutoFormField.vue'
15
+ import { provideDependencies } from './dependencies'
16
+ import { BuiForm as Form } from '@/components/ui/form'
17
+
18
+ const props = defineProps<{
19
+ schema: T
20
+ form?: FormContext<GenericObject>
21
+ fieldConfig?: Config<z.infer<T>>
22
+ dependencies?: Dependency<z.infer<T>>[]
23
+ }>()
24
+
25
+ const emits = defineEmits<{
26
+ submit: [event: z.infer<T>]
27
+ }>()
28
+
29
+ const { dependencies } = toRefs(props)
30
+ provideDependencies(dependencies)
31
+
32
+ const shapes = computed(() => {
33
+ // @ts-expect-error ignore {} not assignable to object
34
+ const val: { [key in keyof T]: Shape } = {}
35
+ const baseSchema = getObjectFormSchema(props.schema)
36
+ const shape = baseSchema.shape
37
+ Object.keys(shape).forEach((name) => {
38
+ const item = shape[name] as ZodAny
39
+ const baseItem = getBaseSchema(item) as ZodAny
40
+ let options =
41
+ baseItem && 'values' in baseItem._def ? (baseItem._def.values as string[]) : undefined
42
+ if (!Array.isArray(options) && typeof options === 'object') options = Object.values(options)
43
+
44
+ val[name as keyof T] = {
45
+ type: getBaseType(item),
46
+ default: getDefaultValueInZodStack(item),
47
+ options,
48
+ required: !['ZodOptional', 'ZodNullable'].includes(item._def.typeName),
49
+ schema: baseItem
50
+ }
51
+ })
52
+ return val
53
+ })
54
+
55
+ const fields = computed(() => {
56
+ // @ts-expect-error ignore {} not assignable to object
57
+ const val: {
58
+ [key in keyof z.infer<T>]: { shape: Shape; fieldName: string; config: ConfigItem }
59
+ } = {}
60
+ for (const key in shapes.value) {
61
+ const shape = shapes.value[key]
62
+ val[key as keyof z.infer<T>] = {
63
+ shape,
64
+ config: props.fieldConfig?.[key] as ConfigItem,
65
+ fieldName: key
66
+ }
67
+ }
68
+ return val
69
+ })
70
+
71
+ const formComponent = computed(() => (props.form ? 'form' : Form))
72
+ const formComponentProps = computed(() => {
73
+ if (props.form) {
74
+ return {
75
+ onSubmit: props.form.handleSubmit((val) => emits('submit', val))
76
+ }
77
+ } else {
78
+ const formSchema = toTypedSchema(props.schema)
79
+ return {
80
+ keepValues: true,
81
+ validationSchema: formSchema,
82
+ onSubmit: (val: GenericObject) => emits('submit', val)
83
+ }
84
+ }
85
+ })
86
+ </script>
87
+
88
+ <template>
89
+ <component :is="formComponent" v-bind="formComponentProps">
90
+ <slot name="customAutoForm" :fields="fields">
91
+ <template v-for="(shape, key) of shapes" :key="key">
92
+ <slot
93
+ :shape="shape"
94
+ :name="key.toString() as keyof z.infer<T>"
95
+ :field-name="key.toString()"
96
+ :config="fieldConfig?.[key as keyof typeof fieldConfig] as ConfigItem"
97
+ >
98
+ <AutoFormField
99
+ :config="fieldConfig?.[key as keyof typeof fieldConfig] as ConfigItem"
100
+ :field-name="key.toString()"
101
+ :shape="shape"
102
+ />
103
+ </slot>
104
+ </template>
105
+ </slot>
106
+
107
+ <slot :shapes="shapes" />
108
+ </component>
109
+ </template>
@@ -0,0 +1,45 @@
1
+ <script setup lang="ts" generic="U extends ZodAny">
2
+ import type { ZodAny } from 'zod'
3
+ import { computed } from 'vue'
4
+ import type { Config, ConfigItem, Shape } from './interface'
5
+ import { DEFAULT_ZOD_HANDLERS, INPUT_COMPONENTS } from './constant'
6
+ import useDependencies from './dependencies'
7
+
8
+ const props = defineProps<{
9
+ fieldName: string
10
+ shape: Shape
11
+ config?: ConfigItem | Config<U>
12
+ }>()
13
+
14
+ function isValidConfig(config: any): config is ConfigItem {
15
+ return !!config?.component
16
+ }
17
+
18
+ const delegatedProps = computed(() => {
19
+ if (['ZodObject', 'ZodArray'].includes(props.shape?.type))
20
+ return { schema: props.shape?.schema }
21
+ return undefined
22
+ })
23
+
24
+ const { isDisabled, isHidden, isRequired, overrideOptions } = useDependencies(props.fieldName)
25
+ </script>
26
+
27
+ <template>
28
+ <component
29
+ :is="isValidConfig(config)
30
+ ? typeof config.component === 'string'
31
+ ? INPUT_COMPONENTS[config.component!]
32
+ : config.component
33
+ : INPUT_COMPONENTS[DEFAULT_ZOD_HANDLERS[shape.type]] "
34
+ v-if="!isHidden"
35
+ :field-name="fieldName"
36
+ :label="shape.schema?.description"
37
+ :required="isRequired || shape.required"
38
+ :options="overrideOptions || shape.options"
39
+ :disabled="isDisabled"
40
+ :config="config"
41
+ v-bind="delegatedProps"
42
+ >
43
+ <slot />
44
+ </component>
45
+ </template>
@@ -0,0 +1,105 @@
1
+ <script setup lang="ts" generic="T extends z.ZodAny">
2
+ import * as z from 'zod'
3
+ import { computed, provide } from 'vue'
4
+ import { PlusIcon, TrashIcon } from 'lucide-vue-next'
5
+ import { FieldArray, FieldContextKey, useField } from 'vee-validate'
6
+ import type { Config, ConfigItem } from './interface'
7
+ import { beautifyObjectName, getBaseType } from './utils'
8
+ import AutoFormField from './BuiAutoFormField.vue'
9
+ import AutoFormLabel from './BuiAutoFormLabel.vue'
10
+ import {
11
+ BuiAccordion as Accordion,
12
+ BuiAccordionContent as AccordionContent,
13
+ BuiAccordionItem as AccordionItem,
14
+ BuiAccordionTrigger as AccordionTrigger
15
+ } from '@/components/ui/accordion'
16
+ import { BuiButton as Button } from '@/components/ui/button'
17
+ import { BuiSeparator as Separator } from '@/components/ui/separator'
18
+ import { BuiFormItem as FormItem, BuiFormMessage as FormMessage } from '@/components/ui/form'
19
+
20
+ const props = defineProps<{
21
+ fieldName: string
22
+ required?: boolean
23
+ config?: Config<T>
24
+ schema?: z.ZodArray<T>
25
+ disabled?: boolean
26
+ }>()
27
+
28
+ function isZodArray(item: z.ZodArray<any> | z.ZodDefault<any>): item is z.ZodArray<any> {
29
+ return item instanceof z.ZodArray
30
+ }
31
+
32
+ function isZodDefault(item: z.ZodArray<any> | z.ZodDefault<any>): item is z.ZodDefault<any> {
33
+ return item instanceof z.ZodDefault
34
+ }
35
+
36
+ const itemShape = computed(() => {
37
+ if (!props.schema) return
38
+
39
+ const schema: z.ZodAny = isZodArray(props.schema)
40
+ ? props.schema._def.type
41
+ : isZodDefault(props.schema)
42
+ ? // @ts-expect-error missing schema
43
+ props.schema._def.innerType._def.type
44
+ : null
45
+
46
+ return {
47
+ type: getBaseType(schema),
48
+ schema
49
+ }
50
+ })
51
+
52
+ const fieldContext = useField(props.fieldName)
53
+ // @ts-expect-error ignore missing `id`
54
+ provide(FieldContextKey, fieldContext)
55
+ </script>
56
+
57
+ <template>
58
+ <FieldArray v-slot="{ fields, remove, push }" as="section" :name="fieldName">
59
+ <slot v-bind="props">
60
+ <Accordion type="multiple" class="w-full" collapsible :disabled="disabled" as-child>
61
+ <FormItem>
62
+ <AccordionItem :value="fieldName" class="border-none">
63
+ <AccordionTrigger>
64
+ <AutoFormLabel class="text-base" :required="required">
65
+ {{ schema?.description || beautifyObjectName(fieldName) }}
66
+ </AutoFormLabel>
67
+ </AccordionTrigger>
68
+
69
+ <AccordionContent>
70
+ <template v-for="(field, index) of fields" :key="field.key">
71
+ <div class="mb-4 p-1">
72
+ <AutoFormField
73
+ :field-name="`${fieldName}[${index}]`"
74
+ :label="fieldName"
75
+ :shape="itemShape!"
76
+ :config="config as ConfigItem"
77
+ />
78
+
79
+ <div class="!my-4 flex justify-end">
80
+ <Button type="button" size="icon" variant="secondary" @click="remove(index)">
81
+ <TrashIcon :size="16" />
82
+ </Button>
83
+ </div>
84
+ <Separator v-if="!field.isLast" />
85
+ </div>
86
+ </template>
87
+
88
+ <Button
89
+ type="button"
90
+ variant="secondary"
91
+ class="mt-4 flex items-center"
92
+ @click="push(null)"
93
+ >
94
+ <PlusIcon class="mr-2" :size="16" />
95
+ Add
96
+ </Button>
97
+ </AccordionContent>
98
+
99
+ <FormMessage />
100
+ </AccordionItem>
101
+ </FormItem>
102
+ </Accordion>
103
+ </slot>
104
+ </FieldArray>
105
+ </template>
@@ -0,0 +1,47 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+ import { beautifyObjectName } from './utils'
4
+ import type { FieldProps } from './interface'
5
+ import AutoFormLabel from './BuiAutoFormLabel.vue'
6
+ import {
7
+ BuiFormControl as FormControl,
8
+ BuiFormDescription as FormDescription,
9
+ BuiFormField as FormField,
10
+ BuiFormItem as FormItem,
11
+ BuiFormMessage as FormMessage
12
+ } from '@/components/ui/form'
13
+ import { BuiSwitch as Switch } from '@/components/ui/switch'
14
+ import { BuiCheckbox as Checkbox } from '@/components/ui/checkbox'
15
+
16
+ const props = defineProps<FieldProps>()
17
+
18
+ const booleanComponent = computed(() => (props.config?.component === 'switch' ? Switch : Checkbox))
19
+ </script>
20
+
21
+ <template>
22
+ <FormField v-slot="slotProps" :name="fieldName">
23
+ <FormItem>
24
+ <div class="mb-3 flex items-center gap-3 space-y-0">
25
+ <FormControl>
26
+ <slot v-bind="slotProps">
27
+ <component
28
+ :is="booleanComponent"
29
+ v-bind="{ ...slotProps.componentField }"
30
+ :disabled="disabled"
31
+ :checked="slotProps.componentField.modelValue"
32
+ @update:checked="slotProps.componentField['onUpdate:modelValue']"
33
+ />
34
+ </slot>
35
+ </FormControl>
36
+ <AutoFormLabel v-if="!config?.hideLabel" :required="required">
37
+ {{ config?.label || beautifyObjectName(label ?? fieldName) }}
38
+ </AutoFormLabel>
39
+ </div>
40
+
41
+ <FormDescription v-if="config?.description">
42
+ {{ config.description }}
43
+ </FormDescription>
44
+ <FormMessage />
45
+ </FormItem>
46
+ </FormField>
47
+ </template>
@@ -0,0 +1,73 @@
1
+ <script setup lang="ts">
2
+ import { DateFormatter, getLocalTimeZone } from '@internationalized/date'
3
+ import { CalendarIcon } from 'lucide-vue-next'
4
+ import { beautifyObjectName } from './utils'
5
+ import AutoFormLabel from './BuiAutoFormLabel.vue'
6
+ import type { FieldProps } from './interface'
7
+ import {
8
+ BuiFormControl as FormControl,
9
+ BuiFormDescription as FormDescription,
10
+ BuiFormField as FormField,
11
+ BuiFormItem as FormItem,
12
+ BuiFormMessage as FormMessage
13
+ } from '@/components/ui/form'
14
+
15
+ import { BuiCalendar as Calendar } from '@/components/ui/calendar'
16
+ import { BuiButton as Button } from '@/components/ui/button'
17
+ import {
18
+ BuiPopover as Popover,
19
+ BuiPopoverContent as PopoverContent,
20
+ BuiPopoverTrigger as PopoverTrigger
21
+ } from '@/components/ui/popover'
22
+ import { cn } from '@/lib/utils'
23
+
24
+ defineProps<FieldProps>()
25
+
26
+ const df = new DateFormatter('en-US', {
27
+ dateStyle: 'long'
28
+ })
29
+ </script>
30
+
31
+ <template>
32
+ <FormField v-slot="slotProps" :name="fieldName">
33
+ <FormItem>
34
+ <AutoFormLabel v-if="!config?.hideLabel" :required="required">
35
+ {{ config?.label || beautifyObjectName(label ?? fieldName) }}
36
+ </AutoFormLabel>
37
+ <FormControl>
38
+ <slot v-bind="slotProps">
39
+ <div>
40
+ <Popover>
41
+ <PopoverTrigger as-child :disabled="disabled">
42
+ <Button
43
+ variant="outline"
44
+ :class="
45
+ cn(
46
+ 'w-full justify-start text-left font-normal',
47
+ !slotProps.componentField.modelValue && 'text-muted-foreground'
48
+ )
49
+ "
50
+ >
51
+ <CalendarIcon class="mr-2 h-4 w-4" :size="16" />
52
+ {{
53
+ slotProps.componentField.modelValue
54
+ ? df.format(slotProps.componentField.modelValue.toDate(getLocalTimeZone()))
55
+ : 'Pick a date'
56
+ }}
57
+ </Button>
58
+ </PopoverTrigger>
59
+ <PopoverContent class="w-auto p-0">
60
+ <Calendar initial-focus v-bind="slotProps.componentField" />
61
+ </PopoverContent>
62
+ </Popover>
63
+ </div>
64
+ </slot>
65
+ </FormControl>
66
+
67
+ <FormDescription v-if="config?.description">
68
+ {{ config.description }}
69
+ </FormDescription>
70
+ <FormMessage />
71
+ </FormItem>
72
+ </FormField>
73
+ </template>
@@ -0,0 +1,75 @@
1
+ <script setup lang="ts">
2
+ import AutoFormLabel from './BuiAutoFormLabel.vue'
3
+ import { beautifyObjectName } from './utils'
4
+ import type { FieldProps } from './interface'
5
+ import {
6
+ BuiFormControl as FormControl,
7
+ BuiFormDescription as FormDescription,
8
+ BuiFormField as FormField,
9
+ BuiFormItem as FormItem,
10
+ BuiFormMessage as FormMessage
11
+ } from '@/components/ui/form'
12
+ import {
13
+ BuiSelect as Select,
14
+ BuiSelectContent as SelectContent,
15
+ BuiSelectItem as SelectItem,
16
+ BuiSelectTrigger as SelectTrigger,
17
+ BuiSelectValue as SelectValue
18
+ } from '@/components/ui/select'
19
+ import { BuiLabel as Label } from '@/components/ui/label'
20
+ import {
21
+ BuiRadioGroup as RadioGroup,
22
+ BuiRadioGroupItem as RadioGroupItem
23
+ } from '@/components/ui/radio-group'
24
+
25
+ defineProps<
26
+ FieldProps & {
27
+ options?: string[]
28
+ }
29
+ >()
30
+ </script>
31
+
32
+ <template>
33
+ <FormField v-slot="slotProps" :name="fieldName">
34
+ <FormItem>
35
+ <AutoFormLabel v-if="!config?.hideLabel" :required="required">
36
+ {{ config?.label || beautifyObjectName(label ?? fieldName) }}
37
+ </AutoFormLabel>
38
+ <FormControl>
39
+ <slot v-bind="slotProps">
40
+ <RadioGroup
41
+ v-if="config?.component === 'radio'"
42
+ :disabled="disabled"
43
+ :orientation="'vertical'"
44
+ v-bind="{ ...slotProps.componentField }"
45
+ >
46
+ <div
47
+ v-for="(option, index) in options"
48
+ :key="option"
49
+ class="mb-2 flex items-center gap-3 space-y-0"
50
+ >
51
+ <RadioGroupItem :id="`${option}-${index}`" :value="option" />
52
+ <Label :for="`${option}-${index}`">{{ beautifyObjectName(option) }}</Label>
53
+ </div>
54
+ </RadioGroup>
55
+
56
+ <Select v-else :disabled="disabled" v-bind="{ ...slotProps.componentField }">
57
+ <SelectTrigger class="w-full">
58
+ <SelectValue :placeholder="config?.inputProps?.placeholder" />
59
+ </SelectTrigger>
60
+ <SelectContent>
61
+ <SelectItem v-for="option in options" :key="option" :value="option">
62
+ {{ beautifyObjectName(option) }}
63
+ </SelectItem>
64
+ </SelectContent>
65
+ </Select>
66
+ </slot>
67
+ </FormControl>
68
+
69
+ <FormDescription v-if="config?.description">
70
+ {{ config.description }}
71
+ </FormDescription>
72
+ <FormMessage />
73
+ </FormItem>
74
+ </FormField>
75
+ </template>
@@ -0,0 +1,87 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+ import { TrashIcon } from 'lucide-vue-next'
4
+ import AutoFormLabel from './BuiAutoFormLabel.vue'
5
+ import { beautifyObjectName } from './utils'
6
+ import type { FieldProps } from './interface'
7
+ import {
8
+ BuiFormControl as FormControl,
9
+ BuiFormDescription as FormDescription,
10
+ BuiFormField as FormField,
11
+ BuiFormItem as FormItem,
12
+ BuiFormMessage as FormMessage
13
+ } from '@/components/ui/form'
14
+ import { BuiInput as Input } from '@/components/ui/input'
15
+ import { BuiButton as Button } from '@/components/ui/button'
16
+
17
+ defineProps<FieldProps>()
18
+
19
+ const inputFile = ref<File>()
20
+ async function parseFileAsString(file: File | undefined): Promise<string> {
21
+ return new Promise((resolve, reject) => {
22
+ if (file) {
23
+ const reader = new FileReader()
24
+ reader.onloadend = () => {
25
+ resolve(reader.result as string)
26
+ }
27
+ reader.onerror = (err) => {
28
+ reject(err)
29
+ }
30
+ reader.readAsDataURL(file)
31
+ }
32
+ })
33
+ }
34
+ </script>
35
+
36
+ <template>
37
+ <FormField v-slot="slotProps" :name="fieldName">
38
+ <FormItem v-bind="$attrs">
39
+ <AutoFormLabel v-if="!config?.hideLabel" :required="required">
40
+ {{ config?.label || beautifyObjectName(label ?? fieldName) }}
41
+ </AutoFormLabel>
42
+ <FormControl>
43
+ <slot v-bind="slotProps">
44
+ <Input
45
+ v-if="!inputFile"
46
+ type="file"
47
+ v-bind="{ ...config?.inputProps }"
48
+ :disabled="disabled"
49
+ @change="
50
+ async (ev: InputEvent) => {
51
+ const file = (ev.target as HTMLInputElement).files?.[0]
52
+ inputFile = file
53
+ const parsed = await parseFileAsString(file)
54
+ slotProps.componentField.onInput(parsed)
55
+ }
56
+ "
57
+ />
58
+ <div
59
+ v-else
60
+ class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-transparent py-1 pl-3 pr-1 text-sm shadow-sm transition-colors"
61
+ >
62
+ <p>{{ inputFile?.name }}</p>
63
+ <Button
64
+ :size="'icon'"
65
+ :variant="'ghost'"
66
+ class="h-[26px] w-[26px]"
67
+ aria-label="Remove file"
68
+ type="button"
69
+ @click="
70
+ () => {
71
+ inputFile = undefined
72
+ slotProps.componentField.onInput(undefined)
73
+ }
74
+ "
75
+ >
76
+ <TrashIcon :size="16" />
77
+ </Button>
78
+ </div>
79
+ </slot>
80
+ </FormControl>
81
+ <FormDescription v-if="config?.description">
82
+ {{ config.description }}
83
+ </FormDescription>
84
+ <FormMessage />
85
+ </FormItem>
86
+ </FormField>
87
+ </template>