@pipe0/react 0.0.5 → 0.0.7

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 (307) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +69 -2
  3. package/dist/components/compound/pipe-catalog/active-filters.d.mts +7 -10
  4. package/dist/components/compound/pipe-catalog/active-filters.d.mts.map +1 -1
  5. package/dist/components/compound/pipe-catalog/active-filters.mjs +22 -18
  6. package/dist/components/compound/pipe-catalog/active-filters.mjs.map +1 -1
  7. package/dist/components/compound/pipe-catalog/card.d.mts +3 -11
  8. package/dist/components/compound/pipe-catalog/card.d.mts.map +1 -1
  9. package/dist/components/compound/pipe-catalog/card.mjs +30 -25
  10. package/dist/components/compound/pipe-catalog/card.mjs.map +1 -1
  11. package/dist/components/compound/pipe-catalog/category-filter.d.mts +7 -10
  12. package/dist/components/compound/pipe-catalog/category-filter.d.mts.map +1 -1
  13. package/dist/components/compound/pipe-catalog/category-filter.mjs +18 -9
  14. package/dist/components/compound/pipe-catalog/category-filter.mjs.map +1 -1
  15. package/dist/components/compound/pipe-catalog/column-filter.d.mts +7 -13
  16. package/dist/components/compound/pipe-catalog/column-filter.d.mts.map +1 -1
  17. package/dist/components/compound/pipe-catalog/column-filter.mjs +13 -7
  18. package/dist/components/compound/pipe-catalog/column-filter.mjs.map +1 -1
  19. package/dist/components/compound/pipe-catalog/empty.d.mts +5 -10
  20. package/dist/components/compound/pipe-catalog/empty.d.mts.map +1 -1
  21. package/dist/components/compound/pipe-catalog/empty.mjs +12 -14
  22. package/dist/components/compound/pipe-catalog/empty.mjs.map +1 -1
  23. package/dist/components/compound/pipe-catalog/index.d.mts +1 -1
  24. package/dist/components/compound/pipe-catalog/input-field-filter.d.mts +3 -3
  25. package/dist/components/compound/pipe-catalog/input-field-filter.d.mts.map +1 -1
  26. package/dist/components/compound/pipe-catalog/input-field-filter.mjs.map +1 -1
  27. package/dist/components/compound/pipe-catalog/list.d.mts +9 -24
  28. package/dist/components/compound/pipe-catalog/list.d.mts.map +1 -1
  29. package/dist/components/compound/pipe-catalog/list.mjs +18 -14
  30. package/dist/components/compound/pipe-catalog/list.mjs.map +1 -1
  31. package/dist/components/compound/pipe-catalog/output-field-filter.d.mts +3 -3
  32. package/dist/components/compound/pipe-catalog/output-field-filter.d.mts.map +1 -1
  33. package/dist/components/compound/pipe-catalog/output-field-filter.mjs.map +1 -1
  34. package/dist/components/compound/pipe-catalog/provider-filter.d.mts +3 -3
  35. package/dist/components/compound/pipe-catalog/provider-filter.d.mts.map +1 -1
  36. package/dist/components/compound/pipe-catalog/provider-filter.mjs.map +1 -1
  37. package/dist/components/compound/pipe-catalog/root.d.mts +6 -6
  38. package/dist/components/compound/pipe-catalog/root.d.mts.map +1 -1
  39. package/dist/components/compound/pipe-catalog/root.mjs +2 -2
  40. package/dist/components/compound/pipe-catalog/root.mjs.map +1 -1
  41. package/dist/components/compound/pipe-catalog/search-filter.d.mts +6 -9
  42. package/dist/components/compound/pipe-catalog/search-filter.d.mts.map +1 -1
  43. package/dist/components/compound/pipe-catalog/search-filter.mjs +10 -9
  44. package/dist/components/compound/pipe-catalog/search-filter.mjs.map +1 -1
  45. package/dist/components/compound/pipe-catalog/tag-filter.d.mts +3 -3
  46. package/dist/components/compound/pipe-catalog/tag-filter.d.mts.map +1 -1
  47. package/dist/components/compound/pipe-catalog/tag-filter.mjs.map +1 -1
  48. package/dist/components/compound/pipe-form/content.d.mts +7 -2
  49. package/dist/components/compound/pipe-form/content.d.mts.map +1 -1
  50. package/dist/components/compound/pipe-form/content.mjs +23 -25
  51. package/dist/components/compound/pipe-form/content.mjs.map +1 -1
  52. package/dist/components/compound/pipe-form/errors.d.mts +27 -0
  53. package/dist/components/compound/pipe-form/errors.d.mts.map +1 -0
  54. package/dist/components/compound/pipe-form/errors.mjs +48 -0
  55. package/dist/components/compound/pipe-form/errors.mjs.map +1 -0
  56. package/dist/components/compound/pipe-form/footer.d.mts +7 -7
  57. package/dist/components/compound/pipe-form/footer.d.mts.map +1 -1
  58. package/dist/components/compound/pipe-form/footer.mjs +11 -6
  59. package/dist/components/compound/pipe-form/footer.mjs.map +1 -1
  60. package/dist/components/compound/pipe-form/header.d.mts +7 -7
  61. package/dist/components/compound/pipe-form/header.d.mts.map +1 -1
  62. package/dist/components/compound/pipe-form/header.mjs +11 -6
  63. package/dist/components/compound/pipe-form/header.mjs.map +1 -1
  64. package/dist/components/compound/pipe-form/index.d.mts +2 -1
  65. package/dist/components/compound/pipe-form/root.d.mts +18 -11
  66. package/dist/components/compound/pipe-form/root.d.mts.map +1 -1
  67. package/dist/components/compound/pipe-form/root.mjs +21 -27
  68. package/dist/components/compound/pipe-form/root.mjs.map +1 -1
  69. package/dist/components/compound/pipe-form/submit-button.d.mts +15 -4
  70. package/dist/components/compound/pipe-form/submit-button.d.mts.map +1 -1
  71. package/dist/components/compound/pipe-form/submit-button.mjs +23 -8
  72. package/dist/components/compound/pipe-form/submit-button.mjs.map +1 -1
  73. package/dist/components/compound/pipe-form/title.d.mts +9 -8
  74. package/dist/components/compound/pipe-form/title.d.mts.map +1 -1
  75. package/dist/components/compound/pipe-form/title.mjs +11 -6
  76. package/dist/components/compound/pipe-form/title.mjs.map +1 -1
  77. package/dist/components/compound/search-catalog/active-filters.d.mts +7 -10
  78. package/dist/components/compound/search-catalog/active-filters.d.mts.map +1 -1
  79. package/dist/components/compound/search-catalog/active-filters.mjs +22 -18
  80. package/dist/components/compound/search-catalog/active-filters.mjs.map +1 -1
  81. package/dist/components/compound/search-catalog/card.d.mts +4 -12
  82. package/dist/components/compound/search-catalog/card.d.mts.map +1 -1
  83. package/dist/components/compound/search-catalog/card.mjs +33 -28
  84. package/dist/components/compound/search-catalog/card.mjs.map +1 -1
  85. package/dist/components/compound/search-catalog/category-filter.d.mts +8 -10
  86. package/dist/components/compound/search-catalog/category-filter.d.mts.map +1 -1
  87. package/dist/components/compound/search-catalog/category-filter.mjs +18 -9
  88. package/dist/components/compound/search-catalog/category-filter.mjs.map +1 -1
  89. package/dist/components/compound/search-catalog/column-filter.d.mts +7 -9
  90. package/dist/components/compound/search-catalog/column-filter.d.mts.map +1 -1
  91. package/dist/components/compound/search-catalog/column-filter.mjs +13 -7
  92. package/dist/components/compound/search-catalog/column-filter.mjs.map +1 -1
  93. package/dist/components/compound/search-catalog/empty.d.mts +5 -10
  94. package/dist/components/compound/search-catalog/empty.d.mts.map +1 -1
  95. package/dist/components/compound/search-catalog/empty.mjs +12 -14
  96. package/dist/components/compound/search-catalog/empty.mjs.map +1 -1
  97. package/dist/components/compound/search-catalog/index.d.mts +1 -1
  98. package/dist/components/compound/search-catalog/list.d.mts +9 -9
  99. package/dist/components/compound/search-catalog/list.d.mts.map +1 -1
  100. package/dist/components/compound/search-catalog/list.mjs +18 -14
  101. package/dist/components/compound/search-catalog/list.mjs.map +1 -1
  102. package/dist/components/compound/search-catalog/output-field-filter.d.mts +3 -3
  103. package/dist/components/compound/search-catalog/output-field-filter.d.mts.map +1 -1
  104. package/dist/components/compound/search-catalog/output-field-filter.mjs.map +1 -1
  105. package/dist/components/compound/search-catalog/provider-filter.d.mts +3 -3
  106. package/dist/components/compound/search-catalog/provider-filter.d.mts.map +1 -1
  107. package/dist/components/compound/search-catalog/provider-filter.mjs.map +1 -1
  108. package/dist/components/compound/search-catalog/root.d.mts +6 -6
  109. package/dist/components/compound/search-catalog/root.d.mts.map +1 -1
  110. package/dist/components/compound/search-catalog/root.mjs +2 -2
  111. package/dist/components/compound/search-catalog/root.mjs.map +1 -1
  112. package/dist/components/compound/search-catalog/search-filter.d.mts +6 -9
  113. package/dist/components/compound/search-catalog/search-filter.d.mts.map +1 -1
  114. package/dist/components/compound/search-catalog/search-filter.mjs +10 -9
  115. package/dist/components/compound/search-catalog/search-filter.mjs.map +1 -1
  116. package/dist/components/compound/search-catalog/tag-filter.d.mts +3 -3
  117. package/dist/components/compound/search-catalog/tag-filter.d.mts.map +1 -1
  118. package/dist/components/compound/search-catalog/tag-filter.mjs.map +1 -1
  119. package/dist/components/compound/search-form/content.d.mts +7 -2
  120. package/dist/components/compound/search-form/content.d.mts.map +1 -1
  121. package/dist/components/compound/search-form/content.mjs +23 -25
  122. package/dist/components/compound/search-form/content.mjs.map +1 -1
  123. package/dist/components/compound/search-form/errors.d.mts +27 -0
  124. package/dist/components/compound/search-form/errors.d.mts.map +1 -0
  125. package/dist/components/compound/search-form/errors.mjs +48 -0
  126. package/dist/components/compound/search-form/errors.mjs.map +1 -0
  127. package/dist/components/compound/search-form/footer.d.mts +7 -7
  128. package/dist/components/compound/search-form/footer.d.mts.map +1 -1
  129. package/dist/components/compound/search-form/footer.mjs +11 -6
  130. package/dist/components/compound/search-form/footer.mjs.map +1 -1
  131. package/dist/components/compound/search-form/header.d.mts +7 -7
  132. package/dist/components/compound/search-form/header.d.mts.map +1 -1
  133. package/dist/components/compound/search-form/header.mjs +11 -6
  134. package/dist/components/compound/search-form/header.mjs.map +1 -1
  135. package/dist/components/compound/search-form/index.d.mts +2 -1
  136. package/dist/components/compound/search-form/root.d.mts +19 -12
  137. package/dist/components/compound/search-form/root.d.mts.map +1 -1
  138. package/dist/components/compound/search-form/root.mjs +21 -27
  139. package/dist/components/compound/search-form/root.mjs.map +1 -1
  140. package/dist/components/compound/search-form/submit-button.d.mts +15 -4
  141. package/dist/components/compound/search-form/submit-button.d.mts.map +1 -1
  142. package/dist/components/compound/search-form/submit-button.mjs +23 -8
  143. package/dist/components/compound/search-form/submit-button.mjs.map +1 -1
  144. package/dist/components/compound/search-form/title.d.mts +9 -8
  145. package/dist/components/compound/search-form/title.d.mts.map +1 -1
  146. package/dist/components/compound/search-form/title.mjs +11 -6
  147. package/dist/components/compound/search-form/title.mjs.map +1 -1
  148. package/dist/components/compound/searches-catalog/active-filters.d.mts +7 -10
  149. package/dist/components/compound/searches-catalog/active-filters.d.mts.map +1 -1
  150. package/dist/components/compound/searches-catalog/active-filters.mjs +22 -18
  151. package/dist/components/compound/searches-catalog/active-filters.mjs.map +1 -1
  152. package/dist/components/compound/searches-catalog/card.d.mts +6 -6
  153. package/dist/components/compound/searches-catalog/card.d.mts.map +1 -1
  154. package/dist/components/compound/searches-catalog/card.mjs +40 -28
  155. package/dist/components/compound/searches-catalog/card.mjs.map +1 -1
  156. package/dist/components/compound/searches-catalog/category-filter.d.mts +8 -10
  157. package/dist/components/compound/searches-catalog/category-filter.d.mts.map +1 -1
  158. package/dist/components/compound/searches-catalog/category-filter.mjs +18 -9
  159. package/dist/components/compound/searches-catalog/category-filter.mjs.map +1 -1
  160. package/dist/components/compound/searches-catalog/column-filter.d.mts +7 -9
  161. package/dist/components/compound/searches-catalog/column-filter.d.mts.map +1 -1
  162. package/dist/components/compound/searches-catalog/column-filter.mjs +13 -7
  163. package/dist/components/compound/searches-catalog/column-filter.mjs.map +1 -1
  164. package/dist/components/compound/searches-catalog/empty.d.mts +5 -10
  165. package/dist/components/compound/searches-catalog/empty.d.mts.map +1 -1
  166. package/dist/components/compound/searches-catalog/empty.mjs +12 -14
  167. package/dist/components/compound/searches-catalog/empty.mjs.map +1 -1
  168. package/dist/components/compound/searches-catalog/index.d.mts +1 -1
  169. package/dist/components/compound/searches-catalog/list.d.mts +9 -9
  170. package/dist/components/compound/searches-catalog/list.d.mts.map +1 -1
  171. package/dist/components/compound/searches-catalog/list.mjs +18 -14
  172. package/dist/components/compound/searches-catalog/list.mjs.map +1 -1
  173. package/dist/components/compound/searches-catalog/output-field-filter.d.mts +3 -3
  174. package/dist/components/compound/searches-catalog/output-field-filter.d.mts.map +1 -1
  175. package/dist/components/compound/searches-catalog/output-field-filter.mjs.map +1 -1
  176. package/dist/components/compound/searches-catalog/provider-filter.d.mts +3 -3
  177. package/dist/components/compound/searches-catalog/provider-filter.d.mts.map +1 -1
  178. package/dist/components/compound/searches-catalog/provider-filter.mjs.map +1 -1
  179. package/dist/components/compound/searches-catalog/root.d.mts +6 -6
  180. package/dist/components/compound/searches-catalog/root.d.mts.map +1 -1
  181. package/dist/components/compound/searches-catalog/root.mjs +2 -2
  182. package/dist/components/compound/searches-catalog/root.mjs.map +1 -1
  183. package/dist/components/compound/searches-catalog/search-filter.d.mts +6 -9
  184. package/dist/components/compound/searches-catalog/search-filter.d.mts.map +1 -1
  185. package/dist/components/compound/searches-catalog/search-filter.mjs +10 -9
  186. package/dist/components/compound/searches-catalog/search-filter.mjs.map +1 -1
  187. package/dist/components/compound/searches-catalog/tag-filter.d.mts +3 -3
  188. package/dist/components/compound/searches-catalog/tag-filter.d.mts.map +1 -1
  189. package/dist/components/compound/searches-catalog/tag-filter.mjs.map +1 -1
  190. package/dist/components/defaults/adapters/index.mjs +2 -2
  191. package/dist/components/defaults/adapters/index.mjs.map +1 -1
  192. package/dist/components/defaults/adapters/json-extraction-input.mjs +291 -199
  193. package/dist/components/defaults/adapters/json-extraction-input.mjs.map +1 -1
  194. package/dist/components/defaults/adapters/{pipes-trigger-input.mjs → pipes-run-if-input.mjs} +32 -32
  195. package/dist/components/defaults/adapters/pipes-run-if-input.mjs.map +1 -0
  196. package/dist/components/defaults/adapters/providers-input.mjs +221 -13
  197. package/dist/components/defaults/adapters/providers-input.mjs.map +1 -1
  198. package/dist/components/defaults/catalog/card-primitives.d.mts +14 -24
  199. package/dist/components/defaults/catalog/card-primitives.d.mts.map +1 -1
  200. package/dist/components/defaults/catalog/card-primitives.mjs +19 -19
  201. package/dist/components/defaults/catalog/card-primitives.mjs.map +1 -1
  202. package/dist/components/defaults/catalog/layout.mjs +7 -10
  203. package/dist/components/defaults/catalog/layout.mjs.map +1 -1
  204. package/dist/components/defaults/layout/field-wrapper.d.mts +2 -1
  205. package/dist/components/defaults/layout/field-wrapper.d.mts.map +1 -1
  206. package/dist/components/defaults/layout/field-wrapper.mjs +7 -2
  207. package/dist/components/defaults/layout/field-wrapper.mjs.map +1 -1
  208. package/dist/components/defaults/layout/group.d.mts +6 -3
  209. package/dist/components/defaults/layout/group.d.mts.map +1 -1
  210. package/dist/components/defaults/layout/group.mjs +74 -53
  211. package/dist/components/defaults/layout/group.mjs.map +1 -1
  212. package/dist/components/defaults/layout/section.d.mts +9 -3
  213. package/dist/components/defaults/layout/section.d.mts.map +1 -1
  214. package/dist/components/defaults/layout/section.mjs +13 -11
  215. package/dist/components/defaults/layout/section.mjs.map +1 -1
  216. package/dist/components/field-renderer.d.mts.map +1 -1
  217. package/dist/components/field-renderer.mjs +1 -1
  218. package/dist/components/field-renderer.mjs.map +1 -1
  219. package/dist/components/internal/LiquidEditor/ChipEditPopover.mjs +30 -15
  220. package/dist/components/internal/LiquidEditor/ChipEditPopover.mjs.map +1 -1
  221. package/dist/components/internal/icons.mjs +36 -1
  222. package/dist/components/internal/icons.mjs.map +1 -1
  223. package/dist/components/internal/multi-select-popover-trigger.mjs +0 -1
  224. package/dist/components/internal/multi-select-popover-trigger.mjs.map +1 -1
  225. package/dist/components/internal/tag-chip-decoration.mjs +15 -0
  226. package/dist/components/internal/tag-chip-decoration.mjs.map +1 -1
  227. package/dist/components/ui/badge.mjs +1 -1
  228. package/dist/components/ui/button.d.mts +1 -1
  229. package/dist/components/ui/combobox.mjs +0 -1
  230. package/dist/components/ui/combobox.mjs.map +1 -1
  231. package/dist/context/pipe-catalog-card-context.d.mts +7 -0
  232. package/dist/context/pipe-catalog-card-context.d.mts.map +1 -1
  233. package/dist/context/pipe-catalog-card-context.mjs.map +1 -1
  234. package/dist/context/pipe-form-context.d.mts +17 -3
  235. package/dist/context/pipe-form-context.d.mts.map +1 -1
  236. package/dist/context/pipe-form-context.mjs.map +1 -1
  237. package/dist/context/search-catalog-card-context.d.mts +8 -0
  238. package/dist/context/search-catalog-card-context.d.mts.map +1 -1
  239. package/dist/context/search-catalog-card-context.mjs.map +1 -1
  240. package/dist/context/search-form-context.d.mts +17 -3
  241. package/dist/context/search-form-context.d.mts.map +1 -1
  242. package/dist/context/search-form-context.mjs.map +1 -1
  243. package/dist/context/searches-catalog-card-context.d.mts +8 -0
  244. package/dist/context/searches-catalog-card-context.d.mts.map +1 -1
  245. package/dist/context/searches-catalog-card-context.mjs.map +1 -1
  246. package/dist/hooks/use-field-error.d.mts +2 -2
  247. package/dist/hooks/use-field-error.d.mts.map +1 -1
  248. package/dist/hooks/use-field-error.mjs +7 -3
  249. package/dist/hooks/use-field-error.mjs.map +1 -1
  250. package/dist/hooks/use-form-core.d.mts +0 -3
  251. package/dist/hooks/use-form-core.d.mts.map +1 -1
  252. package/dist/hooks/use-form-core.mjs +36 -2
  253. package/dist/hooks/use-form-core.mjs.map +1 -1
  254. package/dist/hooks/use-pipe-catalog-table.d.mts +8 -8
  255. package/dist/hooks/use-pipe-form.d.mts +11 -0
  256. package/dist/hooks/use-pipe-form.d.mts.map +1 -1
  257. package/dist/hooks/use-pipe-form.mjs +35 -6
  258. package/dist/hooks/use-pipe-form.mjs.map +1 -1
  259. package/dist/hooks/use-search-catalog-table.d.mts +6 -6
  260. package/dist/hooks/use-search-form.d.mts +11 -0
  261. package/dist/hooks/use-search-form.d.mts.map +1 -1
  262. package/dist/hooks/use-search-form.mjs +35 -6
  263. package/dist/hooks/use-search-form.mjs.map +1 -1
  264. package/dist/index.d.mts +9 -8
  265. package/dist/index.mjs +3 -9
  266. package/dist/styles/pipe0-form.css +4116 -1
  267. package/dist/types/adapters.d.mts +6 -5
  268. package/dist/types/adapters.d.mts.map +1 -1
  269. package/dist/types/catalog-adapters.d.mts +2 -2
  270. package/dist/types/field-props.d.mts +4 -16
  271. package/dist/types/field-props.d.mts.map +1 -1
  272. package/dist/types/form-handle.d.mts +81 -1
  273. package/dist/types/form-handle.d.mts.map +1 -1
  274. package/dist/utils/build-section-handlers.mjs +6 -2
  275. package/dist/utils/build-section-handlers.mjs.map +1 -1
  276. package/dist/utils/internal-form.mjs +28 -0
  277. package/dist/utils/internal-form.mjs.map +1 -0
  278. package/dist/widgets/avatar-group.d.mts +4 -7
  279. package/dist/widgets/avatar-group.d.mts.map +1 -1
  280. package/dist/widgets/avatar-group.mjs +13 -12
  281. package/dist/widgets/avatar-group.mjs.map +1 -1
  282. package/package.json +70 -18
  283. package/dist/components/compound/pipe-catalog/index.mjs +0 -15
  284. package/dist/components/compound/pipe-form/index.mjs +0 -11
  285. package/dist/components/compound/search-catalog/index.mjs +0 -14
  286. package/dist/components/compound/search-form/index.mjs +0 -11
  287. package/dist/components/compound/searches-catalog/index.mjs +0 -14
  288. package/dist/components/defaults/adapters/pipes-trigger-input.mjs.map +0 -1
  289. package/dist/components/defaults/layout/submit-button.d.mts +0 -9
  290. package/dist/components/defaults/layout/submit-button.d.mts.map +0 -1
  291. package/dist/components/defaults/layout/submit-button.mjs +0 -23
  292. package/dist/components/defaults/layout/submit-button.mjs.map +0 -1
  293. package/dist/components/defaults/toggle-advanced-button.mjs +0 -29
  294. package/dist/components/defaults/toggle-advanced-button.mjs.map +0 -1
  295. package/dist/components/ui/input-group.mjs +0 -30
  296. package/dist/components/ui/input-group.mjs.map +0 -1
  297. package/dist/context/form-customization-context.d.mts +0 -71
  298. package/dist/context/form-customization-context.d.mts.map +0 -1
  299. package/dist/context/form-customization-context.mjs +0 -114
  300. package/dist/context/form-customization-context.mjs.map +0 -1
  301. package/dist/hooks/use-disclosure.mjs +0 -35
  302. package/dist/hooks/use-disclosure.mjs.map +0 -1
  303. package/dist/utils/render-slot.d.mts +0 -44
  304. package/dist/utils/render-slot.d.mts.map +0 -1
  305. package/dist/utils/render-slot.mjs +0 -30
  306. package/dist/utils/render-slot.mjs.map +0 -1
  307. package/dist/widgets/index.mjs +0 -11
