@antify/ui 1.0.0

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 (388) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -0
  3. package/dist/components/AntAccordion.vue +64 -0
  4. package/dist/components/AntAccordionItem.vue +119 -0
  5. package/dist/components/AntAlert.vue +146 -0
  6. package/dist/components/AntCard.vue +34 -0
  7. package/dist/components/AntContent.vue +16 -0
  8. package/dist/components/AntDropdown.vue +100 -0
  9. package/dist/components/AntIcon.vue +56 -0
  10. package/dist/components/AntKeycap.vue +45 -0
  11. package/dist/components/AntListGroup.vue +24 -0
  12. package/dist/components/AntListGroupItem.vue +83 -0
  13. package/dist/components/AntModal.vue +130 -0
  14. package/dist/components/AntPagination.vue +205 -0
  15. package/dist/components/AntPopover.vue +135 -0
  16. package/dist/components/AntSkeleton.vue +38 -0
  17. package/dist/components/AntSpinner.vue +101 -0
  18. package/dist/components/AntTag.vue +114 -0
  19. package/dist/components/AntToast.vue +119 -0
  20. package/dist/components/AntToaster.vue +71 -0
  21. package/dist/components/AntTooltip.vue +189 -0
  22. package/dist/components/Main.stories.d.ts +7 -0
  23. package/dist/components/Main.stories.js +15 -0
  24. package/dist/components/Main.stories.mjs +8 -0
  25. package/dist/components/__stories/AntAccordion.stories.d.ts +9 -0
  26. package/dist/components/__stories/AntAccordion.stories.js +120 -0
  27. package/dist/components/__stories/AntAccordion.stories.mjs +101 -0
  28. package/dist/components/__stories/AntAlert.stories.d.ts +11 -0
  29. package/dist/components/__stories/AntAlert.stories.js +99 -0
  30. package/dist/components/__stories/AntAlert.stories.mjs +81 -0
  31. package/dist/components/__stories/AntCard.stories.d.ts +7 -0
  32. package/dist/components/__stories/AntCard.stories.js +118 -0
  33. package/dist/components/__stories/AntCard.stories.mjs +87 -0
  34. package/dist/components/__stories/AntContent.stories.d.ts +6 -0
  35. package/dist/components/__stories/AntContent.stories.js +43 -0
  36. package/dist/components/__stories/AntContent.stories.mjs +26 -0
  37. package/dist/components/__stories/AntDropdown.stories.d.ts +6 -0
  38. package/dist/components/__stories/AntDropdown.stories.js +71 -0
  39. package/dist/components/__stories/AntDropdown.stories.mjs +52 -0
  40. package/dist/components/__stories/AntIcon.stories.d.ts +8 -0
  41. package/dist/components/__stories/AntIcon.stories.js +122 -0
  42. package/dist/components/__stories/AntIcon.stories.mjs +93 -0
  43. package/dist/components/__stories/AntKeycap.stories.d.ts +9 -0
  44. package/dist/components/__stories/AntKeycap.stories.js +98 -0
  45. package/dist/components/__stories/AntKeycap.stories.mjs +69 -0
  46. package/dist/components/__stories/AntListGroup.stories.d.ts +7 -0
  47. package/dist/components/__stories/AntListGroup.stories.js +56 -0
  48. package/dist/components/__stories/AntListGroup.stories.mjs +36 -0
  49. package/dist/components/__stories/AntListGroupItem.stories.d.ts +10 -0
  50. package/dist/components/__stories/AntListGroupItem.stories.js +83 -0
  51. package/dist/components/__stories/AntListGroupItem.stories.mjs +62 -0
  52. package/dist/components/__stories/AntModal.stories.d.ts +7 -0
  53. package/dist/components/__stories/AntModal.stories.js +96 -0
  54. package/dist/components/__stories/AntModal.stories.mjs +78 -0
  55. package/dist/components/__stories/AntPagination.stories.d.ts +8 -0
  56. package/dist/components/__stories/AntPagination.stories.js +57 -0
  57. package/dist/components/__stories/AntPagination.stories.mjs +41 -0
  58. package/dist/components/__stories/AntPopover.stories.d.ts +6 -0
  59. package/dist/components/__stories/AntPopover.stories.js +67 -0
  60. package/dist/components/__stories/AntPopover.stories.mjs +47 -0
  61. package/dist/components/__stories/AntSkeleton.stories.d.ts +8 -0
  62. package/dist/components/__stories/AntSkeleton.stories.js +60 -0
  63. package/dist/components/__stories/AntSkeleton.stories.mjs +43 -0
  64. package/dist/components/__stories/AntSpinner.stories.d.ts +6 -0
  65. package/dist/components/__stories/AntSpinner.stories.js +61 -0
  66. package/dist/components/__stories/AntSpinner.stories.mjs +34 -0
  67. package/dist/components/__stories/AntTag.stories.d.ts +7 -0
  68. package/dist/components/__stories/AntTag.stories.js +65 -0
  69. package/dist/components/__stories/AntTag.stories.mjs +43 -0
  70. package/dist/components/__stories/AntToast.stories.d.ts +8 -0
  71. package/dist/components/__stories/AntToast.stories.js +85 -0
  72. package/dist/components/__stories/AntToast.stories.mjs +66 -0
  73. package/dist/components/__stories/AntToaster.stories.d.ts +42 -0
  74. package/dist/components/__stories/AntToaster.stories.js +128 -0
  75. package/dist/components/__stories/AntToaster.stories.mjs +110 -0
  76. package/dist/components/__stories/AntTooltip.stories.d.ts +16 -0
  77. package/dist/components/__stories/AntTooltip.stories.js +283 -0
  78. package/dist/components/__stories/AntTooltip.stories.mjs +241 -0
  79. package/dist/components/__types/AntAccordion.types.d.ts +4 -0
  80. package/dist/components/__types/AntAccordion.types.js +11 -0
  81. package/dist/components/__types/AntAccordion.types.mjs +5 -0
  82. package/dist/components/__types/AntIcon.types.d.ts +8 -0
  83. package/dist/components/__types/AntIcon.types.js +15 -0
  84. package/dist/components/__types/AntIcon.types.mjs +9 -0
  85. package/dist/components/__types/AntKeycap.types.d.ts +4 -0
  86. package/dist/components/__types/AntKeycap.types.js +11 -0
  87. package/dist/components/__types/AntKeycap.types.mjs +5 -0
  88. package/dist/components/__types/AntListGroupItem.types.d.ts +9 -0
  89. package/dist/components/__types/AntListGroupItem.types.js +16 -0
  90. package/dist/components/__types/AntListGroupItem.types.mjs +10 -0
  91. package/dist/components/__types/AntSpinner.types.d.ts +10 -0
  92. package/dist/components/__types/AntSpinner.types.js +17 -0
  93. package/dist/components/__types/AntSpinner.types.mjs +11 -0
  94. package/dist/components/__types/AntTag.types.d.ts +17 -0
  95. package/dist/components/__types/AntTag.types.js +25 -0
  96. package/dist/components/__types/AntTag.types.mjs +19 -0
  97. package/dist/components/__types/AntToaster.types.d.ts +8 -0
  98. package/dist/components/__types/AntToaster.types.js +1 -0
  99. package/dist/components/__types/AntToaster.types.mjs +0 -0
  100. package/dist/components/__types/index.d.ts +7 -0
  101. package/dist/components/__types/index.js +82 -0
  102. package/dist/components/__types/index.mjs +7 -0
  103. package/dist/components/buttons/AntActionButton.vue +74 -0
  104. package/dist/components/buttons/AntButton.vue +257 -0
  105. package/dist/components/buttons/AntCreateButton.vue +54 -0
  106. package/dist/components/buttons/AntDeleteButton.vue +54 -0
  107. package/dist/components/buttons/AntDuplicateButton.vue +54 -0
  108. package/dist/components/buttons/AntEditButton.vue +54 -0
  109. package/dist/components/buttons/AntSaveAndNewButton.vue +56 -0
  110. package/dist/components/buttons/AntSaveButton.vue +55 -0
  111. package/dist/components/buttons/__stories/AntActionButton.stories.d.ts +11 -0
  112. package/dist/components/buttons/__stories/AntActionButton.stories.js +111 -0
  113. package/dist/components/buttons/__stories/AntActionButton.stories.mjs +86 -0
  114. package/dist/components/buttons/__stories/AntButton.stories.d.ts +16 -0
  115. package/dist/components/buttons/__stories/AntButton.stories.js +361 -0
  116. package/dist/components/buttons/__stories/AntButton.stories.mjs +313 -0
  117. package/dist/components/buttons/__stories/AntCreateButton.stories.d.ts +12 -0
  118. package/dist/components/buttons/__stories/AntCreateButton.stories.js +97 -0
  119. package/dist/components/buttons/__stories/AntCreateButton.stories.mjs +76 -0
  120. package/dist/components/buttons/__stories/AntDeleteButton.stories.d.ts +12 -0
  121. package/dist/components/buttons/__stories/AntDeleteButton.stories.js +97 -0
  122. package/dist/components/buttons/__stories/AntDeleteButton.stories.mjs +76 -0
  123. package/dist/components/buttons/__stories/AntDuplicateButton.stories.d.ts +12 -0
  124. package/dist/components/buttons/__stories/AntDuplicateButton.stories.js +97 -0
  125. package/dist/components/buttons/__stories/AntDuplicateButton.stories.mjs +76 -0
  126. package/dist/components/buttons/__stories/AntEditButton.stories.d.ts +12 -0
  127. package/dist/components/buttons/__stories/AntEditButton.stories.js +97 -0
  128. package/dist/components/buttons/__stories/AntEditButton.stories.mjs +76 -0
  129. package/dist/components/buttons/__stories/AntSaveAndNewButton.stories.d.ts +12 -0
  130. package/dist/components/buttons/__stories/AntSaveAndNewButton.stories.js +97 -0
  131. package/dist/components/buttons/__stories/AntSaveAndNewButton.stories.mjs +76 -0
  132. package/dist/components/buttons/__stories/AntSaveButton.stories.d.ts +12 -0
  133. package/dist/components/buttons/__stories/AntSaveButton.stories.js +97 -0
  134. package/dist/components/buttons/__stories/AntSaveButton.stories.mjs +76 -0
  135. package/dist/components/buttons/__types/AntButton.types.d.ts +4 -0
  136. package/dist/components/buttons/__types/AntButton.types.js +11 -0
  137. package/dist/components/buttons/__types/AntButton.types.mjs +5 -0
  138. package/dist/components/buttons/__types/index.d.ts +1 -0
  139. package/dist/components/buttons/__types/index.js +16 -0
  140. package/dist/components/buttons/__types/index.mjs +1 -0
  141. package/dist/components/crud/AntCrud.vue +75 -0
  142. package/dist/components/crud/AntCrudDetail.vue +11 -0
  143. package/dist/components/crud/AntCrudDetailActions.vue +58 -0
  144. package/dist/components/crud/AntCrudDetailNav.vue +64 -0
  145. package/dist/components/crud/AntCrudTableFilter.vue +122 -0
  146. package/dist/components/crud/AntCrudTableNav.vue +149 -0
  147. package/dist/components/crud/__stories/AntCrud.stories.d.ts +6 -0
  148. package/dist/components/crud/__stories/AntCrud.stories.js +131 -0
  149. package/dist/components/crud/__stories/AntCrud.stories.mjs +130 -0
  150. package/dist/components/crud/__stories/AntCrudDetail.stories.d.ts +7 -0
  151. package/dist/components/crud/__stories/AntCrudDetail.stories.js +90 -0
  152. package/dist/components/crud/__stories/AntCrudDetail.stories.mjs +84 -0
  153. package/dist/components/crud/__stories/AntCrudDetailActions.stories.d.ts +6 -0
  154. package/dist/components/crud/__stories/AntCrudDetailActions.stories.js +38 -0
  155. package/dist/components/crud/__stories/AntCrudDetailActions.stories.mjs +25 -0
  156. package/dist/components/crud/__stories/AntCrudDetailNav.stories.d.ts +6 -0
  157. package/dist/components/crud/__stories/AntCrudDetailNav.stories.js +51 -0
  158. package/dist/components/crud/__stories/AntCrudDetailNav.stories.mjs +45 -0
  159. package/dist/components/crud/__stories/AntCrudTableFilter.stories.d.ts +6 -0
  160. package/dist/components/crud/__stories/AntCrudTableFilter.stories.js +42 -0
  161. package/dist/components/crud/__stories/AntCrudTableFilter.stories.mjs +27 -0
  162. package/dist/components/crud/__stories/AntCrudTableNav.stories.d.ts +8 -0
  163. package/dist/components/crud/__stories/AntCrudTableNav.stories.js +77 -0
  164. package/dist/components/crud/__stories/AntCrudTableNav.stories.mjs +58 -0
  165. package/dist/components/dialogs/AntDeleteDialog.vue +29 -0
  166. package/dist/components/dialogs/AntDialog.vue +182 -0
  167. package/dist/components/dialogs/__stories/AndDeleteDialog.stories.d.ts +6 -0
  168. package/dist/components/dialogs/__stories/AndDeleteDialog.stories.js +48 -0
  169. package/dist/components/dialogs/__stories/AndDeleteDialog.stories.mjs +32 -0
  170. package/dist/components/dialogs/__stories/AntDialog.stories.d.ts +6 -0
  171. package/dist/components/dialogs/__stories/AntDialog.stories.js +84 -0
  172. package/dist/components/dialogs/__stories/AntDialog.stories.mjs +60 -0
  173. package/dist/components/forms/AntField.vue +123 -0
  174. package/dist/components/forms/AntFormGroup.vue +36 -0
  175. package/dist/components/forms/AntFormGroupLabel.vue +5 -0
  176. package/dist/components/forms/__stories/AntField.stories.d.ts +6 -0
  177. package/dist/components/forms/__stories/AntField.stories.js +110 -0
  178. package/dist/components/forms/__stories/AntField.stories.mjs +80 -0
  179. package/dist/components/forms/__stories/AntFormGroup.stories.d.ts +6 -0
  180. package/dist/components/forms/__stories/AntFormGroup.stories.js +53 -0
  181. package/dist/components/forms/__stories/AntFormGroup.stories.mjs +33 -0
  182. package/dist/components/forms/__stories/AntFormGroupLabel.stories.d.ts +6 -0
  183. package/dist/components/forms/__stories/AntFormGroupLabel.stories.js +35 -0
  184. package/dist/components/forms/__stories/AntFormGroupLabel.stories.mjs +20 -0
  185. package/dist/components/index.d.ts +62 -0
  186. package/dist/components/index.js +433 -0
  187. package/dist/components/index.mjs +124 -0
  188. package/dist/components/inputs/AntCheckbox.vue +201 -0
  189. package/dist/components/inputs/AntCheckboxGroup.vue +117 -0
  190. package/dist/components/inputs/AntDateInput.vue +104 -0
  191. package/dist/components/inputs/AntNumberInput.vue +157 -0
  192. package/dist/components/inputs/AntPasswordInput.vue +107 -0
  193. package/dist/components/inputs/AntRadio.vue +214 -0
  194. package/dist/components/inputs/AntRadioGroup.vue +127 -0
  195. package/dist/components/inputs/AntRangeSlider.vue +121 -0
  196. package/dist/components/inputs/AntRichTextEditor.vue +237 -0
  197. package/dist/components/inputs/AntSearch.vue +75 -0
  198. package/dist/components/inputs/AntSelect.vue +319 -0
  199. package/dist/components/inputs/AntSwitch.vue +192 -0
  200. package/dist/components/inputs/AntSwitcher.vue +196 -0
  201. package/dist/components/inputs/AntTagInput.vue +339 -0
  202. package/dist/components/inputs/AntTextInput.vue +75 -0
  203. package/dist/components/inputs/AntTextarea.vue +191 -0
  204. package/dist/components/inputs/AntUnitInput.vue +96 -0
  205. package/dist/components/inputs/Elements/AntBaseInput.vue +319 -0
  206. package/dist/components/inputs/Elements/AntDropDown.vue +189 -0
  207. package/dist/components/inputs/Elements/AntInputDescription.vue +58 -0
  208. package/dist/components/inputs/Elements/AntInputLabel.vue +62 -0
  209. package/dist/components/inputs/Elements/AntInputLimiter.vue +58 -0
  210. package/dist/components/inputs/Elements/__stories/AntBaseInput.stories.d.ts +11 -0
  211. package/dist/components/inputs/Elements/__stories/AntBaseInput.stories.js +311 -0
  212. package/dist/components/inputs/Elements/__stories/AntBaseInput.stories.mjs +234 -0
  213. package/dist/components/inputs/Elements/__stories/AntInputDescription.stories.d.ts +6 -0
  214. package/dist/components/inputs/Elements/__stories/AntInputDescription.stories.js +61 -0
  215. package/dist/components/inputs/Elements/__stories/AntInputDescription.stories.mjs +34 -0
  216. package/dist/components/inputs/Elements/__stories/AntInputLabel.stories.d.ts +7 -0
  217. package/dist/components/inputs/Elements/__stories/AntInputLabel.stories.js +76 -0
  218. package/dist/components/inputs/Elements/__stories/AntInputLabel.stories.mjs +46 -0
  219. package/dist/components/inputs/Elements/__stories/AntInputLimiter.stories.d.ts +6 -0
  220. package/dist/components/inputs/Elements/__stories/AntInputLimiter.stories.js +64 -0
  221. package/dist/components/inputs/Elements/__stories/AntInputLimiter.stories.mjs +37 -0
  222. package/dist/components/inputs/Elements/__types/AntBaseInput.types.d.ts +17 -0
  223. package/dist/components/inputs/Elements/__types/AntBaseInput.types.js +24 -0
  224. package/dist/components/inputs/Elements/__types/AntBaseInput.types.mjs +18 -0
  225. package/dist/components/inputs/Elements/__types/index.d.ts +1 -0
  226. package/dist/components/inputs/Elements/__types/index.js +16 -0
  227. package/dist/components/inputs/Elements/__types/index.mjs +1 -0
  228. package/dist/components/inputs/Elements/index.d.ts +6 -0
  229. package/dist/components/inputs/Elements/index.js +41 -0
  230. package/dist/components/inputs/Elements/index.mjs +12 -0
  231. package/dist/components/inputs/__stories/AntCheckbox.stories.d.ts +8 -0
  232. package/dist/components/inputs/__stories/AntCheckbox.stories.js +415 -0
  233. package/dist/components/inputs/__stories/AntCheckbox.stories.mjs +382 -0
  234. package/dist/components/inputs/__stories/AntCheckboxGroup.stories.d.ts +7 -0
  235. package/dist/components/inputs/__stories/AntCheckboxGroup.stories.js +107 -0
  236. package/dist/components/inputs/__stories/AntCheckboxGroup.stories.mjs +84 -0
  237. package/dist/components/inputs/__stories/AntDateInput.stories.d.ts +8 -0
  238. package/dist/components/inputs/__stories/AntDateInput.stories.js +233 -0
  239. package/dist/components/inputs/__stories/AntDateInput.stories.mjs +193 -0
  240. package/dist/components/inputs/__stories/AntNumberInput.stories.d.ts +10 -0
  241. package/dist/components/inputs/__stories/AntNumberInput.stories.js +301 -0
  242. package/dist/components/inputs/__stories/AntNumberInput.stories.mjs +246 -0
  243. package/dist/components/inputs/__stories/AntPasswordInput.stories.d.ts +8 -0
  244. package/dist/components/inputs/__stories/AntPasswordInput.stories.js +206 -0
  245. package/dist/components/inputs/__stories/AntPasswordInput.stories.mjs +156 -0
  246. package/dist/components/inputs/__stories/AntRadioGroup.stories.d.ts +8 -0
  247. package/dist/components/inputs/__stories/AntRadioGroup.stories.js +279 -0
  248. package/dist/components/inputs/__stories/AntRadioGroup.stories.mjs +251 -0
  249. package/dist/components/inputs/__stories/AntRangeSlider.stories.d.ts +7 -0
  250. package/dist/components/inputs/__stories/AntRangeSlider.stories.js +86 -0
  251. package/dist/components/inputs/__stories/AntRangeSlider.stories.mjs +67 -0
  252. package/dist/components/inputs/__stories/AntRichTextEditor.stories-old.d.ts +0 -0
  253. package/dist/components/inputs/__stories/AntRichTextEditor.stories-old.js +1 -0
  254. package/dist/components/inputs/__stories/AntRichTextEditor.stories-old.mjs +0 -0
  255. package/dist/components/inputs/__stories/AntSearch.stories.d.ts +7 -0
  256. package/dist/components/inputs/__stories/AntSearch.stories.js +137 -0
  257. package/dist/components/inputs/__stories/AntSearch.stories.mjs +103 -0
  258. package/dist/components/inputs/__stories/AntSelect.stories.d.ts +13 -0
  259. package/dist/components/inputs/__stories/AntSelect.stories.js +287 -0
  260. package/dist/components/inputs/__stories/AntSelect.stories.mjs +255 -0
  261. package/dist/components/inputs/__stories/AntSwitch.stories.d.ts +8 -0
  262. package/dist/components/inputs/__stories/AntSwitch.stories.js +376 -0
  263. package/dist/components/inputs/__stories/AntSwitch.stories.mjs +344 -0
  264. package/dist/components/inputs/__stories/AntSwitcher.stories.d.ts +8 -0
  265. package/dist/components/inputs/__stories/AntSwitcher.stories.js +252 -0
  266. package/dist/components/inputs/__stories/AntSwitcher.stories.mjs +235 -0
  267. package/dist/components/inputs/__stories/AntTagInput.stories.d.ts +9 -0
  268. package/dist/components/inputs/__stories/AntTagInput.stories.js +256 -0
  269. package/dist/components/inputs/__stories/AntTagInput.stories.mjs +228 -0
  270. package/dist/components/inputs/__stories/AntTextInput.stories.d.ts +9 -0
  271. package/dist/components/inputs/__stories/AntTextInput.stories.js +271 -0
  272. package/dist/components/inputs/__stories/AntTextInput.stories.mjs +225 -0
  273. package/dist/components/inputs/__stories/AntTextarea.stories.d.ts +9 -0
  274. package/dist/components/inputs/__stories/AntTextarea.stories.js +189 -0
  275. package/dist/components/inputs/__stories/AntTextarea.stories.mjs +144 -0
  276. package/dist/components/inputs/__stories/AntUnitInput.stories.d.ts +9 -0
  277. package/dist/components/inputs/__stories/AntUnitInput.stories.js +158 -0
  278. package/dist/components/inputs/__stories/AntUnitInput.stories.mjs +116 -0
  279. package/dist/components/inputs/__types/AntCheckbox.types.d.ts +6 -0
  280. package/dist/components/inputs/__types/AntCheckbox.types.js +1 -0
  281. package/dist/components/inputs/__types/AntCheckbox.types.mjs +0 -0
  282. package/dist/components/inputs/__types/AntDateInput.types.d.ts +7 -0
  283. package/dist/components/inputs/__types/AntDateInput.types.js +14 -0
  284. package/dist/components/inputs/__types/AntDateInput.types.mjs +8 -0
  285. package/dist/components/inputs/__types/AntRadio.types.d.ts +9 -0
  286. package/dist/components/inputs/__types/AntRadio.types.js +1 -0
  287. package/dist/components/inputs/__types/AntRadio.types.mjs +0 -0
  288. package/dist/components/inputs/__types/AntSelect.types.d.ts +4 -0
  289. package/dist/components/inputs/__types/AntSelect.types.js +1 -0
  290. package/dist/components/inputs/__types/AntSelect.types.mjs +0 -0
  291. package/dist/components/inputs/__types/AntSwitcher.types.d.ts +4 -0
  292. package/dist/components/inputs/__types/AntSwitcher.types.js +1 -0
  293. package/dist/components/inputs/__types/AntSwitcher.types.mjs +0 -0
  294. package/dist/components/inputs/__types/AntTagInput.types.d.ts +5 -0
  295. package/dist/components/inputs/__types/AntTagInput.types.js +12 -0
  296. package/dist/components/inputs/__types/AntTagInput.types.mjs +6 -0
  297. package/dist/components/inputs/__types/AntTextInput.types.d.ts +6 -0
  298. package/dist/components/inputs/__types/AntTextInput.types.js +13 -0
  299. package/dist/components/inputs/__types/AntTextInput.types.mjs +7 -0
  300. package/dist/components/inputs/__types/index.d.ts +7 -0
  301. package/dist/components/inputs/__types/index.js +82 -0
  302. package/dist/components/inputs/__types/index.mjs +7 -0
  303. package/dist/components/layouts/AntNavLeftLayout.vue +36 -0
  304. package/dist/components/layouts/__stories/AntNavLeftLayout.stories.d.ts +7 -0
  305. package/dist/components/layouts/__stories/AntNavLeftLayout.stories.js +77 -0
  306. package/dist/components/layouts/__stories/AntNavLeftLayout.stories.mjs +68 -0
  307. package/dist/components/navbar/AntNavbar.vue +25 -0
  308. package/dist/components/navbar/AntNavbarItem.vue +78 -0
  309. package/dist/components/navbar/__stories/AntNavbar.stories.d.ts +6 -0
  310. package/dist/components/navbar/__stories/AntNavbar.stories.js +73 -0
  311. package/dist/components/navbar/__stories/AntNavbar.stories.mjs +64 -0
  312. package/dist/components/navbar/__types/NavbarItem.types.d.ts +10 -0
  313. package/dist/components/navbar/__types/NavbarItem.types.js +1 -0
  314. package/dist/components/navbar/__types/NavbarItem.types.mjs +0 -0
  315. package/dist/components/navbar/__types/index.d.ts +1 -0
  316. package/dist/components/navbar/__types/index.js +16 -0
  317. package/dist/components/navbar/__types/index.mjs +1 -0
  318. package/dist/components/table/AntTable.vue +218 -0
  319. package/dist/components/table/AntTableSortButton.vue +48 -0
  320. package/dist/components/table/AntTd.vue +81 -0
  321. package/dist/components/table/AntTh.vue +78 -0
  322. package/dist/components/table/__stories/AntTable.stories.d.ts +9 -0
  323. package/dist/components/table/__stories/AntTable.stories.js +308 -0
  324. package/dist/components/table/__stories/AntTable.stories.mjs +273 -0
  325. package/dist/components/table/__types/TableHeader.types.d.ts +36 -0
  326. package/dist/components/table/__types/TableHeader.types.js +31 -0
  327. package/dist/components/table/__types/TableHeader.types.mjs +25 -0
  328. package/dist/components/table/__types/index.d.ts +1 -0
  329. package/dist/components/table/__types/index.js +16 -0
  330. package/dist/components/table/__types/index.mjs +1 -0
  331. package/dist/components/tabs/AntTabItem.vue +118 -0
  332. package/dist/components/tabs/AntTabs.vue +47 -0
  333. package/dist/components/tabs/__stories/AntTabItem.stories.d.ts +6 -0
  334. package/dist/components/tabs/__stories/AntTabItem.stories.js +52 -0
  335. package/dist/components/tabs/__stories/AntTabItem.stories.mjs +36 -0
  336. package/dist/components/tabs/__stories/AntTabs.stories.d.ts +9 -0
  337. package/dist/components/tabs/__stories/AntTabs.stories.js +183 -0
  338. package/dist/components/tabs/__stories/AntTabs.stories.mjs +179 -0
  339. package/dist/components/tabs/__types/AntTabItem.types.d.ts +17 -0
  340. package/dist/components/tabs/__types/AntTabItem.types.js +12 -0
  341. package/dist/components/tabs/__types/AntTabItem.types.mjs +6 -0
  342. package/dist/components/tabs/__types/index.d.ts +1 -0
  343. package/dist/components/tabs/__types/index.js +16 -0
  344. package/dist/components/tabs/__types/index.mjs +1 -0
  345. package/dist/components/transitions/AntTransitionCollapseHeight.vue +96 -0
  346. package/dist/composables/index.d.ts +1 -0
  347. package/dist/composables/index.js +16 -0
  348. package/dist/composables/index.mjs +1 -0
  349. package/dist/composables/useToaster.d.ts +21 -0
  350. package/dist/composables/useToaster.js +72 -0
  351. package/dist/composables/useToaster.mjs +53 -0
  352. package/dist/enums/Direction.enum.d.ts +4 -0
  353. package/dist/enums/Direction.enum.js +11 -0
  354. package/dist/enums/Direction.enum.mjs +5 -0
  355. package/dist/enums/Grouped.enum.d.ts +6 -0
  356. package/dist/enums/Grouped.enum.js +13 -0
  357. package/dist/enums/Grouped.enum.mjs +7 -0
  358. package/dist/enums/Position.enum.d.ts +12 -0
  359. package/dist/enums/Position.enum.js +20 -0
  360. package/dist/enums/Position.enum.mjs +14 -0
  361. package/dist/enums/Size.enum.d.ts +7 -0
  362. package/dist/enums/Size.enum.js +14 -0
  363. package/dist/enums/Size.enum.mjs +8 -0
  364. package/dist/enums/State.enum.d.ts +16 -0
  365. package/dist/enums/State.enum.js +24 -0
  366. package/dist/enums/State.enum.mjs +18 -0
  367. package/dist/enums/index.d.ts +5 -0
  368. package/dist/enums/index.js +60 -0
  369. package/dist/enums/index.mjs +5 -0
  370. package/dist/handler.d.ts +1 -0
  371. package/dist/handler.js +11 -0
  372. package/dist/handler.mjs +5 -0
  373. package/dist/index.d.ts +5 -0
  374. package/dist/index.js +60 -0
  375. package/dist/index.mjs +5 -0
  376. package/dist/install.d.ts +3 -0
  377. package/dist/install.js +17 -0
  378. package/dist/install.mjs +9 -0
  379. package/dist/tailwind.config.d.ts +2 -0
  380. package/dist/tailwind.config.js +198 -0
  381. package/dist/tailwind.config.mjs +189 -0
  382. package/dist/types.d.ts +8 -0
  383. package/dist/types.js +93 -0
  384. package/dist/types.mjs +8 -0
  385. package/dist/utils.d.ts +20 -0
  386. package/dist/utils.js +49 -0
  387. package/dist/utils.mjs +41 -0
  388. package/package.json +100 -0
@@ -0,0 +1,339 @@
1
+ <script setup lang="ts">
2
+ import {AntField} from './Elements';
3
+ import type {SelectOption} from './__types';
4
+ import {Grouped, InputState, Size} from '../../enums';
5
+ import {useVModel} from '@vueuse/core';
6
+ import {faChevronRight, type IconDefinition} from '@fortawesome/free-solid-svg-icons';
7
+ import {computed, onMounted, type Ref, ref, watch} from 'vue';
8
+ import AntTag from '../AntTag.vue';
9
+ import AntIcon from '../AntIcon.vue';
10
+ import {AntTagSize, IconSize} from '../__types';
11
+ import AntDropDown from './Elements/AntDropDown.vue';
12
+ import AntSkeleton from '../AntSkeleton.vue';
13
+ import {vOnClickOutside} from '@vueuse/components';
14
+ import {AntTagInputSize} from './__types/AntTagInput.types';
15
+ import type {TagState} from '../__types/AntTag.types';
16
+
17
+ const emit = defineEmits(['update:modelValue', 'blur', 'validate']);
18
+ const props = withDefaults(
19
+ defineProps<{
20
+ modelValue: (string | number)[] | null;
21
+ options: SelectOption[];
22
+ label?: string;
23
+ description?: string;
24
+ placeholder?: string;
25
+ size?: AntTagInputSize;
26
+ state?: InputState;
27
+ disabled?: boolean;
28
+ readonly?: boolean;
29
+ skeleton?: boolean;
30
+ name?: string;
31
+ expanded?: boolean;
32
+ icon?: IconDefinition;
33
+ grouped?: Grouped;
34
+ nullable?: boolean;
35
+ messages?: string[];
36
+ allowCreate?: boolean;
37
+ allowDuplicates?: boolean;
38
+ openOnFocus?: boolean;
39
+ autoCloseAfterSelection?: boolean;
40
+ createCallback?: (item: string) => Promise<SelectOption>;
41
+ }>(), {
42
+ size: AntTagInputSize.md,
43
+ state: InputState.base,
44
+ icon: () => faChevronRight,
45
+ messages: () => [],
46
+ grouped: Grouped.none,
47
+ allowCreate: false,
48
+ allowDuplicates: false,
49
+ openOnFocus: true,
50
+ readonly: false,
51
+ disabled: false,
52
+ skeleton: false,
53
+ autoCloseAfterSelection: false,
54
+ placeholder: 'Add new tag'
55
+ }
56
+ );
57
+
58
+ const _modelValue: Ref<(string | number)[] | null> = useVModel(props, 'modelValue', emit);
59
+ const _skeleton = useVModel(props, 'skeleton', emit);
60
+ const dropDownOpen = ref(false);
61
+ const hasInputState = computed(() => props.skeleton || props.readonly || props.disabled);
62
+ const focusedDropDownItem: Ref<string | number | null> = ref(null);
63
+ const tagInput = ref('');
64
+ const filteredOptions = ref(props.options);
65
+ const inputRef: Ref<HTMLElement | null> = ref(null);
66
+ const inputContainerClasses = computed(() => {
67
+ const variants: Record<InputState, string> = {
68
+ [InputState.base]: 'outline-neutral-300 focus-within:outline-neutral-300 focus-within:ring-primary-200 bg-white',
69
+ [InputState.danger]: 'outline-danger-500 focus-within:outline-danger-500 focus-within:ring-danger-200 bg-danger-100',
70
+ [InputState.info]: 'outline-info-500 focus-within:outline-info-500 focus-within:ring-info-200 bg-info-100',
71
+ [InputState.success]: 'outline-success-500 focus-within:outline-success-500 focus-within:ring-success-200 bg-success-100',
72
+ [InputState.warning]: 'outline-warning-500 focus-within:outline-warning-500 focus-within:ring-warning-200 bg-warning-100',
73
+ };
74
+
75
+ return {
76
+ 'flex items-center flex-wrap': true,
77
+ 'transition-colors relative border-none outline w-full focus-within:z-10': true,
78
+ 'outline-offset-[-1px] outline-1 focus-within:outline-offset-[-1px] focus-within:outline-1': true,
79
+ 'opacity-50 cursor-not-allowed': props.disabled,
80
+ [variants[props.state]]: true,
81
+ // AntTagInputSize
82
+ 'p-1.5 text-sm': props.size === AntTagInputSize.sm,
83
+ 'p-2 text-sm': props.size === AntTagInputSize.md,
84
+ 'p-2.5 text-sm': props.size === AntTagInputSize.lg,
85
+ 'focus-within:ring-2': !hasInputState.value && props.size === AntTagInputSize.sm,
86
+ 'focus-within:ring-4': !hasInputState.value && (props.size === AntTagInputSize.lg || props.size === AntTagInputSize.md),
87
+ // Grouping
88
+ 'rounded-tl-md rounded-bl-md rounded-tr-none rounded-br-none': props.grouped === Grouped.left,
89
+ 'rounded-none': props.grouped === Grouped.center,
90
+ 'rounded-tl-none rounded-bl-none rounded-tr-md rounded-br-md': props.grouped === Grouped.right,
91
+ 'rounded-md': props.grouped === Grouped.none,
92
+ 'rounded-bl-none rounded-br-none': dropDownOpen.value && (!props.options || props.options.length > 0) && !props.readonly,
93
+ 'invisible': props.skeleton,
94
+ };
95
+ });
96
+ const inputClasses = computed(() => {
97
+ const variants: Record<InputState, string> = {
98
+ [InputState.base]: 'placeholder:text-neutral-500',
99
+ [InputState.danger]: 'placeholder:text-danger-700',
100
+ [InputState.info]: 'placeholder:text-info-700',
101
+ [InputState.success]: 'placeholder:text-success-700',
102
+ [InputState.warning]: 'placeholder:text-warning-700',
103
+ };
104
+
105
+ return {
106
+ 'outline-0 border:none ring:none bg-transparent w-full': true,
107
+ 'opacity-50 cursor-not-allowed': props.disabled,
108
+ [variants[props.state]]: true,
109
+ };
110
+ });
111
+ const skeletonGrouped = computed(() => {
112
+ if (!props.nullable || (props.nullable && _modelValue.value === null)) {
113
+ return props.grouped;
114
+ }
115
+
116
+ if (props.grouped === Grouped.right || props.grouped === Grouped.center) {
117
+ return Grouped.center;
118
+ } else {
119
+ return Grouped.left;
120
+ }
121
+ });
122
+
123
+ function onClickOutside() {
124
+ if (!dropDownOpen.value) {
125
+ return;
126
+ }
127
+
128
+ dropDownOpen.value = false;
129
+ }
130
+
131
+ async function checkCreateTag(item: string): Promise<void> {
132
+ if (props.allowCreate && focusedDropDownItem.value) {
133
+ // If allowCreate is active but a item is focused inside the dropdown do nothing here.
134
+ return;
135
+ }
136
+
137
+ if (item && props.allowCreate && props.createCallback) {
138
+ const newOption: SelectOption = await props.createCallback(item);
139
+
140
+ addTag(newOption.value);
141
+ }
142
+ }
143
+
144
+ function addTagFromOptions(item: string | number) {
145
+ if (props.allowCreate && !focusedDropDownItem.value) {
146
+ // If allowCreate is active we don't need to add it here.
147
+ return;
148
+ }
149
+
150
+ const option = props.options?.find(option => option.value === item);
151
+
152
+ if (option) {
153
+ addTag(item);
154
+
155
+ if (props.autoCloseAfterSelection) {
156
+ dropDownOpen.value = false;
157
+ }
158
+ }
159
+ }
160
+
161
+ function addTag(tagValue: string | number): void {
162
+ _modelValue.value = _modelValue.value || [];
163
+
164
+ if (!props.allowDuplicates && _modelValue.value?.includes(tagValue) || !tagValue) {
165
+ return;
166
+ }
167
+
168
+ if (Array.isArray(_modelValue.value)) {
169
+ _modelValue.value.push(tagValue);
170
+ } else {
171
+ _modelValue.value = [tagValue];
172
+ }
173
+
174
+ tagInput.value = '';
175
+
176
+ filterDropDown();
177
+ }
178
+
179
+ function removeLastTag() {
180
+ if (tagInput.value === '' && Array.isArray(_modelValue.value) && _modelValue.value.length > 0) {
181
+ _modelValue.value.splice(-1, 1);
182
+
183
+ filterDropDown();
184
+ }
185
+ }
186
+
187
+ function removeTag(tag: string | number) {
188
+ if (_modelValue.value && !props.disabled && !props.skeleton && !props.readonly) {
189
+ _modelValue.value.splice(_modelValue.value.findIndex((_value) => _value === tag), 1);
190
+
191
+ filterDropDown();
192
+ }
193
+ }
194
+
195
+ function changeFocus() {
196
+ if (props.openOnFocus) {
197
+ dropDownOpen.value = true;
198
+ }
199
+ }
200
+
201
+ function filterDropDown() {
202
+ if (!props.options) {
203
+ return;
204
+ }
205
+
206
+ if (props.allowCreate) {
207
+ focusedDropDownItem.value = null;
208
+ }
209
+
210
+ dropDownOpen.value = true;
211
+
212
+ filteredOptions.value = props.options.filter(option => option.label.toLowerCase().includes(tagInput.value.toLowerCase()));
213
+
214
+ // Remove all elements that are in modelValue from the filtered options
215
+ if (_modelValue.value && !props.allowDuplicates) {
216
+ filteredOptions.value = filteredOptions.value.filter(option => !_modelValue.value?.includes(option.value));
217
+ }
218
+
219
+ if (!props.allowCreate && filteredOptions.value.length > 0) {
220
+ focusedDropDownItem.value = filteredOptions.value[0]?.value;
221
+ }
222
+ }
223
+
224
+ function onBlur(e: FocusEvent) {
225
+ emit('validate', props.modelValue);
226
+ emit('blur', e);
227
+ }
228
+
229
+ /**
230
+ * Validate default value if given after delayed data fetching.
231
+ */
232
+ watch(() => props.skeleton, (val) => {
233
+ if (!val && props.modelValue !== null) {
234
+ emit('validate', props.modelValue);
235
+ }
236
+ });
237
+ watch(_modelValue, (val) => {
238
+ if ([InputState.danger, InputState.warning, InputState.info].includes(props.state)) {
239
+ emit('validate', val);
240
+ }
241
+ }, {deep: true});
242
+
243
+ onMounted(() => {
244
+ /**
245
+ * Validate default value without delayed data fetching.
246
+ */
247
+ if (!props.skeleton && props.modelValue !== null) {
248
+ emit('validate', props.modelValue);
249
+ }
250
+ });
251
+ </script>
252
+
253
+ <template>
254
+ <AntField
255
+ :label="label"
256
+ :size="size as unknown as Size"
257
+ :skeleton="_skeleton"
258
+ :description="description"
259
+ :state="state"
260
+ :expanded="expanded"
261
+ :messages="messages"
262
+ >
263
+ <div
264
+ v-on-click-outside="onClickOutside"
265
+ class="relative w-full"
266
+ >
267
+ <AntSkeleton
268
+ v-if="skeleton"
269
+ absolute
270
+ rounded
271
+ :grouped="skeletonGrouped"
272
+ />
273
+
274
+ <div
275
+ :class="inputContainerClasses"
276
+ class="w-full flex items-center"
277
+ >
278
+ <div
279
+ class="flex gap-2.5 items-center"
280
+ >
281
+ <AntTag
282
+ v-for="(tag, index) in _modelValue"
283
+ :key="`tag-input-tag-${index}`"
284
+ :size="AntTagSize.xs3"
285
+ :state="state as unknown as TagState"
286
+ :dismiss="!readonly"
287
+ @close="removeTag(tag)"
288
+ >
289
+ {{ options.find((option: SelectOption) => option.value === tag)?.label }}
290
+ </AntTag>
291
+ </div>
292
+
293
+ <!-- Input -->
294
+ <div class="flex items-center w-32 shrink grow">
295
+ <AntIcon
296
+ :icon="icon"
297
+ :size="size === AntTagInputSize.sm ? IconSize.xs : IconSize.sm"
298
+ />
299
+
300
+ <input
301
+ ref="inputRef"
302
+ v-model="tagInput"
303
+ type="text"
304
+ :placeholder="placeholder"
305
+ :class="inputClasses"
306
+ :disabled="disabled"
307
+ :readonly="readonly"
308
+ @focus="changeFocus"
309
+ @input="filterDropDown"
310
+ @keydown.delete="removeLastTag"
311
+ @keydown.enter.prevent="checkCreateTag(tagInput)"
312
+ @blur="onBlur"
313
+ />
314
+ </div>
315
+ </div>
316
+
317
+ <AntDropDown
318
+ v-if="filteredOptions && !disabled && !readonly"
319
+ ref="dropDownRef"
320
+ v-model:focused="focusedDropDownItem"
321
+ v-model:open="dropDownOpen"
322
+ :model-value="null"
323
+ :auto-select-first-on-open="!allowCreate"
324
+ :options="filteredOptions"
325
+ :input-ref="inputRef"
326
+ :size="size as unknown as Size"
327
+ :state="state"
328
+ :focus-on-open="false"
329
+ @select-element="addTagFromOptions"
330
+ >
331
+ <template #empty>
332
+ <span v-if="allowCreate">
333
+ No tag found, create now
334
+ </span>
335
+ </template>
336
+ </AntDropDown>
337
+ </div>
338
+ </AntField>
339
+ </template>
@@ -0,0 +1,75 @@
1
+ <script lang="ts" setup>
2
+ import {onMounted} from 'vue';
3
+ import AntField from '../forms/AntField.vue';
4
+ import AntBaseInput from './Elements/AntBaseInput.vue';
5
+ import {Size} from '../../enums/Size.enum';
6
+ import {TextInputType} from './__types/AntTextInput.types';
7
+ import {handleEnumValidation} from '../../handler';
8
+ import {useVModel} from '@vueuse/core';
9
+ import {InputState} from '../../enums';
10
+ import {BaseInputType} from './Elements/__types';
11
+
12
+ defineOptions({inheritAttrs: false});
13
+
14
+ const emit = defineEmits(['update:modelValue', 'update:skeleton', 'validate']);
15
+ const props = withDefaults(defineProps<{
16
+ modelValue: string | null;
17
+ label?: string;
18
+ placeholder?: string;
19
+ description?: string;
20
+ size?: Size;
21
+ state?: InputState;
22
+ disabled?: boolean;
23
+ readonly?: boolean;
24
+ skeleton?: boolean;
25
+ type?: TextInputType;
26
+ limiter?: boolean;
27
+ max?: number;
28
+ messages?: string[];
29
+ }>(), {
30
+ state: InputState.base,
31
+ disabled: false,
32
+ readonly: false,
33
+ skeleton: false,
34
+ size: Size.md,
35
+ type: TextInputType.text,
36
+ limiter: false,
37
+ messages: () => []
38
+ });
39
+
40
+ const _value = useVModel(props, 'modelValue', emit);
41
+
42
+ onMounted(() => {
43
+ handleEnumValidation(props.size, Size, 'size');
44
+ handleEnumValidation(props.state, InputState, 'state');
45
+ handleEnumValidation(props.type, TextInputType, 'type');
46
+ });
47
+ </script>
48
+
49
+ <template>
50
+ <AntField
51
+ :label="label"
52
+ :size="size"
53
+ :skeleton="skeleton"
54
+ :description="description"
55
+ :state="state"
56
+ :limiter-max-value="limiter && max !== undefined ? max : undefined"
57
+ :limiter-value="limiter ? _value?.length : undefined"
58
+ :messages="messages"
59
+ >
60
+ <AntBaseInput
61
+ v-model="_value"
62
+ :type="type as unknown as BaseInputType"
63
+ wrapper-class="flex-grow"
64
+ :state="state"
65
+ :size="size"
66
+ :skeleton="skeleton"
67
+ :disabled="disabled"
68
+ :readonly="readonly"
69
+ :placeholder="placeholder !== undefined ? placeholder : label"
70
+ :show-icon="true"
71
+ v-bind="$attrs"
72
+ @validate="val => $emit('validate', val)"
73
+ />
74
+ </AntField>
75
+ </template>
@@ -0,0 +1,191 @@
1
+ <script lang="ts" setup>
2
+ import {computed, onMounted, watch} from 'vue';
3
+ import {Size} from '../../enums/Size.enum';
4
+ import AntSkeleton from '../AntSkeleton.vue';
5
+ import AntIcon from '../AntIcon.vue';
6
+ import {Grouped} from '../../enums/Grouped.enum';
7
+ import {
8
+ faExclamationTriangle,
9
+ faExclamationCircle,
10
+ faCircleCheck,
11
+ faCircleInfo
12
+ } from '@fortawesome/free-solid-svg-icons';
13
+ import {handleEnumValidation} from '../../handler';
14
+ import {classesToObjectSyntax} from '../../utils';
15
+ import AntField from '../forms/AntField.vue';
16
+ import {useVModel} from '@vueuse/core';
17
+ import {InputState} from '../../enums';
18
+ import {IconSize} from '../__types';
19
+
20
+ defineOptions({inheritAttrs: false});
21
+
22
+ const emit = defineEmits(['update:modelValue', 'validate', 'blur']);
23
+ const props = withDefaults(defineProps<{
24
+ modelValue: string | null;
25
+ size?: Size;
26
+ state?: InputState;
27
+ disabled?: boolean;
28
+ readonly?: boolean;
29
+ skeleton?: boolean;
30
+ grouped?: Grouped;
31
+ wrapperClass?: string | Record<string, boolean>;
32
+ showIcon?: boolean;
33
+ label?: string;
34
+ placeholder?: string;
35
+ description?: string;
36
+ limiter?: boolean;
37
+ max?: number;
38
+ messages?: string[];
39
+ }>(), {
40
+ state: InputState.base,
41
+ disabled: false,
42
+ readonly: false,
43
+ size: Size.md,
44
+ skeleton: false,
45
+ grouped: Grouped.none,
46
+ showIcon: true,
47
+ limiter: false,
48
+ messages: () => []
49
+ });
50
+ const _modelValue = useVModel(props, 'modelValue', emit);
51
+ const hasInputState = computed(() => props.skeleton || props.readonly || props.disabled);
52
+ const icons = {
53
+ [InputState.info]: faCircleInfo,
54
+ [InputState.warning]: faExclamationTriangle,
55
+ [InputState.danger]: faExclamationCircle,
56
+ [InputState.success]: faCircleCheck,
57
+ [InputState.base]: null,
58
+ };
59
+ /*TODO #59:: If the scrollbar is showing than the pr is moving and the gap between icon and text is bigger and the icon is stuck in the scrollbar*/
60
+ const inputClasses = computed(() => {
61
+ const variants: Record<InputState, string> = {
62
+ [InputState.base]: 'outline-neutral-300 focus:ring-primary-200 bg-white placeholder:text-neutral-500',
63
+ [InputState.danger]: 'outline-danger-500 focus:ring-danger-200 bg-danger-100 placeholder:text-danger-700',
64
+ [InputState.info]: 'outline-info-500 focus:ring-info-200 bg-info-100 placeholder:text-info-700',
65
+ [InputState.success]: 'outline-success-500 focus:ring-success-200 bg-success-100 placeholder:text-success-700',
66
+ [InputState.warning]: 'outline-warning-500 focus:ring-warning-200 bg-warning-100 placeholder:text-warning-700',
67
+ };
68
+
69
+ return {
70
+ 'block transition-colors relative border-none outline w-full focus:z-10': true,
71
+ 'outline-offset-[-1px] outline-1 focus:outline-offset-[-1px] focus:outline-1': true,
72
+ 'disabled:opacity-50 disabled:cursor-not-allowed': props.disabled,
73
+ [variants[props.state]]: true,
74
+ // Size
75
+ 'p-1 text-xs': props.size === Size.xs2,
76
+ 'p-1.5 text-xs': props.size === Size.xs,
77
+ 'p-1.5 text-sm': props.size === Size.sm,
78
+ 'p-2 text-sm': props.size === Size.md,
79
+ 'p-2.5 text-sm': props.size === Size.lg,
80
+ 'focus:ring-2': !hasInputState.value && (props.size === Size.sm || props.size === Size.xs || props.size === Size.xs2),
81
+ 'focus:ring-4': !hasInputState.value && (props.size === Size.lg || props.size === Size.md),
82
+ // Icon right
83
+ 'pr-6': props.size === Size.xs2 && props.showIcon && icon.value,
84
+ 'pr-7': props.size === Size.xs && props.showIcon && icon.value,
85
+ 'pr-8': props.size === Size.sm && props.showIcon && icon.value,
86
+ 'pr-9': props.size === Size.md && props.showIcon && icon.value,
87
+ 'pr-10': props.size === Size.lg && props.showIcon && icon.value,
88
+ // Grouped
89
+ 'rounded-tl-md rounded-bl-md rounded-tr-none rounded-br-none': props.grouped === Grouped.left,
90
+ 'rounded-none': props.grouped === Grouped.center,
91
+ 'rounded-tl-none rounded-bl-none rounded-tr-md rounded-br-md': props.grouped === Grouped.right,
92
+ 'rounded-md': props.grouped === Grouped.none,
93
+ 'invisible': props.skeleton
94
+ };
95
+ });
96
+ const iconColor = computed(() => {
97
+ const variants = {
98
+ 'base': undefined,
99
+ 'danger': 'text-danger-500',
100
+ 'info': 'text-info-500',
101
+ 'primary': 'text-primary-500',
102
+ 'secondary': 'text-secondary-500',
103
+ 'success': 'text-success-500',
104
+ 'warning': 'text-warning-500',
105
+ };
106
+
107
+ return variants[props.state];
108
+ });
109
+ const _wrapperClass = computed(() => classesToObjectSyntax(props.wrapperClass));
110
+ const icon = computed(() => icons[props.state]);
111
+ const getIconSize = computed(() => {
112
+ if (props.size === Size.xs || props.size === Size.xs2) {
113
+ return IconSize.xs;
114
+ } else {
115
+ return IconSize.sm;
116
+ }
117
+ });
118
+
119
+ onMounted(() => {
120
+ handleEnumValidation(props.size, Size, 'size');
121
+ handleEnumValidation(props.grouped, Grouped, 'grouped');
122
+ handleEnumValidation(props.state, InputState, 'state');
123
+
124
+ if (!props.skeleton && props.modelValue !== null) {
125
+ emit('validate', props.modelValue);
126
+ }
127
+ });
128
+
129
+ watch(_modelValue, (val) => {
130
+ if ([InputState.danger, InputState.warning, InputState.info].includes(props.state)) {
131
+ emit('validate', val);
132
+ }
133
+ }, {deep: true});
134
+ watch(() => props.skeleton, (val) => {
135
+ if (!val && props.modelValue !== null) {
136
+ emit('validate', props.modelValue);
137
+ }
138
+ });
139
+
140
+ function onBlur(e: FocusEvent) {
141
+ emit('validate', props.modelValue);
142
+ emit('blur', e);
143
+ }
144
+ </script>
145
+
146
+ <template>
147
+ <AntField
148
+ :label="label"
149
+ :size="size"
150
+ :skeleton="skeleton"
151
+ :description="description"
152
+ :state="state"
153
+ :limiter-max-value="limiter && max !== undefined ? max : undefined"
154
+ :limiter-value="limiter ? _modelValue?.length : undefined"
155
+ :messages="messages"
156
+ >
157
+ <div
158
+ class="block relative w-full"
159
+ :class="{...{'-mr-px': grouped !== Grouped.none}, ..._wrapperClass}"
160
+ >
161
+ <textarea
162
+ v-model="_modelValue"
163
+ :class="inputClasses"
164
+ :placeholder="placeholder !== undefined ? placeholder : label"
165
+ :disabled="disabled || skeleton"
166
+ :readonly="readonly"
167
+ v-bind="$attrs"
168
+ @blur="onBlur"
169
+ />
170
+
171
+ <div
172
+ v-if="showIcon && icon"
173
+ class="absolute flex h-[95%] right-0 top-0 transition-all z-20"
174
+ :class="{'p-1': size === Size.xs2, 'p-1.5': size === Size.sm || size === Size.xs, 'p-2': size === Size.md, 'p-2.5': size === Size.lg}"
175
+ >
176
+ <AntIcon
177
+ :icon="icon"
178
+ :size="getIconSize"
179
+ :color="iconColor"
180
+ />
181
+ </div>
182
+
183
+ <AntSkeleton
184
+ v-if="skeleton"
185
+ absolute
186
+ :grouped="grouped"
187
+ rounded
188
+ />
189
+ </div>
190
+ </AntField>
191
+ </template>
@@ -0,0 +1,96 @@
1
+ <script lang="ts" setup>
2
+ import {onMounted} from 'vue';
3
+ import AntButton from '../buttons/AntButton.vue';
4
+ import AntField from '../forms/AntField.vue';
5
+ import AntBaseInput from './Elements/AntBaseInput.vue';
6
+ import {Size} from '../../enums/Size.enum';
7
+ import {type IconDefinition} from '@fortawesome/free-solid-svg-icons';
8
+ import {useVModel} from '@vueuse/core';
9
+ import {State, InputState} from '../../enums';
10
+ import {Grouped} from '../../enums/Grouped.enum';
11
+ import {BaseInputType} from './Elements/__types';
12
+ import {handleEnumValidation} from '../../handler';
13
+
14
+ defineOptions({inheritAttrs: false});
15
+
16
+ const props = withDefaults(defineProps<{
17
+ modelValue: number | null;
18
+ unit: string | IconDefinition;
19
+ label?: string;
20
+ placeholder?: string;
21
+ description?: string;
22
+ limiter?: boolean;
23
+ min?: number;
24
+ max?: number;
25
+ size?: Size;
26
+ state?: InputState;
27
+ disabled?: boolean;
28
+ readonly?: boolean;
29
+ skeleton?: boolean;
30
+ wrapperClass?: string | Record<string, boolean>;
31
+ messages?: string[];
32
+ }>(), {
33
+ state: InputState.base,
34
+ disabled: false,
35
+ readonly: false,
36
+ skeleton: false,
37
+ size: Size.md,
38
+ limiter: false,
39
+ messages: () => []
40
+ });
41
+ const emit = defineEmits(['update:modelValue', 'validate']);
42
+ const _modelValue = useVModel(props, 'modelValue', emit);
43
+
44
+ onMounted(() => {
45
+ handleEnumValidation(props.state, InputState, 'state');
46
+ handleEnumValidation(props.size, Size, 'size');
47
+ });
48
+ </script>
49
+
50
+ <template>
51
+ <AntField
52
+ :label="label"
53
+ :size="size"
54
+ :skeleton="skeleton"
55
+ :description="description"
56
+ :state="state"
57
+ :limiter-max-value="limiter && max !== undefined ? max : undefined"
58
+ :limiter-value="limiter && _modelValue !== undefined && _modelValue !== null ? _modelValue : undefined"
59
+ :messages="messages"
60
+ >
61
+ <div
62
+ class="flex relative"
63
+ >
64
+ <AntBaseInput
65
+ v-model="_modelValue"
66
+ :type="BaseInputType.number"
67
+ :grouped="Grouped.left"
68
+ wrapper-class="flex-grow"
69
+ :state="state"
70
+ :size="size"
71
+ :min="min"
72
+ :max="max"
73
+ :skeleton="skeleton"
74
+ :disabled="disabled"
75
+ :readonly="readonly"
76
+ :placeholder="placeholder || label"
77
+ :show-icon="false"
78
+ v-bind="$attrs"
79
+ @validate="val => $emit('validate', val)"
80
+ />
81
+
82
+ <AntButton
83
+ :icon-left="typeof unit === 'object' ? unit : undefined"
84
+ :grouped="Grouped.right"
85
+ :state="state as unknown as State"
86
+ :size="size"
87
+ :skeleton="skeleton"
88
+ :readonly="true"
89
+ >
90
+ <span v-if="typeof unit === 'string'">
91
+ {{ unit }}
92
+ </span>
93
+ </AntButton>
94
+ </div>
95
+ </AntField>
96
+ </template>