vlite3 0.1.0 → 0.1.2

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 (465) hide show
  1. package/_virtual/_plugin-vue_export-helper.js +9 -0
  2. package/components/Accordion/Accordion.vue.d.ts +44 -0
  3. package/components/Accordion/Accordion.vue.js +95 -0
  4. package/components/Accordion/Accordion.vue2.js +4 -0
  5. package/components/Accordion/AccordionContent.vue.d.ts +22 -0
  6. package/components/Accordion/AccordionContent.vue.js +7 -0
  7. package/components/Accordion/AccordionContent.vue2.js +47 -0
  8. package/components/Accordion/AccordionItem.vue.d.ts +56 -0
  9. package/components/Accordion/AccordionItem.vue.js +115 -0
  10. package/components/Accordion/AccordionItem.vue2.js +4 -0
  11. package/components/Accordion/AccordionTrigger.vue.d.ts +43 -0
  12. package/components/Accordion/AccordionTrigger.vue.js +94 -0
  13. package/components/Accordion/AccordionTrigger.vue2.js +4 -0
  14. package/components/Accordion/index.d.ts +5 -0
  15. package/components/Accordion/types.d.ts +33 -0
  16. package/components/Alert.vue.d.ts +36 -0
  17. package/components/Alert.vue.js +84 -0
  18. package/components/Alert.vue2.js +4 -0
  19. package/components/Avatar.vue.d.ts +32 -0
  20. package/components/Avatar.vue.js +78 -0
  21. package/components/Avatar.vue2.js +4 -0
  22. package/components/AvatarUploader/AvatarUploader.vue.d.ts +32 -0
  23. package/components/AvatarUploader/AvatarUploader.vue.js +99 -0
  24. package/components/AvatarUploader/AvatarUploader.vue2.js +4 -0
  25. package/{src/components/AvatarUploader/index.ts → components/AvatarUploader/index.d.ts} +2 -2
  26. package/components/Badge.vue.d.ts +25 -0
  27. package/components/Badge.vue.js +27 -0
  28. package/components/Badge.vue2.js +4 -0
  29. package/components/Button.vue.d.ts +26 -0
  30. package/components/Button.vue.js +107 -0
  31. package/components/Button.vue2.js +4 -0
  32. package/components/ButtonGroup.vue.d.ts +29 -0
  33. package/components/ButtonGroup.vue.js +7 -0
  34. package/components/ButtonGroup.vue2.js +30 -0
  35. package/components/Carousel/Carousel.vue.d.ts +847 -0
  36. package/components/Carousel/Carousel.vue.js +7 -0
  37. package/components/Carousel/Carousel.vue2.js +68 -0
  38. package/components/Carousel/index.d.ts +2 -0
  39. package/components/Carousel/types.d.ts +24 -0
  40. package/components/CheckBox.vue.d.ts +27 -0
  41. package/components/CheckBox.vue.js +115 -0
  42. package/components/CheckBox.vue2.js +4 -0
  43. package/components/Chip/Chip.vue.d.ts +33 -0
  44. package/components/Chip/Chip.vue.js +113 -0
  45. package/components/Chip/Chip.vue2.js +4 -0
  46. package/components/Chip/index.d.ts +2 -0
  47. package/components/Chip/types.d.ts +12 -0
  48. package/components/ChoiceBox/ChoiceBox.vue.d.ts +32 -0
  49. package/components/ChoiceBox/ChoiceBox.vue.js +141 -0
  50. package/components/ChoiceBox/ChoiceBox.vue2.js +4 -0
  51. package/components/ChoiceBox/index.d.ts +2 -0
  52. package/components/ColorPicker/ColorIro.vue.d.ts +18 -0
  53. package/components/ColorPicker/ColorIro.vue.js +142 -0
  54. package/components/ColorPicker/ColorIro.vue3.js +5 -0
  55. package/components/ColorPicker/ColorPicker.vue.d.ts +22 -0
  56. package/components/ColorPicker/ColorPicker.vue.js +56 -0
  57. package/components/ColorPicker/ColorPicker.vue2.js +4 -0
  58. package/components/ConfirmationModal.vue.d.ts +39 -0
  59. package/components/ConfirmationModal.vue.js +55 -0
  60. package/components/ConfirmationModal.vue2.js +4 -0
  61. package/components/DataTable/DataTable.vue.d.ts +60 -0
  62. package/components/DataTable/DataTable.vue.js +7 -0
  63. package/components/DataTable/DataTable.vue2.js +310 -0
  64. package/components/DataTable/DataTableHeader.vue.d.ts +14 -0
  65. package/components/DataTable/DataTableHeader.vue.js +49 -0
  66. package/components/DataTable/DataTableHeader.vue2.js +4 -0
  67. package/components/DataTable/DataTableRow.vue.d.ts +51 -0
  68. package/components/DataTable/DataTableRow.vue.js +114 -0
  69. package/components/DataTable/DataTableRow.vue2.js +4 -0
  70. package/components/DataTable/DataTableToolbar.vue.d.ts +31 -0
  71. package/components/DataTable/DataTableToolbar.vue.js +45 -0
  72. package/components/DataTable/DataTableToolbar.vue2.js +4 -0
  73. package/components/DataTable/index.d.ts +4 -0
  74. package/components/DataTable/types.d.ts +75 -0
  75. package/components/DatePicker.vue.d.ts +44 -0
  76. package/components/DatePicker.vue.js +84 -0
  77. package/components/DatePicker.vue2.js +4 -0
  78. package/components/Dropdown/Dropdown.vue.d.ts +105 -0
  79. package/components/Dropdown/Dropdown.vue.js +206 -0
  80. package/components/Dropdown/Dropdown.vue2.js +4 -0
  81. package/components/Dropdown/DropdownBooleanItem.vue.d.ts +12 -0
  82. package/components/Dropdown/DropdownBooleanItem.vue.js +41 -0
  83. package/components/Dropdown/DropdownBooleanItem.vue2.js +4 -0
  84. package/components/Dropdown/DropdownGroupedLayout.vue.d.ts +21 -0
  85. package/components/Dropdown/DropdownGroupedLayout.vue.js +73 -0
  86. package/components/Dropdown/DropdownGroupedLayout.vue2.js +4 -0
  87. package/components/Dropdown/DropdownItem.vue.d.ts +35 -0
  88. package/components/Dropdown/DropdownItem.vue.js +56 -0
  89. package/components/Dropdown/DropdownItem.vue2.js +4 -0
  90. package/components/Dropdown/DropdownMenu.vue.d.ts +73 -0
  91. package/components/Dropdown/DropdownMenu.vue.js +232 -0
  92. package/components/Dropdown/DropdownMenu.vue2.js +4 -0
  93. package/components/Dropdown/DropdownTrigger.vue.d.ts +15 -0
  94. package/components/Dropdown/DropdownTrigger.vue.js +26 -0
  95. package/components/Dropdown/DropdownTrigger.vue2.js +4 -0
  96. package/components/Dropdown/composables/useDropdownIds.d.ts +5 -0
  97. package/components/Dropdown/composables/useDropdownIds.js +20 -0
  98. package/components/Dropdown/composables/useDropdownNavigation.d.ts +19 -0
  99. package/components/Dropdown/composables/useDropdownNavigation.js +49 -0
  100. package/components/Dropdown/composables/useDropdownSelection.d.ts +16 -0
  101. package/components/Dropdown/composables/useDropdownSelection.js +41 -0
  102. package/components/Dropdown/index.d.ts +6 -0
  103. package/components/FilePicker/FilePicker.vue.d.ts +65 -0
  104. package/components/FilePicker/FilePicker.vue.js +285 -0
  105. package/components/FilePicker/FilePicker.vue2.js +4 -0
  106. package/components/FilePicker/index.d.ts +2 -0
  107. package/components/FileTree/FileTree.vue.d.ts +20 -0
  108. package/components/FileTree/FileTree.vue.js +139 -0
  109. package/components/FileTree/FileTree.vue2.js +4 -0
  110. package/components/FileTree/FileTreeNode.vue.d.ts +28 -0
  111. package/components/FileTree/FileTreeNode.vue.js +184 -0
  112. package/components/FileTree/FileTreeNode.vue2.js +4 -0
  113. package/components/FileTree/index.d.ts +4 -0
  114. package/components/FileTree/types.d.ts +36 -0
  115. package/components/FileTree/useTreeSelection.d.ts +12 -0
  116. package/components/FileTree/useTreeSelection.js +25 -0
  117. package/components/Form/CustomFields.vue.d.ts +38 -0
  118. package/components/Form/CustomFields.vue.js +7 -0
  119. package/components/Form/CustomFields.vue2.js +161 -0
  120. package/components/Form/Form.vue.d.ts +94 -0
  121. package/components/Form/Form.vue.js +7 -0
  122. package/components/Form/Form.vue2.js +238 -0
  123. package/components/Form/FormField.vue.d.ts +28 -0
  124. package/components/Form/FormField.vue.js +207 -0
  125. package/components/Form/FormField.vue2.js +4 -0
  126. package/components/Form/FormFields.vue.d.ts +29 -0
  127. package/components/Form/FormFields.vue.js +7 -0
  128. package/components/Form/FormFields.vue2.js +95 -0
  129. package/components/Form/composables/useFileUpload.d.ts +24 -0
  130. package/components/Form/composables/useFileUpload.js +40 -0
  131. package/components/Form/composables/useForm.d.ts +48 -0
  132. package/components/Form/composables/useForm.js +109 -0
  133. package/components/Form/index.d.ts +9 -0
  134. package/components/Form/types.d.ts +167 -0
  135. package/components/Form/utils/form.utils.d.ts +44 -0
  136. package/components/Form/utils/form.utils.js +97 -0
  137. package/components/Heatmap/Heatmap.vue.d.ts +26 -0
  138. package/components/Heatmap/Heatmap.vue.js +7 -0
  139. package/components/Heatmap/Heatmap.vue2.js +326 -0
  140. package/components/Heatmap/index.d.ts +2 -0
  141. package/components/Heatmap/types.d.ts +66 -0
  142. package/components/Icon.vue.d.ts +7 -0
  143. package/components/Icon.vue.js +25 -0
  144. package/components/Icon.vue2.js +4 -0
  145. package/components/IconPicker.vue.d.ts +38 -0
  146. package/components/IconPicker.vue.js +124 -0
  147. package/components/IconPicker.vue2.js +4 -0
  148. package/components/Input.vue.d.ts +54 -0
  149. package/components/Input.vue.js +267 -0
  150. package/components/Input.vue2.js +4 -0
  151. package/components/Label.vue.d.ts +23 -0
  152. package/components/Label.vue.js +23 -0
  153. package/components/Label.vue2.js +4 -0
  154. package/components/Logo.vue.d.ts +2 -0
  155. package/components/Logo.vue.js +10 -0
  156. package/components/Logo.vue2.js +4 -0
  157. package/components/Masonry/Masonry.vue.d.ts +31 -0
  158. package/components/Masonry/Masonry.vue.js +7 -0
  159. package/components/Masonry/Masonry.vue2.js +83 -0
  160. package/components/Masonry/index.d.ts +2 -0
  161. package/components/Masonry/types.d.ts +33 -0
  162. package/components/Masonry/types.js +10 -0
  163. package/components/Modal.vue.d.ts +52 -0
  164. package/components/Modal.vue.js +116 -0
  165. package/components/Modal.vue2.js +4 -0
  166. package/components/MultiSelect/MultiSelect.vue.d.ts +40 -0
  167. package/components/MultiSelect/MultiSelect.vue.js +126 -0
  168. package/components/MultiSelect/MultiSelect.vue2.js +4 -0
  169. package/components/MultiSelect/index.d.ts +1 -0
  170. package/components/Navbar/Navbar.vue.d.ts +51 -0
  171. package/components/Navbar/Navbar.vue.js +198 -0
  172. package/components/Navbar/Navbar.vue2.js +4 -0
  173. package/components/Navbar/NavbarGroup.vue.d.ts +24 -0
  174. package/components/Navbar/NavbarGroup.vue.js +23 -0
  175. package/components/Navbar/NavbarGroup.vue2.js +4 -0
  176. package/components/Navbar/NavbarItem.vue.d.ts +40 -0
  177. package/components/Navbar/NavbarItem.vue.js +104 -0
  178. package/components/Navbar/NavbarItem.vue2.js +4 -0
  179. package/components/Navbar/index.d.ts +3 -0
  180. package/components/OTPInput/OTPInput.vue.d.ts +33 -0
  181. package/components/OTPInput/OTPInput.vue.js +115 -0
  182. package/components/OTPInput/OTPInput.vue2.js +4 -0
  183. package/components/OTPInput/index.d.ts +1 -0
  184. package/components/Pagination/Pagination.vue.d.ts +34 -0
  185. package/components/Pagination/Pagination.vue.js +196 -0
  186. package/components/Pagination/Pagination.vue2.js +4 -0
  187. package/components/Pagination/index.d.ts +1 -0
  188. package/components/PricingPlan/PricingPlan.vue.d.ts +22 -0
  189. package/components/PricingPlan/PricingPlan.vue.js +55 -0
  190. package/components/PricingPlan/PricingPlan.vue2.js +4 -0
  191. package/components/PricingPlan/PricingPlanItem.vue.d.ts +17 -0
  192. package/components/PricingPlan/PricingPlanItem.vue.js +94 -0
  193. package/components/PricingPlan/PricingPlanItem.vue2.js +4 -0
  194. package/components/PricingPlan/index.d.ts +3 -0
  195. package/components/PricingPlan/types.d.ts +25 -0
  196. package/components/SidePanel.vue.d.ts +64 -0
  197. package/components/SidePanel.vue.js +7 -0
  198. package/components/SidePanel.vue2.js +131 -0
  199. package/components/SidebarMenu/SidebarMenu.vue.d.ts +11 -0
  200. package/components/SidebarMenu/SidebarMenu.vue.js +78 -0
  201. package/components/SidebarMenu/SidebarMenu.vue2.js +4 -0
  202. package/components/SidebarMenu/SidebarMenuItem.vue.d.ts +9 -0
  203. package/components/SidebarMenu/SidebarMenuItem.vue.js +269 -0
  204. package/components/SidebarMenu/SidebarMenuItem.vue3.js +5 -0
  205. package/components/SidebarMenu/index.d.ts +3 -0
  206. package/components/SidebarMenu/types.d.ts +35 -0
  207. package/components/Slider.vue.d.ts +31 -0
  208. package/components/Slider.vue.js +157 -0
  209. package/components/Slider.vue2.js +4 -0
  210. package/components/Switch.vue.d.ts +16 -0
  211. package/components/Switch.vue.js +40 -0
  212. package/components/Switch.vue2.js +4 -0
  213. package/components/Tabes/Tabes.vue.d.ts +21 -0
  214. package/components/Tabes/Tabes.vue.js +75 -0
  215. package/components/Tabes/Tabes.vue2.js +4 -0
  216. package/components/Tabes/index.d.ts +2 -0
  217. package/components/Tabes/types.d.ts +8 -0
  218. package/components/Textarea.vue.d.ts +22 -0
  219. package/components/Textarea.vue.js +34 -0
  220. package/components/Textarea.vue2.js +4 -0
  221. package/components/ThemeToggle.vue.d.ts +2 -0
  222. package/components/ThemeToggle.vue.js +18 -0
  223. package/components/ThemeToggle.vue2.js +4 -0
  224. package/components/Timeline.vue.d.ts +39 -0
  225. package/components/Timeline.vue.js +174 -0
  226. package/components/Timeline.vue2.js +4 -0
  227. package/components/ToastNotification.vue.d.ts +7 -0
  228. package/components/ToastNotification.vue.js +7 -0
  229. package/components/ToastNotification.vue2.js +151 -0
  230. package/components/Tooltip.vue.d.ts +31 -0
  231. package/components/Tooltip.vue.js +45 -0
  232. package/components/Tooltip.vue2.js +4 -0
  233. package/components/Workbook/Sheet.vue.d.ts +38 -0
  234. package/components/Workbook/Sheet.vue.js +141 -0
  235. package/components/Workbook/Sheet.vue2.js +4 -0
  236. package/components/Workbook/Workbook.vue.d.ts +54 -0
  237. package/components/Workbook/Workbook.vue.js +7 -0
  238. package/components/Workbook/Workbook.vue2.js +146 -0
  239. package/components/Workbook/WorkbookAddButton.vue.d.ts +6 -0
  240. package/components/Workbook/WorkbookAddButton.vue.js +20 -0
  241. package/components/Workbook/WorkbookAddButton.vue2.js +4 -0
  242. package/components/Workbook/index.d.ts +3 -0
  243. package/components/Workbook/types.d.ts +34 -0
  244. package/composables/useKeyStroke.d.ts +21 -0
  245. package/composables/useKeyStroke.js +93 -0
  246. package/composables/useNotifications.d.ts +113 -0
  247. package/composables/useNotifications.js +99 -0
  248. package/composables/useTheme.d.ts +6 -0
  249. package/composables/useTheme.js +32 -0
  250. package/core/config.d.ts +29 -0
  251. package/core/config.js +12 -0
  252. package/core/index.d.ts +31 -0
  253. package/core/index.js +15 -0
  254. package/directives/vRipple.d.ts +4 -0
  255. package/directives/vRipple.js +17 -0
  256. package/index.d.ts +49 -0
  257. package/index.js +156 -0
  258. package/package.json +2 -2
  259. package/style.css +590 -0
  260. package/types/alert.type.d.ts +10 -0
  261. package/{src/types/avatar.type.ts → types/avatar.type.d.ts} +8 -9
  262. package/types/button.d.ts +15 -0
  263. package/types/buttongroup.type.d.ts +1 -0
  264. package/{src/types/config.type.ts → types/config.type.d.ts} +13 -16
  265. package/types/form.type.d.ts +45 -0
  266. package/types/index.d.ts +10 -0
  267. package/types/navbar.type.d.ts +27 -0
  268. package/types/sidepanel.type.d.ts +13 -0
  269. package/types/styles.d.ts +28 -0
  270. package/types/timeline.type.d.ts +9 -0
  271. package/{src/utils/functions.ts → utils/functions.d.ts} +1 -9
  272. package/utils/functions.js +11 -0
  273. package/utils/index.d.ts +2 -0
  274. package/utils/object.d.ts +6 -0
  275. package/utils/object.js +14 -0
  276. package/.vscode/extensions.json +0 -3
  277. package/LICENSE +0 -21
  278. package/index.html +0 -16
  279. package/scripts/bundle-css.js +0 -45
  280. package/src/App.vue +0 -7
  281. package/src/components/Accordion/Accordion.vue +0 -139
  282. package/src/components/Accordion/AccordionContent.vue +0 -63
  283. package/src/components/Accordion/AccordionItem.vue +0 -163
  284. package/src/components/Accordion/AccordionTrigger.vue +0 -125
  285. package/src/components/Accordion/index.ts +0 -5
  286. package/src/components/Accordion/types.ts +0 -41
  287. package/src/components/Alert.vue +0 -112
  288. package/src/components/Avatar.vue +0 -110
  289. package/src/components/AvatarUploader/AvatarUploader.vue +0 -129
  290. package/src/components/Badge.vue +0 -45
  291. package/src/components/Button.vue +0 -122
  292. package/src/components/ButtonGroup.vue +0 -173
  293. package/src/components/Carousel/Carousel.vue +0 -84
  294. package/src/components/Carousel/index.ts +0 -2
  295. package/src/components/Carousel/types.ts +0 -25
  296. package/src/components/CheckBox.vue +0 -132
  297. package/src/components/Chip/Chip.vue +0 -158
  298. package/src/components/Chip/index.ts +0 -2
  299. package/src/components/Chip/types.ts +0 -23
  300. package/src/components/ChoiceBox/ChoiceBox.vue +0 -181
  301. package/src/components/ChoiceBox/index.ts +0 -2
  302. package/src/components/ColorPicker/ColorIro.vue +0 -207
  303. package/src/components/ColorPicker/ColorPicker.vue +0 -61
  304. package/src/components/ConfirmationModal.vue +0 -46
  305. package/src/components/DataTable/DataTable.vue +0 -478
  306. package/src/components/DataTable/DataTableHeader.vue +0 -78
  307. package/src/components/DataTable/DataTableRow.vue +0 -171
  308. package/src/components/DataTable/DataTableToolbar.vue +0 -45
  309. package/src/components/DataTable/index.ts +0 -5
  310. package/src/components/DataTable/types.ts +0 -85
  311. package/src/components/DatePicker.vue +0 -102
  312. package/src/components/Dropdown/Dropdown.vue +0 -348
  313. package/src/components/Dropdown/DropdownBooleanItem.vue +0 -40
  314. package/src/components/Dropdown/DropdownGroupedLayout.vue +0 -115
  315. package/src/components/Dropdown/DropdownItem.vue +0 -56
  316. package/src/components/Dropdown/DropdownMenu.vue +0 -374
  317. package/src/components/Dropdown/DropdownTrigger.vue +0 -27
  318. package/src/components/Dropdown/composables/useDropdownIds.ts +0 -27
  319. package/src/components/Dropdown/composables/useDropdownNavigation.ts +0 -109
  320. package/src/components/Dropdown/composables/useDropdownSelection.ts +0 -106
  321. package/src/components/Dropdown/index.ts +0 -6
  322. package/src/components/FilePicker/FilePicker.vue +0 -459
  323. package/src/components/FilePicker/index.ts +0 -2
  324. package/src/components/FileTree/FileTree.vue +0 -334
  325. package/src/components/FileTree/FileTreeNode.vue +0 -225
  326. package/src/components/FileTree/index.ts +0 -2
  327. package/src/components/FileTree/types.ts +0 -31
  328. package/src/components/FileTree/useTreeSelection.ts +0 -66
  329. package/src/components/Form/CustomFields.vue +0 -294
  330. package/src/components/Form/Form.vue +0 -406
  331. package/src/components/Form/FormField.vue +0 -404
  332. package/src/components/Form/FormFields.vue +0 -161
  333. package/src/components/Form/composables/useFileUpload.ts +0 -112
  334. package/src/components/Form/composables/useForm.ts +0 -356
  335. package/src/components/Form/index.ts +0 -16
  336. package/src/components/Form/types.ts +0 -203
  337. package/src/components/Form/utils/form.utils.ts +0 -209
  338. package/src/components/Heatmap/Heatmap.vue +0 -629
  339. package/src/components/Heatmap/index.ts +0 -2
  340. package/src/components/Heatmap/types.ts +0 -84
  341. package/src/components/Icon.vue +0 -47
  342. package/src/components/IconPicker.vue +0 -138
  343. package/src/components/Input.vue +0 -366
  344. package/src/components/Label.vue +0 -25
  345. package/src/components/Logo.vue +0 -5
  346. package/src/components/Masonry/Masonry.vue +0 -148
  347. package/src/components/Masonry/index.ts +0 -2
  348. package/src/components/Masonry/types.ts +0 -44
  349. package/src/components/Modal.vue +0 -135
  350. package/src/components/MultiSelect/MultiSelect.vue +0 -176
  351. package/src/components/MultiSelect/index.ts +0 -1
  352. package/src/components/Navbar/Navbar.vue +0 -277
  353. package/src/components/Navbar/NavbarGroup.vue +0 -27
  354. package/src/components/Navbar/NavbarItem.vue +0 -124
  355. package/src/components/Navbar/index.ts +0 -3
  356. package/src/components/OTPInput/OTPInput.vue +0 -220
  357. package/src/components/OTPInput/index.ts +0 -1
  358. package/src/components/Pagination/Pagination.vue +0 -238
  359. package/src/components/Pagination/index.ts +0 -1
  360. package/src/components/PricingPlan/PricingPlan.vue +0 -102
  361. package/src/components/PricingPlan/PricingPlanItem.vue +0 -148
  362. package/src/components/PricingPlan/index.ts +0 -3
  363. package/src/components/PricingPlan/types.ts +0 -29
  364. package/src/components/SidePanel.vue +0 -184
  365. package/src/components/SidebarMenu/SidebarMenu.vue +0 -146
  366. package/src/components/SidebarMenu/SidebarMenuItem.vue +0 -333
  367. package/src/components/SidebarMenu/index.ts +0 -3
  368. package/src/components/SidebarMenu/types.ts +0 -54
  369. package/src/components/Slider.vue +0 -181
  370. package/src/components/Switch.vue +0 -51
  371. package/src/components/Tabes/Tabes.vue +0 -112
  372. package/src/components/Tabes/index.ts +0 -2
  373. package/src/components/Tabes/types.ts +0 -17
  374. package/src/components/Textarea.vue +0 -48
  375. package/src/components/ThemeToggle.vue +0 -14
  376. package/src/components/Timeline.vue +0 -250
  377. package/src/components/ToastNotification.vue +0 -257
  378. package/src/components/Tooltip.vue +0 -25
  379. package/src/components/Workbook/Sheet.vue +0 -185
  380. package/src/components/Workbook/Workbook.vue +0 -231
  381. package/src/components/Workbook/WorkbookAddButton.vue +0 -17
  382. package/src/components/Workbook/index.ts +0 -3
  383. package/src/components/Workbook/types.ts +0 -43
  384. package/src/composables/useKeyStroke.ts +0 -291
  385. package/src/composables/useNotifications.ts +0 -206
  386. package/src/composables/useTheme.ts +0 -55
  387. package/src/core/config.ts +0 -37
  388. package/src/core/index.ts +0 -49
  389. package/src/css/base.css +0 -148
  390. package/src/css/input.css +0 -61
  391. package/src/css/main.css +0 -6
  392. package/src/css/theme.css +0 -344
  393. package/src/directives/vRipple.ts +0 -38
  394. package/src/index.ts +0 -53
  395. package/src/main.ts +0 -5
  396. package/src/playground/Playground.vue +0 -429
  397. package/src/playground/composables/useGetUsers.ts +0 -538
  398. package/src/playground/demos/AccordionDemo.vue +0 -361
  399. package/src/playground/demos/AlertDemo.vue +0 -36
  400. package/src/playground/demos/AvatarDemo.vue +0 -41
  401. package/src/playground/demos/AvatarUploaderDemo.vue +0 -133
  402. package/src/playground/demos/BadgeDemo.vue +0 -31
  403. package/src/playground/demos/BadgesDemo.vue +0 -26
  404. package/src/playground/demos/ButtonDemo.vue +0 -99
  405. package/src/playground/demos/ButtonGroupDemo.vue +0 -39
  406. package/src/playground/demos/ButtonsDemo.vue +0 -111
  407. package/src/playground/demos/CarouselDemo.vue +0 -135
  408. package/src/playground/demos/CheckBoxDemo.vue +0 -43
  409. package/src/playground/demos/ChipDemo.vue +0 -190
  410. package/src/playground/demos/ChoiceBoxDemo.vue +0 -160
  411. package/src/playground/demos/ColorPickerDemo.vue +0 -30
  412. package/src/playground/demos/ColorsDemo.vue +0 -295
  413. package/src/playground/demos/DataTableDemo.vue +0 -215
  414. package/src/playground/demos/DatePickerDemo.vue +0 -43
  415. package/src/playground/demos/DisplayDemo.vue +0 -101
  416. package/src/playground/demos/DropdownDemo.vue +0 -651
  417. package/src/playground/demos/FilePickerDemo.vue +0 -175
  418. package/src/playground/demos/FileTreeDemo.vue +0 -150
  419. package/src/playground/demos/FormDemo.vue +0 -1144
  420. package/src/playground/demos/HeatmapDemo.vue +0 -467
  421. package/src/playground/demos/IconPickerDemo.vue +0 -27
  422. package/src/playground/demos/InputDemo.vue +0 -80
  423. package/src/playground/demos/InputsDemo.vue +0 -127
  424. package/src/playground/demos/LabelDemo.vue +0 -32
  425. package/src/playground/demos/MasonryDemo.vue +0 -241
  426. package/src/playground/demos/ModalDemo.vue +0 -67
  427. package/src/playground/demos/MultiSelectDemo.vue +0 -300
  428. package/src/playground/demos/NavbarDemo.vue +0 -59
  429. package/src/playground/demos/NavigationDemo.vue +0 -116
  430. package/src/playground/demos/OTPInputDemo.vue +0 -170
  431. package/src/playground/demos/OverlaysDemo.vue +0 -104
  432. package/src/playground/demos/PaginationDemo.vue +0 -130
  433. package/src/playground/demos/PricingPlanDemo.vue +0 -110
  434. package/src/playground/demos/SidePanelDemo.vue +0 -45
  435. package/src/playground/demos/SidebarMenuDemo.vue +0 -170
  436. package/src/playground/demos/SliderDemo.vue +0 -48
  437. package/src/playground/demos/SwitchDemo.vue +0 -40
  438. package/src/playground/demos/TabesDemo.vue +0 -178
  439. package/src/playground/demos/TextareaDemo.vue +0 -31
  440. package/src/playground/demos/ThemeToggleDemo.vue +0 -20
  441. package/src/playground/demos/TimelineDemo.vue +0 -43
  442. package/src/playground/demos/ToastDemo.vue +0 -111
  443. package/src/playground/demos/TooltipDemo.vue +0 -30
  444. package/src/playground/demos/WorkbookDemo.vue +0 -227
  445. package/src/types/alert.type.ts +0 -11
  446. package/src/types/button.ts +0 -36
  447. package/src/types/buttongroup.type.ts +0 -1
  448. package/src/types/form.type.ts +0 -75
  449. package/src/types/index.ts +0 -11
  450. package/src/types/navbar.type.ts +0 -28
  451. package/src/types/sidepanel.type.ts +0 -14
  452. package/src/types/styles.ts +0 -42
  453. package/src/types/timeline.type.ts +0 -11
  454. package/src/utils/index.ts +0 -2
  455. package/src/utils/object.ts +0 -40
  456. package/tsconfig.app.json +0 -27
  457. package/tsconfig.json +0 -48
  458. package/tsconfig.node.json +0 -18
  459. package/tsconfig.node.tsbuildinfo +0 -1
  460. package/tsconfig.tsbuildinfo +0 -1
  461. package/vercel.json +0 -8
  462. package/vite.config.d.ts +0 -2
  463. package/vite.config.js +0 -63
  464. package/vite.config.ts +0 -64
  465. package/vite.config.vercel.ts +0 -17
