@vef-framework-react/components 2.1.10 → 2.1.12

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 (270) hide show
  1. package/dist/cjs/crud/components/scene-form.cjs +1 -1
  2. package/dist/cjs/crud/index.cjs +1 -1
  3. package/dist/cjs/form/helpers/create-field.cjs +1 -1
  4. package/dist/cjs/index.cjs +1 -1
  5. package/dist/es/_base/constants/breakpoints.js +1 -1
  6. package/dist/es/_base/constants/common.js +1 -1
  7. package/dist/es/_base/constants/css-vars.js +1 -1
  8. package/dist/es/_base/constants/event.js +1 -1
  9. package/dist/es/_base/constants/index.js +1 -1
  10. package/dist/es/_base/constants/symbols.js +1 -1
  11. package/dist/es/_base/helpers/breakpoints.js +1 -1
  12. package/dist/es/_base/helpers/color.js +1 -1
  13. package/dist/es/_base/helpers/common.js +1 -1
  14. package/dist/es/_base/helpers/event.js +1 -1
  15. package/dist/es/_base/helpers/index.js +1 -1
  16. package/dist/es/_base/helpers/message.js +1 -1
  17. package/dist/es/_base/helpers/modal.js +1 -1
  18. package/dist/es/_base/helpers/notification.js +1 -1
  19. package/dist/es/_base/helpers/props.js +1 -1
  20. package/dist/es/_base/helpers/react.js +1 -1
  21. package/dist/es/_base/hooks/index.js +1 -1
  22. package/dist/es/_base/hooks/use-theme-tokens.js +1 -1
  23. package/dist/es/_base/index.js +1 -1
  24. package/dist/es/_base/styles/common.js +1 -1
  25. package/dist/es/_base/styles/index.js +1 -1
  26. package/dist/es/_base/types/breakpoints.js +1 -1
  27. package/dist/es/_base/types/common.js +1 -1
  28. package/dist/es/_base/types/index.js +1 -1
  29. package/dist/es/action-button/index.js +1 -1
  30. package/dist/es/action-button/use-action-button.js +1 -1
  31. package/dist/es/action-group/index.js +1 -1
  32. package/dist/es/action-group/use-action-group.js +1 -1
  33. package/dist/es/action-group/use-computed-action-buttons.js +1 -1
  34. package/dist/es/affix/index.js +1 -1
  35. package/dist/es/alert/index.js +1 -1
  36. package/dist/es/anchor/index.js +1 -1
  37. package/dist/es/auto-complete/index.js +1 -1
  38. package/dist/es/avatar/index.js +1 -1
  39. package/dist/es/badge/index.js +1 -1
  40. package/dist/es/bool/index.js +1 -1
  41. package/dist/es/breadcrumb/index.js +1 -1
  42. package/dist/es/button/index.js +1 -1
  43. package/dist/es/calendar/index.js +1 -1
  44. package/dist/es/card/index.js +1 -1
  45. package/dist/es/carousel/index.js +1 -1
  46. package/dist/es/cascader/index.js +1 -1
  47. package/dist/es/center/index.js +1 -1
  48. package/dist/es/charts/chart.js +1 -1
  49. package/dist/es/charts/helpers/group.js +1 -1
  50. package/dist/es/charts/helpers/index.js +1 -1
  51. package/dist/es/charts/hooks/index.js +1 -1
  52. package/dist/es/charts/hooks/use-chart.js +1 -1
  53. package/dist/es/charts/index.js +1 -1
  54. package/dist/es/charts/themes/index.js +1 -1
  55. package/dist/es/charts/themes/walden-dark.js +1 -1
  56. package/dist/es/charts/themes/walden.js +1 -1
  57. package/dist/es/charts/themes/wonderland-dark.js +1 -1
  58. package/dist/es/charts/themes/wonderland.js +1 -1
  59. package/dist/es/checkbox/index.js +1 -1
  60. package/dist/es/code-highlighter/index.js +1 -1
  61. package/dist/es/col/index.js +1 -1
  62. package/dist/es/collapse/index.js +1 -1
  63. package/dist/es/color-picker/index.js +1 -1
  64. package/dist/es/compact/index.js +1 -1
  65. package/dist/es/config-provider/app.js +1 -1
  66. package/dist/es/config-provider/constants.js +1 -1
  67. package/dist/es/config-provider/context-holder.js +1 -1
  68. package/dist/es/config-provider/css-vars.js +1 -1
  69. package/dist/es/config-provider/dark-mode-context.js +1 -1
  70. package/dist/es/config-provider/error-fallback.js +1 -1
  71. package/dist/es/config-provider/global-style.js +1 -1
  72. package/dist/es/config-provider/index.js +1 -1
  73. package/dist/es/config-provider/theme-config.js +1 -1
  74. package/dist/es/config-provider/use-config-provider.js +1 -1
  75. package/dist/es/crud/components/action-button-group.js +1 -1
  76. package/dist/es/crud/components/index.js +1 -1
  77. package/dist/es/crud/components/main.js +1 -1
  78. package/dist/es/crud/components/mutation-holder.js +1 -1
  79. package/dist/es/crud/components/operation-button-group.js +1 -1
  80. package/dist/es/crud/components/scene-form.js +22 -22
  81. package/dist/es/crud/components/selection-indicator.js +1 -1
  82. package/dist/es/crud/components/toolbar-actions.js +1 -1
  83. package/dist/es/crud/components/toolbar.js +1 -1
  84. package/dist/es/crud/event.js +1 -1
  85. package/dist/es/crud/helpers.js +1 -1
  86. package/dist/es/crud/hooks/index.js +1 -1
  87. package/dist/es/crud/hooks/use-query-observer.js +1 -1
  88. package/dist/es/crud/hooks/use-search-values.js +1 -1
  89. package/dist/es/crud/hooks/use-selected-rows.js +1 -1
  90. package/dist/es/crud/index.js +17 -16
  91. package/dist/es/crud/store.js +1 -1
  92. package/dist/es/crud/styles.js +1 -1
  93. package/dist/es/crud-page/index.js +1 -1
  94. package/dist/es/date-picker/index.js +1 -1
  95. package/dist/es/descriptions/index.js +1 -1
  96. package/dist/es/divider/index.js +1 -1
  97. package/dist/es/drawer/index.js +1 -1
  98. package/dist/es/dropdown/index.js +1 -1
  99. package/dist/es/dynamic-icon/index.js +1 -1
  100. package/dist/es/dynamic-icon/placeholder-icon.js +1 -1
  101. package/dist/es/dynamic-icon/unknown-icon.js +1 -1
  102. package/dist/es/empty/empty.js +1 -1
  103. package/dist/es/empty/index.js +1 -1
  104. package/dist/es/flex/index.js +1 -1
  105. package/dist/es/flex-card/index.js +1 -1
  106. package/dist/es/flex-card/styles.js +1 -1
  107. package/dist/es/flip-text/index.js +1 -1
  108. package/dist/es/float-button/index.js +1 -1
  109. package/dist/es/form/components/form.js +1 -1
  110. package/dist/es/form/components/index.js +1 -1
  111. package/dist/es/form/components/reset-button.js +1 -1
  112. package/dist/es/form/components/submit-button.js +1 -1
  113. package/dist/es/form/contexts/form-context.js +1 -1
  114. package/dist/es/form/contexts/form-layout.js +1 -1
  115. package/dist/es/form/contexts/index.js +1 -1
  116. package/dist/es/form/fields/auto-complete/index.js +1 -1
  117. package/dist/es/form/fields/bool/index.js +1 -1
  118. package/dist/es/form/fields/cascader/index.js +1 -1
  119. package/dist/es/form/fields/checkbox/index.js +1 -1
  120. package/dist/es/form/fields/color-picker/index.js +1 -1
  121. package/dist/es/form/fields/date-picker/index.js +1 -1
  122. package/dist/es/form/fields/date-range-picker/index.js +1 -1
  123. package/dist/es/form/fields/index.js +1 -1
  124. package/dist/es/form/fields/input/index.js +1 -1
  125. package/dist/es/form/fields/input-number/index.js +1 -1
  126. package/dist/es/form/fields/mentions/index.js +1 -1
  127. package/dist/es/form/fields/password/index.js +1 -1
  128. package/dist/es/form/fields/radio/index.js +1 -1
  129. package/dist/es/form/fields/rate/index.js +1 -1
  130. package/dist/es/form/fields/select/index.js +1 -1
  131. package/dist/es/form/fields/slider/index.js +1 -1
  132. package/dist/es/form/fields/textarea/index.js +1 -1
  133. package/dist/es/form/fields/time-picker/index.js +1 -1
  134. package/dist/es/form/fields/time-range-picker/index.js +1 -1
  135. package/dist/es/form/fields/transfer/index.js +1 -1
  136. package/dist/es/form/fields/tree-select/index.js +1 -1
  137. package/dist/es/form/fields/upload/index.js +1 -1
  138. package/dist/es/form/form-actions.js +1 -1
  139. package/dist/es/form/form.js +1 -1
  140. package/dist/es/form/helpers/create-field.js +7 -6
  141. package/dist/es/form/helpers/index.js +1 -1
  142. package/dist/es/form/helpers/with-form-item.js +1 -1
  143. package/dist/es/form/hooks/use-form-item-props.js +1 -1
  144. package/dist/es/form/hooks/use-label-width.js +1 -1
  145. package/dist/es/form/index.js +1 -1
  146. package/dist/es/form/use-form.js +1 -1
  147. package/dist/es/form-drawer/index.js +1 -1
  148. package/dist/es/form-modal/index.js +1 -1
  149. package/dist/es/grid/context.js +1 -1
  150. package/dist/es/grid/grid-item.js +1 -1
  151. package/dist/es/grid/hooks/index.js +1 -1
  152. package/dist/es/grid/hooks/use-container-breakpoints.js +1 -1
  153. package/dist/es/grid/hooks/use-container-width.js +1 -1
  154. package/dist/es/grid/hooks/use-grid-collapsed.js +1 -1
  155. package/dist/es/grid/hooks/use-normalized-gap.js +1 -1
  156. package/dist/es/grid/hooks/use-responsive-breakpoint.js +1 -1
  157. package/dist/es/grid/hooks/use-responsive-value.js +1 -1
  158. package/dist/es/grid/index.js +1 -1
  159. package/dist/es/grid/styles.js +1 -1
  160. package/dist/es/group/index.js +1 -1
  161. package/dist/es/icon/index.js +1 -1
  162. package/dist/es/icon-button/index.js +1 -1
  163. package/dist/es/image/index.js +1 -1
  164. package/dist/es/index.js +3 -3
  165. package/dist/es/input/index.js +1 -1
  166. package/dist/es/input-number/index.js +1 -1
  167. package/dist/es/keyboard/index.js +1 -1
  168. package/dist/es/list/index.js +1 -1
  169. package/dist/es/loader/index.js +1 -1
  170. package/dist/es/logo-icon/index.js +1 -1
  171. package/dist/es/mentions/index.js +1 -1
  172. package/dist/es/menu/index.js +1 -1
  173. package/dist/es/modal/index.js +1 -1
  174. package/dist/es/modal/modal.js +1 -1
  175. package/dist/es/operation-button/index.js +1 -1
  176. package/dist/es/page/components/aside-panel.js +1 -1
  177. package/dist/es/page/components/index.js +1 -1
  178. package/dist/es/page/components/resize-handle.js +1 -1
  179. package/dist/es/page/components/scroll-content.js +1 -1
  180. package/dist/es/page/hooks/index.js +1 -1
  181. package/dist/es/page/hooks/use-page-key.js +1 -1
  182. package/dist/es/page/hooks/use-resize.js +1 -1
  183. package/dist/es/page/index.js +1 -1
  184. package/dist/es/page/styles.js +1 -1
  185. package/dist/es/page/viewport-context.js +1 -1
  186. package/dist/es/pagination/index.js +1 -1
  187. package/dist/es/permission-gate/index.js +1 -1
  188. package/dist/es/popconfirm/index.js +1 -1
  189. package/dist/es/popover/index.js +1 -1
  190. package/dist/es/pro-search/components/advanced-search-toggler.js +1 -1
  191. package/dist/es/pro-search/components/advanced-search.js +1 -1
  192. package/dist/es/pro-search/components/index.js +1 -1
  193. package/dist/es/pro-search/components/search-actions.js +1 -1
  194. package/dist/es/pro-search/index.js +1 -1
  195. package/dist/es/pro-search/styles.js +1 -1
  196. package/dist/es/pro-table/components/column-setting-item.js +1 -1
  197. package/dist/es/pro-table/components/column-settings-panel.js +1 -1
  198. package/dist/es/pro-table/components/column-settings.js +1 -1
  199. package/dist/es/pro-table/components/index.js +1 -1
  200. package/dist/es/pro-table/components/operation-button-group.js +1 -1
  201. package/dist/es/pro-table/components/ref.js +1 -1
  202. package/dist/es/pro-table/components/table-subscriber.js +1 -1
  203. package/dist/es/pro-table/components/table-summary.js +1 -1
  204. package/dist/es/pro-table/components/table-title.js +1 -1
  205. package/dist/es/pro-table/components/table.js +1 -1
  206. package/dist/es/pro-table/components/width-popover.js +1 -1
  207. package/dist/es/pro-table/context.js +1 -1
  208. package/dist/es/pro-table/event.js +1 -1
  209. package/dist/es/pro-table/hooks/index.js +1 -1
  210. package/dist/es/pro-table/hooks/use-column-settings-persistence.js +1 -1
  211. package/dist/es/pro-table/hooks/use-row-selection.js +1 -1
  212. package/dist/es/pro-table/hooks/use-table-columns.js +1 -1
  213. package/dist/es/pro-table/index.js +1 -1
  214. package/dist/es/pro-table/store.js +1 -1
  215. package/dist/es/progress/index.js +1 -1
  216. package/dist/es/qrcode/index.js +1 -1
  217. package/dist/es/radio/index.js +1 -1
  218. package/dist/es/rate/index.js +1 -1
  219. package/dist/es/result/index.js +1 -1
  220. package/dist/es/row/index.js +1 -1
  221. package/dist/es/scroll-area/index.js +1 -1
  222. package/dist/es/scroll-area/styles.js +1 -1
  223. package/dist/es/segmented/index.js +1 -1
  224. package/dist/es/select/hooks/index.js +1 -1
  225. package/dist/es/select/hooks/use-data-options-select.js +1 -1
  226. package/dist/es/select/hooks/use-dictionary-options-select.js +1 -1
  227. package/dist/es/select/index.js +1 -1
  228. package/dist/es/skeleton/index.js +1 -1
  229. package/dist/es/slider/index.js +1 -1
  230. package/dist/es/space/index.js +1 -1
  231. package/dist/es/space/space.js +1 -1
  232. package/dist/es/sparkles-text/index.js +1 -1
  233. package/dist/es/sparkles-text/sparkle.js +1 -1
  234. package/dist/es/spin/index.js +1 -1
  235. package/dist/es/split-text/index.js +1 -1
  236. package/dist/es/splitter/index.js +1 -1
  237. package/dist/es/stack/index.js +1 -1
  238. package/dist/es/statistic/index.js +1 -1
  239. package/dist/es/steps/index.js +1 -1
  240. package/dist/es/switch/index.js +1 -1
  241. package/dist/es/table/index.js +1 -1
  242. package/dist/es/table/use-pagination-props.js +1 -1
  243. package/dist/es/tabs/index.js +1 -1
  244. package/dist/es/tag/index.js +1 -1
  245. package/dist/es/time-picker/index.js +1 -1
  246. package/dist/es/timeline/index.js +1 -1
  247. package/dist/es/tooltip/index.js +1 -1
  248. package/dist/es/tour/index.js +1 -1
  249. package/dist/es/transfer/index.js +1 -1
  250. package/dist/es/tree/hooks/index.js +1 -1
  251. package/dist/es/tree/hooks/use-data-options-tree.js +1 -1
  252. package/dist/es/tree/index.js +1 -1
  253. package/dist/es/tree-select/hooks/index.js +1 -1
  254. package/dist/es/tree-select/hooks/use-data-options-tree-select.js +1 -1
  255. package/dist/es/tree-select/index.js +1 -1
  256. package/dist/es/typing-animation/index.js +1 -1
  257. package/dist/es/typography/index.js +1 -1
  258. package/dist/es/upload/index.js +1 -1
  259. package/dist/es/watermark/index.js +1 -1
  260. package/dist/types/crud/components/scene-form.d.ts +1 -1
  261. package/dist/types/crud/index.d.ts +1 -1
  262. package/dist/types/crud/props.d.ts +7 -1
  263. package/dist/types/crud/types.d.ts +6 -1
  264. package/dist/types/crud-page/index.d.ts +2 -1
  265. package/dist/types/crud-page/props.d.ts +2 -1
  266. package/dist/types/form/helpers/create-field.d.ts +50 -28
  267. package/dist/types/form/helpers/index.d.ts +2 -2
  268. package/dist/types/form/index.d.ts +1 -1
  269. package/dist/types/index.d.ts +1 -1
  270. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { useMemo as e } from "react";
