@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,70 +1,169 @@
1
+ import { cn } from "../../../lib/utils.mjs";
1
2
  import { Button } from "../../ui/button.mjs";
2
3
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../ui/select.mjs";
3
4
  import { Input } from "../../ui/input.mjs";
4
- import { IconPlus, IconTrash } from "../../internal/icons.mjs";
5
+ import { IconChevronDown, IconEye, IconEyeOff, IconPlus, IconRefresh, IconTrash } from "../../internal/icons.mjs";
5
6
  import { HoverInfo } from "../../hover-info.mjs";
6
- import { Badge } from "../../ui/badge.mjs";
7
7
  import { useFieldError } from "../../../hooks/use-field-error.mjs";
8
8
  import { Label } from "../../ui/label.mjs";
9
9
  import { useJsonataPreview } from "../../../hooks/use-jsonata-preview.mjs";
10
10
  import { generateRandomString } from "../../../utils/generate-random-string.mjs";
11
- import { ToggleAdvancedButton } from "../toggle-advanced-button.mjs";
12
11
  import { useMemo, useState } from "react";
13
- import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
14
13
  import { RECORD_FIELD_TYPES, TYPES_TO_FORMATS } from "@pipe0/base";
15
- import { Collapsible } from "@base-ui/react/collapsible";
16
- import { Tabs } from "@base-ui/react/tabs";
17
14
 
18
15
  //#region src/components/defaults/adapters/json-extraction-input.tsx
16
+ function inferPreviewType(value) {
17
+ if (value === null) return "null";
18
+ if (value === void 0) return "undefined";
19
+ if (Array.isArray(value)) return "array";
20
+ if (typeof value === "object") return "object";
21
+ return typeof value;
22
+ }
23
+ const TOKEN_REGEX = /("(?:\\.|[^"\\])*"\s*:)|("(?:\\.|[^"\\])*")|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)|(true|false)|(null)/g;
24
+ /**
25
+ * Renders pretty-printed JSON with inline syntax styling. Sans-serif on
26
+ * purpose — this surface inherits the form's display font, so we set
27
+ * `font-sans` to override the scoped preflight that defaults <pre> to mono.
28
+ */
29
+ function JsonHighlight({ value }) {
30
+ const json = useMemo(() => {
31
+ try {
32
+ return JSON.stringify(value, null, 2) ?? String(value);
33
+ } catch {
34
+ return String(value);
35
+ }
36
+ }, [value]);
37
+ return /* @__PURE__ */ jsx("pre", {
38
+ className: "pz:m-0 pz:font-sans pz:whitespace-pre pz:tabular-nums pz:text-xs pz:leading-5 pz:text-foreground",
39
+ children: useMemo(() => {
40
+ const out = [];
41
+ let lastIndex = 0;
42
+ let key = 0;
43
+ TOKEN_REGEX.lastIndex = 0;
44
+ let match;
45
+ while ((match = TOKEN_REGEX.exec(json)) !== null) {
46
+ if (match.index > lastIndex) out.push(json.slice(lastIndex, match.index));
47
+ const [whole, propKey, str, num, bool, nul] = match;
48
+ if (propKey) out.push(/* @__PURE__ */ jsx("span", {
49
+ className: "pz:text-foreground/80",
50
+ children: propKey
51
+ }, key++));
52
+ else if (str) out.push(/* @__PURE__ */ jsx("span", {
53
+ className: "pz:text-emerald-700 pz:dark:text-emerald-400",
54
+ children: str
55
+ }, key++));
56
+ else if (num) out.push(/* @__PURE__ */ jsx("span", {
57
+ className: "pz:text-amber-700 pz:dark:text-amber-400",
58
+ children: num
59
+ }, key++));
60
+ else if (bool) out.push(/* @__PURE__ */ jsx("span", {
61
+ className: "pz:text-rose-700 pz:dark:text-rose-400",
62
+ children: bool
63
+ }, key++));
64
+ else if (nul) out.push(/* @__PURE__ */ jsx("span", {
65
+ className: "pz:text-muted-foreground pz:italic",
66
+ children: nul
67
+ }, key++));
68
+ else out.push(whole);
69
+ lastIndex = match.index + whole.length;
70
+ }
71
+ if (lastIndex < json.length) out.push(json.slice(lastIndex));
72
+ return out;
73
+ }, [json])
74
+ });
75
+ }
76
+ function PreviewStatusPill({ type, state }) {
77
+ const dotClass = {
78
+ resolved: "pz:bg-emerald-500",
79
+ loading: "pz:bg-amber-500 pz:animate-pulse",
80
+ error: "pz:bg-destructive"
81
+ }[state];
82
+ const label = state === "error" ? "Error" : state === "loading" ? "Resolving" : "Resolved";
83
+ return /* @__PURE__ */ jsxs("span", {
84
+ className: "pz:inline-flex pz:items-center pz:gap-1.5 pz:text-xs pz:text-muted-foreground pz:font-normal",
85
+ children: [
86
+ /* @__PURE__ */ jsx("span", { className: cn("pz:size-1.5 pz:rounded-full pz:shrink-0", dotClass) }),
87
+ label,
88
+ state !== "error" && type && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
89
+ className: "pz:text-muted-foreground/60",
90
+ children: "·"
91
+ }), /* @__PURE__ */ jsx("span", { children: type })] })
92
+ ]
93
+ });
94
+ }
95
+ function PreviewTab({ active, onClick, children }) {
96
+ return /* @__PURE__ */ jsxs("button", {
97
+ type: "button",
98
+ onClick,
99
+ className: cn("pz:relative pz:px-0.5 pz:py-2 pz:text-xs pz:transition-colors pz:outline-none pz:focus-visible:text-foreground", active ? "pz:font-medium pz:text-foreground" : "pz:font-normal pz:text-muted-foreground pz:hover:text-foreground"),
100
+ children: [children, active && /* @__PURE__ */ jsx("span", { className: "pz:absolute pz:inset-x-0 pz:-bottom-px pz:h-0.5 pz:bg-foreground pz:rounded-full" })]
101
+ });
102
+ }
19
103
  function ExtractionPreview({ exampleValue, extraction }) {
104
+ const [tab, setTab] = useState("extracted");
20
105
  const { preview, error, isLoading } = useJsonataPreview(extraction.path, exampleValue);
21
- return /* @__PURE__ */ jsxs(Tabs.Root, {
22
- defaultValue: "extracted",
23
- className: "pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-input pz:bg-muted/30",
24
- children: [
25
- /* @__PURE__ */ jsxs("div", {
26
- className: "pz:flex pz:items-center pz:justify-between pz:px-2 pz:py-1",
27
- children: [/* @__PURE__ */ jsx("span", {
28
- className: "pz:text-xs pz:font-medium pz:text-muted-foreground",
29
- children: "Preview"
30
- }), /* @__PURE__ */ jsxs(Tabs.List, {
31
- className: "pz:inline-flex pz:gap-1",
32
- children: [
33
- isLoading && /* @__PURE__ */ jsx("span", {
34
- className: "pz:text-xs pz:text-muted-foreground",
35
- children: "..."
36
- }),
37
- /* @__PURE__ */ jsx(Tabs.Tab, {
38
- value: "extracted",
39
- className: "pz:rounded-sm pz:px-2 pz:py-0.5 pz:text-xs pz:hover:bg-accent pz:data-[active]:bg-accent pz:data-[active]:text-accent-foreground",
40
- children: "Extracted"
41
- }),
42
- /* @__PURE__ */ jsx(Tabs.Tab, {
43
- value: "full",
44
- className: "pz:rounded-sm pz:px-2 pz:py-0.5 pz:text-xs pz:hover:bg-accent pz:data-[active]:bg-accent pz:data-[active]:text-accent-foreground",
45
- children: "Full value"
46
- })
47
- ]
106
+ const state = error ? "error" : isLoading ? "loading" : "resolved";
107
+ const previewType = useMemo(() => inferPreviewType(preview), [preview]);
108
+ const valueToShow = tab === "extracted" ? preview : exampleValue;
109
+ const tintClass = state === "error" ? "pz:bg-rose-50/60 pz:dark:bg-rose-950/20" : "pz:bg-emerald-50/50 pz:dark:bg-emerald-950/15";
110
+ return /* @__PURE__ */ jsxs("div", {
111
+ className: "pz:flex pz:min-w-0 pz:flex-col pz:overflow-hidden pz:rounded-md pz:border pz:border-input",
112
+ children: [/* @__PURE__ */ jsxs("div", {
113
+ className: "pz:flex pz:items-center pz:justify-between pz:gap-2 pz:px-3 pz:bg-background pz:border-b pz:border-input",
114
+ children: [/* @__PURE__ */ jsxs("div", {
115
+ className: "pz:flex pz:items-center pz:gap-3",
116
+ children: [/* @__PURE__ */ jsx(PreviewTab, {
117
+ active: tab === "extracted",
118
+ onClick: () => setTab("extracted"),
119
+ children: "Extracted"
120
+ }), /* @__PURE__ */ jsx(PreviewTab, {
121
+ active: tab === "full",
122
+ onClick: () => setTab("full"),
123
+ children: "Full response"
48
124
  })]
125
+ }), /* @__PURE__ */ jsxs("div", {
126
+ className: "pz:flex pz:items-center pz:gap-2 pz:py-1",
127
+ children: [/* @__PURE__ */ jsx(PreviewStatusPill, {
128
+ type: tab === "extracted" ? previewType : inferPreviewType(exampleValue),
129
+ state: tab === "extracted" ? state : "resolved"
130
+ }), /* @__PURE__ */ jsx("span", {
131
+ className: cn("pz:text-muted-foreground/60 pz:transition-opacity", isLoading && "pz:animate-spin pz:text-muted-foreground"),
132
+ "aria-hidden": true,
133
+ children: /* @__PURE__ */ jsx(IconRefresh, {
134
+ width: 12,
135
+ height: 12
136
+ })
137
+ })]
138
+ })]
139
+ }), /* @__PURE__ */ jsx("div", {
140
+ className: cn("pz:max-h-44 pz:max-w-full pz:overflow-auto pz:p-3 pz:relative", tab === "extracted" ? tintClass : "pz:bg-muted/20"),
141
+ children: tab === "extracted" && error ? /* @__PURE__ */ jsx("pre", {
142
+ className: "pz:m-0 pz:font-sans pz:whitespace-pre-wrap pz:break-words pz:text-xs pz:leading-5 pz:text-destructive",
143
+ children: error
144
+ }) : /* @__PURE__ */ jsx(JsonHighlight, { value: valueToShow })
145
+ })]
146
+ });
147
+ }
148
+ function FieldRow({ label, hint, error, children }) {
149
+ return /* @__PURE__ */ jsxs("div", {
150
+ className: "pz:flex pz:flex-col pz:gap-1.5",
151
+ children: [
152
+ /* @__PURE__ */ jsxs(Label, {
153
+ className: "pz:inline-flex pz:items-center pz:gap-1 pz:text-xs pz:font-medium pz:text-muted-foreground",
154
+ children: [label, hint && /* @__PURE__ */ jsx(HoverInfo, { children: hint })]
49
155
  }),
50
- /* @__PURE__ */ jsx(Tabs.Panel, {
51
- value: "full",
52
- children: /* @__PURE__ */ jsx("pre", {
53
- className: "pz:m-0 pz:overflow-auto pz:rounded-b-md pz:bg-muted/30 pz:p-2 pz:text-xs pz:text-foreground",
54
- children: JSON.stringify(exampleValue, null, 2)
55
- })
56
- }),
57
- /* @__PURE__ */ jsx(Tabs.Panel, {
58
- value: "extracted",
59
- children: /* @__PURE__ */ jsx("pre", {
60
- className: "pz:m-0 pz:overflow-auto pz:rounded-b-md pz:bg-muted/30 pz:p-2 pz:text-xs pz:text-foreground",
61
- children: error ? error : JSON.stringify(preview, null, 2)
62
- })
156
+ children,
157
+ error && /* @__PURE__ */ jsx("span", {
158
+ className: "pz:text-destructive pz:text-xs pz:font-medium",
159
+ role: "alert",
160
+ children: error
63
161
  })
64
162
  ]
65
163
  });
66
164
  }
67
- function ExtractionCard({ extraction, idx, isLast, option, form, basePath, onUpdate, onRemove, onAdd }) {
165
+ function ExtractionCard({ extraction, idx, option, form, basePath, onUpdate, onRemove }) {
166
+ const [open, setOpen] = useState(true);
68
167
  const [showPreview, setShowPreview] = useState(false);
69
168
  const extractionPath = `${basePath}.extractions.${idx}`;
70
169
  const pathError = useFieldError(form, `${extractionPath}.path`);
@@ -91,131 +190,122 @@ function ExtractionCard({ extraction, idx, isLast, option, form, basePath, onUpd
91
190
  output_field: newOutputField
92
191
  });
93
192
  };
94
- return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
95
- className: "pz:flex pz:flex-col pz:gap-2 pz:border-t pz:border-b pz:border-input pz:p-3",
193
+ const canPreview = option.exampleValue != null;
194
+ return /* @__PURE__ */ jsxs("div", {
195
+ className: "pz:flex pz:min-w-0 pz:flex-col pz:overflow-hidden pz:rounded-lg pz:border pz:border-input pz:bg-background",
96
196
  children: [/* @__PURE__ */ jsxs("div", {
97
- className: "pz:flex pz:items-center pz:justify-between",
98
- children: [/* @__PURE__ */ jsxs("div", {
99
- className: "pz:h-7 pz:px-2 pz:font-semibold pz:select-none pz:text-xs pz:rounded-sm pz:bg-accent pz:border pz:border-input pz:text-muted-foreground pz:grid pz:place-content-center",
100
- children: [idx + 1, ". Extraction"]
101
- }), /* @__PURE__ */ jsx(Button, {
102
- variant: "destructive",
103
- size: "icon",
104
- className: "pz:[&_svg]:size-3 pz:size-7 pz:rounded-sm",
105
- onClick: () => onRemove(idx),
106
- title: "Remove condition",
107
- children: /* @__PURE__ */ jsx(IconTrash, {})
197
+ className: "pz:flex pz:items-center pz:justify-between pz:gap-2 pz:px-3 pz:py-1.5",
198
+ children: [/* @__PURE__ */ jsxs("button", {
199
+ type: "button",
200
+ onClick: () => setOpen((v) => !v),
201
+ className: "pz:inline-flex pz:items-center pz:gap-1.5 pz:rounded-sm pz:py-1 pz:pr-1.5 pz:text-sm pz:font-medium pz:text-foreground pz:outline-none pz:focus-visible:ring-3 pz:focus-visible:ring-ring/50",
202
+ children: [
203
+ /* @__PURE__ */ jsx(IconChevronDown, {
204
+ width: 14,
205
+ height: 14,
206
+ className: "pz:text-muted-foreground pz:transition-transform",
207
+ style: { transform: open ? "rotate(0deg)" : "rotate(-90deg)" }
208
+ }),
209
+ "Extraction ",
210
+ idx + 1
211
+ ]
212
+ }), /* @__PURE__ */ jsxs("div", {
213
+ className: "pz:flex pz:items-center pz:gap-0.5",
214
+ children: [canPreview ? /* @__PURE__ */ jsxs(Button, {
215
+ type: "button",
216
+ variant: "ghost",
217
+ size: "xs",
218
+ onClick: () => {
219
+ if (!open) setOpen(true);
220
+ setShowPreview((v) => !v);
221
+ },
222
+ className: "pz:text-muted-foreground pz:hover:text-foreground pz:font-normal",
223
+ children: [showPreview ? /* @__PURE__ */ jsx(IconEyeOff, {}) : /* @__PURE__ */ jsx(IconEye, {}), showPreview ? "Hide preview" : "Preview"]
224
+ }) : /* @__PURE__ */ jsx("span", {
225
+ className: "pz:text-xs pz:text-muted-foreground pz:px-1.5",
226
+ children: "No preview"
227
+ }), /* @__PURE__ */ jsx(Button, {
228
+ type: "button",
229
+ variant: "ghost",
230
+ size: "icon-xs",
231
+ onClick: () => onRemove(idx),
232
+ title: "Remove extraction",
233
+ className: "pz:text-muted-foreground pz:hover:text-destructive pz:hover:bg-destructive/10",
234
+ children: /* @__PURE__ */ jsx(IconTrash, {})
235
+ })]
108
236
  })]
109
- }), /* @__PURE__ */ jsxs("div", {
110
- className: "pz:flex pz:flex-col pz:gap-2",
237
+ }), open && /* @__PURE__ */ jsxs("div", {
238
+ className: "pz:flex pz:min-w-0 pz:flex-col pz:gap-3 pz:px-3 pz:pt-1 pz:pb-3",
111
239
  children: [
112
- option.exampleValue && showPreview && /* @__PURE__ */ jsx(ExtractionPreview, {
240
+ showPreview && canPreview && /* @__PURE__ */ jsx(ExtractionPreview, {
113
241
  exampleValue: option.exampleValue,
114
242
  extraction
115
243
  }),
116
- /* @__PURE__ */ jsxs("div", {
117
- className: "pz:flex pz:flex-col pz:gap-1",
118
- children: [
119
- /* @__PURE__ */ jsxs("div", {
120
- className: "pz:flex pz:items-center pz:justify-between",
121
- children: [/* @__PURE__ */ jsxs(Label, {
122
- className: "pz:text-xs pz:text-muted-foreground pz:inline-flex pz:items-center pz:gap-1",
123
- children: ["Path ", /* @__PURE__ */ jsx(HoverInfo, { children: "Use JSONata" })]
124
- }), option.exampleValue ? /* @__PURE__ */ jsx(Button, {
125
- type: "button",
126
- variant: "ghost",
127
- size: "sm",
128
- onClick: () => setShowPreview(!showPreview),
129
- children: showPreview ? "Hide preview" : "Show preview"
130
- }) : /* @__PURE__ */ jsx("span", {
131
- className: "pz:text-xs pz:text-muted-foreground",
132
- children: "No preview available"
133
- })]
134
- }),
135
- /* @__PURE__ */ jsx(Input, {
136
- value: extraction.path,
137
- onChange: (e) => updatePath(e.target.value),
138
- placeholder: "ex. emails[0].value",
139
- "aria-invalid": !!pathError
140
- }),
141
- pathError && /* @__PURE__ */ jsx("span", {
142
- className: "pz:text-destructive pz:text-xs pz:font-medium",
143
- role: "alert",
144
- children: pathError
145
- })
146
- ]
244
+ /* @__PURE__ */ jsx(FieldRow, {
245
+ label: "Output field label",
246
+ hint: "The display name for this field.",
247
+ children: /* @__PURE__ */ jsx(Input, {
248
+ value: extraction.output_field.label ?? "",
249
+ onChange: (e) => updateOutputField("label", e.target.value),
250
+ placeholder: "e.g. Full name"
251
+ })
252
+ }),
253
+ /* @__PURE__ */ jsx(FieldRow, {
254
+ label: "Path",
255
+ hint: "JSONata expression. Use dot or bracket notation to reach nested values.",
256
+ error: pathError,
257
+ children: /* @__PURE__ */ jsx(Input, {
258
+ value: extraction.path,
259
+ onChange: (e) => updatePath(e.target.value),
260
+ placeholder: "e.g. emails[0].value",
261
+ "aria-invalid": !!pathError
262
+ })
147
263
  }),
148
264
  /* @__PURE__ */ jsxs("div", {
149
- className: "pz:flex pz:items-end pz:gap-2",
150
- children: [/* @__PURE__ */ jsxs("div", {
151
- className: "pz:flex pz:flex-col pz:gap-1 pz:flex-1",
152
- children: [/* @__PURE__ */ jsx(Label, {
153
- className: "pz:text-xs pz:text-muted-foreground",
154
- children: "Output Type"
155
- }), /* @__PURE__ */ jsxs(Select, {
265
+ className: "pz:grid pz:grid-cols-2 pz:gap-2",
266
+ children: [/* @__PURE__ */ jsx(FieldRow, {
267
+ label: "Output type",
268
+ children: /* @__PURE__ */ jsxs(Select, {
156
269
  value: extraction.output_field.type,
157
270
  onValueChange: (v) => updateOutputField("type", v),
158
- children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, {}) }), /* @__PURE__ */ jsx(SelectContent, { children: RECORD_FIELD_TYPES.map((type) => /* @__PURE__ */ jsx(SelectItem, {
271
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
272
+ className: "pz:w-full",
273
+ children: /* @__PURE__ */ jsx(SelectValue, {})
274
+ }), /* @__PURE__ */ jsx(SelectContent, { children: RECORD_FIELD_TYPES.map((type) => /* @__PURE__ */ jsx(SelectItem, {
159
275
  value: type,
160
276
  children: type
161
277
  }, type)) })]
162
- })]
163
- }), availableFormats.length > 0 && /* @__PURE__ */ jsxs("div", {
164
- className: "pz:flex pz:flex-col pz:gap-1 pz:flex-1",
165
- children: [/* @__PURE__ */ jsx(Label, {
166
- className: "pz:text-xs pz:text-muted-foreground",
167
- children: "Format"
168
- }), /* @__PURE__ */ jsxs(Select, {
278
+ })
279
+ }), /* @__PURE__ */ jsx(FieldRow, {
280
+ label: "Format",
281
+ children: /* @__PURE__ */ jsxs(Select, {
169
282
  value: extraction.output_field.format || "",
170
283
  onValueChange: (v) => updateOutputField("format", v),
171
- children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select format" }) }), /* @__PURE__ */ jsx(SelectContent, { children: availableFormats.map((format) => /* @__PURE__ */ jsx(SelectItem, {
284
+ disabled: availableFormats.length === 0,
285
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
286
+ className: "pz:w-full",
287
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: availableFormats.length === 0 ? "—" : "Select format" })
288
+ }), /* @__PURE__ */ jsx(SelectContent, { children: availableFormats.map((format) => /* @__PURE__ */ jsx(SelectItem, {
172
289
  value: format,
173
290
  children: format
174
291
  }, format)) })]
175
- })]
292
+ })
176
293
  })]
177
294
  }),
178
- /* @__PURE__ */ jsxs(Collapsible.Root, { children: [/* @__PURE__ */ jsx(Collapsible.Trigger, { render: /* @__PURE__ */ jsx(ToggleAdvancedButton, { children: "Open advanced" }) }), /* @__PURE__ */ jsxs(Collapsible.Panel, {
179
- className: "pz:flex pz:flex-col pz:gap-2 pz:pt-2",
180
- children: [/* @__PURE__ */ jsxs("div", {
181
- className: "pz:flex pz:flex-col pz:gap-1",
182
- children: [
183
- /* @__PURE__ */ jsx(Label, {
184
- className: "pz:text-xs pz:text-muted-foreground",
185
- children: "Outpue field name"
186
- }),
187
- /* @__PURE__ */ jsx(Input, {
188
- value: extraction.output_field.name,
189
- onChange: (e) => updateOutputField("name", e.target.value),
190
- "aria-invalid": !!nameError
191
- }),
192
- nameError && /* @__PURE__ */ jsx("span", {
193
- className: "pz:text-destructive pz:text-xs pz:font-medium",
194
- role: "alert",
195
- children: nameError
196
- })
197
- ]
198
- }), /* @__PURE__ */ jsxs("div", {
199
- className: "pz:flex pz:flex-col pz:gap-1",
200
- children: [/* @__PURE__ */ jsx(Label, {
201
- className: "pz:text-xs pz:text-muted-foreground",
202
- children: "Output field label"
203
- }), /* @__PURE__ */ jsx(Input, {
204
- value: extraction.output_field.label,
205
- onChange: (e) => updateOutputField("label", e.target.value),
206
- placeholder: "Describe your new field"
207
- })]
208
- })]
209
- })] })
295
+ /* @__PURE__ */ jsx(FieldRow, {
296
+ label: "Output field name",
297
+ hint: "The internal identifier for this field. Must be unique.",
298
+ error: nameError,
299
+ children: /* @__PURE__ */ jsx(Input, {
300
+ value: extraction.output_field.name,
301
+ onChange: (e) => updateOutputField("name", e.target.value),
302
+ placeholder: "extract_full_name",
303
+ "aria-invalid": !!nameError
304
+ })
305
+ })
210
306
  ]
211
307
  })]
212
- }), isLast && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(Button, {
213
- type: "button",
214
- variant: "link",
215
- size: "xs",
216
- onClick: onAdd,
217
- children: [/* @__PURE__ */ jsx(IconPlus, {}), "Add path"]
218
- }) })] });
308
+ });
219
309
  }
220
310
  function JsonExtractionInputAdapter(field) {
221
311
  const meta = field.meta;
@@ -245,12 +335,6 @@ function JsonExtractionInputAdapter(field) {
245
335
  });
246
336
  else field.setValue(newValue);
247
337
  };
248
- const removeAllExtractions = () => {
249
- field.form.resetField(field.path, { defaultValue: {
250
- field_name: "",
251
- extractions: []
252
- } });
253
- };
254
338
  const updateExtraction = (idx, ext) => {
255
339
  const newExtractions = [...value.extractions];
256
340
  newExtractions[idx] = ext;
@@ -272,60 +356,68 @@ function JsonExtractionInputAdapter(field) {
272
356
  });
273
357
  };
274
358
  const option = useMemo(() => meta.fields.find((e) => e.fieldName === value.field_name), [value.field_name, meta.fields]);
275
- return /* @__PURE__ */ jsx("div", {
359
+ if (value.field_name && value.extractions.length > 0 && option) return /* @__PURE__ */ jsxs("div", {
276
360
  "data-p0": "input",
277
- className: "pz:flex pz:flex-col pz:gap-3",
278
- children: value.field_name && value.extractions.length > 0 && option ? /* @__PURE__ */ jsxs("div", {
279
- className: "pz:flex pz:flex-col pz:gap-2",
280
- children: [/* @__PURE__ */ jsxs("div", {
281
- className: "pz:flex pz:items-center pz:justify-between",
282
- children: [/* @__PURE__ */ jsxs(Badge, {
283
- variant: "secondary",
284
- className: "pz:h-7 pz:bg-accent pz:border-input pz:border pz:text-accent-foreground pz:font-normal",
285
- children: ["Field: ", /* @__PURE__ */ jsx("b", { children: option.fieldLabel || option.fieldName })]
286
- }), /* @__PURE__ */ jsxs(Button, {
287
- type: "button",
288
- variant: "destructive",
289
- size: "xs",
290
- className: "pz:font-normal pz:h-7",
291
- onClick: removeAllExtractions,
292
- children: ["Reset ", /* @__PURE__ */ jsx(IconTrash, {})]
361
+ className: "pz:flex pz:min-w-0 pz:flex-col pz:gap-2",
362
+ children: [
363
+ /* @__PURE__ */ jsxs("div", {
364
+ className: "pz:flex pz:min-w-0 pz:items-center pz:gap-1.5 pz:text-xs pz:text-muted-foreground",
365
+ children: [/* @__PURE__ */ jsx("span", { children: "Extracting from" }), /* @__PURE__ */ jsx("span", {
366
+ className: "pz:truncate pz:font-medium pz:text-foreground",
367
+ children: option.fieldLabel || option.fieldName
293
368
  })]
294
- }), value.extractions.map((extraction, idx) => /* @__PURE__ */ jsx(ExtractionCard, {
369
+ }),
370
+ value.extractions.map((extraction, idx) => /* @__PURE__ */ jsx(ExtractionCard, {
295
371
  extraction,
296
372
  idx,
297
- isLast: idx === value.extractions.length - 1,
298
373
  option,
299
374
  form: field.form,
300
375
  basePath: field.path,
301
376
  onUpdate: updateExtraction,
302
- onRemove: removeExtraction,
303
- onAdd: () => addExtraction()
304
- }, idx))]
305
- }) : meta.fields.length > 0 ? /* @__PURE__ */ jsx("div", {
306
- className: "pz:flex pz:flex-col pz:gap-2 pz:rounded-md pz:border-input",
307
- children: /* @__PURE__ */ jsxs(Select, {
308
- value: "",
309
- onValueChange: (v) => {
310
- if (v) addExtraction(v);
311
- },
312
- children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select field" }) }), /* @__PURE__ */ jsx(SelectContent, { children: meta.fields.map((f) => /* @__PURE__ */ jsxs(SelectItem, {
313
- value: f.fieldName,
314
- children: [
315
- f.fieldLabel,
316
- " - ",
317
- f.fieldName
318
- ]
319
- }, f.fieldName)) })]
377
+ onRemove: removeExtraction
378
+ }, idx)),
379
+ /* @__PURE__ */ jsx("div", {
380
+ className: "pz:flex pz:items-center pz:justify-between pz:pt-0.5",
381
+ children: /* @__PURE__ */ jsxs(Button, {
382
+ type: "button",
383
+ variant: "link",
384
+ size: "xs",
385
+ onClick: () => addExtraction(),
386
+ className: "pz:px-0",
387
+ children: [/* @__PURE__ */ jsx(IconPlus, {}), "Add extraction"]
388
+ })
320
389
  })
321
- }) : /* @__PURE__ */ jsxs("div", {
322
- className: "pz:flex pz:items-center pz:gap-1.5 pz:rounded-md pz:px-1",
323
- children: [/* @__PURE__ */ jsx("div", {
324
- className: "pz:text-xs pz:font-normal",
325
- children: "No JSON field available"
326
- }), /* @__PURE__ */ jsx(HoverInfo, { children: "A JSON field is required for this pipe. Add a json field to your pipeline." })]
390
+ ]
391
+ });
392
+ if (meta.fields.length > 0) return /* @__PURE__ */ jsx("div", {
393
+ "data-p0": "input",
394
+ className: "pz:flex pz:flex-col pz:gap-2",
395
+ children: /* @__PURE__ */ jsxs(Select, {
396
+ value: "",
397
+ onValueChange: (v) => {
398
+ if (v) addExtraction(v);
399
+ },
400
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
401
+ className: "pz:w-full",
402
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select a JSON field to extract from" })
403
+ }), /* @__PURE__ */ jsx(SelectContent, { children: meta.fields.map((f) => /* @__PURE__ */ jsxs(SelectItem, {
404
+ value: f.fieldName,
405
+ children: [
406
+ f.fieldLabel,
407
+ " - ",
408
+ f.fieldName
409
+ ]
410
+ }, f.fieldName)) })]
327
411
  })
328
412
  });
413
+ return /* @__PURE__ */ jsxs("div", {
414
+ "data-p0": "input",
415
+ className: "pz:flex pz:items-center pz:gap-1.5 pz:rounded-md pz:px-1",
416
+ children: [/* @__PURE__ */ jsx("div", {
417
+ className: "pz:text-xs pz:font-normal",
418
+ children: "No JSON field available"
419
+ }), /* @__PURE__ */ jsx(HoverInfo, { children: "A JSON field is required for this pipe. Add a json field to your pipeline." })]
420
+ });
329
421
  }
330
422
 
331
423
  //#endregion