@vef-framework/components 1.0.5

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 (499) hide show
  1. package/README.md +27 -0
  2. package/dist/index.d.ts +65 -0
  3. package/dist/index.js +3 -0
  4. package/dist/internal/index.d.ts +1 -0
  5. package/dist/internal/index.js +3 -0
  6. package/dist/internal/utils.d.ts +9 -0
  7. package/dist/internal/utils.js +3 -0
  8. package/dist/vef-access-denied/access-denied-icon.d.ts +4 -0
  9. package/dist/vef-access-denied/access-denied-icon.js +3 -0
  10. package/dist/vef-access-denied/index.d.ts +5 -0
  11. package/dist/vef-access-denied/index.js +29 -0
  12. package/dist/vef-access-denied/props.d.ts +18 -0
  13. package/dist/vef-action-buttons/index.d.ts +6 -0
  14. package/dist/vef-action-buttons/index.js +3 -0
  15. package/dist/vef-action-buttons/props.d.ts +23 -0
  16. package/dist/vef-badge/index.d.ts +5 -0
  17. package/dist/vef-badge/index.js +3 -0
  18. package/dist/vef-badge/props.d.ts +28 -0
  19. package/dist/vef-bool/hooks/use-bool-instance.d.ts +6 -0
  20. package/dist/vef-bool/hooks/use-bool-instance.js +3 -0
  21. package/dist/vef-bool/index.d.ts +4 -0
  22. package/dist/vef-bool/index.js +3 -0
  23. package/dist/vef-bool/props.d.ts +63 -0
  24. package/dist/vef-button/components/base-button.d.ts +9 -0
  25. package/dist/vef-button/components/base-button.js +3 -0
  26. package/dist/vef-button/index.d.ts +4 -0
  27. package/dist/vef-button/index.js +3 -0
  28. package/dist/vef-button/props.d.ts +79 -0
  29. package/dist/vef-card/index.d.ts +5 -0
  30. package/dist/vef-card/index.js +3 -0
  31. package/dist/vef-card/props.d.ts +27 -0
  32. package/dist/vef-card-meta/index.d.ts +5 -0
  33. package/dist/vef-card-meta/index.js +3 -0
  34. package/dist/vef-card-meta/props.d.ts +7 -0
  35. package/dist/vef-checkbox/hooks/use-checkbox-instance.d.ts +11 -0
  36. package/dist/vef-checkbox/hooks/use-checkbox-instance.js +3 -0
  37. package/dist/vef-checkbox/hooks/use-data-options.d.ts +34 -0
  38. package/dist/vef-checkbox/hooks/use-data-options.js +3 -0
  39. package/dist/vef-checkbox/index.d.ts +6 -0
  40. package/dist/vef-checkbox/index.js +5 -0
  41. package/dist/vef-checkbox/props.d.ts +41 -0
  42. package/dist/vef-col/index.d.ts +5 -0
  43. package/dist/vef-col/index.js +3 -0
  44. package/dist/vef-col/props.d.ts +5 -0
  45. package/dist/vef-color-picker/index.d.ts +5 -0
  46. package/dist/vef-color-picker/index.js +3 -0
  47. package/dist/vef-color-picker/props.d.ts +28 -0
  48. package/dist/vef-compact/index.d.ts +5 -0
  49. package/dist/vef-compact/index.js +3 -0
  50. package/dist/vef-compact/props.d.ts +11 -0
  51. package/dist/vef-config-provider/fonts/din/bold.woff2.js +3 -0
  52. package/dist/vef-config-provider/fonts/din/regular.woff2.js +3 -0
  53. package/dist/vef-config-provider/hooks/use-ui-config.d.ts +46 -0
  54. package/dist/vef-config-provider/hooks/use-ui-config.js +3 -0
  55. package/dist/vef-config-provider/index.d.ts +5 -0
  56. package/dist/vef-config-provider/index.js +111 -0
  57. package/dist/vef-config-provider/props.d.ts +24 -0
  58. package/dist/vef-config-provider/reset-style.d.ts +4 -0
  59. package/dist/vef-config-provider/reset-style.js +257 -0
  60. package/dist/vef-config-provider/store.d.ts +12 -0
  61. package/dist/vef-config-provider/store.js +3 -0
  62. package/dist/vef-container/index.d.ts +5 -0
  63. package/dist/vef-container/index.js +3 -0
  64. package/dist/vef-container/props.d.ts +6 -0
  65. package/dist/vef-crud-page/components/crud-actions.d.ts +21 -0
  66. package/dist/vef-crud-page/components/crud-actions.js +3 -0
  67. package/dist/vef-crud-page/components/crud-filter.d.ts +31 -0
  68. package/dist/vef-crud-page/components/crud-filter.js +3 -0
  69. package/dist/vef-crud-page/components/crud-footer.d.ts +31 -0
  70. package/dist/vef-crud-page/components/crud-footer.js +9 -0
  71. package/dist/vef-crud-page/components/crud-form-modal.d.ts +18 -0
  72. package/dist/vef-crud-page/components/crud-form-modal.js +3 -0
  73. package/dist/vef-crud-page/components/crud-header.d.ts +32 -0
  74. package/dist/vef-crud-page/components/crud-header.js +3 -0
  75. package/dist/vef-crud-page/components/crud-table.d.ts +57 -0
  76. package/dist/vef-crud-page/components/crud-table.js +3 -0
  77. package/dist/vef-crud-page/hooks/use-action-buttons.d.ts +16 -0
  78. package/dist/vef-crud-page/hooks/use-action-buttons.js +3 -0
  79. package/dist/vef-crud-page/hooks/use-crud-context.d.ts +8 -0
  80. package/dist/vef-crud-page/hooks/use-crud-context.js +3 -0
  81. package/dist/vef-crud-page/hooks/use-crud-schema.d.ts +17 -0
  82. package/dist/vef-crud-page/hooks/use-crud-schema.js +3 -0
  83. package/dist/vef-crud-page/hooks/use-operation-buttons.d.ts +11 -0
  84. package/dist/vef-crud-page/hooks/use-operation-buttons.js +3 -0
  85. package/dist/vef-crud-page/index.d.ts +6 -0
  86. package/dist/vef-crud-page/index.js +3 -0
  87. package/dist/vef-crud-page/props.d.ts +84 -0
  88. package/dist/vef-crud-page/store.d.ts +119 -0
  89. package/dist/vef-crud-page/store.js +3 -0
  90. package/dist/vef-crud-page/types.d.ts +173 -0
  91. package/dist/vef-divider/index.d.ts +5 -0
  92. package/dist/vef-divider/index.js +3 -0
  93. package/dist/vef-divider/props.d.ts +25 -0
  94. package/dist/vef-drawer/components/action-button-wrapper.d.ts +14 -0
  95. package/dist/vef-drawer/components/action-button-wrapper.js +3 -0
  96. package/dist/vef-drawer/components/button-props.d.ts +15 -0
  97. package/dist/vef-drawer/components/button-props.js +2 -0
  98. package/dist/vef-drawer/components/cancel-action-button.d.ts +4 -0
  99. package/dist/vef-drawer/components/cancel-action-button.js +3 -0
  100. package/dist/vef-drawer/components/ok-action-button.d.ts +4 -0
  101. package/dist/vef-drawer/components/ok-action-button.js +3 -0
  102. package/dist/vef-drawer/context.d.ts +27 -0
  103. package/dist/vef-drawer/context.js +3 -0
  104. package/dist/vef-drawer/index.d.ts +5 -0
  105. package/dist/vef-drawer/index.js +10 -0
  106. package/dist/vef-drawer/props.d.ts +97 -0
  107. package/dist/vef-dropdown/index.d.ts +4 -0
  108. package/dist/vef-dropdown/index.js +3 -0
  109. package/dist/vef-dropdown/props.d.ts +68 -0
  110. package/dist/vef-empty/index.d.ts +5 -0
  111. package/dist/vef-empty/index.js +3 -0
  112. package/dist/vef-empty/props.d.ts +7 -0
  113. package/dist/vef-empty-placeholder/index.d.ts +5 -0
  114. package/dist/vef-empty-placeholder/index.js +7 -0
  115. package/dist/vef-empty-placeholder/props.d.ts +6 -0
  116. package/dist/vef-error/error-icon.d.ts +4 -0
  117. package/dist/vef-error/error-icon.js +3 -0
  118. package/dist/vef-error/index.d.ts +5 -0
  119. package/dist/vef-error/index.js +30 -0
  120. package/dist/vef-error/props.d.ts +18 -0
  121. package/dist/vef-filter/components/action-buttons.d.ts +3 -0
  122. package/dist/vef-filter/components/action-buttons.js +21 -0
  123. package/dist/vef-filter/components/advanced-filter.d.ts +13 -0
  124. package/dist/vef-filter/components/advanced-filter.js +11 -0
  125. package/dist/vef-filter/components/basic-filter.d.ts +14 -0
  126. package/dist/vef-filter/components/basic-filter.js +21 -0
  127. package/dist/vef-filter/components/fields/index.d.ts +9 -0
  128. package/dist/vef-filter/components/fields/index.js +3 -0
  129. package/dist/vef-filter/components/fields/input-number.d.ts +4 -0
  130. package/dist/vef-filter/components/fields/input-number.js +3 -0
  131. package/dist/vef-filter/components/fields/input.d.ts +4 -0
  132. package/dist/vef-filter/components/fields/input.js +3 -0
  133. package/dist/vef-filter/components/fields/props.d.ts +32 -0
  134. package/dist/vef-filter/components/filter-field.d.ts +4 -0
  135. package/dist/vef-filter/components/filter-field.js +3 -0
  136. package/dist/vef-filter/components/filter-item.d.ts +15 -0
  137. package/dist/vef-filter/components/filter-item.js +3 -0
  138. package/dist/vef-filter/event.d.ts +12 -0
  139. package/dist/vef-filter/event.js +3 -0
  140. package/dist/vef-filter/helper.d.ts +10 -0
  141. package/dist/vef-filter/helper.js +3 -0
  142. package/dist/vef-filter/hooks/use-action-handlers.d.ts +20 -0
  143. package/dist/vef-filter/hooks/use-action-handlers.js +3 -0
  144. package/dist/vef-filter/hooks/use-computed-values.d.ts +42 -0
  145. package/dist/vef-filter/hooks/use-computed-values.js +3 -0
  146. package/dist/vef-filter/hooks/use-filter-context.d.ts +8 -0
  147. package/dist/vef-filter/hooks/use-filter-context.js +3 -0
  148. package/dist/vef-filter/hooks/use-filter-initialization.d.ts +7 -0
  149. package/dist/vef-filter/hooks/use-filter-initialization.js +3 -0
  150. package/dist/vef-filter/hooks/use-filter-instance.d.ts +10 -0
  151. package/dist/vef-filter/hooks/use-filter-instance.js +3 -0
  152. package/dist/vef-filter/hooks/use-filter-items.d.ts +13 -0
  153. package/dist/vef-filter/hooks/use-filter-items.js +3 -0
  154. package/dist/vef-filter/hooks/use-filter-values-change.d.ts +11 -0
  155. package/dist/vef-filter/hooks/use-filter-values-change.js +3 -0
  156. package/dist/vef-filter/hooks/use-label-config.d.ts +14 -0
  157. package/dist/vef-filter/hooks/use-label-config.js +3 -0
  158. package/dist/vef-filter/index.d.ts +8 -0
  159. package/dist/vef-filter/index.js +10 -0
  160. package/dist/vef-filter/props.d.ts +106 -0
  161. package/dist/vef-filter/store.d.ts +77 -0
  162. package/dist/vef-filter/store.js +3 -0
  163. package/dist/vef-filter/types.d.ts +224 -0
  164. package/dist/vef-flex/index.d.ts +5 -0
  165. package/dist/vef-flex/index.js +3 -0
  166. package/dist/vef-flex/props.d.ts +12 -0
  167. package/dist/vef-float-button/index.d.ts +5 -0
  168. package/dist/vef-float-button/index.js +3 -0
  169. package/dist/vef-float-button/props.d.ts +26 -0
  170. package/dist/vef-float-button-group/index.d.ts +5 -0
  171. package/dist/vef-float-button-group/index.js +3 -0
  172. package/dist/vef-float-button-group/props.d.ts +11 -0
  173. package/dist/vef-form/components/fields/index.d.ts +10 -0
  174. package/dist/vef-form/components/fields/index.js +3 -0
  175. package/dist/vef-form/components/fields/input-number.d.ts +5 -0
  176. package/dist/vef-form/components/fields/input-number.js +3 -0
  177. package/dist/vef-form/components/fields/input.d.ts +5 -0
  178. package/dist/vef-form/components/fields/input.js +3 -0
  179. package/dist/vef-form/components/fields/props.d.ts +33 -0
  180. package/dist/vef-form/components/form-actions.d.ts +20 -0
  181. package/dist/vef-form/components/form-actions.js +5 -0
  182. package/dist/vef-form/components/form-content.d.ts +18 -0
  183. package/dist/vef-form/components/form-content.js +6 -0
  184. package/dist/vef-form/components/form-field.d.ts +5 -0
  185. package/dist/vef-form/components/form-field.js +3 -0
  186. package/dist/vef-form/components/form-group.d.ts +22 -0
  187. package/dist/vef-form/components/form-group.js +13 -0
  188. package/dist/vef-form/components/form-hidden-item.d.ts +14 -0
  189. package/dist/vef-form/components/form-hidden-item.js +3 -0
  190. package/dist/vef-form/components/form-item.d.ts +18 -0
  191. package/dist/vef-form/components/form-item.js +3 -0
  192. package/dist/vef-form/components/form-row.d.ts +26 -0
  193. package/dist/vef-form/components/form-row.js +3 -0
  194. package/dist/vef-form/event.d.ts +15 -0
  195. package/dist/vef-form/event.js +3 -0
  196. package/dist/vef-form/helper.d.ts +11 -0
  197. package/dist/vef-form/helper.js +3 -0
  198. package/dist/vef-form/hooks/use-action-handlers.d.ts +14 -0
  199. package/dist/vef-form/hooks/use-action-handlers.js +3 -0
  200. package/dist/vef-form/hooks/use-columns-layout.d.ts +12 -0
  201. package/dist/vef-form/hooks/use-columns-layout.js +3 -0
  202. package/dist/vef-form/hooks/use-computed-values.d.ts +42 -0
  203. package/dist/vef-form/hooks/use-computed-values.js +3 -0
  204. package/dist/vef-form/hooks/use-form-context.d.ts +6 -0
  205. package/dist/vef-form/hooks/use-form-context.js +3 -0
  206. package/dist/vef-form/hooks/use-form-initialization.d.ts +14 -0
  207. package/dist/vef-form/hooks/use-form-initialization.js +3 -0
  208. package/dist/vef-form/hooks/use-form-instance.d.ts +10 -0
  209. package/dist/vef-form/hooks/use-form-instance.js +3 -0
  210. package/dist/vef-form/hooks/use-form-values-change.d.ts +11 -0
  211. package/dist/vef-form/hooks/use-form-values-change.js +3 -0
  212. package/dist/vef-form/hooks/use-label-width.d.ts +9 -0
  213. package/dist/vef-form/hooks/use-label-width.js +3 -0
  214. package/dist/vef-form/index.d.ts +8 -0
  215. package/dist/vef-form/index.js +5 -0
  216. package/dist/vef-form/props.d.ts +158 -0
  217. package/dist/vef-form/store.d.ts +89 -0
  218. package/dist/vef-form/store.js +3 -0
  219. package/dist/vef-form/types.d.ts +335 -0
  220. package/dist/vef-form/validation-rules.d.ts +175 -0
  221. package/dist/vef-form/validation-rules.js +3 -0
  222. package/dist/vef-form-drawer/index.d.ts +9 -0
  223. package/dist/vef-form-drawer/index.js +3 -0
  224. package/dist/vef-form-drawer/props.d.ts +17 -0
  225. package/dist/vef-form-modal/index.d.ts +9 -0
  226. package/dist/vef-form-modal/index.js +3 -0
  227. package/dist/vef-form-modal/props.d.ts +20 -0
  228. package/dist/vef-grid/index.d.ts +5 -0
  229. package/dist/vef-grid/index.js +14 -0
  230. package/dist/vef-grid/props.d.ts +25 -0
  231. package/dist/vef-grid/props.js +3 -0
  232. package/dist/vef-grid-item/index.d.ts +5 -0
  233. package/dist/vef-grid-item/index.js +3 -0
  234. package/dist/vef-grid-item/props.d.ts +34 -0
  235. package/dist/vef-icon/index.d.ts +4 -0
  236. package/dist/vef-icon/index.js +3 -0
  237. package/dist/vef-icon/props.d.ts +12 -0
  238. package/dist/vef-input/hooks/use-input-instance.d.ts +12 -0
  239. package/dist/vef-input/hooks/use-input-instance.js +3 -0
  240. package/dist/vef-input/index.d.ts +4 -0
  241. package/dist/vef-input/index.js +3 -0
  242. package/dist/vef-input/props.d.ts +67 -0
  243. package/dist/vef-input-number/hooks/use-input-number-instance.d.ts +12 -0
  244. package/dist/vef-input-number/hooks/use-input-number-instance.js +3 -0
  245. package/dist/vef-input-number/index.d.ts +4 -0
  246. package/dist/vef-input-number/index.js +3 -0
  247. package/dist/vef-input-number/props.d.ts +124 -0
  248. package/dist/vef-loading-placeholder/index.d.ts +5 -0
  249. package/dist/vef-loading-placeholder/index.js +7 -0
  250. package/dist/vef-loading-placeholder/props.d.ts +6 -0
  251. package/dist/vef-login/index.d.ts +5 -0
  252. package/dist/vef-login/index.js +53 -0
  253. package/dist/vef-login/login-icon.d.ts +4 -0
  254. package/dist/vef-login/login-icon.js +3 -0
  255. package/dist/vef-login/props.d.ts +57 -0
  256. package/dist/vef-modal/components/action-button-wrapper.d.ts +14 -0
  257. package/dist/vef-modal/components/action-button-wrapper.js +3 -0
  258. package/dist/vef-modal/components/button-props.d.ts +15 -0
  259. package/dist/vef-modal/components/button-props.js +2 -0
  260. package/dist/vef-modal/components/cancel-action-button.d.ts +4 -0
  261. package/dist/vef-modal/components/cancel-action-button.js +3 -0
  262. package/dist/vef-modal/components/ok-action-button.d.ts +4 -0
  263. package/dist/vef-modal/components/ok-action-button.js +3 -0
  264. package/dist/vef-modal/context.d.ts +27 -0
  265. package/dist/vef-modal/context.js +3 -0
  266. package/dist/vef-modal/index.d.ts +5 -0
  267. package/dist/vef-modal/index.js +6 -0
  268. package/dist/vef-modal/props.d.ts +88 -0
  269. package/dist/vef-not-found/index.d.ts +5 -0
  270. package/dist/vef-not-found/index.js +30 -0
  271. package/dist/vef-not-found/not-found-icon.d.ts +4 -0
  272. package/dist/vef-not-found/not-found-icon.js +3 -0
  273. package/dist/vef-not-found/props.d.ts +18 -0
  274. package/dist/vef-page/index.d.ts +5 -0
  275. package/dist/vef-page/index.js +59 -0
  276. package/dist/vef-page/props.d.ts +29 -0
  277. package/dist/vef-pagination/index.d.ts +4 -0
  278. package/dist/vef-pagination/index.js +3 -0
  279. package/dist/vef-pagination/props.d.ts +59 -0
  280. package/dist/vef-pagination/props.js +3 -0
  281. package/dist/vef-paragraph/index.d.ts +5 -0
  282. package/dist/vef-paragraph/index.js +3 -0
  283. package/dist/vef-paragraph/props.d.ts +55 -0
  284. package/dist/vef-password/hooks/use-password-instance.d.ts +13 -0
  285. package/dist/vef-password/hooks/use-password-instance.js +3 -0
  286. package/dist/vef-password/index.d.ts +4 -0
  287. package/dist/vef-password/index.js +3 -0
  288. package/dist/vef-password/props.d.ts +58 -0
  289. package/dist/vef-popconfirm/index.d.ts +5 -0
  290. package/dist/vef-popconfirm/index.js +3 -0
  291. package/dist/vef-popconfirm/props.d.ts +33 -0
  292. package/dist/vef-popover/index.d.ts +5 -0
  293. package/dist/vef-popover/index.js +3 -0
  294. package/dist/vef-popover/props.d.ts +29 -0
  295. package/dist/vef-radio/hooks/use-data-options.d.ts +35 -0
  296. package/dist/vef-radio/hooks/use-data-options.js +3 -0
  297. package/dist/vef-radio/hooks/use-radio-instance.d.ts +11 -0
  298. package/dist/vef-radio/hooks/use-radio-instance.js +3 -0
  299. package/dist/vef-radio/index.d.ts +7 -0
  300. package/dist/vef-radio/index.js +5 -0
  301. package/dist/vef-radio/props.d.ts +59 -0
  302. package/dist/vef-rate/hooks/use-rate-instance.d.ts +12 -0
  303. package/dist/vef-rate/hooks/use-rate-instance.js +3 -0
  304. package/dist/vef-rate/index.d.ts +4 -0
  305. package/dist/vef-rate/index.js +3 -0
  306. package/dist/vef-rate/props.d.ts +25 -0
  307. package/dist/vef-responsive-container/index.d.ts +4 -0
  308. package/dist/vef-responsive-container/index.js +7 -0
  309. package/dist/vef-responsive-container/props.d.ts +21 -0
  310. package/dist/vef-responsive-item/index.d.ts +4 -0
  311. package/dist/vef-responsive-item/index.js +5 -0
  312. package/dist/vef-responsive-item/props.d.ts +12 -0
  313. package/dist/vef-ribbon/index.d.ts +5 -0
  314. package/dist/vef-ribbon/index.js +3 -0
  315. package/dist/vef-ribbon/props.d.ts +15 -0
  316. package/dist/vef-row/index.d.ts +5 -0
  317. package/dist/vef-row/index.js +3 -0
  318. package/dist/vef-row/props.d.ts +7 -0
  319. package/dist/vef-scroll-area/components/scrollbar.d.ts +2 -0
  320. package/dist/vef-scroll-area/components/scrollbar.js +34 -0
  321. package/dist/vef-scroll-area/index.d.ts +4 -0
  322. package/dist/vef-scroll-area/index.js +10 -0
  323. package/dist/vef-scroll-area/props.d.ts +24 -0
  324. package/dist/vef-select/components/option.d.ts +7 -0
  325. package/dist/vef-select/components/option.js +11 -0
  326. package/dist/vef-select/hooks/use-data-options.d.ts +37 -0
  327. package/dist/vef-select/hooks/use-data-options.js +3 -0
  328. package/dist/vef-select/hooks/use-field-names.d.ts +9 -0
  329. package/dist/vef-select/hooks/use-field-names.js +3 -0
  330. package/dist/vef-select/hooks/use-label-render.d.ts +11 -0
  331. package/dist/vef-select/hooks/use-label-render.js +10 -0
  332. package/dist/vef-select/hooks/use-option-render.d.ts +11 -0
  333. package/dist/vef-select/hooks/use-option-render.js +3 -0
  334. package/dist/vef-select/hooks/use-select-instance.d.ts +11 -0
  335. package/dist/vef-select/hooks/use-select-instance.js +3 -0
  336. package/dist/vef-select/index.d.ts +7 -0
  337. package/dist/vef-select/index.js +3 -0
  338. package/dist/vef-select/props.d.ts +153 -0
  339. package/dist/vef-slider/hooks/use-slider-instance.d.ts +12 -0
  340. package/dist/vef-slider/hooks/use-slider-instance.js +3 -0
  341. package/dist/vef-slider/index.d.ts +4 -0
  342. package/dist/vef-slider/index.js +3 -0
  343. package/dist/vef-slider/props.d.ts +72 -0
  344. package/dist/vef-sortable-list/components/overlay-item.d.ts +9 -0
  345. package/dist/vef-sortable-list/components/overlay-item.js +7 -0
  346. package/dist/vef-sortable-list/components/sortable-item.d.ts +21 -0
  347. package/dist/vef-sortable-list/components/sortable-item.js +7 -0
  348. package/dist/vef-sortable-list/hooks/use-merged-items.d.ts +10 -0
  349. package/dist/vef-sortable-list/hooks/use-merged-items.js +3 -0
  350. package/dist/vef-sortable-list/index.d.ts +7 -0
  351. package/dist/vef-sortable-list/index.js +3 -0
  352. package/dist/vef-sortable-list/props.d.ts +77 -0
  353. package/dist/vef-space/index.d.ts +5 -0
  354. package/dist/vef-space/index.js +3 -0
  355. package/dist/vef-space/props.d.ts +12 -0
  356. package/dist/vef-spin/index.d.ts +5 -0
  357. package/dist/vef-spin/index.js +3 -0
  358. package/dist/vef-spin/props.d.ts +12 -0
  359. package/dist/vef-splitter/index.d.ts +5 -0
  360. package/dist/vef-splitter/index.js +3 -0
  361. package/dist/vef-splitter/props.d.ts +16 -0
  362. package/dist/vef-splitter-panel/index.d.ts +5 -0
  363. package/dist/vef-splitter-panel/index.js +3 -0
  364. package/dist/vef-splitter-panel/props.d.ts +6 -0
  365. package/dist/vef-status/index.d.ts +5 -0
  366. package/dist/vef-status/index.js +3 -0
  367. package/dist/vef-status/props.d.ts +17 -0
  368. package/dist/vef-table/components/columns/bool.d.ts +5 -0
  369. package/dist/vef-table/components/columns/bool.js +3 -0
  370. package/dist/vef-table/components/columns/code.d.ts +4 -0
  371. package/dist/vef-table/components/columns/code.js +3 -0
  372. package/dist/vef-table/components/columns/data-dictionary.d.ts +4 -0
  373. package/dist/vef-table/components/columns/data-dictionary.js +3 -0
  374. package/dist/vef-table/components/columns/enum.d.ts +4 -0
  375. package/dist/vef-table/components/columns/enum.js +3 -0
  376. package/dist/vef-table/components/columns/file.d.ts +4 -0
  377. package/dist/vef-table/components/columns/file.js +3 -0
  378. package/dist/vef-table/components/columns/icon.d.ts +4 -0
  379. package/dist/vef-table/components/columns/icon.js +3 -0
  380. package/dist/vef-table/components/columns/id.d.ts +4 -0
  381. package/dist/vef-table/components/columns/id.js +3 -0
  382. package/dist/vef-table/components/columns/image.d.ts +4 -0
  383. package/dist/vef-table/components/columns/image.js +3 -0
  384. package/dist/vef-table/components/columns/index.d.ts +31 -0
  385. package/dist/vef-table/components/columns/index.js +3 -0
  386. package/dist/vef-table/components/columns/markdown.d.ts +4 -0
  387. package/dist/vef-table/components/columns/markdown.js +3 -0
  388. package/dist/vef-table/components/columns/number.d.ts +4 -0
  389. package/dist/vef-table/components/columns/number.js +3 -0
  390. package/dist/vef-table/components/columns/props.d.ts +24 -0
  391. package/dist/vef-table/components/columns/render.d.ts +4 -0
  392. package/dist/vef-table/components/columns/render.js +3 -0
  393. package/dist/vef-table/components/columns/rich-text.d.ts +4 -0
  394. package/dist/vef-table/components/columns/rich-text.js +3 -0
  395. package/dist/vef-table/components/columns/text.d.ts +4 -0
  396. package/dist/vef-table/components/columns/text.js +3 -0
  397. package/dist/vef-table/components/columns-settings.d.ts +2 -0
  398. package/dist/vef-table/components/columns-settings.js +54 -0
  399. package/dist/vef-table/components/operation-buttons.d.ts +22 -0
  400. package/dist/vef-table/components/operation-buttons.js +12 -0
  401. package/dist/vef-table/components/settings-icon.d.ts +2 -0
  402. package/dist/vef-table/components/settings-icon.js +5 -0
  403. package/dist/vef-table/components/table-footer.d.ts +34 -0
  404. package/dist/vef-table/components/table-footer.js +19 -0
  405. package/dist/vef-table/helper.d.ts +12 -0
  406. package/dist/vef-table/helper.js +3 -0
  407. package/dist/vef-table/hooks/use-computed-batch-buttons.d.ts +13 -0
  408. package/dist/vef-table/hooks/use-computed-batch-buttons.js +3 -0
  409. package/dist/vef-table/hooks/use-computed-columns.d.ts +10 -0
  410. package/dist/vef-table/hooks/use-computed-columns.js +3 -0
  411. package/dist/vef-table/hooks/use-computed-values.d.ts +45 -0
  412. package/dist/vef-table/hooks/use-computed-values.js +3 -0
  413. package/dist/vef-table/hooks/use-data.d.ts +11 -0
  414. package/dist/vef-table/hooks/use-data.js +3 -0
  415. package/dist/vef-table/hooks/use-default-column-configs.d.ts +9 -0
  416. package/dist/vef-table/hooks/use-default-column-configs.js +3 -0
  417. package/dist/vef-table/hooks/use-display-value.d.ts +32 -0
  418. package/dist/vef-table/hooks/use-display-value.js +3 -0
  419. package/dist/vef-table/hooks/use-helper-columns.d.ts +6 -0
  420. package/dist/vef-table/hooks/use-helper-columns.js +3 -0
  421. package/dist/vef-table/hooks/use-merged-value.d.ts +10 -0
  422. package/dist/vef-table/hooks/use-merged-value.js +3 -0
  423. package/dist/vef-table/hooks/use-operation-column-width.d.ts +11 -0
  424. package/dist/vef-table/hooks/use-operation-column-width.js +3 -0
  425. package/dist/vef-table/hooks/use-pagination-props.d.ts +17 -0
  426. package/dist/vef-table/hooks/use-pagination-props.js +3 -0
  427. package/dist/vef-table/hooks/use-row-props.d.ts +11 -0
  428. package/dist/vef-table/hooks/use-row-props.js +3 -0
  429. package/dist/vef-table/hooks/use-row-selection-config.d.ts +11 -0
  430. package/dist/vef-table/hooks/use-row-selection-config.js +3 -0
  431. package/dist/vef-table/hooks/use-table-columns.d.ts +12 -0
  432. package/dist/vef-table/hooks/use-table-columns.js +3 -0
  433. package/dist/vef-table/hooks/use-table-context.d.ts +9 -0
  434. package/dist/vef-table/hooks/use-table-context.js +3 -0
  435. package/dist/vef-table/hooks/use-table-instance.d.ts +10 -0
  436. package/dist/vef-table/hooks/use-table-instance.js +3 -0
  437. package/dist/vef-table/hooks/use-table-summary.d.ts +10 -0
  438. package/dist/vef-table/hooks/use-table-summary.js +3 -0
  439. package/dist/vef-table/hooks/use-table-width.d.ts +9 -0
  440. package/dist/vef-table/hooks/use-table-width.js +3 -0
  441. package/dist/vef-table/index.d.ts +7 -0
  442. package/dist/vef-table/index.js +56 -0
  443. package/dist/vef-table/props.d.ts +330 -0
  444. package/dist/vef-table/store.d.ts +21 -0
  445. package/dist/vef-table/store.js +3 -0
  446. package/dist/vef-table/types.d.ts +481 -0
  447. package/dist/vef-tabs/index.d.ts +5 -0
  448. package/dist/vef-tabs/index.js +3 -0
  449. package/dist/vef-tabs/props.d.ts +12 -0
  450. package/dist/vef-tag/index.d.ts +5 -0
  451. package/dist/vef-tag/index.js +3 -0
  452. package/dist/vef-tag/props.d.ts +20 -0
  453. package/dist/vef-temporal-picker/hooks/use-dayjs-value.d.ts +10 -0
  454. package/dist/vef-temporal-picker/hooks/use-dayjs-value.js +3 -0
  455. package/dist/vef-temporal-picker/hooks/use-temporal-formats.d.ts +8 -0
  456. package/dist/vef-temporal-picker/hooks/use-temporal-formats.js +3 -0
  457. package/dist/vef-temporal-picker/hooks/use-temporal-limit.d.ts +13 -0
  458. package/dist/vef-temporal-picker/hooks/use-temporal-limit.js +3 -0
  459. package/dist/vef-temporal-picker/hooks/use-temporal-picker-instance.d.ts +12 -0
  460. package/dist/vef-temporal-picker/hooks/use-temporal-picker-instance.js +3 -0
  461. package/dist/vef-temporal-picker/index.d.ts +5 -0
  462. package/dist/vef-temporal-picker/index.js +3 -0
  463. package/dist/vef-temporal-picker/props.d.ts +101 -0
  464. package/dist/vef-temporal-range-picker/hooks/use-dayjs-values.d.ts +10 -0
  465. package/dist/vef-temporal-range-picker/hooks/use-dayjs-values.js +3 -0
  466. package/dist/vef-temporal-range-picker/hooks/use-temporal-formats.d.ts +8 -0
  467. package/dist/vef-temporal-range-picker/hooks/use-temporal-formats.js +3 -0
  468. package/dist/vef-temporal-range-picker/hooks/use-temporal-limit.d.ts +13 -0
  469. package/dist/vef-temporal-range-picker/hooks/use-temporal-limit.js +3 -0
  470. package/dist/vef-temporal-range-picker/hooks/use-temporal-range-picker-instance.d.ts +12 -0
  471. package/dist/vef-temporal-range-picker/hooks/use-temporal-range-picker-instance.js +3 -0
  472. package/dist/vef-temporal-range-picker/index.d.ts +5 -0
  473. package/dist/vef-temporal-range-picker/index.js +3 -0
  474. package/dist/vef-temporal-range-picker/props.d.ts +82 -0
  475. package/dist/vef-temporal-range-picker/props.js +3 -0
  476. package/dist/vef-text/index.d.ts +5 -0
  477. package/dist/vef-text/index.js +3 -0
  478. package/dist/vef-text/props.d.ts +47 -0
  479. package/dist/vef-textarea/hooks/use-textarea-instance.d.ts +13 -0
  480. package/dist/vef-textarea/hooks/use-textarea-instance.js +3 -0
  481. package/dist/vef-textarea/index.d.ts +4 -0
  482. package/dist/vef-textarea/index.js +3 -0
  483. package/dist/vef-textarea/props.d.ts +58 -0
  484. package/dist/vef-title/index.d.ts +5 -0
  485. package/dist/vef-title/index.js +15 -0
  486. package/dist/vef-title/props.d.ts +39 -0
  487. package/dist/vef-tooltip/index.d.ts +5 -0
  488. package/dist/vef-tooltip/index.js +3 -0
  489. package/dist/vef-tooltip/props.d.ts +30 -0
  490. package/dist/vef-tree-select/hooks/use-change-handler.d.ts +10 -0
  491. package/dist/vef-tree-select/hooks/use-change-handler.js +3 -0
  492. package/dist/vef-tree-select/hooks/use-data-options.d.ts +36 -0
  493. package/dist/vef-tree-select/hooks/use-data-options.js +3 -0
  494. package/dist/vef-tree-select/hooks/use-tree-select-instance.d.ts +11 -0
  495. package/dist/vef-tree-select/hooks/use-tree-select-instance.js +3 -0
  496. package/dist/vef-tree-select/index.d.ts +7 -0
  497. package/dist/vef-tree-select/index.js +3 -0
  498. package/dist/vef-tree-select/props.d.ts +142 -0
  499. package/package.json +56 -0