3
3
  //#region src/pro-table/hooks/use-row-selection.ts
4
4
  function t(t, n, r) {
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { globalCssVars as e } from "../../_base/constants/css-vars.js";
3
3
  import { Group as t } from "../../group/index.js";
4
4
  import { getColumnId as n, useProTableStore as r } from "../store.js";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Stack as e } from "../stack/index.js";
3
3
  import { ProTableStoreProvider as t } from "./store.js";
4
4
  import { ColumnSettingsStorageKeyProvider as n } from "./context.js";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { pageSizeOptions as e } from "../table/use-pagination-props.js";
3
3
  import { createEventEmitter as t } from "./event.js";
4
4
  import { isFunction as n, isNumber as r } from "@vef-framework-react/shared";
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Progress as e } from "antd";
3
3
  export { e as Progress };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { QRCode as e } from "antd";
3
3
  export { e as QRCode };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Radio as e } from "antd";
3
3
  export { e as Radio };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Rate as e } from "antd";
3
3
  export { e as Rate };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Result as e } from "antd";
3
3
  export { e as Result };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Row as e } from "antd";
3
3
  export { e as Row };
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { getSpacingValue as e } from "../_base/helpers/common.js";
3
3
  import { root as t, scrollbar as n, thumb as r, viewport as i } from "./styles.js";
4
4
  import { jsx as a, jsxs as o } from "@emotion/react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "@emotion/react";
3
3
  //#region src/scroll-area/styles.ts
4
4
  function e() {
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Segmented as e } from "antd";
3
3
  export { e as Segmented };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./use-data-options-select.js";
3
3
  import "./use-dictionary-options-select.js";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Loader as e } from "../../loader/index.js";
3
3
  import { jsx as t } from "@emotion/react/jsx-runtime";
4
4
  import { useDataOptionsQuery as n } from "@vef-framework-react/hooks";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Loader as e } from "../../loader/index.js";
3
3
  import { jsx as t } from "@emotion/react/jsx-runtime";
4
4
  import { isArray as n, withPinyin as r } from "@vef-framework-react/shared";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./hooks/use-data-options-select.js";
3
3
  import "./hooks/use-dictionary-options-select.js";
4
4
  import { Select as e } from "antd";
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Skeleton as e } from "antd";
3
3
  export { e as Skeleton };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Slider as e } from "antd";
3
3
  export { e as Slider };
@@ -1,2 +1,2 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./space.js";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { jsx as e } from "@emotion/react/jsx-runtime";
3
3
  import { Space as t } from "antd";
4
4
  //#region src/space/space.tsx
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Sparkle as e } from "./sparkle.js";
3
3
  import { jsx as t, jsxs as n } from "@emotion/react/jsx-runtime";