@@ -1,294 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, ref, watch } from 'vue'
3
- import type { IForm, IFormFieldChangePayload } from './types'
4
- import type { InputVariant, InputSize, InputRounded } from '@/types'
5
- import FormField from './FormField.vue'
6
- import Button from '@/components/Button.vue'
7
- import Label from '../Label.vue'
8
-
9
- interface Props {
10
- modelValue?: Record<string, any>[]
11
- schema: IForm[]
12
- headers?: string[]
13
- variant?: InputVariant
14
- size?: InputSize
15
- rounded?: InputRounded
16
- disabled?: boolean
17
- minRows?: number
18
- maxRows?: number
19
- addButtonText?: string
20
- label: string
21
- showRowNumbers?: boolean
22
- /** All form values for context */
23
- values?: Record<string, any>
24
- isUpdate?: boolean
25
- }
26
-
27
- const props = withDefaults(defineProps<Props>(), {
28
- modelValue: () => [],
29
- headers: () => [],
30
- variant: 'outline',
31
- size: 'md',
32
- rounded: 'md',
33
- disabled: false,
34
- minRows: 0,
35
- addButtonText: 'Add Row',
36
- showRowNumbers: false,
37
- isUpdate: false,
38
- })
39
-
40
- const emit = defineEmits<{
41
- (e: 'update:modelValue', value: Record<string, any>[]): void
42
- (e: 'change', value: Record<string, any>[]): void
43
- }>()
44
-
45
- // Internal rows state with unique ID for transitions
46
- const rows = ref<(Record<string, any> & { _id: string })[]>([])
47
-
48
- const generateId = () => `row_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
49
-
50
- // Sync with modelValue
51
- watch(
52
- () => props.modelValue,
53
- (newValue) => {
54
- if (Array.isArray(newValue)) {
55
- // Merge existing rows to preserve _id if possible
56
- rows.value = newValue.map((row, index) => {
57
- const existing = rows.value[index]
58
- return {
59
- ...row,
60
- _id: existing?._id || generateId(),
61
- }
62
- })
63
- } else {
64
- rows.value = []
65
- }
66
- },
67
- { immediate: true, deep: true }
68
- )
69
-
70
- const createEmptyRow = (): Record<string, any> & { _id: string } => {
71
- const row: Record<string, any> = {}
72
- for (const field of props.schema) {
73
- const defaultValue = typeof field.value === 'function' ? field.value() : field.value
74
- row[field.name] = defaultValue ?? null
75
- }
76
- return { ...row, _id: generateId() }
77
- }
78
-
79
- const addRow = () => {
80
- if (props.disabled) return
81
- if (props.maxRows && rows.value.length >= props.maxRows) return
82
- const newRows = [...rows.value, createEmptyRow()]
83
- rows.value = newRows
84
- emitChange(newRows)
85
- }
86
-
87
- const removeRow = (index: number) => {
88
- if (props.disabled) return
89
- if (rows.value.length <= props.minRows) return
90
- const newRows = [...rows.value]
91
- newRows.splice(index, 1)
92
- rows.value = newRows
93
- emitChange(newRows)
94
- }
95
-
96
- const handleFieldChange = (
97
- rowIndex: number,
98
- fieldName: string,
99
- payload: IFormFieldChangePayload
100
- ) => {
101
- const newRows = [...rows.value]
102
- newRows[rowIndex] = {
103
- ...newRows[rowIndex],
104
- [fieldName]: payload.value,
105
- }
106
- rows.value = newRows
107
- emitChange(newRows)
108
- }
109
-
110
- const emitChange = (value: (Record<string, any> & { _id: string })[]) => {
111
- const cleanValue = value.map(({ _id, ...rest }) => rest)
112
- emit('update:modelValue', cleanValue)
113
- emit('change', cleanValue)
114
- }
115
-
116
- const getFieldValue = (rowIndex: number, fieldName: string): any => {
117
- return rows.value[rowIndex]?.[fieldName]
118
- }
119
-
120
- const canAddRow = computed(() => {
121
- if (props.disabled) return false
122
- if (props.maxRows && rows.value.length >= props.maxRows) return false
123
- return true
124
- })
125
-
126
- const canRemoveRow = computed(() => {
127
- if (props.disabled) return false
128
- return rows.value.length > props.minRows
129
- })
130
-
131
- const columnHeaders = computed(() => {
132
- if (props.headers && props.headers.length > 0) return props.headers
133
- return props.schema.map((field) => field.label || field.name)
134
- })
135
- </script>
136
-
137
- <template>
138
- <div class="custom-fields-wrapper">
139
- <!-- Header / Label Area -->
140
- <div class="flex justify-between items-center mb-2">
141
- <Label class="text-sm font-medium text-foreground">
142
- {{ label }}
143
- </Label>
144
- <Button
145
- type="button"
146
- variant="outline"
147
- size="xs"
148
- rounded="full"
149
- icon="lucide:plus"
150
- :disabled="!canAddRow"
151
- @click="addRow" />
152
- </div>
153
-
154
- <!-- Table Container -->
155
- <div class="custom-fields-table border border-border rounded overflow-hidden bg-background">
156
- <!-- Table Header -->
157
- <div
158
- v-if="columnHeaders.length > 0"
159
- class="flex border-b border-border bg-muted/50 text-gray-800 text-xs font-semibold uppercase tracking-wider">
160
- <div v-if="showRowNumbers" class="w-10 flex-none p-3 text-center border-r border-border">
161
- #
162
- </div>
163
- <div
164
- v-for="(header, idx) in columnHeaders"
165
- :key="idx"
166
- class="flex-1 p-3 min-w-0 truncate"
167
- :class="{ 'border-l border-border': idx > 0 }">
168
- {{ header }}
169
- </div>
170
- <div v-if="canRemoveRow" class="w-10 flex-none p-3"></div>
171
- </div>
172
-
173
- <!-- Table Body (Rows) -->
174
- <TransitionGroup name="list" tag="div" class="divide-y divide-border">
175
- <div
176
- v-for="(row, rowIndex) in rows"
177
- :key="row._id"
178
- class="flex group bg-white transition-colors">
179
- <!-- Row Number -->
180
- <div
181
- v-if="showRowNumbers"
182
- class="w-10 flex-none flex items-center justify-center text-xs text-muted-foreground border-r border-border bg-muted/20">
183
- {{ rowIndex + 1 }}
184
- </div>
185
-
186
- <!-- Fields -->
187
- <div
188
- v-for="(field, fIdx) in schema"
189
- :key="field.name"
190
- class="flex-1 min-w-0 relative"
191
- :class="{ 'border-l border-border': fIdx > 0 }">
192
- <FormField
193
- :field="{ ...field, label: undefined }"
194
- :value="getFieldValue(rowIndex, field.name)"
195
- :values="values || {}"
196
- :variant="'transparent'"
197
- size="sm"
198
- rounded="none"
199
- :disabled="disabled"
200
- :isUpdate="isUpdate"
201
- class="w-full h-full min-h-[40px]"
202
- @change="(payload) => handleFieldChange(rowIndex, field.name, payload)" />
203
- </div>
204
-
205
- <!-- Remove Button -->
206
- <div
207
- v-if="canRemoveRow"
208
- class="w-10 flex-none flex items-center justify-center border-l border-border bg-muted/20">
209
- <Button
210
- type="button"
211
- variant="ghost"
212
- size="xs"
213
- icon="lucide:trash-2"
214
- :disabled="disabled"
215
- @click="removeRow(rowIndex)" />
216
- </div>
217
- </div>
218
- </TransitionGroup>
219
-
220
- <!-- Empty State -->
221
- <div
222
- v-if="rows.length === 0"
223
- class="flex flex-col items-center justify-center py-6 text-center bg-muted/5">
224
- <p class="text-sm font-medium text-foreground">No items added</p>
225
- <p class="text-xs text-muted-foreground mt-1">Add a new item to get started</p>
226
- </div>
227
- </div>
228
- </div>
229
- </template>
230
-
231
- <style scoped>
232
- /* Remove default margins/padding from inputs inside the table to make them flush */
233
- .custom-fields-table :deep(.form-field-item) {
234
- margin-bottom: 0 !important;
235
- height: 100%;
236
- }
237
-
238
- .custom-fields-table :deep(input),
239
- .custom-fields-table :deep(textarea) {
240
- padding-left: 1em;
241
- padding-right: 0.5em;
242
- }
243
-
244
- .custom-fields-table :deep(input),
245
- .custom-fields-table :deep(textarea),
246
- .custom-fields-table :deep(select),
247
- .custom-fields-table :deep(.input-wrapper),
248
- .custom-fields-table :deep(.tooltip-trigger button) {
249
- border: none !important;
250
- background: transparent !important;
251
- box-shadow: none !important;
252
- border-radius: 0 !important;
253
- height: 100% !important;
254
- min-height: 40px;
255
- }
256
-
257
- .custom-fields-table :deep(.tooltip-trigger button) {
258
- justify-content: space-between !important;
259
- }
260
-
261
- /* Focus state indication via inset shadow or background */
262
- .custom-fields-table :deep(input):focus,
263
- .custom-fields-table :deep(textarea):focus,
264
- .custom-fields-table :deep(select):focus,
265
- .custom-fields-table :deep(.input-wrapper):focus-within {
266
- background-color: hsla(var(--primary) / 0.03) !important;
267
- box-shadow: inset 0 0 0 2px hsla(var(--primary) / 0.1) !important;
268
- }
269
-
270
- /* Fix dropdown and other components ensuring they fill cell */
271
- .custom-fields-table :deep(.w-full) {
272
- width: 100%;
273
- height: 100%;
274
- }
275
-
276
- /* Transitions */
277
- .list-move,
278
- .list-enter-active,
279
- .list-leave-active {
280
- transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
281
- }
282
-
283
- .list-enter-from,
284
- .list-leave-to {
285
- opacity: 0;
286
- transform: translateY(-10px);
287
- }
288
-
289
- .list-leave-active {
290
- position: absolute;
291
- width: 100%;
292
- z-index: 0;
293
- }
294
- </style>
@@ -1,406 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed, ref, watch } from 'vue'
3
- import type { IForm, IFormStep, IFormSubmitPayload } from './types'
4
- import type {
5
- InputVariant,
6
- InputSize,
7
- InputRounded,
8
- TimelineTextPosition,
9
- ButtonProps,
10
- } from '@/types'
11
- import { useForm } from './composables/useForm'
12
- import FormFields from './FormFields.vue'
13
- import Button from '@/components/Button.vue'
14
- import Timeline from '@/components/Timeline.vue'
15
- import type { TimelineStep } from '@/types'
16
-
17
- interface Props {
18
- /** Schema - single array or grouped arrays */
19
- schema: IForm[] | IForm[][]
20
- /** Initial/bound values */
21
- values?: Record<string, any>
22
- /** Input variant applied to all fields */
23
- variant?: InputVariant
24
- /** Input size applied to all fields */
25
- size?: InputSize
26
- /** Input rounded applied to all fields */
27
- rounded?: InputRounded
28
- /** Loading state during submit */
29
- loading?: boolean
30
- /** Show/hide default footer with submit button */
31
- footer?: boolean
32
- /** Headings for grouped schemas */
33
- groupsHeadings?: string[]
34
- /** Descriptions for grouped schemas */
35
- groupHeadingsDescription?: string[]
36
- /** Timeline steps for multi-step form mode */
37
- tabs?: IFormStep[]
38
- /** Submit button text */
39
- submitText?: string
40
- /* submit button props */
41
- submitProps?: ButtonProps
42
- /** Cancel button text */
43
- cancelText?: string
44
- /** Show cancel button */
45
- showCancel?: boolean
46
- /** Whether this is an update operation */
47
- isUpdate?: boolean
48
- /** Custom class for form element */
49
- class?: string
50
- /** Custom class for the grid layout (overrides columns) */
51
- className?: string
52
- /** Custom class for group containers */
53
- groupClass?: string
54
- /** Custom class for group/step headers */
55
- headerClass?: string
56
- /** Custom class for the footer area */
57
- footerClass?: string
58
- /** Timeline text position */
59
- timelineTextPosition?: TimelineTextPosition
60
- }
61
-
62
- const props = withDefaults(defineProps<Props>(), {
63
- values: () => ({}),
64
- variant: 'outline',
65
- size: 'md',
66
- rounded: 'md',
67
- loading: false,
68
- footer: true,
69
- groupsHeadings: () => [],
70
- groupHeadingsDescription: () => [],
71
- submitText: 'Submit',
72
- cancelText: 'Cancel',
73
- showCancel: false,
74
- isUpdate: false,
75
- class: '',
76
- className: '',
77
- groupClass: '',
78
- headerClass: '',
79
- footerClass: '',
80
- timelineTextPosition: 'bottom',
81
- })
82
-
83
- const emit = defineEmits<{
84
- (e: 'onSubmit', payload: IFormSubmitPayload): void
85
- (e: 'onCancel'): void
86
- (e: 'onStepChange', step: number): void
87
- }>()
88
-
89
- // Determine form mode
90
- const isGroupedMode = computed(() => {
91
- if (!props.schema || props.schema.length === 0) return false
92
- return Array.isArray(props.schema[0])
93
- })
94
-
95
- const isMultiStepMode = computed(() => {
96
- return props.tabs && props.tabs.length > 0 && isGroupedMode.value
97
- })
98
-
99
- // Current step for multi-step mode
100
- const currentStep = ref(0)
101
-
102
- // Convert props.tabs to TimelineStep format
103
- const timelineSteps = computed((): TimelineStep[] => {
104
- if (!props.tabs) return []
105
- return props.tabs.map((tab, index) => ({
106
- id: tab.id?.toString() || index.toString(),
107
- title: tab.title,
108
- icon: tab.icon,
109
- description: tab.description,
110
- status:
111
- index < currentStep.value
112
- ? 'completed'
113
- : index === currentStep.value
114
- ? 'current'
115
- : 'upcoming',
116
- }))
117
- })
118
-
119
- // Get grouped schemas
120
- const groupedSchemas = computed((): IForm[][] => {
121
- if (!isGroupedMode.value) {
122
- return [props.schema as IForm[]]
123
- }
124
- return props.schema as IForm[][]
125
- })
126
-
127
- // Get current step schema for multi-step mode
128
- const currentStepSchema = computed((): IForm[] => {
129
- if (!isMultiStepMode.value) return []
130
- return groupedSchemas.value[currentStep.value] || []
131
- })
132
-
133
- // Initialize form hook
134
- const {
135
- formValues,
136
- errors,
137
- isSubmitting,
138
- handleFieldChange,
139
- validateField,
140
- validateAll,
141
- isFieldVisible,
142
- isFieldDisabled,
143
- isFieldReadonly,
144
- getFieldValue,
145
- handleSubmit: formSubmit,
146
- flatSchema,
147
- } = useForm({
148
- schema: props.schema,
149
- values: props.values,
150
- isUpdate: props.isUpdate,
151
- onSubmit: (payload) => {
152
- emit('onSubmit', payload)
153
- },
154
- })
155
-
156
- // Watch for external value changes
157
- watch(
158
- () => props.values,
159
- (newValues) => {
160
- if (newValues) {
161
- // Re-initialize is handled in useForm watch
162
- }
163
- },
164
- { deep: true }
165
- )
166
-
167
- // Handle field change from FormFields
168
- const onFieldChange = (name: string, payload: { value: any; data?: any }) => {
169
- handleFieldChange(name, payload.value, payload.data)
170
- }
171
-
172
- // Validate current step (for multi-step mode)
173
- const validateCurrentStep = (): boolean => {
174
- if (!isMultiStepMode.value) return true
175
-
176
- const stepSchema = currentStepSchema.value
177
- let isValid = true
178
-
179
- for (const field of stepSchema) {
180
- if (!isFieldVisible(field)) continue
181
- if (isFieldDisabled(field)) continue
182
-
183
- const error = validateField(field)
184
- if (error) {
185
- isValid = false
186
- }
187
- }
188
-
189
- return isValid
190
- }
191
-
192
- // Can go to next step?
193
- const canGoNext = computed(() => {
194
- if (!isMultiStepMode.value) return false
195
- return currentStep.value < groupedSchemas.value.length - 1
196
- })
197
-
198
- // Can go to previous step?
199
- const canGoPrevious = computed(() => {
200
- if (!isMultiStepMode.value) return false
201
- return currentStep.value > 0
202
- })
203
-
204
- // Is on last step?
205
- const isLastStep = computed(() => {
206
- if (!isMultiStepMode.value) return true
207
- return currentStep.value === groupedSchemas.value.length - 1
208
- })
209
-
210
- // Go to next step
211
- const goNext = () => {
212
- if (!canGoNext.value) return
213
-
214
- // Validate current step first
215
- if (!validateCurrentStep()) {
216
- return
217
- }
218
-
219
- currentStep.value++
220
- emit('onStepChange', currentStep.value)
221
- }
222
-
223
- // Go to previous step
224
- const goPrevious = () => {
225
- if (!canGoPrevious.value) return
226
- currentStep.value--
227
- emit('onStepChange', currentStep.value)
228
- }
229
-
230
- // Go to specific step (via timeline click)
231
- const goToStep = (step: TimelineStep, index: number) => {
232
- // Only allow going back or to already completed steps
233
- if (index <= currentStep.value) {
234
- currentStep.value = index
235
- emit('onStepChange', currentStep.value)
236
- }
237
- }
238
-
239
- // Handle form submit
240
- const handleSubmit = async () => {
241
- // For multi-step mode, validate current step first
242
- if (isMultiStepMode.value && !isLastStep.value) {
243
- goNext()
244
- return
245
- }
246
-
247
- await formSubmit()
248
- }
249
-
250
- // Handle cancel
251
- const handleCancel = () => {
252
- emit('onCancel')
253
- }
254
- </script>
255
-
256
- <template>
257
- <form :class="['form-container', props.class]" @submit.prevent="handleSubmit">
258
- <!-- Multi-Step Timeline -->
259
- <div v-if="isMultiStepMode && timelineSteps.length > 0" class="form-timeline mb-18">
260
- <Timeline
261
- :steps="timelineSteps"
262
- :activeStep="currentStep"
263
- direction="horizontal"
264
- :textPosition="timelineTextPosition"
265
- :clickable="true"
266
- @step-click="goToStep" />
267
- </div>
268
-
269
- <!-- Single Schema Mode -->
270
- <div v-if="!isGroupedMode" class="form-fields-single">
271
- <FormFields
272
- :schema="schema as IForm[]"
273
- :values="formValues"
274
- :errors="errors"
275
- :variant="variant"
276
- :size="size"
277
- :rounded="rounded"
278
- :className="className"
279
- :isUpdate="isUpdate"
280
- :isFieldVisible="isFieldVisible"
281
- :isFieldDisabled="isFieldDisabled"
282
- :isFieldReadonly="isFieldReadonly"
283
- @change="onFieldChange" />
284
- </div>
285
-
286
- <!-- Grouped Schema Mode (Cards) -->
287
- <div v-else-if="isGroupedMode && !isMultiStepMode" class="form-groups space-y-6">
288
- <div
289
- v-for="(groupSchema, groupIndex) in groupedSchemas"
290
- :key="groupIndex"
291
- :class="['form-group border rounded-lg overflow-hidden', groupClass]">
292
- <!-- Group Header -->
293
- <div
294
- v-if="groupsHeadings?.[groupIndex]"
295
- :class="['form-group-header bg-muted/50 px-6 py-4 border-b', headerClass]">
296
- <h3 class="text-base font-semibold text-foreground">
297
- {{ groupsHeadings[groupIndex] }}
298
- </h3>
299
- <p
300
- v-if="groupHeadingsDescription?.[groupIndex]"
301
- class="text-sm text-muted-foreground mt-1">
302
- {{ groupHeadingsDescription[groupIndex] }}
303
- </p>
304
- </div>
305
-
306
- <!-- Group Fields -->
307
- <div class="form-group-body p-6">
308
- <FormFields
309
- :schema="groupSchema"
310
- :values="formValues"
311
- :errors="errors"
312
- :variant="variant"
313
- :size="size"
314
- :rounded="rounded"
315
- :className="className"
316
- :isUpdate="isUpdate"
317
- :isFieldVisible="isFieldVisible"
318
- :isFieldDisabled="isFieldDisabled"
319
- :isFieldReadonly="isFieldReadonly"
320
- @change="onFieldChange" />
321
- </div>
322
- </div>
323
- </div>
324
-
325
- <!-- Multi-Step Mode (One Group at a Time) -->
326
- <div v-else-if="isMultiStepMode" class="form-step">
327
- <!-- Step Header -->
328
- <div v-if="tabs?.[currentStep]" :class="['form-step-header mb-6', headerClass]">
329
- <h2 class="text-lg font-semibold text-foreground">
330
- {{ tabs[currentStep].title }}
331
- </h2>
332
- <p v-if="tabs[currentStep].description" class="text-sm text-muted-foreground mt-1">
333
- {{ tabs[currentStep].description }}
334
- </p>
335
- </div>
336
-
337
- <!-- Step Fields -->
338
- <FormFields
339
- :schema="currentStepSchema"
340
- :values="formValues"
341
- :errors="errors"
342
- :variant="variant"
343
- :size="size"
344
- :rounded="rounded"
345
- :className="className"
346
- :isUpdate="isUpdate"
347
- :isFieldVisible="isFieldVisible"
348
- :isFieldDisabled="isFieldDisabled"
349
- :isFieldReadonly="isFieldReadonly"
350
- @change="onFieldChange" />
351
- </div>
352
-
353
- <!-- Custom Content Slot -->
354
- <slot
355
- :values="formValues"
356
- :errors="errors"
357
- :isSubmitting="isSubmitting"
358
- :handleSubmit="handleSubmit" />
359
-
360
- <!-- Footer -->
361
- <div
362
- v-if="footer"
363
- :class="['form-footer mt-6 flex items-center justify-end gap-3', footerClass]">
364
- <!-- Cancel Button -->
365
- <Button
366
- v-if="showCancel"
367
- type="button"
368
- variant="outline"
369
- :text="cancelText"
370
- :disabled="loading || isSubmitting"
371
- @click="handleCancel" />
372
-
373
- <!-- Previous Button (Multi-Step) -->
374
- <Button
375
- v-if="isMultiStepMode && canGoPrevious"
376
- type="button"
377
- variant="outline"
378
- icon="lucide:arrow-left"
379
- text="Previous"
380
- @click="goPrevious" />
381
-
382
- <!-- Next/Submit Button -->
383
- <Button
384
- v-if="isMultiStepMode && !isLastStep"
385
- type="button"
386
- variant="primary"
387
- text="Next"
388
- iconRight="lucide:arrow-right"
389
- @click="goNext" />
390
-
391
- <Button
392
- v-else
393
- type="submit"
394
- variant="primary"
395
- :text="submitText"
396
- v-bind="submitProps"
397
- :loading="loading || isSubmitting" />
398
- </div>
399
- </form>
400
- </template>
401
-
402
- <style scoped>
403
- .form-container {
404
- width: 100%;
405
- }
406
- </style>