@@ -1,10 +1,15 @@
1
- import { FormSectionHandle } from "../../../types/form-handle.mjs";
2
- import * as _$react from "react";
1
+ import { FormHandle, FormSectionHandle } from "../../../types/form-handle.mjs";
3
2
  import { useRender } from "@base-ui/react/use-render";
3
+ import * as _$react from "react";
4
+ import { PipePayload } from "@pipe0/base";
4
5
 
5
6
  //#region src/components/compound/pipe-form/content.d.ts
6
7
  interface PipeFormContentState {
7
8
  sections: FormSectionHandle[];
9
+ fieldPaths: Set<string>;
10
+ hasFieldLoaderError: boolean;
11
+ isFieldLoaderLoading: boolean;
12
+ form: FormHandle<PipePayload>;
8
13
  }
9
14
  interface PipeFormContentProps extends useRender.ComponentProps<"div", PipeFormContentState> {}
10
15
  declare function PipeFormContent({
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/content.tsx"],"mappings":";;;;;UAUiB,oBAAA;EACf,QAAA,EAAU,iBAAA;AAAA;AAAA,UAGK,oBAAA,SACP,SAAA,CAAU,cAAA,QAAsB,oBAAA;AAAA,iBAE1B,eAAA,CAAA;EAAkB,QAAA;EAAU,SAAA;EAAW,MAAA;EAAA,GAAW;AAAA,GAAS,oBAAA,GAAoB,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
1
+ {"version":3,"file":"content.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/content.tsx"],"mappings":";;;;;;UAQiB,oBAAA;EACf,QAAA,EAAU,iBAAA;EACV,UAAA,EAAY,GAAA;EACZ,mBAAA;EACA,oBAAA;EACA,IAAA,EAAM,UAAA,CAAW,WAAA;AAAA;AAAA,UAGF,oBAAA,SACP,SAAA,CAAU,cAAA,QAAsB,oBAAA;AAAA,iBAE1B,eAAA,CAAA;EAAkB,QAAA;EAAU,SAAA;EAAW,MAAA;EAAA,GAAW;AAAA,GAAS,oBAAA,GAAoB,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
@@ -1,40 +1,38 @@
1
- import { useFormCustomization } from "../../../context/form-customization-context.mjs";
2
1
  import { usePipeFormContext } from "../../../context/pipe-form-context.mjs";
3
- import { applyFormCustomization } from "../../../utils/build-section-handlers.mjs";
4
- import { FormLevelErrors } from "../../internal/form-level-errors.mjs";
2
+ import { PipeFormErrors } from "./errors.mjs";
5
3
  import { PipeFormSection } from "./section.mjs";
6
- import { useMemo } from "react";
7
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
4
  import { mergeProps } from "@base-ui/react/merge-props";
9
5
  import { useRender } from "@base-ui/react/use-render";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
7
 
11
8
  //#region src/components/compound/pipe-form/content.tsx
12
9
  function PipeFormContent({ children, className, render, ...props }) {
13
- const context = usePipeFormContext();
14
- const [customization] = useFormCustomization();
15
- const filteredSections = useMemo(() => applyFormCustomization(context.sections, customization), [context.sections, customization]);
16
- const fieldPaths = useMemo(() => new Set(filteredSections.flatMap((s) => s.groups.flatMap((g) => g.fields.map((f) => f.path)))), [filteredSections]);
17
- const anyFieldError = Object.values(context.fieldLoadStates).some((s) => s.status === "error");
18
- const defaultChildren = /* @__PURE__ */ jsxs(Fragment$1, { children: [
19
- filteredSections.map((section) => /* @__PURE__ */ jsx(PipeFormSection, { section }, section.key)),
20
- anyFieldError && /* @__PURE__ */ jsx("div", {
21
- "data-p0": "store-error",
22
- role: "alert",
23
- className: "pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-destructive/50 pz:bg-destructive/5 pz:px-3 pz:py-2 pz:text-destructive pz:text-xs pz:font-medium",
24
- children: /* @__PURE__ */ jsx("span", { children: "Failed to load options for one or more fields. Check that your connection is valid." })
25
- }),
26
- /* @__PURE__ */ jsx(FormLevelErrors, {
27
- control: context.form.control,
28
- fieldPaths
29
- })
30
- ] });
10
+ const { sections, fieldPaths, hasFieldLoaderError, isFieldLoaderLoading, form } = usePipeFormContext();
11
+ const defaultBody = /* @__PURE__ */ jsxs(Fragment, { children: [sections.map((section, idx) => {
12
+ const prev = idx > 0 ? sections[idx - 1] : null;
13
+ return /* @__PURE__ */ jsx(PipeFormSection, {
14
+ section,
15
+ hideLabel: !!(section.label && prev && prev.label === section.label)
16
+ }, section.key);
17
+ }), /* @__PURE__ */ jsx(PipeFormErrors, {})] });
31
18
  return useRender({
32
19
  defaultTagName: "div",
33
20
  render,
34
- state: { sections: filteredSections },
21
+ state: {
22
+ sections,
23
+ fieldPaths,
24
+ hasFieldLoaderError,
25
+ isFieldLoaderLoading,
26
+ form
27
+ },
28
+ stateAttributesMapping: {
29
+ sections: () => null,
30
+ fieldPaths: () => null,
31
+ form: () => null
32
+ },
35
33
  props: mergeProps({
36
34
  className,
37
- children: children ?? defaultChildren,
35
+ children: children ?? defaultBody,
38
36
  "data-p0": "form-content"
39
37
  }, props)
40
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"content.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/content.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { useMemo } from \"react\";\nimport { useFormCustomization } from \"../../../context/form-customization-context.js\";\nimport { usePipeFormContext } from \"../../../context/pipe-form-context.js\";\nimport type { FormSectionHandle } from \"../../../types/form-handle.js\";\nimport { applyFormCustomization } from \"../../../utils/build-section-handlers.js\";\nimport { FormLevelErrors } from \"../../internal/form-level-errors.js\";\nimport { PipeFormSection } from \"./section.js\";\n\nexport interface PipeFormContentState {\n sections: FormSectionHandle[];\n}\n\nexport interface PipeFormContentProps\n extends useRender.ComponentProps<\"div\", PipeFormContentState> {}\n\nexport function PipeFormContent({ children, className, render, ...props }: PipeFormContentProps) {\n const context = usePipeFormContext();\n const [customization] = useFormCustomization();\n\n const filteredSections = useMemo(\n () => applyFormCustomization(context.sections, customization),\n [context.sections, customization],\n );\n\n const fieldPaths = useMemo(\n () =>\n new Set(\n filteredSections.flatMap((s) => s.groups.flatMap((g) => g.fields.map((f) => f.path))),\n ),\n [filteredSections],\n );\n\n const anyFieldError = Object.values(context.fieldLoadStates).some((s) => s.status === \"error\");\n\n const defaultChildren = (\n <>\n {filteredSections.map((section) => (\n <PipeFormSection key={section.key} section={section} />\n ))}\n {anyFieldError && (\n <div\n data-p0=\"store-error\"\n role=\"alert\"\n className=\"pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-destructive/50 pz:bg-destructive/5 pz:px-3 pz:py-2 pz:text-destructive pz:text-xs pz:font-medium\"\n >\n <span>\n Failed to load options for one or more fields. Check that your connection is valid.\n </span>\n </div>\n )}\n <FormLevelErrors control={context.form.control} fieldPaths={fieldPaths} />\n </>\n );\n\n return useRender({\n defaultTagName: \"div\",\n render,\n state: { sections: filteredSections },\n props: mergeProps<\"div\">(\n {\n className,\n children: children ?? defaultChildren,\n ...({ \"data-p0\": \"form-content\" } as Record<string, string>),\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,gBAAgB,EAAE,UAAU,WAAW,QAAQ,GAAG,SAA+B;CAC/F,MAAM,UAAU,oBAAoB;CACpC,MAAM,CAAC,iBAAiB,sBAAsB;CAE9C,MAAM,mBAAmB,cACjB,uBAAuB,QAAQ,UAAU,cAAc,EAC7D,CAAC,QAAQ,UAAU,cAAc,CAClC;CAED,MAAM,aAAa,cAEf,IAAI,IACF,iBAAiB,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CACtF,EACH,CAAC,iBAAiB,CACnB;CAED,MAAM,gBAAgB,OAAO,OAAO,QAAQ,gBAAgB,CAAC,MAAM,MAAM,EAAE,WAAW,QAAQ;CAE9F,MAAM,kBACJ;EACG,iBAAiB,KAAK,YACrB,oBAAC,iBAAD,EAA4C,SAAW,EAAjC,QAAQ,IAAyB,CACvD;EACD,iBACC,oBAAC,OAAD;GACE,WAAQ;GACR,MAAK;GACL,WAAU;aAEV,oBAAC,QAAD,YAAM,uFAEC;GACH;EAER,oBAAC,iBAAD;GAAiB,SAAS,QAAQ,KAAK;GAAqB;GAAc;EACzE;AAGL,QAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO,EAAE,UAAU,kBAAkB;EACrC,OAAO,WACL;GACE;GACA,UAAU,YAAY;GAChB,WAAW;GAClB,EACD,MACD;EACF,CAAC"}
1
+ {"version":3,"file":"content.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/content.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { PipePayload } from \"@pipe0/base\";\nimport { usePipeFormContext } from \"../../../context/pipe-form-context.js\";\nimport type { FormHandle, FormSectionHandle } from \"../../../types/form-handle.js\";\nimport { PipeFormErrors } from \"./errors.js\";\nimport { PipeFormSection } from \"./section.js\";\n\nexport interface PipeFormContentState {\n sections: FormSectionHandle[];\n fieldPaths: Set<string>;\n hasFieldLoaderError: boolean;\n isFieldLoaderLoading: boolean;\n form: FormHandle<PipePayload>;\n}\n\nexport interface PipeFormContentProps\n extends useRender.ComponentProps<\"div\", PipeFormContentState> {}\n\nexport function PipeFormContent({ children, className, render, ...props }: PipeFormContentProps) {\n const { sections, fieldPaths, hasFieldLoaderError, isFieldLoaderLoading, form } =\n usePipeFormContext();\n\n // Sections that share a label (e.g. several \"I/O & conditions\" sections)\n // render under one umbrella header. We hide the label on every section\n // except the first in each contiguous cluster.\n const defaultBody = (\n <>\n {sections.map((section, idx) => {\n const prev = idx > 0 ? sections[idx - 1] : null;\n const hideLabel = !!(section.label && prev && prev.label === section.label);\n return <PipeFormSection key={section.key} section={section} hideLabel={hideLabel} />;\n })}\n <PipeFormErrors />\n </>\n );\n\n return useRender({\n defaultTagName: \"div\",\n render,\n state: { sections, fieldPaths, hasFieldLoaderError, isFieldLoaderLoading, form },\n stateAttributesMapping: {\n sections: () => null,\n fieldPaths: () => null,\n form: () => null,\n },\n props: mergeProps<\"div\">(\n {\n className,\n children: children ?? defaultBody,\n ...({ \"data-p0\": \"form-content\" } as Record<string, string>),\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;;;;;AAmBA,SAAgB,gBAAgB,EAAE,UAAU,WAAW,QAAQ,GAAG,SAA+B;CAC/F,MAAM,EAAE,UAAU,YAAY,qBAAqB,sBAAsB,SACvE,oBAAoB;CAKtB,MAAM,cACJ,4CACG,SAAS,KAAK,SAAS,QAAQ;EAC9B,MAAM,OAAO,MAAM,IAAI,SAAS,MAAM,KAAK;AAE3C,SAAO,oBAAC,iBAAD;GAA4C;GAAS,WAD1C,CAAC,EAAE,QAAQ,SAAS,QAAQ,KAAK,UAAU,QAAQ;GACe,EAAvD,QAAQ,IAA+C;GACpF,EACF,oBAAC,gBAAD,EAAkB,EACjB;AAGL,QAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO;GAAE;GAAU;GAAY;GAAqB;GAAsB;GAAM;EAChF,wBAAwB;GACtB,gBAAgB;GAChB,kBAAkB;GAClB,YAAY;GACb;EACD,OAAO,WACL;GACE;GACA,UAAU,YAAY;GAChB,WAAW;GAClB,EACD,MACD;EACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { FormHandle } from "../../../types/form-handle.mjs";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ import * as _$react from "react";
4
+ import { PipePayload } from "@pipe0/base";
5
+
6
+ //#region src/components/compound/pipe-form/errors.d.ts
7
+ interface PipeFormErrorsState {
8
+ hasFieldLoaderError: boolean;
9
+ fieldPaths: Set<string>;
10
+ form: FormHandle<PipePayload>;
11
+ }
12
+ interface PipeFormErrorsProps extends useRender.ComponentProps<"div", PipeFormErrorsState> {}
13
+ /**
14
+ * Renders form-wide errors that don't belong to a specific visible field:
15
+ * the field-loader banner (when a resolver fails to load options for a
16
+ * field) and form-level validation errors (errors not attached to any
17
+ * rendered field).
18
+ */
19
+ declare function PipeFormErrors({
20
+ children,
21
+ className,
22
+ render,
23
+ ...props
24
+ }: PipeFormErrorsProps): _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>>;
25
+ //#endregion
26
+ export { PipeFormErrors };
27
+ //# sourceMappingURL=errors.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/errors.tsx"],"mappings":";;;;;;UAQiB,mBAAA;EACf,mBAAA;EACA,UAAA,EAAY,GAAA;EACZ,IAAA,EAAM,UAAA,CAAW,WAAA;AAAA;AAAA,UAGF,mBAAA,SAA4B,SAAA,CAAU,cAAA,QAAsB,mBAAA;;;;;;;iBAQ7D,cAAA,CAAA;EAAiB,QAAA;EAAU,SAAA;EAAW,MAAA;EAAA,GAAW;AAAA,GAAS,mBAAA,GAAmB,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
@@ -0,0 +1,48 @@
1
+ import { usePipeFormContext } from "../../../context/pipe-form-context.mjs";
2
+ import { asInternalForm } from "../../../utils/internal-form.mjs";
3
+ import { FormLevelErrors } from "../../internal/form-level-errors.mjs";
4
+ import { mergeProps } from "@base-ui/react/merge-props";
5
+ import { useRender } from "@base-ui/react/use-render";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+
8
+ //#region src/components/compound/pipe-form/errors.tsx
9
+ /**
10
+ * Renders form-wide errors that don't belong to a specific visible field:
11
+ * the field-loader banner (when a resolver fails to load options for a
12
+ * field) and form-level validation errors (errors not attached to any
13
+ * rendered field).
14
+ */
15
+ function PipeFormErrors({ children, className, render, ...props }) {
16
+ const { hasFieldLoaderError, fieldPaths, form } = usePipeFormContext();
17
+ const defaultBody = /* @__PURE__ */ jsxs(Fragment, { children: [hasFieldLoaderError && /* @__PURE__ */ jsx("div", {
18
+ "data-p0": "store-error",
19
+ role: "alert",
20
+ className: "pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-destructive/50 pz:bg-destructive/5 pz:px-3 pz:py-2 pz:text-destructive pz:text-xs pz:font-medium",
21
+ children: /* @__PURE__ */ jsx("span", { children: "Failed to load options for one or more fields. Check that your connection is valid." })
22
+ }), /* @__PURE__ */ jsx(FormLevelErrors, {
23
+ control: asInternalForm(form).control,
24
+ fieldPaths
25
+ })] });
26
+ return useRender({
27
+ defaultTagName: "div",
28
+ render,
29
+ state: {
30
+ hasFieldLoaderError,
31
+ fieldPaths,
32
+ form
33
+ },
34
+ stateAttributesMapping: {
35
+ fieldPaths: () => null,
36
+ form: () => null
37
+ },
38
+ props: mergeProps({
39
+ className,
40
+ children: children ?? defaultBody,
41
+ "data-p0": "form-errors"
42
+ }, props)
43
+ });
44
+ }
45
+
46
+ //#endregion
47
+ export { PipeFormErrors };
48
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/errors.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { PipePayload } from \"@pipe0/base\";\nimport { usePipeFormContext } from \"../../../context/pipe-form-context.js\";\nimport type { FormHandle } from \"../../../types/form-handle.js\";\nimport { asInternalForm } from \"../../../utils/internal-form.js\";\nimport { FormLevelErrors } from \"../../internal/form-level-errors.js\";\n\nexport interface PipeFormErrorsState {\n hasFieldLoaderError: boolean;\n fieldPaths: Set<string>;\n form: FormHandle<PipePayload>;\n}\n\nexport interface PipeFormErrorsProps extends useRender.ComponentProps<\"div\", PipeFormErrorsState> {}\n\n/**\n * Renders form-wide errors that don't belong to a specific visible field:\n * the field-loader banner (when a resolver fails to load options for a\n * field) and form-level validation errors (errors not attached to any\n * rendered field).\n */\nexport function PipeFormErrors({ children, className, render, ...props }: PipeFormErrorsProps) {\n const { hasFieldLoaderError, fieldPaths, form } = usePipeFormContext();\n\n const defaultBody = (\n <>\n {hasFieldLoaderError && (\n <div\n data-p0=\"store-error\"\n role=\"alert\"\n className=\"pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-destructive/50 pz:bg-destructive/5 pz:px-3 pz:py-2 pz:text-destructive pz:text-xs pz:font-medium\"\n >\n <span>\n Failed to load options for one or more fields. Check that your connection is valid.\n </span>\n </div>\n )}\n <FormLevelErrors control={asInternalForm(form).control} fieldPaths={fieldPaths} />\n </>\n );\n\n return useRender({\n defaultTagName: \"div\",\n render,\n state: { hasFieldLoaderError, fieldPaths, form },\n stateAttributesMapping: {\n fieldPaths: () => null,\n form: () => null,\n },\n props: mergeProps<\"div\">(\n {\n className,\n children: children ?? defaultBody,\n ...({ \"data-p0\": \"form-errors\" } as Record<string, string>),\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AAsBA,SAAgB,eAAe,EAAE,UAAU,WAAW,QAAQ,GAAG,SAA8B;CAC7F,MAAM,EAAE,qBAAqB,YAAY,SAAS,oBAAoB;CAEtE,MAAM,cACJ,4CACG,uBACC,oBAAC,OAAD;EACE,WAAQ;EACR,MAAK;EACL,WAAU;YAEV,oBAAC,QAAD,YAAM,uFAEC;EACH,GAER,oBAAC,iBAAD;EAAiB,SAAS,eAAe,KAAK,CAAC;EAAqB;EAAc,EACjF;AAGL,QAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO;GAAE;GAAqB;GAAY;GAAM;EAChD,wBAAwB;GACtB,kBAAkB;GAClB,YAAY;GACb;EACD,OAAO,WACL;GACE;GACA,UAAU,YAAY;GAChB,WAAW;GAClB,EACD,MACD;EACF,CAAC"}
@@ -1,14 +1,14 @@
1
- import { ReactNode } from "react";
2
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import * as _$react from "react";
3
3
 
4
4
  //#region src/components/compound/pipe-form/footer.d.ts
5
+ interface PipeFormFooterProps extends useRender.ComponentProps<"div"> {}
5
6
  declare function PipeFormFooter({
6
7
  children,
7
- className
8
- }: {
9
- children?: ReactNode;
10
- className?: string;
11
- }): _$react_jsx_runtime0.JSX.Element;
8
+ className,
9
+ render,
10
+ ...props
11
+ }: PipeFormFooterProps): _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>>;
12
12
  //#endregion
13
13
  export { PipeFormFooter };
14
14
  //# sourceMappingURL=footer.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/footer.tsx"],"mappings":";;;;iBAEgB,cAAA,CAAA;EACd,QAAA;EACA;AAAA;EAEA,QAAA,GAAW,SAAA;EACX,SAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"footer.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/footer.tsx"],"mappings":";;;;UAGiB,mBAAA,SAA4B,SAAA,CAAU,cAAA;AAAA,iBAEvC,cAAA,CAAA;EAAiB,QAAA;EAAU,SAAA;EAAW,MAAA;EAAA,GAAW;AAAA,GAAS,mBAAA,GAAmB,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
@@ -1,11 +1,16 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { mergeProps } from "@base-ui/react/merge-props";
2
+ import { useRender } from "@base-ui/react/use-render";
2
3
 
3
4
  //#region src/components/compound/pipe-form/footer.tsx
4
- function PipeFormFooter({ children, className }) {
5
- return /* @__PURE__ */ jsx("div", {
6
- "data-p0": "form-footer",
7
- className,
8
- children
5
+ function PipeFormFooter({ children, className, render, ...props }) {
6
+ return useRender({
7
+ defaultTagName: "div",
8
+ render,
9
+ props: mergeProps({
10
+ className,
11
+ children,
12
+ "data-p0": "form-footer"
13
+ }, props)
9
14
  });
10
15
  }
11
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"footer.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/footer.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nexport function PipeFormFooter({\n children,\n className,\n}: {\n children?: ReactNode;\n className?: string;\n}) {\n return (\n <div data-p0=\"form-footer\" className={className}>\n {children}\n </div>\n );\n}\n"],"mappings":";;;AAEA,SAAgB,eAAe,EAC7B,UACA,aAIC;AACD,QACE,oBAAC,OAAD;EAAK,WAAQ;EAAyB;EACnC;EACG"}
1
+ {"version":3,"file":"footer.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/footer.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nexport interface PipeFormFooterProps extends useRender.ComponentProps<\"div\"> {}\n\nexport function PipeFormFooter({ children, className, render, ...props }: PipeFormFooterProps) {\n return useRender({\n defaultTagName: \"div\",\n render,\n props: mergeProps<\"div\">(\n {\n className,\n children,\n ...({ \"data-p0\": \"form-footer\" } as Record<string, string>),\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;AAKA,SAAgB,eAAe,EAAE,UAAU,WAAW,QAAQ,GAAG,SAA8B;AAC7F,QAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO,WACL;GACE;GACA;GACM,WAAW;GAClB,EACD,MACD;EACF,CAAC"}
@@ -1,14 +1,14 @@
1
- import { ReactNode } from "react";
2
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import * as _$react from "react";
3
3
 
4
4
  //#region src/components/compound/pipe-form/header.d.ts
5
+ interface PipeFormHeaderProps extends useRender.ComponentProps<"div"> {}
5
6
  declare function PipeFormHeader({
6
7
  children,
7
- className
8
- }: {
9
- children?: ReactNode;
10
- className?: string;
11
- }): _$react_jsx_runtime0.JSX.Element;
8
+ className,
9
+ render,
10
+ ...props
11
+ }: PipeFormHeaderProps): _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>>;
12
12
  //#endregion
13
13
  export { PipeFormHeader };
14
14
  //# sourceMappingURL=header.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/header.tsx"],"mappings":";;;;iBAEgB,cAAA,CAAA;EACd,QAAA;EACA;AAAA;EAEA,QAAA,GAAW,SAAA;EACX,SAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"header.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/header.tsx"],"mappings":";;;;UAGiB,mBAAA,SAA4B,SAAA,CAAU,cAAA;AAAA,iBAEvC,cAAA,CAAA;EAAiB,QAAA;EAAU,SAAA;EAAW,MAAA;EAAA,GAAW;AAAA,GAAS,mBAAA,GAAmB,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
@@ -1,11 +1,16 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { mergeProps } from "@base-ui/react/merge-props";
2
+ import { useRender } from "@base-ui/react/use-render";
2
3
 
3
4
  //#region src/components/compound/pipe-form/header.tsx
4
- function PipeFormHeader({ children, className }) {
5
- return /* @__PURE__ */ jsx("div", {
6
- "data-p0": "form-header",
7
- className,
8
- children
5
+ function PipeFormHeader({ children, className, render, ...props }) {
6
+ return useRender({
7
+ defaultTagName: "div",
8
+ render,
9
+ props: mergeProps({
10
+ className,
11
+ children,
12
+ "data-p0": "form-header"
13
+ }, props)
9
14
  });
10
15
  }
11
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"header.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/header.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nexport function PipeFormHeader({\n children,\n className,\n}: {\n children?: ReactNode;\n className?: string;\n}) {\n return (\n <div data-p0=\"form-header\" className={className}>\n {children}\n </div>\n );\n}\n"],"mappings":";;;AAEA,SAAgB,eAAe,EAC7B,UACA,aAIC;AACD,QACE,oBAAC,OAAD;EAAK,WAAQ;EAAyB;EACnC;EACG"}
1
+ {"version":3,"file":"header.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/header.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nexport interface PipeFormHeaderProps extends useRender.ComponentProps<\"div\"> {}\n\nexport function PipeFormHeader({ children, className, render, ...props }: PipeFormHeaderProps) {\n return useRender({\n defaultTagName: \"div\",\n render,\n props: mergeProps<\"div\">(\n {\n className,\n children,\n ...({ \"data-p0\": \"form-header\" } as Record<string, string>),\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;AAKA,SAAgB,eAAe,EAAE,UAAU,WAAW,QAAQ,GAAG,SAA8B;AAC7F,QAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO,WACL;GACE;GACA;GACM,WAAW;GAClB,EACD,MACD;EACF,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { PipeFormContent } from "./content.mjs";
2
+ import { PipeFormErrors } from "./errors.mjs";
2
3
  import { PipeFormField } from "./field.mjs";
3
4
  import { PipeFormFooter } from "./footer.mjs";
4
5
  import { PipeFormGroup } from "./group.mjs";
5
6
  import { PipeFormHeader } from "./header.mjs";
6
- import { PipeForm, PipeFormInstanceProps, PipeFormLegacyProps, PipeFormProps } from "./root.mjs";
7
+ import { PipeForm, PipeFormInstanceProps, PipeFormProps, PipeFormZeroConfigProps } from "./root.mjs";
7
8
  import { PipeFormSection } from "./section.mjs";
8
9
  import { PipeFormSubmitButton } from "./submit-button.mjs";
9
10
  import { PipeFormTitle } from "./title.mjs";
@@ -1,35 +1,40 @@
1
+ import { FormHandle } from "../../../types/form-handle.mjs";
1
2
  import { PipeFormContext } from "../../../context/pipe-form-context.mjs";
2
3
  import { FieldAdapterMap, FormClassNames } from "../../../types/adapters.mjs";
3
4
  import { GroupMap, PathMap, SectionMap } from "../../../types/form-customization.mjs";
4
5
  import { ReactNode } from "react";
5
6
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
7
  import { FormResolvers, PipeId, PipePayload, ValidationContext } from "@pipe0/base";
7
- import { UseFormReturn } from "react-hook-form";
8
8
 
9
9
  //#region src/components/compound/pipe-form/root.d.ts
10
10
  type PipeFormSubmitHandler = (payload: PipePayload, ctx: {
11
- form: UseFormReturn<PipePayload>;
11
+ form: FormHandle<PipePayload>;
12
12
  }) => void | Promise<void>;
13
- interface CustomizationProps {
14
- sectionMap?: SectionMap;
15
- groupMap?: GroupMap;
16
- pathMap?: PathMap;
13
+ interface RenderingProps {
17
14
  classNames?: FormClassNames;
18
15
  adapters?: FieldAdapterMap;
19
16
  className?: string;
20
17
  }
21
- interface PipeFormInstanceProps extends CustomizationProps {
18
+ interface PipeFormInstanceProps extends RenderingProps {
22
19
  context: PipeFormContext;
23
20
  onSubmit: PipeFormSubmitHandler;
24
21
  children?: ReactNode;
25
22
  }
26
- interface PipeFormLegacyProps extends CustomizationProps {
23
+ interface PipeFormZeroConfigProps extends RenderingProps {
27
24
  pipeId: PipeId;
28
25
  publicKey: string;
29
26
  onSubmit: PipeFormSubmitHandler;
30
27
  defaultValues?: PipePayload;
31
28
  validationContext?: ValidationContext;
32
29
  resolvers?: FormResolvers;
30
+ /**
31
+ * Hide / relabel / reorder sections by section key. `null` hides a section.
32
+ * Forwarded to the internal `usePipeForm` call. For `<PipeForm context={...}>`,
33
+ * pass these to `usePipeForm` directly instead.
34
+ */
35
+ sectionMap?: SectionMap;
36
+ groupMap?: GroupMap;
37
+ pathMap?: PathMap;
33
38
  /**
34
39
  * Form-level scope tags. Bundled into every `resolvers.getSecrets` call so
35
40
  * the backend can return only the secrets allowed in the declared scopes.
@@ -42,15 +47,17 @@ interface PipeFormLegacyProps extends CustomizationProps {
42
47
  teamId?: string;
43
48
  children?: ReactNode;
44
49
  }
45
- type PipeFormProps = PipeFormInstanceProps | PipeFormLegacyProps;
50
+ type PipeFormProps = PipeFormInstanceProps | PipeFormZeroConfigProps;
46
51
  /**
47
52
  * Compound root for pipe forms.
48
53
  *
49
54
  * Two modes:
50
55
  * - Compound: `<PipeForm context={ctx} onSubmit={...}>...</PipeForm>` — pass the context from `usePipeForm`.
51
- * - Zero-config: `<PipeForm pipeId="..." publicKey="..." onSubmit={...} />` legacy API.
56
+ * Visibility customization (`sectionMap`/`groupMap`/`pathMap`) lives on the hook in this mode.
57
+ * - Zero-config: `<PipeForm pipeId="..." publicKey="..." onSubmit={...} />` — fresh hook created
58
+ * internally; visibility maps may be passed as props and forward to that hook.
52
59
  */
53
60
  declare function PipeForm(props: PipeFormProps): _$react_jsx_runtime0.JSX.Element;
54
61
  //#endregion
55
- export { PipeForm, PipeFormInstanceProps, PipeFormLegacyProps, PipeFormProps };
62
+ export { PipeForm, PipeFormInstanceProps, PipeFormProps, PipeFormZeroConfigProps };
56
63
  //# sourceMappingURL=root.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/root.tsx"],"mappings":";;;;;;;;;KAuBY,qBAAA,IACV,OAAA,EAAS,WAAA,EACT,GAAA;EAAO,IAAA,EAAM,aAAA,CAAc,WAAA;AAAA,aACjB,OAAA;AAAA,UAEF,kBAAA;EACR,UAAA,GAAa,UAAA;EACb,QAAA,GAAW,QAAA;EACX,OAAA,GAAU,OAAA;EACV,UAAA,GAAa,cAAA;EACb,QAAA,GAAW,eAAA;EACX,SAAA;AAAA;AAAA,UAGe,qBAAA,SAA8B,kBAAA;EAC7C,OAAA,EAAS,eAAA;EACT,QAAA,EAAU,qBAAA;EACV,QAAA,GAAW,SAAA;AAAA;AAAA,UAGI,mBAAA,SAA4B,kBAAA;EAC3C,MAAA,EAAQ,MAAA;EACR,SAAA;EACA,QAAA,EAAU,qBAAA;EACV,aAAA,GAAgB,WAAA;EAChB,iBAAA,GAAoB,iBAAA;EACpB,SAAA,GAAY,aAAA;;;;;EAKZ,MAAA;EArBW;;;;EA0BX,MAAA;EACA,QAAA,GAAW,SAAA;AAAA;AAAA,KAGD,aAAA,GAAgB,qBAAA,GAAwB,mBAAA;;;;;;;;iBASpC,QAAA,CAAS,KAAA,EAAO,aAAA,GAAa,oBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"root.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/root.tsx"],"mappings":";;;;;;;;;KAoBY,qBAAA,IACV,OAAA,EAAS,WAAA,EACT,GAAA;EAAO,IAAA,EAAM,UAAA,CAAW,WAAA;AAAA,aACd,OAAA;AAAA,UAEF,cAAA;EACR,UAAA,GAAa,cAAA;EACb,QAAA,GAAW,eAAA;EACX,SAAA;AAAA;AAAA,UAGe,qBAAA,SAA8B,cAAA;EAC7C,OAAA,EAAS,eAAA;EACT,QAAA,EAAU,qBAAA;EACV,QAAA,GAAW,SAAA;AAAA;AAAA,UAGI,uBAAA,SAAgC,cAAA;EAC/C,MAAA,EAAQ,MAAA;EACR,SAAA;EACA,QAAA,EAAU,qBAAA;EACV,aAAA,GAAgB,WAAA;EAChB,iBAAA,GAAoB,iBAAA;EACpB,SAAA,GAAY,aAAA;EApBK;AAAO;;;;EA0BxB,UAAA,GAAa,UAAA;EACb,QAAA,GAAW,QAAA;EACX,OAAA,GAAU,OAAA;EAxBC;;;;EA6BX,MAAA;EAzBqC;;;;EA8BrC,MAAA;EACA,QAAA,GAAW,SAAA;AAAA;AAAA,KAGD,aAAA,GAAgB,qBAAA,GAAwB,uBAAA;;;;;;;;;;iBAWpC,QAAA,CAAS,KAAA,EAAO,aAAA,GAAa,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,12 +1,11 @@
1
1
  import { PortalContainerContext } from "../../../context/portal-container-context.mjs";
2
- import { FormCustomizationProvider, useFormCustomization } from "../../../context/form-customization-context.mjs";
3
2
  import { PipeFormContext, usePipeFormContext } from "../../../context/pipe-form-context.mjs";
4
3
  import { PipeFormContent } from "./content.mjs";
5
4
  import { FormProvider, FormRoot } from "../../../context/form-provider.mjs";
6
5
  import { usePipeForm } from "../../../hooks/use-pipe-form.mjs";
7
6
  import { DefaultForm } from "../../defaults/layout/form.mjs";
8
7
  import { PipeFormSubmitButton } from "./submit-button.mjs";
9
- import { useCallback, useEffect, useState } from "react";
8
+ import { useCallback, useState } from "react";
10
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
10
  import { validatePipesOrError } from "@pipe0/base";
12
11
 
@@ -16,17 +15,19 @@ import { validatePipesOrError } from "@pipe0/base";
16
15
  *
17
16
  * Two modes:
18
17
  * - Compound: `<PipeForm context={ctx} onSubmit={...}>...</PipeForm>` — pass the context from `usePipeForm`.
19
- * - Zero-config: `<PipeForm pipeId="..." publicKey="..." onSubmit={...} />` legacy API.
18
+ * Visibility customization (`sectionMap`/`groupMap`/`pathMap`) lives on the hook in this mode.
19
+ * - Zero-config: `<PipeForm pipeId="..." publicKey="..." onSubmit={...} />` — fresh hook created
20
+ * internally; visibility maps may be passed as props and forward to that hook.
20
21
  */
21
22
  function PipeForm(props) {
22
23
  if ("context" in props) return /* @__PURE__ */ jsx(PipeFormWithContext, { ...props });
23
- return /* @__PURE__ */ jsx(PipeFormLegacy, { ...props });
24
+ return /* @__PURE__ */ jsx(PipeFormZeroConfig, { ...props });
24
25
  }
25
- function PipeFormLegacy({ pipeId, publicKey, defaultValues, onSubmit, resolvers, scopes, teamId, validationContext = validatePipesOrError({
26
+ function PipeFormZeroConfig({ pipeId, publicKey, defaultValues, onSubmit, resolvers, scopes, teamId, sectionMap, groupMap, pathMap, validationContext = validatePipesOrError({
26
27
  config: { environment: "production" },
27
28
  pipes: [],
28
29
  input: []
29
- }), children, ...customization }) {
30
+ }), children, classNames, adapters, className }) {
30
31
  return /* @__PURE__ */ jsx(PipeFormWithContext, {
31
32
  context: usePipeForm({
32
33
  pipeId,
@@ -35,26 +36,26 @@ function PipeFormLegacy({ pipeId, publicKey, defaultValues, onSubmit, resolvers,
35
36
  resolvers,
36
37
  scopes,
37
38
  teamId,
38
- validationContext
39
+ validationContext,
40
+ sectionMap,
41
+ groupMap,
42
+ pathMap
39
43
  }),
40
44
  onSubmit,
41
- ...customization,
45
+ className,
46
+ classNames,
47
+ adapters,
42
48
  children
43
49
  });
44
50
  }
45
- function PipeFormWithContext({ context, onSubmit, children, className, sectionMap, groupMap, pathMap, classNames, adapters }) {
51
+ function PipeFormWithContext({ context, onSubmit, children, className, classNames, adapters }) {
46
52
  const hasLocalOverrides = classNames || adapters;
47
- const inner = /* @__PURE__ */ jsx(FormCustomizationProvider, {
48
- sectionMap,
49
- groupMap,
50
- pathMap,
51
- children: /* @__PURE__ */ jsx(PipeFormContext.Provider, {
52
- value: context,
53
- children: /* @__PURE__ */ jsx(PipeFormShell, {
54
- className,
55
- onSubmit,
56
- children
57
- })
53
+ const inner = /* @__PURE__ */ jsx(PipeFormContext.Provider, {
54
+ value: context,
55
+ children: /* @__PURE__ */ jsx(PipeFormShell, {
56
+ className,
57
+ onSubmit,
58
+ children
58
59
  })
59
60
  });
60
61
  if (hasLocalOverrides) return /* @__PURE__ */ jsx(FormRoot, { children: /* @__PURE__ */ jsx(FormProvider, {
@@ -65,14 +66,7 @@ function PipeFormWithContext({ context, onSubmit, children, className, sectionMa
65
66
  return /* @__PURE__ */ jsx(FormRoot, { children: inner });
66
67
  }
67
68
  function PipeFormShell({ children, className, onSubmit }) {
68
- const [, dispatch] = useFormCustomization();
69
69
  const context = usePipeFormContext();
70
- useEffect(() => {
71
- if (!context.resolvers?.getConnections) dispatch({
72
- type: "HIDE_SECTION",
73
- payload: "connector"
74
- });
75
- }, [context.resolvers, dispatch]);
76
70
  const [portalContainer, setPortalContainer] = useState(null);
77
71
  const portalRef = useCallback((node) => {
78
72
  setPortalContainer(node);
@@ -1 +1 @@
1
- {"version":3,"file":"root.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/root.tsx"],"sourcesContent":["import {\n type FormResolvers,\n type PipeId,\n type PipePayload,\n type ValidationContext,\n validatePipesOrError,\n} from \"@pipe0/base\";\nimport { type ReactNode, useCallback, useEffect, useState } from \"react\";\nimport type { UseFormReturn } from \"react-hook-form\";\nimport {\n FormCustomizationProvider,\n useFormCustomization,\n} from \"../../../context/form-customization-context.js\";\nimport { FormProvider, FormRoot } from \"../../../context/form-provider.js\";\nimport { PipeFormContext, usePipeFormContext } from \"../../../context/pipe-form-context.js\";\nimport { PortalContainerContext } from \"../../../context/portal-container-context.js\";\nimport { usePipeForm } from \"../../../hooks/use-pipe-form.js\";\nimport type { FieldAdapterMap, FormClassNames } from \"../../../types/adapters.js\";\nimport type { GroupMap, PathMap, SectionMap } from \"../../../types/form-customization.js\";\nimport { DefaultForm } from \"../../defaults/layout/form.js\";\nimport { PipeFormContent } from \"./content.js\";\nimport { PipeFormSubmitButton } from \"./submit-button.js\";\n\nexport type PipeFormSubmitHandler = (\n payload: PipePayload,\n ctx: { form: UseFormReturn<PipePayload> },\n) => void | Promise<void>;\n\ninterface CustomizationProps {\n sectionMap?: SectionMap;\n groupMap?: GroupMap;\n pathMap?: PathMap;\n classNames?: FormClassNames;\n adapters?: FieldAdapterMap;\n className?: string;\n}\n\nexport interface PipeFormInstanceProps extends CustomizationProps {\n context: PipeFormContext;\n onSubmit: PipeFormSubmitHandler;\n children?: ReactNode;\n}\n\nexport interface PipeFormLegacyProps extends CustomizationProps {\n pipeId: PipeId;\n publicKey: string;\n onSubmit: PipeFormSubmitHandler;\n defaultValues?: PipePayload;\n validationContext?: ValidationContext;\n resolvers?: FormResolvers;\n /**\n * Form-level scope tags. Bundled into every `resolvers.getSecrets` call so\n * the backend can return only the secrets allowed in the declared scopes.\n */\n scopes?: string[];\n /**\n * Current team context. Bundled into every `resolvers.getSecrets` call so\n * the backend can restrict team-level secrets to this team only.\n */\n teamId?: string;\n children?: ReactNode;\n}\n\nexport type PipeFormProps = PipeFormInstanceProps | PipeFormLegacyProps;\n\n/**\n * Compound root for pipe forms.\n *\n * Two modes:\n * - Compound: `<PipeForm context={ctx} onSubmit={...}>...</PipeForm>` — pass the context from `usePipeForm`.\n * - Zero-config: `<PipeForm pipeId=\"...\" publicKey=\"...\" onSubmit={...} />` — legacy API.\n */\nexport function PipeForm(props: PipeFormProps) {\n if (\"context\" in props) {\n return <PipeFormWithContext {...props} />;\n }\n return <PipeFormLegacy {...props} />;\n}\n\nfunction PipeFormLegacy({\n pipeId,\n publicKey,\n defaultValues,\n onSubmit,\n resolvers,\n scopes,\n teamId,\n validationContext = validatePipesOrError({\n config: { environment: \"production\" },\n pipes: [],\n input: [],\n }),\n children,\n ...customization\n}: PipeFormLegacyProps) {\n const context = usePipeForm({\n pipeId,\n publicKey,\n defaultValues,\n resolvers,\n scopes,\n teamId,\n validationContext,\n });\n\n return (\n <PipeFormWithContext context={context} onSubmit={onSubmit} {...customization}>\n {children}\n </PipeFormWithContext>\n );\n}\n\nfunction PipeFormWithContext({\n context,\n onSubmit,\n children,\n className,\n sectionMap,\n groupMap,\n pathMap,\n classNames,\n adapters,\n}: PipeFormInstanceProps) {\n const hasLocalOverrides = classNames || adapters;\n\n const inner = (\n <FormCustomizationProvider sectionMap={sectionMap} groupMap={groupMap} pathMap={pathMap}>\n <PipeFormContext.Provider value={context}>\n <PipeFormShell className={className} onSubmit={onSubmit}>\n {children}\n </PipeFormShell>\n </PipeFormContext.Provider>\n </FormCustomizationProvider>\n );\n\n if (hasLocalOverrides) {\n return (\n <FormRoot>\n <FormProvider classNames={classNames} adapters={adapters}>\n {inner}\n </FormProvider>\n </FormRoot>\n );\n }\n\n return <FormRoot>{inner}</FormRoot>;\n}\n\nfunction PipeFormShell({\n children,\n className,\n onSubmit,\n}: {\n children?: ReactNode;\n className?: string;\n onSubmit: PipeFormSubmitHandler;\n}) {\n const [, dispatch] = useFormCustomization();\n const context = usePipeFormContext();\n\n useEffect(() => {\n if (!context.resolvers?.getConnections) {\n dispatch({ type: \"HIDE_SECTION\", payload: \"connector\" });\n }\n }, [context.resolvers, dispatch]);\n\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n const portalRef = useCallback((node: HTMLElement | null) => {\n setPortalContainer(node);\n }, []);\n\n const body = children ?? (\n <>\n <PipeFormContent />\n <PipeFormSubmitButton />\n </>\n );\n\n const handleFormSubmit = context.form.handleSubmit(async (values) => {\n await onSubmit(values, { form: context.form });\n });\n\n return (\n <DefaultForm\n onSubmit={handleFormSubmit}\n ref={portalRef}\n data-p0=\"form\"\n data-p0-pipe={context.id}\n className={className}\n >\n <PortalContainerContext.Provider value={portalContainer}>\n {body}\n </PortalContainerContext.Provider>\n </DefaultForm>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwEA,SAAgB,SAAS,OAAsB;AAC7C,KAAI,aAAa,MACf,QAAO,oBAAC,qBAAD,EAAqB,GAAI,OAAS;AAE3C,QAAO,oBAAC,gBAAD,EAAgB,GAAI,OAAS;;AAGtC,SAAS,eAAe,EACtB,QACA,WACA,eACA,UACA,WACA,QACA,QACA,oBAAoB,qBAAqB;CACvC,QAAQ,EAAE,aAAa,cAAc;CACrC,OAAO,EAAE;CACT,OAAO,EAAE;CACV,CAAC,EACF,UACA,GAAG,iBACmB;AAWtB,QACE,oBAAC,qBAAD;EAAqB,SAXP,YAAY;GAC1B;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;EAGiD;EAAU,GAAI;EAC5D;EACmB;;AAI1B,SAAS,oBAAoB,EAC3B,SACA,UACA,UACA,WACA,YACA,UACA,SACA,YACA,YACwB;CACxB,MAAM,oBAAoB,cAAc;CAExC,MAAM,QACJ,oBAAC,2BAAD;EAAuC;EAAsB;EAAmB;YAC9E,oBAAC,gBAAgB,UAAjB;GAA0B,OAAO;aAC/B,oBAAC,eAAD;IAA0B;IAAqB;IAC5C;IACa;GACS;EACD;AAG9B,KAAI,kBACF,QACE,oBAAC,UAAD,YACE,oBAAC,cAAD;EAA0B;EAAsB;YAC7C;EACY,GACN;AAIf,QAAO,oBAAC,UAAD,YAAW,OAAiB;;AAGrC,SAAS,cAAc,EACrB,UACA,WACA,YAKC;CACD,MAAM,GAAG,YAAY,sBAAsB;CAC3C,MAAM,UAAU,oBAAoB;AAEpC,iBAAgB;AACd,MAAI,CAAC,QAAQ,WAAW,eACtB,UAAS;GAAE,MAAM;GAAgB,SAAS;GAAa,CAAC;IAEzD,CAAC,QAAQ,WAAW,SAAS,CAAC;CAEjC,MAAM,CAAC,iBAAiB,sBAAsB,SAA6B,KAAK;CAChF,MAAM,YAAY,aAAa,SAA6B;AAC1D,qBAAmB,KAAK;IACvB,EAAE,CAAC;CAEN,MAAM,OAAO,YACX,8CACE,oBAAC,iBAAD,EAAmB,GACnB,oBAAC,sBAAD,EAAwB,EACvB;AAOL,QACE,oBAAC,aAAD;EACE,UANqB,QAAQ,KAAK,aAAa,OAAO,WAAW;AACnE,SAAM,SAAS,QAAQ,EAAE,MAAM,QAAQ,MAAM,CAAC;IAC9C;EAKE,KAAK;EACL,WAAQ;EACR,gBAAc,QAAQ;EACX;YAEX,oBAAC,uBAAuB,UAAxB;GAAiC,OAAO;aACrC;GAC+B;EACtB"}
1
+ {"version":3,"file":"root.mjs","names":[],"sources":["../../../../src/components/compound/pipe-form/root.tsx"],"sourcesContent":["import {\n type FormResolvers,\n type PipeId,\n type PipePayload,\n type ValidationContext,\n validatePipesOrError,\n} from \"@pipe0/base\";\nimport { type ReactNode, useCallback, useState } from \"react\";\nimport { FormProvider, FormRoot } from \"../../../context/form-provider.js\";\nimport type { PipeFormContext as PipeFormContextValue } from \"../../../context/pipe-form-context.js\";\nimport { PipeFormContext, usePipeFormContext } from \"../../../context/pipe-form-context.js\";\nimport { PortalContainerContext } from \"../../../context/portal-container-context.js\";\nimport { usePipeForm } from \"../../../hooks/use-pipe-form.js\";\nimport type { FieldAdapterMap, FormClassNames } from \"../../../types/adapters.js\";\nimport type { GroupMap, PathMap, SectionMap } from \"../../../types/form-customization.js\";\nimport type { FormHandle } from \"../../../types/form-handle.js\";\nimport { DefaultForm } from \"../../defaults/layout/form.js\";\nimport { PipeFormContent } from \"./content.js\";\nimport { PipeFormSubmitButton } from \"./submit-button.js\";\n\nexport type PipeFormSubmitHandler = (\n payload: PipePayload,\n ctx: { form: FormHandle<PipePayload> },\n) => void | Promise<void>;\n\ninterface RenderingProps {\n classNames?: FormClassNames;\n adapters?: FieldAdapterMap;\n className?: string;\n}\n\nexport interface PipeFormInstanceProps extends RenderingProps {\n context: PipeFormContextValue;\n onSubmit: PipeFormSubmitHandler;\n children?: ReactNode;\n}\n\nexport interface PipeFormZeroConfigProps extends RenderingProps {\n pipeId: PipeId;\n publicKey: string;\n onSubmit: PipeFormSubmitHandler;\n defaultValues?: PipePayload;\n validationContext?: ValidationContext;\n resolvers?: FormResolvers;\n /**\n * Hide / relabel / reorder sections by section key. `null` hides a section.\n * Forwarded to the internal `usePipeForm` call. For `<PipeForm context={...}>`,\n * pass these to `usePipeForm` directly instead.\n */\n sectionMap?: SectionMap;\n groupMap?: GroupMap;\n pathMap?: PathMap;\n /**\n * Form-level scope tags. Bundled into every `resolvers.getSecrets` call so\n * the backend can return only the secrets allowed in the declared scopes.\n */\n scopes?: string[];\n /**\n * Current team context. Bundled into every `resolvers.getSecrets` call so\n * the backend can restrict team-level secrets to this team only.\n */\n teamId?: string;\n children?: ReactNode;\n}\n\nexport type PipeFormProps = PipeFormInstanceProps | PipeFormZeroConfigProps;\n\n/**\n * Compound root for pipe forms.\n *\n * Two modes:\n * - Compound: `<PipeForm context={ctx} onSubmit={...}>...</PipeForm>` — pass the context from `usePipeForm`.\n * Visibility customization (`sectionMap`/`groupMap`/`pathMap`) lives on the hook in this mode.\n * - Zero-config: `<PipeForm pipeId=\"...\" publicKey=\"...\" onSubmit={...} />` — fresh hook created\n * internally; visibility maps may be passed as props and forward to that hook.\n */\nexport function PipeForm(props: PipeFormProps) {\n if (\"context\" in props) {\n return <PipeFormWithContext {...props} />;\n }\n return <PipeFormZeroConfig {...props} />;\n}\n\nfunction PipeFormZeroConfig({\n pipeId,\n publicKey,\n defaultValues,\n onSubmit,\n resolvers,\n scopes,\n teamId,\n sectionMap,\n groupMap,\n pathMap,\n validationContext = validatePipesOrError({\n config: { environment: \"production\" },\n pipes: [],\n input: [],\n }),\n children,\n classNames,\n adapters,\n className,\n}: PipeFormZeroConfigProps) {\n const context = usePipeForm({\n pipeId,\n publicKey,\n defaultValues,\n resolvers,\n scopes,\n teamId,\n validationContext,\n sectionMap,\n groupMap,\n pathMap,\n });\n\n return (\n <PipeFormWithContext\n context={context}\n onSubmit={onSubmit}\n className={className}\n classNames={classNames}\n adapters={adapters}\n >\n {children}\n </PipeFormWithContext>\n );\n}\n\nfunction PipeFormWithContext({\n context,\n onSubmit,\n children,\n className,\n classNames,\n adapters,\n}: PipeFormInstanceProps) {\n const hasLocalOverrides = classNames || adapters;\n\n const inner = (\n <PipeFormContext.Provider value={context}>\n <PipeFormShell className={className} onSubmit={onSubmit}>\n {children}\n </PipeFormShell>\n </PipeFormContext.Provider>\n );\n\n if (hasLocalOverrides) {\n return (\n <FormRoot>\n <FormProvider classNames={classNames} adapters={adapters}>\n {inner}\n </FormProvider>\n </FormRoot>\n );\n }\n\n return <FormRoot>{inner}</FormRoot>;\n}\n\nfunction PipeFormShell({\n children,\n className,\n onSubmit,\n}: {\n children?: ReactNode;\n className?: string;\n onSubmit: PipeFormSubmitHandler;\n}) {\n const context = usePipeFormContext();\n\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n const portalRef = useCallback((node: HTMLElement | null) => {\n setPortalContainer(node);\n }, []);\n\n const body = children ?? (\n <>\n <PipeFormContent />\n <PipeFormSubmitButton />\n </>\n );\n\n const handleFormSubmit = context.form.handleSubmit(async (values) => {\n await onSubmit(values, { form: context.form });\n });\n\n return (\n <DefaultForm\n onSubmit={handleFormSubmit}\n ref={portalRef}\n data-p0=\"form\"\n data-p0-pipe={context.id}\n className={className}\n >\n <PortalContainerContext.Provider value={portalContainer}>\n {body}\n </PortalContainerContext.Provider>\n </DefaultForm>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4EA,SAAgB,SAAS,OAAsB;AAC7C,KAAI,aAAa,MACf,QAAO,oBAAC,qBAAD,EAAqB,GAAI,OAAS;AAE3C,QAAO,oBAAC,oBAAD,EAAoB,GAAI,OAAS;;AAG1C,SAAS,mBAAmB,EAC1B,QACA,WACA,eACA,UACA,WACA,QACA,QACA,YACA,UACA,SACA,oBAAoB,qBAAqB;CACvC,QAAQ,EAAE,aAAa,cAAc;CACrC,OAAO,EAAE;CACT,OAAO,EAAE;CACV,CAAC,EACF,UACA,YACA,UACA,aAC0B;AAc1B,QACE,oBAAC,qBAAD;EACE,SAfY,YAAY;GAC1B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;EAKY;EACC;EACC;EACF;EAET;EACmB;;AAI1B,SAAS,oBAAoB,EAC3B,SACA,UACA,UACA,WACA,YACA,YACwB;CACxB,MAAM,oBAAoB,cAAc;CAExC,MAAM,QACJ,oBAAC,gBAAgB,UAAjB;EAA0B,OAAO;YAC/B,oBAAC,eAAD;GAA0B;GAAqB;GAC5C;GACa;EACS;AAG7B,KAAI,kBACF,QACE,oBAAC,UAAD,YACE,oBAAC,cAAD;EAA0B;EAAsB;YAC7C;EACY,GACN;AAIf,QAAO,oBAAC,UAAD,YAAW,OAAiB;;AAGrC,SAAS,cAAc,EACrB,UACA,WACA,YAKC;CACD,MAAM,UAAU,oBAAoB;CAEpC,MAAM,CAAC,iBAAiB,sBAAsB,SAA6B,KAAK;CAChF,MAAM,YAAY,aAAa,SAA6B;AAC1D,qBAAmB,KAAK;IACvB,EAAE,CAAC;CAEN,MAAM,OAAO,YACX,8CACE,oBAAC,iBAAD,EAAmB,GACnB,oBAAC,sBAAD,EAAwB,EACvB;AAOL,QACE,oBAAC,aAAD;EACE,UANqB,QAAQ,KAAK,aAAa,OAAO,WAAW;AACnE,SAAM,SAAS,QAAQ,EAAE,MAAM,QAAQ,MAAM,CAAC;IAC9C;EAKE,KAAK;EACL,WAAQ;EACR,gBAAc,QAAQ;EACX;YAEX,oBAAC,uBAAuB,UAAxB;GAAiC,OAAO;aACrC;GAC+B;EACtB"}
@@ -1,9 +1,20 @@
1
- import { DefaultSubmitButtonProps } from "../../defaults/layout/submit-button.mjs";
2
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import * as _$react from "react";
3
3
 
4
4
  //#region src/components/compound/pipe-form/submit-button.d.ts
5
- type PipeFormSubmitButtonProps = Omit<DefaultSubmitButtonProps, "isSubmitting">;
6
- declare function PipeFormSubmitButton(props: PipeFormSubmitButtonProps): _$react_jsx_runtime0.JSX.Element;
5
+ interface PipeFormSubmitButtonState {
6
+ isSubmitting: boolean;
7
+ isFieldLoaderLoading: boolean;
8
+ disabled: boolean;
9
+ }
10
+ interface PipeFormSubmitButtonProps extends useRender.ComponentProps<"button", PipeFormSubmitButtonState> {}
11
+ declare function PipeFormSubmitButton({
12
+ className,
13
+ children,
14
+ render,
15
+ disabled: disabledProp,
16
+ ...props
17
+ }: PipeFormSubmitButtonProps): _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>>;
7
18
  //#endregion
8
19
  export { PipeFormSubmitButton };
9
20
  //# sourceMappingURL=submit-button.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit-button.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/submit-button.tsx"],"mappings":";;;;KAMY,yBAAA,GAA4B,IAAA,CAAK,wBAAA;AAAA,iBAE7B,oBAAA,CAAqB,KAAA,EAAO,yBAAA,GAAyB,oBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"submit-button.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-form/submit-button.tsx"],"mappings":";;;;UAMiB,yBAAA;EACf,YAAA;EACA,oBAAA;EACA,QAAA;AAAA;AAAA,UAGe,yBAAA,SACP,SAAA,CAAU,cAAA,WAAyB,yBAAA;AAAA,iBAE7B,oBAAA,CAAA;EACd,SAAA;EACA,QAAA;EACA,MAAA;EACA,QAAA,EAAU,YAAA;EAAA,GACP;AAAA,GACF,yBAAA,GAAyB,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
@@ -1,14 +1,29 @@
1
+ import { cn } from "../../../lib/utils.mjs";
2
+ import { buttonVariants } from "../../ui/button.mjs";
1
3
  import { usePipeFormContext } from "../../../context/pipe-form-context.mjs";
2
- import { DefaultSubmitButton } from "../../defaults/layout/submit-button.mjs";
3
- import { jsx } from "react/jsx-runtime";
4
+ import { mergeProps } from "@base-ui/react/merge-props";
5
+ import { useRender } from "@base-ui/react/use-render";
4
6
 
5
7
  //#region src/components/compound/pipe-form/submit-button.tsx
6
- function PipeFormSubmitButton(props) {
7
- const { form, fieldLoadStates } = usePipeFormContext();
8
- const anyLoading = Object.values(fieldLoadStates).some((s) => s.status === "loading");
9
- return /* @__PURE__ */ jsx(DefaultSubmitButton, {
10
- isSubmitting: form.formState.isSubmitting || anyLoading,
11
- ...props
8
+ function PipeFormSubmitButton({ className, children, render, disabled: disabledProp, ...props }) {
9
+ const { form, isFieldLoaderLoading } = usePipeFormContext();
10
+ const isSubmitting = form.formState.isSubmitting;
11
+ const disabled = disabledProp ?? (isSubmitting || isFieldLoaderLoading);
12
+ return useRender({
13
+ defaultTagName: "button",
14
+ render,
15
+ state: {
16
+ isSubmitting,
17
+ isFieldLoaderLoading,
18
+ disabled
19
+ },
20
+ props: mergeProps({
21
+ type: "submit",
22
+ disabled,
23
+ className: cn(buttonVariants({}), className),
24
+ children: children ?? (isSubmitting ? "Submitting..." : "Submit"),
25
+ "data-p0": "submit"
26
+ }, props)
12
27
  });
13
28
  }
14
29