4
4
  import { useEffect as r, useState as i } from "react";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { jsx as e } from "@emotion/react/jsx-runtime";
3
3
  import "@emotion/react";
4
4
  import { motion as t } from "@vef-framework-react/core";
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Spin as e } from "antd";
3
3
  export { e as Spin };
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { createElement as e, useEffect as t, useRef as n, useState as r } from "react";
3
3
  import { clsx as i } from "@vef-framework-react/core";
4
4
  import { useGSAP as a } from "@gsap/react";
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Splitter as e } from "antd";
3
3
  export { e as Splitter };
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Flex as e } from "../flex/index.js";
3
3
  import { jsx as t } from "@emotion/react/jsx-runtime";
4
4
  //#region src/stack/index.tsx
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Statistic as e } from "antd";
3
3
  export { e as Statistic };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Steps as e } from "antd";
3
3
  export { e as Steps };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Switch as e } from "antd";
3
3
  export { e as Switch };
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { fullHeight as e } from "../_base/styles/common.js";
3
3
  import "./use-pagination-props.js";
4
4
  import { jsx as t } from "@emotion/react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Fragment as e, jsx as t, jsxs as n } from "@emotion/react/jsx-runtime";
3
3
  import { useMemo as r } from "react";
4
4
  //#region src/table/use-pagination-props.tsx
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Tabs as e } from "antd";
3
3
  export { e as Tabs };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Tag as e } from "antd";
3
3
  export { e as Tag };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { TimePicker as e } from "antd";
3
3
  export { e as TimePicker };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Timeline as e } from "antd";
3
3
  export { e as Timeline };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Tooltip as e } from "antd";
3
3
  export { e as Tooltip };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Tour as e } from "antd";
3
3
  export { e as Tour };
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Transfer as e } from "antd";
3
3
  export { e as Transfer };
@@ -1,2 +1,2 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./use-data-options-tree.js";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { filterTreeWithAncestors as e, isString as t } from "@vef-framework-react/shared";
3
3
  import { useDataOptionsQuery as n } from "@vef-framework-react/hooks";
4
4
  import { useEffect as r, useEffectEvent as i, useMemo as a, useState as o } from "react";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./hooks/use-data-options-tree.js";
3
3
  import { Tree as e } from "antd";
4
4
  export { e as Tree };
@@ -1,2 +1,2 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./use-data-options-tree-select.js";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Loader as e } from "../../loader/index.js";
3
3
  import { jsx as t } from "@emotion/react/jsx-runtime";
4
4
  import { isString as n } from "@vef-framework-react/shared";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import "./hooks/use-data-options-tree-select.js";
3
3
  import { TreeSelect as e } from "antd";
4
4
  export { e as TreeSelect };
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { jsx as e } from "@emotion/react/jsx-runtime";
3
3
  import { Children as t, useEffect as n, useRef as r, useState as i } from "react";
4
4
  import { motion as a, useInView as o } from "@vef-framework-react/core";
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Typography as e } from "antd";
3
3
  //#region src/typography/index.ts
4
4
  var { Text: t, Link: n, Title: r, Paragraph: i } = e;
@@ -1,4 +1,4 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { mergeProps as e } from "../_base/helpers/props.js";
3
3
  import { Button as t } from "../button/index.js";
4
4
  import { Icon as n } from "../icon/index.js";
@@ -1,3 +1,3 @@
1
- /*! @vef-framework-react/components v2.1.10 made by Venus | 2026-04-27T08:58:17.180Z */
1
+ /*! @vef-framework-react/components v2.1.12 made by Venus | 2026-05-07T08:00:46.762Z */
2
2
  import { Watermark as e } from "antd";
3
3
  export { e as Watermark };
@@ -1,7 +1,7 @@
1
1
  import { AnyObject } from '@vef-framework-react/shared';
2
2
  import { ReactNode } from 'react';
3
3
  import { BaseCrudProps } from '../props';
4
- interface SceneFormProps<TSceneFormValues extends AnyObject> extends Pick<BaseCrudProps<AnyObject, AnyObject, TSceneFormValues, AnyObject>, "renderForm" | "formMutationFns" | "formActionsRenderers" | "beforeFormSubmit" | "afterFormSubmit" | "mutationMeta"> {
4
+ interface SceneFormProps<TSceneFormValues extends AnyObject> extends Pick<BaseCrudProps<AnyObject, AnyObject, TSceneFormValues, AnyObject>, "renderForm" | "formComponent" | "formMutationFns" | "formActionsRenderers" | "beforeFormSubmit" | "afterFormSubmit" | "mutationMeta"> {
5
5
  }
6
6
  export declare const SceneForm: <TSceneFormValues extends AnyObject>(props: SceneFormProps<TSceneFormValues>) => ReactNode;
7
7
  export {};
@@ -1,6 +1,6 @@
1
1
  import { AnyObject } from '@vef-framework-react/shared';
2
2
  import { CrudProps } from './props';
3
- export declare function Crud<TRow extends AnyObject, TSearchValues extends AnyObject, TSceneFormValues extends AnyObject, TParams extends AnyObject = never>({ storageKey, defaultSearchValues, advancedSearch, sceneDefaultFormValues, renderForm, formMutationFns, formActionsRenderers, beforeFormSubmit, afterFormSubmit, deleteMutationFn, deleteManyMutationFn, mutationMeta, rowSelection, rowKey, ...bodyProps }: CrudProps<TRow, TSearchValues, TSceneFormValues, TParams>): import("@emotion/react/jsx-runtime").JSX.Element;
3
+ export declare function Crud<TRow extends AnyObject, TSearchValues extends AnyObject, TSceneFormValues extends AnyObject, TParams extends AnyObject = never>({ storageKey, defaultSearchValues, advancedSearch, sceneDefaultFormValues, renderForm, formComponent, formMutationFns, formActionsRenderers, beforeFormSubmit, afterFormSubmit, deleteMutationFn, deleteManyMutationFn, mutationMeta, rowSelection, rowKey, ...bodyProps }: CrudProps<TRow, TSearchValues, TSceneFormValues, TParams>): import("@emotion/react/jsx-runtime").JSX.Element;
4
4
  export type { ActionButtonGroupProps as CrudActionButtonGroupProps, OperationButtonGroupProps as CrudOperationButtonGroupProps } from './components';
5
5
  export { createCrudKit } from './helpers';
6
6
  export type { CrudKit } from './helpers';
@@ -1,6 +1,6 @@
1
1
  import { ApiResult, MutationFunction, MutationMeta, PaginationResult, QueryFunction } from '@vef-framework-react/core';
2
2
  import { AnyObject, Awaitable, DeepKeys, EmptyObject, If, IsNever, Key, MaybeUndefined, PartialDeep } from '@vef-framework-react/shared';
3
- import { ReactNode } from 'react';
3
+ import { ElementType, ReactNode } from 'react';
4
4
  import { ColumnSettingsProp, OperationColumnConfig, ProTableProps, RowSelectionConfig } from '../pro-table';
5
5
  import { TableColumn } from '../table';
6
6
  import { CrudFormActionsRenderers, CrudFormMutationFns, CrudFormScene, PaginatedQueryParams, QueryParams } from './types';
@@ -84,6 +84,12 @@ export interface BaseCrudProps<TRow extends AnyObject, TSearchValues extends Any
84
84
  * Default form values map for scenes
85
85
  */
86
86
  sceneDefaultFormValues?: PartialDeep<NoInfer<TSceneFormValues>>;
87
+ /**
88
+ * The element type for the inner form wrapper of the scene form drawer/modal.
89
+ *
90
+ * @default "div"
91
+ */
92
+ formComponent?: ElementType;
87
93
  /**
88
94
  * Render function to provide a form for the specified scene
89
95
  */
@@ -13,8 +13,12 @@ export type CrudFormScene<TSceneFormValues extends AnyObject> = keyof TSceneForm
13
13
  export type CrudFormMutationFns<TSceneFormValues extends AnyObject> = {
14
14
  [Scene in CrudFormScene<TSceneFormValues>]: MutationFunction<ApiResult<unknown>, TSceneFormValues[Scene]>;
15
15
  };
16
+ interface CrudFormActionDefaults {
17
+ submitButton: ReactNode;
18
+ resetButton: ReactNode;
19
+ }
16
20
  export type CrudFormActionsRenderers<TSceneFormValues extends AnyObject> = {
17
- [Scene in CrudFormScene<TSceneFormValues>]?: (formApi: FormApi<TSceneFormValues[Scene]>) => ReactNode;
21
+ [Scene in CrudFormScene<TSceneFormValues>]?: (formApi: FormApi<TSceneFormValues[Scene]>, defaults: CrudFormActionDefaults) => ReactNode;
18
22
  };
19
23
  /**
20
24
  * Query parameters wrapper type for non-paginated queries.
@@ -53,3 +57,4 @@ export interface CrudFormDrawerConfig {
53
57
  */
54
58
  placement?: DrawerProps["placement"];
55
59
  }
60
+ export {};
@@ -1,3 +1,4 @@
1
+ import { AnyObject } from '@vef-framework-react/shared';
1
2
  import { CrudPageProps } from './props';
2
- export declare function CrudPage<TRow extends object, TSearchValues extends object, TSceneFormValues extends Record<string, object>, TParams extends object = never>({ leftAside, leftAsideWidth, rightAside, rightAsideWidth, header, headerClassName, headerPosition, footer, footerClassName, footerPosition, ...crudProps }: CrudPageProps<TRow, TSearchValues, TSceneFormValues, TParams>): import("@emotion/react/jsx-runtime").JSX.Element;
3
+ export declare function CrudPage<TRow extends AnyObject, TSearchValues extends AnyObject, TSceneFormValues extends AnyObject, TParams extends AnyObject = never>({ leftAside, leftAsideWidth, rightAside, rightAsideWidth, header, headerClassName, headerPosition, footer, footerClassName, footerPosition, ...crudProps }: CrudPageProps<TRow, TSearchValues, TSceneFormValues, TParams>): import("@emotion/react/jsx-runtime").JSX.Element;
3
4
  export type { CrudPageProps } from './props';
@@ -1,3 +1,4 @@
1
+ import { AnyObject } from '@vef-framework-react/shared';
1
2
  import { ReactNode } from 'react';
2
3
  import { CrudProps } from '../crud';
3
4
  import { AsideWidth, Position } from '../page';
@@ -9,7 +10,7 @@ import { AsideWidth, Position } from '../page';
9
10
  * @template TSceneFormValues - A map of scene key to its form values type
10
11
  * @template TParams - Additional query parameters type
11
12
  */
12
- export type CrudPageProps<TRow extends object, TSearchValues extends object, TSceneFormValues extends Record<string, object>, TParams extends object = never> = CrudProps<TRow, TSearchValues, TSceneFormValues, TParams> & {
13
+ export type CrudPageProps<TRow extends AnyObject, TSearchValues extends AnyObject, TSceneFormValues extends AnyObject, TParams extends AnyObject = never> = CrudProps<TRow, TSearchValues, TSceneFormValues, TParams> & {
13
14
  /**
14
15
  * The left aside content of the page
15
16
  */
@@ -1,61 +1,75 @@
1
- import { DeepKeys, DeepValue, FieldAsyncValidateOrFn, FieldValidateOrFn, FieldValidators } from '@tanstack/react-form';
1
+ import { DeepKeys, DeepValue, FieldAsyncValidateOrFn, FieldValidateOrFn, UseFieldOptionsBound } from '@tanstack/react-form';
2
2
  import { AnyObject, MaybeUndefined } from '@vef-framework-react/shared';
3
3
  import { ReactNode } from 'react';
4
4
  import { fieldComponents } from '../fields';
5
5
  type MaybeFieldSync<T, N extends DeepKeys<T>> = MaybeUndefined<FieldValidateOrFn<T, N, DeepValue<T, N>>>;
6
6
  type MaybeFieldAsync<T, N extends DeepKeys<T>> = MaybeUndefined<FieldAsyncValidateOrFn<T, N, DeepValue<T, N>>>;
7
7
  /**
8
- * Simplified `FieldValidators` with all `TOn*` slots widened to their upper bounds.
9
- * Accepts zod schemas, validator functions, or `undefined` for each lifecycle event.
8
+ * Bound `<form.AppField>` props for a known field name, with all `TOn*`
9
+ * validator slots widened to their upper bounds. The `name` field is omitted
10
+ * because `createField` takes it as the first argument.
10
11
  */
11
- type FieldValidatorsFor<T, N extends DeepKeys<T>> = FieldValidators<T, N, DeepValue<T, N>, MaybeFieldSync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>>;
12
- declare const ErasedValidatorBrand: unique symbol;
12
+ type AppFieldOptionsFor<T, N extends DeepKeys<T>> = Omit<UseFieldOptionsBound<T, N, DeepValue<T, N>, MaybeFieldSync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>, MaybeFieldSync<T, N>, MaybeFieldAsync<T, N>>, "name">;
13
+ declare const ErasedFieldOptionsBrand: unique symbol;
13
14
  /**
14
- * Opaque wrapper for type-erased field validators. Retains `TFormData`
15
- * association but hides the specific field name. Cannot be constructed
16
- * directly — use `createField` to produce values of this type.
15
+ * Opaque wrapper for type-erased `<form.AppField>` options. Retains the
16
+ * `TFormData` association while hiding the specific field name. Cannot be
17
+ * constructed directly — use `createField` to produce values of this type.
17
18
  */
18
- export interface ErasedValidators<TFormData> {
19
- readonly [ErasedValidatorBrand]: TFormData;
19
+ export interface ErasedFieldOptions<TFormData> {
20
+ readonly [ErasedFieldOptionsBrand]: TFormData;
20
21
  }
21
22
  /**
22
- * Restore erased validators to their specific field type at the render site.
23
+ * Restore erased field options to their specific field type at the render
24
+ * site. Always returns an object (never undefined), so the result can be
25
+ * spread onto `<form.AppField>` without an extra null check.
23
26
  *
24
27
  * @example
25
28
  * ```tsx
26
29
  * items.map(item => (
27
30
  * <form.AppField
31
+ * key={item.name}
28
32
  * name={item.name}
29
- * validators={restoreValidators(item.validators)}
33
+ * {...restoreFieldOptions(item.fieldOptions)}
30
34
  * >
31
35
  * {item.render}
32
36
  * </form.AppField>
33
37
  * ));
34
38
  * ```
35
39
  */
36
- export declare function restoreValidators<T, N extends DeepKeys<T>>(validators: MaybeUndefined<ErasedValidators<T>>): MaybeUndefined<FieldValidatorsFor<T, N>>;
37
- interface FormFieldOptions<T, N extends DeepKeys<T>, TMeta extends AnyObject = AnyObject> {
38
- validators?: FieldValidatorsFor<T, N>;
40
+ export declare function restoreFieldOptions<T, N extends DeepKeys<T>>(options: MaybeUndefined<ErasedFieldOptions<T>>): AppFieldOptionsFor<T, N>;
41
+ /**
42
+ * Field definition input accepted by `createField`. Extends every bound
43
+ * `<form.AppField>` prop (validators, listeners, defaultValue, asyncDebounceMs,
44
+ * mode, defaultMeta, …) and adds two project-specific slots:
45
+ *
46
+ * - `render`: the render-prop body, scoped to the injected field components.
47
+ * - `renderMeta`: arbitrary metadata consumed by the surrounding map (e.g.
48
+ * layout span, visibility). Named `renderMeta` to avoid confusion with
49
+ * TanStack's `defaultMeta`, which seeds `FieldMeta` state.
50
+ */
51
+ type FormFieldOptions<T, N extends DeepKeys<T>, TMeta extends AnyObject = AnyObject> = AppFieldOptionsFor<T, N> & {
39
52
  render: (field: typeof fieldComponents) => ReactNode;
40
- meta?: TMeta;
41
- }
53
+ renderMeta?: TMeta;
54
+ };
42
55
  /**
43
- * Type-erased form field item for homogeneous array storage.
44
- * Type checking is performed at the `createField` call site; the erased
45
- * representation is safe to iterate, filter, and reorder without losing safety.
56
+ * Type-erased form field item for homogeneous array storage. Type checking
57
+ * happens at the `createField` call site; the erased representation is safe
58
+ * to iterate, filter, and reorder without losing safety.
46
59
  *
47
- * Validators use an opaque branded type (`ErasedValidators`) instead of `any`.
48
- * Use `restoreValidators(item.validators)` at the render site to pass them
49
- * to `<AppField>`.
60
+ * Field-name-dependent options live inside `fieldOptions` as an opaque
61
+ * branded value (`ErasedFieldOptions`). Use `restoreFieldOptions(item.fieldOptions)`
62
+ * at the render site to spread them onto `<form.AppField>`.
50
63
  *
51
64
  * `TMeta` allows attaching arbitrary typed metadata (e.g. layout, visibility)
52
- * to each field item. Defaults to `AnyObject` for zero-overhead when unused.
65
+ * to each field item via `renderMeta`. Defaults to `AnyObject` for zero
66
+ * overhead when unused.
53
67
  */
54
68
  export interface FormFieldItem<TFormData, TMeta extends AnyObject = AnyObject> {
55
69
  name: DeepKeys<TFormData>;
56
- validators?: ErasedValidators<TFormData>;
70
+ fieldOptions?: ErasedFieldOptions<TFormData>;
57
71
  render: (field: typeof fieldComponents) => ReactNode;
58
- meta?: TMeta;
72
+ renderMeta?: TMeta;
59
73
  }
60
74
  /**
61
75
  * Type-safe field definition factory scoped to a specific form data type.
@@ -68,15 +82,23 @@ export interface FormFieldItem<TFormData, TMeta extends AnyObject = AnyObject> {
68
82
  *
69
83
  * const items: FormFieldItem<StaffParams, FieldMeta>[] = [
70
84
  * createField("name", {
71
- * meta: { span: 12 },
72
85
  * validators: { onBlur: z.string("required").max(32) },
86
+ * listeners: {
87
+ * onChange: ({ value }) => track("staff_name_changed", { value }),
88
+ * },
89
+ * defaultValue: "",
90
+ * renderMeta: { span: 12 },
73
91
  * render: field => <field.Input required label="Name" />,
74
92
  * }),
75
93
  * ];
76
94
  *
77
95
  * // Render:
78
96
  * items.map(item => (
79
- * <AppField name={item.name} validators={restoreValidators(item.validators)}>
97
+ * <AppField
98
+ * key={item.name}
99
+ * name={item.name}
100
+ * {...restoreFieldOptions(item.fieldOptions)}
101
+ * >
80
102
  * {item.render}
81
103
  * </AppField>
82
104
  * ));
@@ -1,3 +1,3 @@
1
- export { createField, restoreValidators } from './create-field';
2
- export type { CreateFieldFn, ErasedValidators, FormFieldItem } from './create-field';
1
+ export { createField, restoreFieldOptions } from './create-field';
2
+ export type { CreateFieldFn, ErasedFieldOptions, FormFieldItem } from './create-field';
3
3
  export { withFormItem } from './with-form-item';
@@ -2,7 +2,7 @@ export type * from './components';
2
2
  export type * from './fields';
3
3
  export { createFormOptions, useFormContext, useFormStore, withFieldGroup, withForm } from './form';
4
4
  export { DefaultResetButton, DefaultSubmitButton, FormActions, type FormActionsProps } from './form-actions';
5
- export { restoreValidators } from './helpers';
5
+ export { restoreFieldOptions } from './helpers';
6
6
  export type { FormFieldItem } from './helpers';
7
7
  export type * from './types';
8
8
  export { useForm } from './use-form';
@@ -37,7 +37,7 @@ export { Flex, type FlexProps } from './flex';
37
37
  export { FlexCard, type FlexCardProps } from './flex-card';
38
38
  export { FlipText, type FlipTextProps } from './flip-text';
39
39
  export { FloatButton, type FloatButtonProps } from './float-button';
40
- export { createFormOptions, restoreValidators, useForm, useFormContext, useFormStore, withFieldGroup, withForm } from './form';
40
+ export { createFormOptions, restoreFieldOptions, useForm, useFormContext, useFormStore, withFieldGroup, withForm } from './form';
41
41
  export type * from './form';
42
42
  export { FormDrawer, type FormDrawerProps } from './form-drawer';
43
43
  export { FormModal, type FormModalProps } from './form-modal';