@@ -0,0 +1,10 @@
1
+ import type { Handler, ObjectType } from "@vef-framework/shared";
2
+ import { type ForwardedRef } from "react";
3
+ import type { VefFilterInstance } from "../props";
4
+ /**
5
+ * The hook for getting the filter instance.
6
+ *
7
+ * @param ref - The ref of the filter.
8
+ * @param reset - The reset handler of the filter.
9
+ */
10
+ export declare function useFilterInstance<Values extends ObjectType>(ref: ForwardedRef<VefFilterInstance<Values>>, reset: Handler): void;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{useImperativeHandle as e}from"react";import{useFilterStore as t}from"../store.js";function s(s,o){const[r,u,m,i]=t((e=>[e.form,e.eventBus,e.getValues,e.setValues]));e(s,(()=>({confirm:()=>new Promise(((e,t)=>{const s=o=>{u.offSubmitResult(s),o?e():t(o)};u.onSubmitResult(s),r.submit()})),reset:o,getValues:m,setValues:i})))}export{s as useFilterInstance};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,13 @@
1
+ import type { ObjectType } from "@vef-framework/shared";
2
+ import type { NonEmptyTuple } from "@vef-framework/shared";
3
+ import type { FilterItem } from "../types";
4
+ /**
5
+ * The hook to get the basic and advanced filter items.
6
+ *
7
+ * @param schema - The schema of the filter.
8
+ * @returns The basic and advanced filter items.
9
+ */
10
+ export declare function useFilterItems<Values extends ObjectType, Schema extends ReadonlyArray<FilterItem<Values>>>(schema: Schema & NonEmptyTuple<FilterItem<Values>>): {
11
+ basicItems: FilterItem<Values>[];
12
+ advancedItems: FilterItem<Values>[];
13
+ };
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{useMemo as t}from"react";function n(n){return t((()=>{const t=[],o=[];for(const r of n){const{advanced:n=!1}=r;n?o.push(r):t.push(r)}return{basicItems:t,advancedItems:o}}),[])}export{n as useFilterItems};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,11 @@
1
+ import type { Consumer, ObjectType } from "@vef-framework/shared";
2
+ import type { FilterValues } from "../types";
3
+ /**
4
+ * Hook to handle filter values change.
5
+ *
6
+ * @param onChange - The handler to be called when the filter values change.
7
+ * @returns The handler to be called when the filter values change.
8
+ */
9
+ export declare function useFilterValuesChange<Values extends ObjectType>(onChange?: Consumer<FilterValues<Values>>): {
10
+ handleValuesChange: (_: any, values: FilterValues<Values>) => void;
11
+ };
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{isFunction as e}from"@vef-framework/shared";import{useMemo as r,useEffect as n,useLayoutEffect as o}from"react";import{useFilterStore as t}from"../store.js";function a(a){const[f,m]=t((e=>[e.eventBus,e.invokeValueChangeHandlers])),s=r((()=>(e,r)=>{f.emitChange(r)}),[f]);return n((()=>{if(e(a)){const e=e=>{a(e)};return f.onChange(e),()=>{f.offChange(e)}}}),[f,a]),o((()=>{m()}),[]),{handleValuesChange:s}}export{a as useFilterValuesChange};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,14 @@
1
+ import type { FilterLabelPosition } from "../types";
2
+ /**
3
+ * Use the label config of the filter.
4
+ *
5
+ * @param labelPosition - The label position.
6
+ * @param labelWidth - The label width.
7
+ * @returns The label config to use.
8
+ */
9
+ export declare function useLabelConfig(labelPosition: FilterLabelPosition, labelWidth?: number): {
10
+ labelCol: {
11
+ flex: string;
12
+ } | undefined;
13
+ labelWidthToUse: number | undefined;
14
+ };
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{showWarningMessage as e}from"@vef-framework/shared";import{useMemo as t}from"react";function r(r,o){const i=t((()=>{if("top"!==r&&o)return(o<60||o>120)&&e("The labelWidth of VefFilter component must be between 60 and 120, otherwise it will be 60 or 120."),Math.min(Math.max(o,60),120)}),[r,o]);return{labelCol:t((()=>{if(i)return{flex:`0 0 ${i}px`}}),[i]),labelWidthToUse:i}}export{r as useLabelConfig};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,8 @@
1
+ import type { ObjectType, ObjectValue } from "@vef-framework/shared";
2
+ import { type FC, type ReactNode, type RefAttributes } from "react";
3
+ import type { VefFilterInstance, VefFilterProps } from "./props";
4
+ import type { FilterSchema, FilterVirtualKeys } from "./types";
5
+ declare const VefFilter: (<Values extends ObjectType = ObjectValue, Schema extends FilterSchema<Values> = FilterSchema<Values>, VirtualKeys extends FilterVirtualKeys<Schema> = FilterVirtualKeys<Schema>>(props: VefFilterProps<Values, Schema, VirtualKeys> & RefAttributes<VefFilterInstance<Values>>) => ReactNode) & Pick<FC, "displayName">;
6
+ export type { FilterActionButtonConfig, FilterContext, FilterItem, FilterLabelAlign, FilterLabelPosition, FilterSchema } from "./types";
7
+ export type { VefFilterInstance, VefFilterProps };
8
+ export default VefFilter;
@@ -0,0 +1,10 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{jsx as e,jsxs as i}from"@emotion/react/jsx-runtime";import{css as o}from"@emotion/react";import{useContextDisabled as t,DisabledContextProvider as n,useSingleton as r,useUnmount as a}from"@vef-framework/hooks";import{isEqual as s,omit as l}from"@vef-framework/shared";import{Form as m}from"antd";import{AnimatePresence as f}from"motion/react";import{useMemo as c,forwardRef as d,memo as u}from"react";import"../internal/index.js";import h from"./components/advanced-filter.js";import p from"./components/basic-filter.js";import{FilterEventBus as g}from"./event.js";import{useActionHandlers as v}from"./hooks/use-action-handlers.js";import{FilterContextProvider as j}from"./hooks/use-filter-context.js";import{useFilterInitialization as b}from"./hooks/use-filter-initialization.js";import{useFilterInstance as C}from"./hooks/use-filter-instance.js";import{useFilterItems as V}from"./hooks/use-filter-items.js";import{useFilterValuesChange as B}from"./hooks/use-filter-values-change.js";import{useFilterStore as k,FilterStoreProvider as x}from"./store.js";import{convertBasicSizeToUiSize as F}from"../internal/utils.js";const{useForm:w}=m,A=o`
3
+ display: block;
4
+ flex-wrap: unset;
5
+
6
+ .vef-form-item {
7
+ margin-inline-end: 0;
8
+ }
9
+ `;const y=d((function({schema:o,labelPosition:r="top",labelAlign:a="right",labelWidth:s,disabled:l=!1,loading:d=!1,size:u,variant:g,prefix:b,confirmationButton:x,resetButton:w,extraActionButtons:y,onBeforeConfirm:N,onConfirm:R,onReset:z,onChange:I},H){const[L,P,W,q]=k((e=>[e.form,e.initialValues,e.isLoading,e.isAdvancedFilterVisible])),{handleReset:D,handleConfirm:E,handleConfirmFailed:G}=v({onBeforeConfirm:N,onConfirm:R,onReset:z}),{basicItems:J,advancedItems:K}=V(o),M=c((()=>({labelPosition:r,labelAlign:a,labelWidth:s,confirmationButton:x,externalLoading:d,showCollapseButton:K.length>0,handleReset:D,resetButton:w,extraActionButtons:y})),[K.length,x,y,D,a,r,s,d,w]),{handleValuesChange:O}=B(I);C(H,D);const Q=t()||l||d||W;return e(m,{colon:!1,css:A,disabled:Q,form:L,initialValues:P,layout:"inline",size:F(u),variant:g,onFinish:E,onFinishFailed:G,onValuesChange:O,children:e(n,{value:Q,children:i(j,{value:M,children:[e(p,{items:J,prefix:b}),e(f,{children:q&&K.length>0&&e(h,{items:K})})]})})})}));y.displayName="VefFilterBase";const N=u(d((function({initialValues:i,...o},t){const{schema:n}=o,[s]=w(),l=r((()=>new g));a((()=>{l.clear()}));const{mergedInitialValues:m,valueChangeHandlers:f,virtualFieldNames:c}=b(n,i);return e(x,{eventBus:l,form:s,initialValues:m,valueChangeHandlers:f,virtualFieldNames:c,children:e(y,{ref:t,...o})})})),((e,i)=>s(l(e,["initialValues","schema"]),l(i,["initialValues","schema"]))));N.displayName="VefFilter";export{N as default};
10
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,106 @@
1
+ import type { BasicSize, Consumer, Except, Handler, Mapper, MaybePromise, ObjectType, ObjectValue, Provider } from "@vef-framework/shared";
2
+ import type { Variant } from "antd/es/config-provider";
3
+ import type { ReactNode } from "react";
4
+ import type { FilterActionButtonConfig, FilterLabelAlign, FilterLabelPosition, FilterSchema, FilterValues, FilterVirtualKeys } from "./types";
5
+ /**
6
+ * The instance of the VefFilter component.
7
+ *
8
+ * @param Values - The type of the filter values.
9
+ */
10
+ export interface VefFilterInstance<Values extends ObjectType = ObjectValue> {
11
+ /**
12
+ * The confirm provider of the filter.
13
+ */
14
+ confirm: Provider<MaybePromise<void>>;
15
+ /**
16
+ * The reset handler of the filter.
17
+ */
18
+ reset: Handler;
19
+ /**
20
+ * The get values provider of the filter.
21
+ */
22
+ getValues: Provider<FilterValues<Values>>;
23
+ /**
24
+ * The set values consumer of the filter.
25
+ */
26
+ setValues: Consumer<FilterValues<Values>>;
27
+ }
28
+ /**
29
+ * The props of VefFilter component.
30
+ *
31
+ * @param Values - The type of the filter values.
32
+ * @param Schema - The type of the filter schema.
33
+ */
34
+ export interface VefFilterProps<Values extends ObjectType = ObjectValue, Schema extends FilterSchema<Values> = FilterSchema<Values>, VirtualKeys extends FilterVirtualKeys<Schema> = FilterVirtualKeys<Schema>> {
35
+ /**
36
+ * The schema of the filter.
37
+ */
38
+ schema: Schema;
39
+ /**
40
+ * The initial values of the filter.
41
+ */
42
+ initialValues?: Partial<Values>;
43
+ /**
44
+ * The position of the filter label.
45
+ * Only used in the advanced filter.
46
+ */
47
+ labelPosition?: FilterLabelPosition;
48
+ /**
49
+ * The alignment of the filter label.
50
+ * Only used in the advanced filter.
51
+ */
52
+ labelAlign?: FilterLabelAlign;
53
+ /**
54
+ * The width of the filter label.
55
+ * Only used in the advanced filter.
56
+ */
57
+ labelWidth?: number;
58
+ /**
59
+ * The variant of the filter.
60
+ */
61
+ variant?: Variant;
62
+ /**
63
+ * The size of the filter.
64
+ */
65
+ size?: BasicSize;
66
+ /**
67
+ * Whether the filter is disabled.
68
+ */
69
+ disabled?: boolean;
70
+ /**
71
+ * Whether the filter is loading.
72
+ */
73
+ loading?: boolean;
74
+ /**
75
+ * The confirmation button of the filter.
76
+ */
77
+ confirmationButton?: false | FilterActionButtonConfig;
78
+ /**
79
+ * The reset button of the filter.
80
+ */
81
+ resetButton?: false | FilterActionButtonConfig;
82
+ /**
83
+ * The prefix of the filter.
84
+ */
85
+ prefix?: ReactNode;
86
+ /**
87
+ * The extra buttons of the filter.
88
+ */
89
+ extraActionButtons?: ReactNode;
90
+ /**
91
+ * The callback function before the filter is confirmed.
92
+ */
93
+ onBeforeConfirm?: Mapper<Values, MaybePromise<Values>>;
94
+ /**
95
+ * The callback function when the filter is confirmed.
96
+ */
97
+ onConfirm?: Mapper<Except<Values, VirtualKeys>, MaybePromise<void>>;
98
+ /**
99
+ * The callback function when the filter is reset.
100
+ */
101
+ onReset?: Consumer<FilterValues<Values>>;
102
+ /**
103
+ * The change event handler.
104
+ */
105
+ onChange?: Consumer<FilterValues<Values>>;
106
+ }
@@ -0,0 +1,77 @@
1
+ import type { BiConsumer, BiConsumerOptional, ChildrenProps, Consumer, Mapper, MaybeNull, ObjectType, Provider, StringKey } from "@vef-framework/shared";
2
+ import type { FormInstance } from "antd";
3
+ import { type StoreApi } from "zustand";
4
+ import type { FilterEventBus } from "./event";
5
+ import type { FilterContext, FilterValues } from "./types";
6
+ /**
7
+ * The filter state.
8
+ */
9
+ export interface FilterState<Values extends ObjectType> {
10
+ /**
11
+ * The form instance.
12
+ */
13
+ form: FormInstance<Values>;
14
+ /**
15
+ * The event bus of the form.
16
+ */
17
+ eventBus: FilterEventBus<Values>;
18
+ /**
19
+ * The initial values of the filter.
20
+ */
21
+ initialValues: Partial<Values>;
22
+ /**
23
+ * The value change handlers of the filter.
24
+ */
25
+ valueChangeHandlers: Record<StringKey<Values>, BiConsumer<MaybeNull<Values[StringKey<Values>]>, FilterContext<Values>>>;
26
+ /**
27
+ * Invokes the value change handlers of the filter.
28
+ */
29
+ invokeValueChangeHandlers: BiConsumerOptional<FilterValues<Values>, Array<StringKey<Values>>>;
30
+ /**
31
+ * The virtual field names of the filter.
32
+ */
33
+ virtualFieldNames: Array<StringKey<Values>>;
34
+ /**
35
+ * The values of the filter.
36
+ */
37
+ getValues: Provider<FilterValues<Values>>;
38
+ /**
39
+ * Sets the values of the filter.
40
+ */
41
+ setValues: Consumer<FilterValues<Values>>;
42
+ /**
43
+ * Whether to show the advanced filter.
44
+ */
45
+ isAdvancedFilterVisible: boolean;
46
+ /**
47
+ * Sets the is advanced filter visible state.
48
+ *
49
+ * @param isAdvancedFilterVisible The is advanced filter visible state to set
50
+ */
51
+ setIsAdvancedFilterVisible: Consumer<boolean>;
52
+ /**
53
+ * Whether the filter is loading.
54
+ */
55
+ isLoading: boolean;
56
+ /**
57
+ * Sets the is loading state.
58
+ */
59
+ setIsLoading: Consumer<boolean>;
60
+ }
61
+ /**
62
+ * The props of the filter store provider
63
+ */
64
+ export interface FilterStoreProviderProps<Values extends ObjectType> extends Pick<FilterState<Values>, "form" | "eventBus" | "initialValues" | "valueChangeHandlers" | "virtualFieldNames">, ChildrenProps {
65
+ }
66
+ /**
67
+ * The provider component of the filter store.
68
+ */
69
+ export declare function FilterStoreProvider<Values extends ObjectType>({ children, ...props }: FilterStoreProviderProps<Values>): import("react").FunctionComponentElement<import("react").ProviderProps<MaybeNull<StoreApi<FilterState<any>>>>>;
70
+ /**
71
+ * The hook to use the filter store api.
72
+ */
73
+ export declare function useFilterStoreApi<Values extends ObjectType>(): StoreApi<FilterState<Values>>;
74
+ /**
75
+ * The hook to use the filter store.
76
+ */
77
+ export declare function useFilterStore<Values extends ObjectType, Result>(selector: Mapper<FilterState<Values>, Result>): Result;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{useSingleton as e}from"@vef-framework/hooks";import{createContext as t,createElement as r,useContext as i}from"react";import{isEqual as n}from"@vef-framework/shared";import{createStore as s}from"zustand";import{useStoreWithEqualityFn as o}from"zustand/traditional";const l=t(null);function a({children:t,...i}){const o=e((()=>{return e=i,s(((t,r)=>({isAdvancedFilterVisible:!1,setIsAdvancedFilterVisible:e=>{t({isAdvancedFilterVisible:e})},isLoading:!1,setIsLoading:e=>{t({isLoading:e})},invokeValueChangeHandlers:(e,t)=>{const{valueChangeHandlers:i,initialValues:n,setValues:s}=r(),o=e??n,l=t?new Set(t):null;for(const[e,t]of Object.entries(i))l&&!l.has(e)||t(o[e]??null,{values:o,setValues:s})},getValues:()=>{const{form:e,initialValues:t}=r();return e.isFieldsTouched(!0)?t:e.getFieldsValue()},setValues:e=>{const{form:t,eventBus:i,invokeValueChangeHandlers:s}=r(),o=t.getFieldsValue(),l=Object.keys(e).filter((t=>!n(e[t],o[t])));t.setFieldsValue(e);const a=t.getFieldsValue();i.emitChange(a),s(a,l)},...e})));var e}));return r(l.Provider,{value:o},t)}function u(){const e=i(l);if(!e)throw new Error("FilterStore can be used only inside FilterStoreProvider");return e}function d(e){return o(u(),e,n)}export{a as FilterStoreProvider,d as useFilterStore,u as useFilterStoreApi};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,224 @@
1
+ import type { Align, BiConsumer, Consumer, Handler, Mapper, MaybeComputed, MaybeComputedControlOptions, MaybeNull, NonEmptyTuple, ObjectType, StringKey } from "@vef-framework/shared";
2
+ import type { ReactNode } from "react";
3
+ /**
4
+ * The position of the filter label.
5
+ */
6
+ export type FilterLabelPosition = "top" | "left";
7
+ /**
8
+ * The alignment of the filter label.
9
+ */
10
+ export type FilterLabelAlign = Exclude<Align, "center">;
11
+ /**
12
+ * The config of the filter action button.
13
+ */
14
+ export interface FilterActionButtonConfig {
15
+ /**
16
+ * The text of the filter action button.
17
+ */
18
+ text?: string;
19
+ /**
20
+ * The icon of the filter action button.
21
+ */
22
+ icon?: ReactNode;
23
+ }
24
+ /**
25
+ * The internal context of the filter.
26
+ */
27
+ export interface InternalFilterContext {
28
+ /**
29
+ * The label position.
30
+ */
31
+ labelPosition: FilterLabelPosition;
32
+ /**
33
+ * The label alignment.
34
+ */
35
+ labelAlign: FilterLabelAlign;
36
+ /**
37
+ * The label width.
38
+ */
39
+ labelWidth?: number;
40
+ /**
41
+ * The confirmation button of the filter.
42
+ */
43
+ confirmationButton?: false | FilterActionButtonConfig;
44
+ /**
45
+ * The reset button of the filter.
46
+ */
47
+ resetButton?: false | FilterActionButtonConfig;
48
+ /**
49
+ * Whether the filter loading is controlled from outside.
50
+ */
51
+ externalLoading: boolean;
52
+ /**
53
+ * The reset handler of the filter.
54
+ */
55
+ handleReset: Handler;
56
+ /**
57
+ * Whether to show the collapse button.
58
+ */
59
+ showCollapseButton: boolean;
60
+ /**
61
+ * The extra action buttons.
62
+ */
63
+ extraActionButtons?: ReactNode;
64
+ }
65
+ /**
66
+ * The filter values.
67
+ */
68
+ export type FilterValues<T extends ObjectType> = {
69
+ [K in keyof T]?: MaybeNull<T[K]>;
70
+ };
71
+ /**
72
+ * The compute function of the filter.
73
+ */
74
+ type ComputeFn<T extends ObjectType, V> = Mapper<FilterValues<T>, V>;
75
+ /**
76
+ * The computed type of the filter.
77
+ */
78
+ export type FilterComputedType<T extends ObjectType, V> = MaybeComputed<V, ComputeFn<T, V>>;
79
+ /**
80
+ * The control options of the filter item.
81
+ */
82
+ type ControlOptions<T extends ObjectType> = MaybeComputedControlOptions<ComputeFn<T, boolean>>;
83
+ /**
84
+ * The context of the filter.
85
+ */
86
+ export interface FilterContext<Values extends ObjectType> {
87
+ /**
88
+ * The values of the filter.
89
+ */
90
+ values?: FilterValues<Values>;
91
+ /**
92
+ * Set the values of the filter.
93
+ */
94
+ setValues: Consumer<FilterValues<Values>>;
95
+ }
96
+ /**
97
+ * The virtual keys of the filter.
98
+ */
99
+ export type FilterVirtualKeys<T extends ReadonlyArray<FilterItem<any, string>>> = FilterVirtualItems<T>[number];
100
+ type FilterVirtualItems<T extends ReadonlyArray<FilterItem<any, string>>> = {
101
+ [K in keyof T]: T[K]["virtual"] extends true ? T[K]["name"] : never;
102
+ };
103
+ /**
104
+ * The filter schema.
105
+ */
106
+ export type FilterSchema<Values extends ObjectType> = NonEmptyTuple<FilterItem<Values>>;
107
+ /**
108
+ * The filter item.
109
+ */
110
+ export type FilterItem<Values extends ObjectType, K extends StringKey<Values> = StringKey<Values>> = FilterItemInput<Values, K> | FilterItemInputNumber<Values, K>;
111
+ /**
112
+ * The base type of the filter item.
113
+ */
114
+ export interface FilterItemBase<Values extends ObjectType, Key extends StringKey<Values>> extends ControlOptions<Values> {
115
+ /**
116
+ * The name of the filter item.
117
+ */
118
+ name: Key;
119
+ /**
120
+ * The label of the filter item.
121
+ */
122
+ label?: FilterComputedType<Values, ReactNode>;
123
+ /**
124
+ * The tip of the filter item.
125
+ */
126
+ tip?: FilterComputedType<Values, ReactNode>;
127
+ /**
128
+ * Whether the filter item is required.
129
+ * @default false
130
+ */
131
+ required?: FilterComputedType<Values, boolean>;
132
+ /**
133
+ * The width of the filter item.
134
+ * Only works when the filter item is in basic filter area.
135
+ */
136
+ width?: FilterComputedType<Values, number>;
137
+ /**
138
+ * Whether the filter item is virtual.
139
+ * That means the filter item is not a real filter item to filter data, but a virtual item to help control the other filter items.
140
+ * @default false
141
+ */
142
+ virtual?: boolean;
143
+ /**
144
+ * Whether the filter item is in advanced filter area.
145
+ * @default false
146
+ */
147
+ advanced?: boolean;
148
+ /**
149
+ * The span of the filter item.
150
+ * Only works when the filter item is in advanced filter area.
151
+ */
152
+ span?: number;
153
+ /**
154
+ * The default value of the filter item.
155
+ */
156
+ defaultValue?: Values[Key];
157
+ }
158
+ /**
159
+ * The input filter item.
160
+ */
161
+ export interface FilterItemInput<Values extends ObjectType, Key extends StringKey<Values> = StringKey<Values>> extends FilterItemBase<Values, Key> {
162
+ /**
163
+ * The type of the filter item.
164
+ */
165
+ type: "Input";
166
+ /**
167
+ * The default value of the filter item.
168
+ */
169
+ defaultValue?: Values[Key] & string;
170
+ /**
171
+ * The placeholder of the filter item.
172
+ */
173
+ placeholder?: FilterComputedType<Values, string>;
174
+ /**
175
+ * The change event handler of the filter item.
176
+ */
177
+ onChange?: BiConsumer<MaybeNull<Values[Key] & string>, FilterContext<Values>>;
178
+ /**
179
+ * The enter key press event handler of the filter item.
180
+ */
181
+ onEnterKeyPress?: BiConsumer<MaybeNull<Values[Key] & string>, FilterContext<Values>>;
182
+ }
183
+ /**
184
+ * The input number filter item.
185
+ */
186
+ export interface FilterItemInputNumber<Values extends ObjectType, Key extends StringKey<Values> = StringKey<Values>> extends FilterItemBase<Values, Key> {
187
+ /**
188
+ * The type of the filter item.
189
+ */
190
+ type: "InputNumber";
191
+ /**
192
+ * The default value of the filter item.
193
+ */
194
+ defaultValue?: Values[Key] & number;
195
+ /**
196
+ * The placeholder of the filter item.
197
+ */
198
+ placeholder?: FilterComputedType<Values, string>;
199
+ /**
200
+ * The maximum value of the filter item.
201
+ */
202
+ max?: FilterComputedType<Values, number>;
203
+ /**
204
+ * The minimum value of the filter item.
205
+ */
206
+ min?: FilterComputedType<Values, number>;
207
+ /**
208
+ * The prefix of the filter item.
209
+ */
210
+ prefix?: FilterComputedType<Values, ReactNode>;
211
+ /**
212
+ * The suffix of the filter item.
213
+ */
214
+ suffix?: FilterComputedType<Values, ReactNode>;
215
+ /**
216
+ * The change event handler of the filter item.
217
+ */
218
+ onChange?: BiConsumer<MaybeNull<Values[Key] & number>, FilterContext<Values>>;
219
+ /**
220
+ * The enter key press event handler of the filter item.
221
+ */
222
+ onEnterKeyPress?: BiConsumer<MaybeNull<Values[Key] & number>, FilterContext<Values>>;
223
+ }
224
+ export {};
@@ -0,0 +1,5 @@
1
+ import { type FC } from "react";
2
+ import type { VefFlexProps } from "./props";
3
+ declare const VefFlex: FC<VefFlexProps>;
4
+ export type { VefFlexProps };
5
+ export default VefFlex;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{jsx as r}from"@emotion/react/jsx-runtime";import{useGapSizeNormalizer as o}from"@vef-framework/hooks";import{Flex as t}from"antd";import{isArray as m}from"@vef-framework/shared";import{useMemo as e}from"react";const a=({gap:a,...f})=>{const i=o(),p=e((()=>m(a)?[i(a[0]),i(a[1])].join(" "):a?i(a):a),[a,i]);return r(t,{gap:p,...f})};export{a as default};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,12 @@
1
+ import type { GapType } from "@vef-framework/shared";
2
+ import type { FlexProps } from "antd";
3
+ import type { Except } from "@vef-framework/shared";
4
+ /**
5
+ * The props of VefFlex component.
6
+ */
7
+ export interface VefFlexProps extends Except<FlexProps, "gap" | "prefixCls" | "rootClassName"> {
8
+ /**
9
+ * The gap of the flex container.
10
+ */
11
+ gap?: GapType;
12
+ }
@@ -0,0 +1,5 @@
1
+ import { type FC } from "react";
2
+ import type { VefFloatButtonProps } from "./props";
3
+ declare const VefFloatButton: FC<VefFloatButtonProps>;
4
+ export type { VefFloatButtonProps };
5
+ export default VefFloatButton;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{jsx as o}from"@emotion/react/jsx-runtime";import{useColorTokens as t}from"@vef-framework/hooks";import{FloatButton as r}from"antd";import{useMemo as e}from"react";const n=({appearance:n,tip:a,badge:i,...c})=>{const m=t(),f=e((()=>{if(!i)return;const{variant:o,count:t,overflowCount:r,showZero:e,color:n}=i;return"dot"===o?{dot:!0,color:n?m.get(n):void 0}:{count:t,overflowCount:r,showZero:e,color:n?m.get(n):void 0}}),[i,m]);return o(r,{badge:f,tooltip:a,type:n,...c})};export{n as default};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,26 @@
1
+ import type { FloatButtonProps } from "antd";
2
+ import type { ReactNode } from "react";
3
+ import type { Except } from "@vef-framework/shared";
4
+ import type { VefBadgeProps } from "../vef-badge/props";
5
+ /**
6
+ * The badge config.
7
+ */
8
+ export interface BadgeConfig extends Except<VefBadgeProps, "size" | "offset"> {
9
+ }
10
+ /**
11
+ * The props of the VefFloatButton component.
12
+ */
13
+ export interface VefFloatButtonProps extends Except<FloatButtonProps, "type" | "htmlType" | "description" | "tooltip"> {
14
+ /**
15
+ * The appearance of the float button.
16
+ */
17
+ appearance?: "default" | "primary";
18
+ /**
19
+ * The tip of the float button.
20
+ */
21
+ tip?: ReactNode;
22
+ /**
23
+ * The badge config.
24
+ */
25
+ badge?: BadgeConfig;
26
+ }
@@ -0,0 +1,5 @@
1
+ import type { FC } from "react";
2
+ import type { VefFloatButtonGroupProps } from "./props";
3
+ declare const VefFloatButtonGroup: FC<VefFloatButtonGroupProps>;
4
+ export type { VefFloatButtonGroupProps };
5
+ export default VefFloatButtonGroup;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{jsx as r}from"@emotion/react/jsx-runtime";import{FloatButton as o}from"antd";const{Group:t}=o,e=({collapsable:o=!1,trigger:e="click",...i})=>r(t,{trigger:o?e:void 0,...i});export{e as default};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,11 @@
1
+ import type { FloatButtonGroupProps } from "antd";
2
+ /**
3
+ * The props of the VefFloatButtonGroup component.
4
+ */
5
+ export interface VefFloatButtonGroupProps extends FloatButtonGroupProps {
6
+ /**
7
+ * Whether the float button group is collapsable.
8
+ * @default false
9
+ */
10
+ collapsable?: boolean;
11
+ }
@@ -0,0 +1,10 @@
1
+ import type { ObjectType, StringKey } from "@vef-framework/shared";
2
+ import type { ReactElement } from "react";
3
+ import type { FormItem, FormScene } from "../../types";
4
+ import type { VefFormFieldProps } from "./props";
5
+ export * from "./props";
6
+ type FormFieldMap = Record<Exclude<FormItem["type"], "Hidden">, <Values extends ObjectType, Key extends StringKey<Values>, Scene extends FormScene>(props: VefFormFieldProps<Values, Key, Scene>) => ReactElement>;
7
+ /**
8
+ * The map of the form fields.
9
+ */
10
+ export declare const fieldMap: FormFieldMap;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import p from"./input.js";import r from"./input-number.js";import"./props.js";const t={Input:p,InputNumber:r};export{t as fieldMap};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,5 @@
1
+ import { type ObjectType, type StringKey } from "@vef-framework/shared";
2
+ import type { FormScene } from "../../types";
3
+ import type { VefFormFieldProps } from "./props";
4
+ declare function InputNumber<Values extends ObjectType, Key extends StringKey<Values>, Scene extends FormScene>({ label, disabled, value, onChange, componentProps, }: VefFormFieldProps<Values, Key, Scene>): import("@emotion/react/jsx-runtime").JSX.Element;
5
+ export default InputNumber;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{jsx as e}from"@emotion/react/jsx-runtime";import{VefError as o,isString as s,isFunction as r}from"@vef-framework/shared";import{useMemo as n}from"react";import t from"../../../vef-input-number/index.js";import{useComputedValues as a}from"../../hooks/use-computed-values.js";import{useFormStore as u}from"../../store.js";function l({label:l,disabled:i,value:m,onChange:f,componentProps:p}){if("InputNumber"!==p.type)throw new o(-9,'Oops! Something went wrong. The type of the form field is not "InputNumber", but rendered.');const{onChange:c,onEnterKeyPress:d,onFocus:V,onBlur:h,placeholder:x,prefix:v,suffix:w,max:g,min:y}=p,[b,k,F]=u((e=>[e.form,e.scene,e.setValues])),[j,C,P,B,E]=a([{key:"placeholder",rawValue:x,defaultValue:l?s(l)?`请输入${l}`:"请输入":void 0},{key:"max",rawValue:g},{key:"min",rawValue:y},{key:"prefix",rawValue:v},{key:"suffix",rawValue:w}]),I=n((()=>{const e={};return r(V)&&(e.onFocus=e=>{const o=b.getFieldsValue();V(e,{scene:k,values:o,setValues:F})}),r(h)&&(e.onBlur=e=>{const o=b.getFieldsValue();h(e,{scene:k,values:o,setValues:F})}),e.onChange=e=>{if(f?.(e),r(c)){const o=b.getFieldsValue();c(e,{scene:k,values:o,setValues:F})}},r(d)&&(e.onPressEnter=e=>{const o=b.getFieldsValue();d(e,{scene:k,values:o,setValues:F})}),e}),[b,h,f,d,V,c,k,F]);return e(t,{disabled:i,max:C,min:P,placeholder:j,prefix:B,suffix:E,value:m,...I})}export{l as default};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -0,0 +1,5 @@
1
+ import { type ObjectType, type StringKey } from "@vef-framework/shared";
2
+ import type { FormScene } from "../../types";
3
+ import type { VefFormFieldProps } from "./props";
4
+ declare function Input<Values extends ObjectType, Key extends StringKey<Values>, Scene extends FormScene>({ label, disabled, value, onChange, componentProps, }: VefFormFieldProps<Values, Key, Scene>): import("@emotion/react/jsx-runtime").JSX.Element;
5
+ export default Input;
@@ -0,0 +1,3 @@
1
+ /*! VefFramework version: 1.0.5, build time: 2024-12-10T10:24:47.065Z, made by Venus. */
2
+ import{jsx as e}from"@emotion/react/jsx-runtime";import{VefError as s,isString as o,isFunction as a}from"@vef-framework/shared";import{useMemo as t}from"react";import r from"../../../vef-input/index.js";import{useComputedValues as l}from"../../hooks/use-computed-values.js";import{useFormStore as n}from"../../store.js";function u({label:u,disabled:i,value:f,onChange:c,componentProps:m}){if("Input"!==m.type)throw new s(-9,'Oops! Something went wrong. The type of the form field is not "Input", but rendered.');const{onChange:p,onEnterKeyPress:d,onFocus:V,onBlur:h,onClear:g,maxLength:x,clearable:v=!0,placeholder:w,prefix:y,suffix:F}=m,[b,k,C]=n((e=>[e.form,e.scene,e.setValues])),[j,L,P,B]=l([{key:"placeholder",rawValue:w,defaultValue:u?o(u)?`请输入${u}`:"请输入":void 0},{key:"maxLength",rawValue:x},{key:"prefix",rawValue:y},{key:"suffix",rawValue:F}]),E=t((()=>{const e={};return a(V)&&(e.onFocus=e=>{const s=b.getFieldsValue();V(e,{scene:k,values:s,setValues:C})}),a(h)&&(e.onBlur=e=>{const s=b.getFieldsValue();h(e,{scene:k,values:s,setValues:C})}),e.onChange=e=>{if(c?.(e),a(p)){const s=b.getFieldsValue();p(e,{scene:k,values:s,setValues:C})}},a(d)&&(e.onPressEnter=e=>{const s=b.getFieldsValue();d(e,{scene:k,values:s,setValues:C})}),v&&a(g)&&(e.onClear=()=>{const e=b.getFieldsValue();g({scene:k,values:e,setValues:C})}),e}),[v,b,h,c,g,d,V,p,k,C]);return e(r,{clearable:v,disabled:i,maxLength:L,placeholder:j,prefix:P,suffix:B,value:f,...E})}export{u as default};
3
+ /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */