@pipe0/react 0.0.4 → 0.0.6

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 +14 -0
  2. package/README.md +58 -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 -12
  8. package/dist/components/compound/pipe-catalog/card.d.mts.map +1 -1
  9. package/dist/components/compound/pipe-catalog/card.mjs +28 -25
  10. package/dist/components/compound/pipe-catalog/card.mjs.map +1 -1
  11. package/dist/components/compound/pipe-catalog/category-filter.d.mts +6 -13
  12. package/dist/components/compound/pipe-catalog/category-filter.d.mts.map +1 -1
  13. package/dist/components/compound/pipe-catalog/category-filter.mjs +12 -13
  14. package/dist/components/compound/pipe-catalog/category-filter.mjs.map +1 -1
  15. package/dist/components/compound/pipe-catalog/column-filter.d.mts +6 -14
  16. package/dist/components/compound/pipe-catalog/column-filter.d.mts.map +1 -1
  17. package/dist/components/compound/pipe-catalog/column-filter.mjs +9 -9
  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 +8 -25
  28. package/dist/components/compound/pipe-catalog/list.d.mts.map +1 -1
  29. package/dist/components/compound/pipe-catalog/list.mjs +14 -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 +5 -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 +9 -10
  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 +6 -3
  49. package/dist/components/compound/pipe-form/content.d.mts.map +1 -1
  50. package/dist/components/compound/pipe-form/content.mjs +17 -25
  51. package/dist/components/compound/pipe-form/content.mjs.map +1 -1
  52. package/dist/components/compound/pipe-form/errors.d.mts +23 -0
  53. package/dist/components/compound/pipe-form/errors.d.mts.map +1 -0
  54. package/dist/components/compound/pipe-form/errors.mjs +40 -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 -13
  82. package/dist/components/compound/search-catalog/card.d.mts.map +1 -1
  83. package/dist/components/compound/search-catalog/card.mjs +31 -28
  84. package/dist/components/compound/search-catalog/card.mjs.map +1 -1
  85. package/dist/components/compound/search-catalog/category-filter.d.mts +7 -13
  86. package/dist/components/compound/search-catalog/category-filter.d.mts.map +1 -1
  87. package/dist/components/compound/search-catalog/category-filter.mjs +12 -13
  88. package/dist/components/compound/search-catalog/category-filter.mjs.map +1 -1
  89. package/dist/components/compound/search-catalog/column-filter.d.mts +6 -10
  90. package/dist/components/compound/search-catalog/column-filter.d.mts.map +1 -1
  91. package/dist/components/compound/search-catalog/column-filter.mjs +9 -9
  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 +8 -10
  99. package/dist/components/compound/search-catalog/list.d.mts.map +1 -1
  100. package/dist/components/compound/search-catalog/list.mjs +14 -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 +5 -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 +9 -10
  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 +6 -3
  120. package/dist/components/compound/search-form/content.d.mts.map +1 -1
  121. package/dist/components/compound/search-form/content.mjs +17 -25
  122. package/dist/components/compound/search-form/content.mjs.map +1 -1
  123. package/dist/components/compound/search-form/errors.d.mts +23 -0
  124. package/dist/components/compound/search-form/errors.d.mts.map +1 -0
  125. package/dist/components/compound/search-form/errors.mjs +40 -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 +5 -6
  153. package/dist/components/compound/searches-catalog/card.d.mts.map +1 -1
  154. package/dist/components/compound/searches-catalog/card.mjs +38 -28
  155. package/dist/components/compound/searches-catalog/card.mjs.map +1 -1
  156. package/dist/components/compound/searches-catalog/category-filter.d.mts +7 -13
  157. package/dist/components/compound/searches-catalog/category-filter.d.mts.map +1 -1
  158. package/dist/components/compound/searches-catalog/category-filter.mjs +12 -13
  159. package/dist/components/compound/searches-catalog/category-filter.mjs.map +1 -1
  160. package/dist/components/compound/searches-catalog/column-filter.d.mts +6 -10
  161. package/dist/components/compound/searches-catalog/column-filter.d.mts.map +1 -1
  162. package/dist/components/compound/searches-catalog/column-filter.mjs +9 -9
  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 +8 -10
  170. package/dist/components/compound/searches-catalog/list.d.mts.map +1 -1
  171. package/dist/components/compound/searches-catalog/list.mjs +14 -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 +5 -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 +9 -10
  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 -2
  205. package/dist/components/defaults/layout/field-wrapper.d.mts.map +1 -1
  206. package/dist/components/defaults/layout/field-wrapper.mjs +5 -2
  207. package/dist/components/defaults/layout/field-wrapper.mjs.map +1 -1
  208. package/dist/components/defaults/layout/group.d.mts +4 -4
  209. package/dist/components/defaults/layout/group.d.mts.map +1 -1
  210. package/dist/components/defaults/layout/group.mjs +69 -54
  211. package/dist/components/defaults/layout/group.mjs.map +1 -1
  212. package/dist/components/defaults/layout/section.d.mts +9 -4
  213. package/dist/components/defaults/layout/section.d.mts.map +1 -1
  214. package/dist/components/defaults/layout/section.mjs +11 -13
  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 +2 -2
  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 +418 -38
  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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @pipe0/elements-react
2
2
 
3
+ ## 0.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - Prepare for major release
8
+ - Updated dependencies
9
+ - @pipe0/base@0.0.6
10
+
11
+ ## 0.0.5
12
+
13
+ ### Patch Changes
14
+
15
+ - @pipe0/base@0.0.5
16
+
3
17
  ## 0.0.4
4
18
 
5
19
  ### Patch Changes
package/README.md CHANGED
@@ -46,14 +46,14 @@ import {
46
46
  } from "@pipe0/react";
47
47
 
48
48
  function MyForm() {
49
- const ctx = usePipeForm({
49
+ const pipeForm = usePipeForm({
50
50
  pipeId: "people:name:split@1",
51
51
  publicKey: PIPE0_PUBLIC_KEY,
52
52
  resolvers,
53
53
  });
54
54
 
55
55
  return (
56
- <PipeForm context={ctx} onSubmit={(payload) => submit(payload)}>
56
+ <PipeForm context={pipeForm} onSubmit={(payload) => submit(payload)}>
57
57
  <PipeFormHeader>
58
58
  <PipeFormTitle>Split name</PipeFormTitle>
59
59
  </PipeFormHeader>
@@ -64,6 +64,62 @@ function MyForm() {
64
64
  }
65
65
  ```
66
66
 
67
+ ## Customizing form rendering
68
+
69
+ Every compound part accepts a `render` prop that receives `(props, state)`.
70
+ `props` are wired with all the event handlers, refs, and a11y attributes
71
+ that would have been spread on the default element. `state` exposes the
72
+ component's iterables and computed values, so you never need to call hooks
73
+ inside the callback.
74
+
75
+ ```tsx
76
+ // Inject a callout between the default sections and the error slots.
77
+ <PipeFormContent
78
+ render={(props, { sections, fieldPaths, hasFieldLoaderError, form }) => (
79
+ <div {...props}>
80
+ {sections.map((section) => (
81
+ <PipeFormSection key={section.key} section={section} />
82
+ ))}
83
+ <MyCallout />
84
+ {hasFieldLoaderError && (
85
+ <div role="alert">Failed to load options for one or more fields.</div>
86
+ )}
87
+ <FormLevelErrors control={form.control} fieldPaths={fieldPaths} />
88
+ </div>
89
+ )}
90
+ />;
91
+ ```
92
+
93
+ The default body of `<PipeFormContent />` is exactly that snippet (without
94
+ the callout); customizing the rendering means copying it and editing the
95
+ parts that should change. Each level of the hierarchy works the same way:
96
+
97
+ ```tsx
98
+ <PipeFormSection
99
+ section={section}
100
+ render={(props, { groups, hasErrors }) => (
101
+ <section {...props} data-errors={hasErrors}>
102
+ {groups.map((group) => (
103
+ <PipeFormGroup key={group.key} group={group} />
104
+ ))}
105
+ </section>
106
+ )}
107
+ />;
108
+
109
+ <PipeFormGroup
110
+ group={group}
111
+ render={(props, { fields, expanded }) => (
112
+ <fieldset {...props}>
113
+ {expanded && fields.map((field) => <PipeFormField key={field.path} field={field} />)}
114
+ </fieldset>
115
+ )}
116
+ />;
117
+ ```
118
+
119
+ Catalog components follow the same pattern (`{ cards, isEmpty }` on
120
+ `PipeCatalogList`, `{ activeFilters, isEmpty }` on `PipeCatalogActiveFilters`,
121
+ `{ value, isActive }` on `PipeCatalogSearchFilter`, etc.).
122
+
67
123
  ## SearchForm
68
124
 
69
125
  Same shape as `PipeForm`, but for searches (e.g. `people:profiles:crustdata@1`):
@@ -1,7 +1,5 @@
1
- import { RenderProp } from "../../../utils/render-slot.mjs";
1
+ import { useRender } from "@base-ui/react/use-render";
2
2
  import * as _$react from "react";
3
- import { ComponentProps } from "react";
4
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
3
 
6
4
  //#region src/components/compound/pipe-catalog/active-filters.d.ts
7
5
  interface ActiveFilter {
@@ -11,16 +9,15 @@ interface ActiveFilter {
11
9
  remove: () => void;
12
10
  }
13
11
  interface PipeCatalogActiveFiltersState {
14
- filters: ActiveFilter[];
15
- }
16
- interface PipeCatalogActiveFiltersProps {
17
- className?: string;
18
- render?: RenderProp<ComponentProps<"div">, PipeCatalogActiveFiltersState>;
12
+ activeFilters: ActiveFilter[];
13
+ isEmpty: boolean;
19
14
  }
15
+ interface PipeCatalogActiveFiltersProps extends useRender.ComponentProps<"div", PipeCatalogActiveFiltersState> {}
20
16
  declare function PipeCatalogActiveFilters({
21
17
  className,
22
- render
23
- }: PipeCatalogActiveFiltersProps): string | number | bigint | boolean | _$react_jsx_runtime0.JSX.Element | Iterable<_$react.ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<_$react.ReactNode> | null | undefined> | null | undefined;
18
+ render,
19
+ ...props
20
+ }: PipeCatalogActiveFiltersProps): _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | null;
24
21
  //#endregion
25
22
  export { ActiveFilter, PipeCatalogActiveFilters, PipeCatalogActiveFiltersProps, PipeCatalogActiveFiltersState };
26
23
  //# sourceMappingURL=active-filters.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"active-filters.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/active-filters.tsx"],"mappings":";;;;;;UAciB,YAAA;EACf,EAAA;EACA,KAAA;EACA,KAAA;EACA,MAAA;AAAA;AAAA,UAGe,6BAAA;EACf,OAAA,EAAS,YAAA;AAAA;AAAA,UAGM,6BAAA;EACf,SAAA;EACA,MAAA,GAAS,UAAA,CAAW,cAAA,SAAuB,6BAAA;AAAA;AAAA,iBAG7B,wBAAA,CAAA;EAA2B,SAAA;EAAW;AAAA,GAAU,6BAAA,wCAA6B,oBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,QAAA,CAAA,OAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,OAAA,CAAA,SAAA"}
1
+ {"version":3,"file":"active-filters.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/active-filters.tsx"],"mappings":";;;;UAciB,YAAA;EACf,EAAA;EACA,KAAA;EACA,KAAA;EACA,MAAA;AAAA;AAAA,UAGe,6BAAA;EACf,aAAA,EAAe,YAAA;EACf,OAAA;AAAA;AAAA,UAGe,6BAAA,SACP,SAAA,CAAU,cAAA,QAAsB,6BAAA;AAAA,iBAE1B,wBAAA,CAAA;EACd,SAAA;EACA,MAAA;EAAA,GACG;AAAA,GACF,6BAAA,GAA6B,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA"}
@@ -1,8 +1,9 @@
1
1
  import { cn } from "../../../lib/utils.mjs";
2
2
  import { useCatalogConfig } from "../../../context/catalog-config-context.mjs";
3
3
  import { usePipeCatalogContext } from "../../../context/pipe-catalog-context.mjs";
4
- import { renderSlot } from "../../../utils/render-slot.mjs";
5
4
  import { DefaultActiveFilterPill } from "../../defaults/catalog/active-filter-pill.mjs";
5
+ import { mergeProps } from "@base-ui/react/merge-props";
6
+ import { useRender } from "@base-ui/react/use-render";
6
7
  import { jsx } from "react/jsx-runtime";
7
8
 
8
9
  //#region src/components/compound/pipe-catalog/active-filters.tsx
@@ -12,7 +13,7 @@ const COLUMN_LABELS = {
12
13
  providers: "Provider",
13
14
  tags: "Tag"
14
15
  };
15
- function PipeCatalogActiveFilters({ className, render }) {
16
+ function PipeCatalogActiveFilters({ className, render, ...props }) {
16
17
  const { classNames } = useCatalogConfig();
17
18
  const ctx = usePipeCatalogContext();
18
19
  const filters = ctx.table.getState().columnFilters.filter((f) => f.value != null && f.value !== "").map((f) => ({
@@ -21,25 +22,28 @@ function PipeCatalogActiveFilters({ className, render }) {
21
22
  label: COLUMN_LABELS[f.id] ?? f.id,
22
23
  remove: () => ctx.removeColumnFilter(f.id)
23
24
  }));
24
- if (filters.length === 0) return null;
25
- if (render) return renderSlot({
25
+ const isEmpty = filters.length === 0;
26
+ const defaultBody = filters.map((f) => /* @__PURE__ */ jsx(DefaultActiveFilterPill, {
27
+ label: f.label,
28
+ value: f.value,
29
+ onRemove: f.remove
30
+ }, f.id));
31
+ const element = useRender({
26
32
  defaultTagName: "div",
27
33
  render,
28
- state: { filters },
29
- props: {
30
- "data-p0": "catalog-active-filters",
31
- className: cn("pz:flex pz:flex-wrap pz:items-center pz:gap-2", classNames?.activeFilters, className)
32
- }
33
- });
34
- return /* @__PURE__ */ jsx("div", {
35
- "data-p0": "catalog-active-filters",
36
- className: cn("pz:flex pz:flex-wrap pz:items-center pz:gap-2", classNames?.activeFilters, className),
37
- children: filters.map((f) => /* @__PURE__ */ jsx(DefaultActiveFilterPill, {
38
- label: f.label,
39
- value: f.value,
40
- onRemove: f.remove
41
- }, f.id))
34
+ state: {
35
+ activeFilters: filters,
36
+ isEmpty
37
+ },
38
+ stateAttributesMapping: { activeFilters: () => null },
39
+ props: mergeProps({
40
+ className: cn("pz:flex pz:flex-wrap pz:items-center pz:gap-2", classNames?.activeFilters, className),
41
+ children: defaultBody,
42
+ "data-p0": "catalog-active-filters"
43
+ }, props)
42
44
  });
45
+ if (isEmpty) return null;
46
+ return element;
43
47
  }
44
48
 
45
49
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"active-filters.mjs","names":[],"sources":["../../../../src/components/compound/pipe-catalog/active-filters.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport { useCatalogConfig } from \"../../../context/catalog-config-context.js\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport { cn } from \"../../../lib/utils.js\";\nimport { type RenderProp, renderSlot } from \"../../../utils/render-slot.js\";\nimport { DefaultActiveFilterPill } from \"../../defaults/catalog/active-filter-pill.js\";\n\nconst COLUMN_LABELS: Record<string, string> = {\n inputFields: \"Input\",\n outputFields: \"Output\",\n providers: \"Provider\",\n tags: \"Tag\",\n};\n\nexport interface ActiveFilter {\n id: string;\n value: string;\n label: string;\n remove: () => void;\n}\n\nexport interface PipeCatalogActiveFiltersState {\n filters: ActiveFilter[];\n}\n\nexport interface PipeCatalogActiveFiltersProps {\n className?: string;\n render?: RenderProp<ComponentProps<\"div\">, PipeCatalogActiveFiltersState>;\n}\n\nexport function PipeCatalogActiveFilters({ className, render }: PipeCatalogActiveFiltersProps) {\n const { classNames } = useCatalogConfig();\n const ctx = usePipeCatalogContext();\n const filters: ActiveFilter[] = ctx.table\n .getState()\n .columnFilters.filter((f) => f.value != null && f.value !== \"\")\n .map((f) => ({\n id: f.id,\n value: String(f.value),\n label: COLUMN_LABELS[f.id] ?? f.id,\n remove: () =>\n ctx.removeColumnFilter(f.id as \"inputFields\" | \"outputFields\" | \"tags\" | \"providers\"),\n }));\n\n if (filters.length === 0) return null;\n\n if (render) {\n return renderSlot({\n defaultTagName: \"div\",\n render,\n state: { filters },\n props: {\n \"data-p0\": \"catalog-active-filters\",\n className: cn(\n \"pz:flex pz:flex-wrap pz:items-center pz:gap-2\",\n classNames?.activeFilters,\n className,\n ),\n } as ComponentProps<\"div\">,\n });\n }\n\n return (\n <div\n data-p0=\"catalog-active-filters\"\n className={cn(\n \"pz:flex pz:flex-wrap pz:items-center pz:gap-2\",\n classNames?.activeFilters,\n className,\n )}\n >\n {filters.map((f) => (\n <DefaultActiveFilterPill key={f.id} label={f.label} value={f.value} onRemove={f.remove} />\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,gBAAwC;CAC5C,aAAa;CACb,cAAc;CACd,WAAW;CACX,MAAM;CACP;AAkBD,SAAgB,yBAAyB,EAAE,WAAW,UAAyC;CAC7F,MAAM,EAAE,eAAe,kBAAkB;CACzC,MAAM,MAAM,uBAAuB;CACnC,MAAM,UAA0B,IAAI,MACjC,UAAU,CACV,cAAc,QAAQ,MAAM,EAAE,SAAS,QAAQ,EAAE,UAAU,GAAG,CAC9D,KAAK,OAAO;EACX,IAAI,EAAE;EACN,OAAO,OAAO,EAAE,MAAM;EACtB,OAAO,cAAc,EAAE,OAAO,EAAE;EAChC,cACE,IAAI,mBAAmB,EAAE,GAA4D;EACxF,EAAE;AAEL,KAAI,QAAQ,WAAW,EAAG,QAAO;AAEjC,KAAI,OACF,QAAO,WAAW;EAChB,gBAAgB;EAChB;EACA,OAAO,EAAE,SAAS;EAClB,OAAO;GACL,WAAW;GACX,WAAW,GACT,iDACA,YAAY,eACZ,UACD;GACF;EACF,CAAC;AAGJ,QACE,oBAAC,OAAD;EACE,WAAQ;EACR,WAAW,GACT,iDACA,YAAY,eACZ,UACD;YAEA,QAAQ,KAAK,MACZ,oBAAC,yBAAD;GAAoC,OAAO,EAAE;GAAO,OAAO,EAAE;GAAO,UAAU,EAAE;GAAU,EAA5D,EAAE,GAA0D,CAC1F;EACE"}
1
+ {"version":3,"file":"active-filters.mjs","names":[],"sources":["../../../../src/components/compound/pipe-catalog/active-filters.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { useCatalogConfig } from \"../../../context/catalog-config-context.js\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport { cn } from \"../../../lib/utils.js\";\nimport { DefaultActiveFilterPill } from \"../../defaults/catalog/active-filter-pill.js\";\n\nconst COLUMN_LABELS: Record<string, string> = {\n inputFields: \"Input\",\n outputFields: \"Output\",\n providers: \"Provider\",\n tags: \"Tag\",\n};\n\nexport interface ActiveFilter {\n id: string;\n value: string;\n label: string;\n remove: () => void;\n}\n\nexport interface PipeCatalogActiveFiltersState {\n activeFilters: ActiveFilter[];\n isEmpty: boolean;\n}\n\nexport interface PipeCatalogActiveFiltersProps\n extends useRender.ComponentProps<\"div\", PipeCatalogActiveFiltersState> {}\n\nexport function PipeCatalogActiveFilters({\n className,\n render,\n ...props\n}: PipeCatalogActiveFiltersProps) {\n const { classNames } = useCatalogConfig();\n const ctx = usePipeCatalogContext();\n const filters: ActiveFilter[] = ctx.table\n .getState()\n .columnFilters.filter((f) => f.value != null && f.value !== \"\")\n .map((f) => ({\n id: f.id,\n value: String(f.value),\n label: COLUMN_LABELS[f.id] ?? f.id,\n remove: () =>\n ctx.removeColumnFilter(f.id as \"inputFields\" | \"outputFields\" | \"tags\" | \"providers\"),\n }));\n\n const isEmpty = filters.length === 0;\n\n const defaultBody = filters.map((f) => (\n <DefaultActiveFilterPill key={f.id} label={f.label} value={f.value} onRemove={f.remove} />\n ));\n\n const element = useRender({\n defaultTagName: \"div\",\n render,\n state: { activeFilters: filters, isEmpty },\n stateAttributesMapping: {\n activeFilters: () => null,\n },\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"pz:flex pz:flex-wrap pz:items-center pz:gap-2\",\n classNames?.activeFilters,\n className,\n ),\n children: defaultBody,\n ...({ \"data-p0\": \"catalog-active-filters\" } as Record<string, string>),\n },\n props,\n ),\n });\n\n if (isEmpty) return null;\n return element;\n}\n"],"mappings":";;;;;;;;;AAOA,MAAM,gBAAwC;CAC5C,aAAa;CACb,cAAc;CACd,WAAW;CACX,MAAM;CACP;AAiBD,SAAgB,yBAAyB,EACvC,WACA,QACA,GAAG,SAC6B;CAChC,MAAM,EAAE,eAAe,kBAAkB;CACzC,MAAM,MAAM,uBAAuB;CACnC,MAAM,UAA0B,IAAI,MACjC,UAAU,CACV,cAAc,QAAQ,MAAM,EAAE,SAAS,QAAQ,EAAE,UAAU,GAAG,CAC9D,KAAK,OAAO;EACX,IAAI,EAAE;EACN,OAAO,OAAO,EAAE,MAAM;EACtB,OAAO,cAAc,EAAE,OAAO,EAAE;EAChC,cACE,IAAI,mBAAmB,EAAE,GAA4D;EACxF,EAAE;CAEL,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,cAAc,QAAQ,KAAK,MAC/B,oBAAC,yBAAD;EAAoC,OAAO,EAAE;EAAO,OAAO,EAAE;EAAO,UAAU,EAAE;EAAU,EAA5D,EAAE,GAA0D,CAC1F;CAEF,MAAM,UAAU,UAAU;EACxB,gBAAgB;EAChB;EACA,OAAO;GAAE,eAAe;GAAS;GAAS;EAC1C,wBAAwB,EACtB,qBAAqB,MACtB;EACD,OAAO,WACL;GACE,WAAW,GACT,iDACA,YAAY,eACZ,UACD;GACD,UAAU;GACJ,WAAW;GAClB,EACD,MACD;EACF,CAAC;AAEF,KAAI,QAAS,QAAO;AACpB,QAAO"}
@@ -1,26 +1,17 @@
1
- import { RenderProp } from "../../../utils/render-slot.mjs";
2
1
  import { PipeCardData } from "../../../types/catalog-adapters.mjs";
2
+ import { useRender } from "@base-ui/react/use-render";
3
3
  import * as _$react from "react";
4
- import { ComponentProps, MouseEvent } from "react";
4
+ import { MouseEvent } from "react";
5
5
 
6
6
  //#region src/components/compound/pipe-catalog/card.d.ts
7
7
  interface PipeCatalogCardState {
8
- card: PipeCardData;
9
8
  selected: boolean;
10
- /** Whether this card's expansion drawer is currently open. */
11
9
  expanded: boolean;
12
- /**
13
- * Open or close this card's expansion drawer. Only a single card inside a
14
- * `<PipeCatalog>` can be expanded at any time — opening one closes the
15
- * previously expanded card.
16
- */
17
- setExpanded: (open: boolean) => void;
18
10
  }
19
- interface PipeCatalogCardProps extends Omit<ComponentProps<"div">, "onClick" | "children"> {
11
+ interface PipeCatalogCardProps extends useRender.ComponentProps<"div", PipeCatalogCardState> {
20
12
  card: PipeCardData;
21
13
  index?: number;
22
14
  selected?: boolean;
23
- render?: RenderProp<ComponentProps<"div">, PipeCatalogCardState>;
24
15
  /** Overrides the default click handler that fires `onSelectCard`. */
25
16
  onClick?: (e: MouseEvent<HTMLDivElement>) => void;
26
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/card.tsx"],"mappings":";;;;;;UAyBiB,oBAAA;EACf,IAAA,EAAM,YAAA;EACN,QAAA;EAFe;EAIf,QAAA;;;;;;EAMA,WAAA,GAAc,IAAA;AAAA;AAAA,UAGC,oBAAA,SAA6B,IAAA,CAAK,cAAA;EACjD,IAAA,EAAM,YAAA;EACN,KAAA;EACA,QAAA;EACA,MAAA,GAAS,UAAA,CAAW,cAAA,SAAuB,oBAAA;;EAE3C,OAAA,IAAW,CAAA,EAAG,UAAA,CAAW,cAAA;AAAA;AAAA,cAUd,eAAA,EAAe,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,oBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"card.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/card.tsx"],"mappings":";;;;;;UAyBiB,oBAAA;EACf,QAAA;EACA,QAAA;AAAA;AAAA,UAGe,oBAAA,SACP,SAAA,CAAU,cAAA,QAAsB,oBAAA;EACxC,IAAA,EAAM,YAAA;EACN,KAAA;EACA,QAAA;EAJe;EAMf,OAAA,IAAW,CAAA,EAAG,UAAA,CAAW,cAAA;AAAA;AAAA,cAUd,eAAA,EAAe,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,oBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA"}
@@ -1,9 +1,10 @@
1
1
  import { cn } from "../../../lib/utils.mjs";
2
2
  import { useCatalogConfig } from "../../../context/catalog-config-context.mjs";
3
3
  import { usePipeCatalogContext } from "../../../context/pipe-catalog-context.mjs";
4
- import { renderSlot } from "../../../utils/render-slot.mjs";
5
4
  import { PipeCatalogCardContext } from "../../../context/pipe-catalog-card-context.mjs";
6
5
  import { CatalogCardDescription, CatalogCardHeader, CatalogCardTitle } from "../../defaults/catalog/card-primitives.mjs";
6
+ import { mergeProps } from "@base-ui/react/merge-props";
7
+ import { useRender } from "@base-ui/react/use-render";
7
8
  import { forwardRef, useCallback, useId, useMemo } from "react";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
10
 
@@ -24,12 +25,16 @@ const PipeCatalogCard = forwardRef(function PipeCatalogCard({ card, index = 0, s
24
25
  card,
25
26
  index,
26
27
  selected,
27
- onSelect
28
+ expanded,
29
+ onSelect,
30
+ setExpanded
28
31
  }), [
29
32
  card,
30
33
  index,
31
34
  selected,
32
- onSelect
35
+ expanded,
36
+ onSelect,
37
+ setExpanded
33
38
  ]);
34
39
  const interactive = !!(onClick || onSelectCard);
35
40
  const handleClick = onClick ? onClick : onSelectCard ? (e) => onSelect(e) : void 0;
@@ -40,35 +45,33 @@ const PipeCatalogCard = forwardRef(function PipeCatalogCard({ card, index = 0, s
40
45
  else onSelect(e);
41
46
  }
42
47
  } : void 0;
48
+ const isUsingDefaultBody = !render;
43
49
  const Card = components?.Card;
50
+ const element = useRender({
51
+ ref,
52
+ defaultTagName: "div",
53
+ render,
54
+ state: {
55
+ selected,
56
+ expanded
57
+ },
58
+ props: mergeProps({
59
+ role: interactive ? "button" : void 0,
60
+ tabIndex: interactive ? 0 : void 0,
61
+ onClick: handleClick,
62
+ onKeyDown: handleKeyDown,
63
+ className: cn("pz:flex pz:flex-col", isUsingDefaultBody && "pz:rounded-md pz:border pz:border-input pz:bg-card pz:px-3 pz:py-2.5 pz:transition-colors", isUsingDefaultBody && interactive && "pz:hover:bg-muted/40", interactive && "pz:cursor-pointer", classNames?.card, className),
64
+ ...isUsingDefaultBody ? { children: DEFAULT_BODY } : {},
65
+ "data-p0": "catalog-card"
66
+ }, rest)
67
+ });
44
68
  if (Card) return /* @__PURE__ */ jsx(PipeCatalogCardContext.Provider, {
45
69
  value: contextValue,
46
70
  children: /* @__PURE__ */ jsx(Card, { children: DEFAULT_BODY })
47
71
  });
48
- const isUsingDefaultBody = !render;
49
72
  return /* @__PURE__ */ jsx(PipeCatalogCardContext.Provider, {
50
73
  value: contextValue,
51
- children: renderSlot({
52
- defaultTagName: "div",
53
- render,
54
- state: {
55
- card,
56
- selected,
57
- expanded,
58
- setExpanded
59
- },
60
- props: {
61
- "data-p0": "catalog-card",
62
- role: interactive ? "button" : void 0,
63
- tabIndex: interactive ? 0 : void 0,
64
- onClick: handleClick,
65
- onKeyDown: handleKeyDown,
66
- className: cn("pz:flex pz:flex-col", isUsingDefaultBody && "pz:rounded-md pz:border pz:border-input pz:bg-card pz:px-3 pz:py-2.5 pz:transition-colors", isUsingDefaultBody && interactive && "pz:hover:bg-muted/40", interactive && "pz:cursor-pointer", classNames?.card, className),
67
- ...isUsingDefaultBody ? { children: DEFAULT_BODY } : {}
68
- },
69
- externalProps: rest,
70
- ref
71
- })
74
+ children: element
72
75
  });
73
76
  });
74
77
 
@@ -1 +1 @@
1
- {"version":3,"file":"card.mjs","names":[],"sources":["../../../../src/components/compound/pipe-catalog/card.tsx"],"sourcesContent":["import {\n type ComponentProps,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type SyntheticEvent,\n useCallback,\n useId,\n useMemo,\n} from \"react\";\nimport { useCatalogConfig } from \"../../../context/catalog-config-context.js\";\nimport {\n PipeCatalogCardContext,\n type PipeCatalogCardContextValue,\n} from \"../../../context/pipe-catalog-card-context.js\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport { cn } from \"../../../lib/utils.js\";\nimport type { PipeCardData } from \"../../../types/catalog-adapters.js\";\nimport { type RenderProp, renderSlot } from \"../../../utils/render-slot.js\";\nimport {\n CatalogCardDescription,\n CatalogCardHeader,\n CatalogCardTitle,\n} from \"../../defaults/catalog/card-primitives.js\";\n\nexport interface PipeCatalogCardState {\n card: PipeCardData;\n selected: boolean;\n /** Whether this card's expansion drawer is currently open. */\n expanded: boolean;\n /**\n * Open or close this card's expansion drawer. Only a single card inside a\n * `<PipeCatalog>` can be expanded at any time — opening one closes the\n * previously expanded card.\n */\n setExpanded: (open: boolean) => void;\n}\n\nexport interface PipeCatalogCardProps extends Omit<ComponentProps<\"div\">, \"onClick\" | \"children\"> {\n card: PipeCardData;\n index?: number;\n selected?: boolean;\n render?: RenderProp<ComponentProps<\"div\">, PipeCatalogCardState>;\n /** Overrides the default click handler that fires `onSelectCard`. */\n onClick?: (e: MouseEvent<HTMLDivElement>) => void;\n}\n\nconst DEFAULT_BODY = (\n <CatalogCardHeader>\n <CatalogCardTitle />\n <CatalogCardDescription />\n </CatalogCardHeader>\n);\n\nexport const PipeCatalogCard = forwardRef<HTMLDivElement, PipeCatalogCardProps>(\n function PipeCatalogCard(\n { card, index = 0, selected = false, render, onClick, className, ...rest },\n ref,\n ) {\n const { onSelectCard, expandedCardId, setExpandedCardId } = usePipeCatalogContext();\n const { classNames, components } = useCatalogConfig();\n const instanceId = useId();\n const expanded = expandedCardId === instanceId;\n\n const setExpanded = useCallback(\n (open: boolean) => {\n setExpandedCardId(open ? instanceId : null);\n },\n [instanceId, setExpandedCardId],\n );\n\n const onSelect = useCallback(\n (e: SyntheticEvent) => {\n onSelectCard?.(card, e);\n },\n [onSelectCard, card],\n );\n\n const contextValue = useMemo<PipeCatalogCardContextValue>(\n () => ({ card, index, selected, onSelect }),\n [card, index, selected, onSelect],\n );\n\n const interactive = !!(onClick || onSelectCard);\n const handleClick = onClick\n ? onClick\n : onSelectCard\n ? (e: MouseEvent<HTMLDivElement>) => onSelect(e)\n : undefined;\n const handleKeyDown = interactive\n ? (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) onClick(e as unknown as MouseEvent<HTMLDivElement>);\n else onSelect(e);\n }\n }\n : undefined;\n\n const Card = components?.Card;\n\n if (Card) {\n return (\n <PipeCatalogCardContext.Provider value={contextValue}>\n <Card>{DEFAULT_BODY}</Card>\n </PipeCatalogCardContext.Provider>\n );\n }\n\n const isUsingDefaultBody = !render;\n\n return (\n <PipeCatalogCardContext.Provider value={contextValue}>\n {renderSlot({\n defaultTagName: \"div\",\n render,\n state: { card, selected, expanded, setExpanded },\n props: {\n \"data-p0\": \"catalog-card\",\n role: interactive ? \"button\" : undefined,\n tabIndex: interactive ? 0 : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n className: cn(\n \"pz:flex pz:flex-col\",\n isUsingDefaultBody &&\n \"pz:rounded-md pz:border pz:border-input pz:bg-card pz:px-3 pz:py-2.5 pz:transition-colors\",\n isUsingDefaultBody && interactive && \"pz:hover:bg-muted/40\",\n interactive && \"pz:cursor-pointer\",\n classNames?.card,\n className,\n ),\n ...(isUsingDefaultBody ? { children: DEFAULT_BODY } : {}),\n } as ComponentProps<\"div\">,\n externalProps: rest as Record<string, unknown>,\n ref,\n })}\n </PipeCatalogCardContext.Provider>\n );\n },\n);\n"],"mappings":";;;;;;;;;;AA+CA,MAAM,eACJ,qBAAC,mBAAD,aACE,oBAAC,kBAAD,EAAoB,GACpB,oBAAC,wBAAD,EAA0B,EACR;AAGtB,MAAa,kBAAkB,WAC7B,SAAS,gBACP,EAAE,MAAM,QAAQ,GAAG,WAAW,OAAO,QAAQ,SAAS,WAAW,GAAG,QACpE,KACA;CACA,MAAM,EAAE,cAAc,gBAAgB,sBAAsB,uBAAuB;CACnF,MAAM,EAAE,YAAY,eAAe,kBAAkB;CACrD,MAAM,aAAa,OAAO;CAC1B,MAAM,WAAW,mBAAmB;CAEpC,MAAM,cAAc,aACjB,SAAkB;AACjB,oBAAkB,OAAO,aAAa,KAAK;IAE7C,CAAC,YAAY,kBAAkB,CAChC;CAED,MAAM,WAAW,aACd,MAAsB;AACrB,iBAAe,MAAM,EAAE;IAEzB,CAAC,cAAc,KAAK,CACrB;CAED,MAAM,eAAe,eACZ;EAAE;EAAM;EAAO;EAAU;EAAU,GAC1C;EAAC;EAAM;EAAO;EAAU;EAAS,CAClC;CAED,MAAM,cAAc,CAAC,EAAE,WAAW;CAClC,MAAM,cAAc,UAChB,UACA,gBACG,MAAkC,SAAS,EAAE,GAC9C;CACN,MAAM,gBAAgB,eACjB,MAAqC;AACpC,MAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,KAAE,gBAAgB;AAClB,OAAI,QAAS,SAAQ,EAA2C;OAC3D,UAAS,EAAE;;KAGpB;CAEJ,MAAM,OAAO,YAAY;AAEzB,KAAI,KACF,QACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO;YACtC,oBAAC,MAAD,YAAO,cAAoB;EACK;CAItC,MAAM,qBAAqB,CAAC;AAE5B,QACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO;YACrC,WAAW;GACV,gBAAgB;GAChB;GACA,OAAO;IAAE;IAAM;IAAU;IAAU;IAAa;GAChD,OAAO;IACL,WAAW;IACX,MAAM,cAAc,WAAW;IAC/B,UAAU,cAAc,IAAI;IAC5B,SAAS;IACT,WAAW;IACX,WAAW,GACT,uBACA,sBACE,6FACF,sBAAsB,eAAe,wBACrC,eAAe,qBACf,YAAY,MACZ,UACD;IACD,GAAI,qBAAqB,EAAE,UAAU,cAAc,GAAG,EAAE;IACzD;GACD,eAAe;GACf;GACD,CAAC;EAC8B;EAGvC"}
1
+ {"version":3,"file":"card.mjs","names":[],"sources":["../../../../src/components/compound/pipe-catalog/card.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport {\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type SyntheticEvent,\n useCallback,\n useId,\n useMemo,\n} from \"react\";\nimport { useCatalogConfig } from \"../../../context/catalog-config-context.js\";\nimport {\n PipeCatalogCardContext,\n type PipeCatalogCardContextValue,\n} from \"../../../context/pipe-catalog-card-context.js\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport { cn } from \"../../../lib/utils.js\";\nimport type { PipeCardData } from \"../../../types/catalog-adapters.js\";\nimport {\n CatalogCardDescription,\n CatalogCardHeader,\n CatalogCardTitle,\n} from \"../../defaults/catalog/card-primitives.js\";\n\nexport interface PipeCatalogCardState {\n selected: boolean;\n expanded: boolean;\n}\n\nexport interface PipeCatalogCardProps\n extends useRender.ComponentProps<\"div\", PipeCatalogCardState> {\n card: PipeCardData;\n index?: number;\n selected?: boolean;\n /** Overrides the default click handler that fires `onSelectCard`. */\n onClick?: (e: MouseEvent<HTMLDivElement>) => void;\n}\n\nconst DEFAULT_BODY = (\n <CatalogCardHeader>\n <CatalogCardTitle />\n <CatalogCardDescription />\n </CatalogCardHeader>\n);\n\nexport const PipeCatalogCard = forwardRef<HTMLDivElement, PipeCatalogCardProps>(\n function PipeCatalogCard(\n { card, index = 0, selected = false, render, onClick, className, ...rest },\n ref,\n ) {\n const { onSelectCard, expandedCardId, setExpandedCardId } = usePipeCatalogContext();\n const { classNames, components } = useCatalogConfig();\n const instanceId = useId();\n const expanded = expandedCardId === instanceId;\n\n const setExpanded = useCallback(\n (open: boolean) => {\n setExpandedCardId(open ? instanceId : null);\n },\n [instanceId, setExpandedCardId],\n );\n\n const onSelect = useCallback(\n (e: SyntheticEvent) => {\n onSelectCard?.(card, e);\n },\n [onSelectCard, card],\n );\n\n const contextValue = useMemo<PipeCatalogCardContextValue>(\n () => ({ card, index, selected, expanded, onSelect, setExpanded }),\n [card, index, selected, expanded, onSelect, setExpanded],\n );\n\n const interactive = !!(onClick || onSelectCard);\n const handleClick = onClick\n ? onClick\n : onSelectCard\n ? (e: MouseEvent<HTMLDivElement>) => onSelect(e)\n : undefined;\n const handleKeyDown = interactive\n ? (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (onClick) onClick(e as unknown as MouseEvent<HTMLDivElement>);\n else onSelect(e);\n }\n }\n : undefined;\n\n const isUsingDefaultBody = !render;\n\n const Card = components?.Card;\n\n const element = useRender({\n ref,\n defaultTagName: \"div\",\n render,\n state: { selected, expanded },\n props: mergeProps<\"div\">(\n {\n role: interactive ? \"button\" : undefined,\n tabIndex: interactive ? 0 : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n className: cn(\n \"pz:flex pz:flex-col\",\n isUsingDefaultBody &&\n \"pz:rounded-md pz:border pz:border-input pz:bg-card pz:px-3 pz:py-2.5 pz:transition-colors\",\n isUsingDefaultBody && interactive && \"pz:hover:bg-muted/40\",\n interactive && \"pz:cursor-pointer\",\n classNames?.card,\n className,\n ),\n ...(isUsingDefaultBody ? { children: DEFAULT_BODY } : {}),\n ...({ \"data-p0\": \"catalog-card\" } as Record<string, string>),\n },\n rest as Record<string, unknown>,\n ),\n });\n\n if (Card) {\n return (\n <PipeCatalogCardContext.Provider value={contextValue}>\n <Card>{DEFAULT_BODY}</Card>\n </PipeCatalogCardContext.Provider>\n );\n }\n\n return (\n <PipeCatalogCardContext.Provider value={contextValue}>\n {element}\n </PipeCatalogCardContext.Provider>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;AAuCA,MAAM,eACJ,qBAAC,mBAAD,aACE,oBAAC,kBAAD,EAAoB,GACpB,oBAAC,wBAAD,EAA0B,EACR;AAGtB,MAAa,kBAAkB,WAC7B,SAAS,gBACP,EAAE,MAAM,QAAQ,GAAG,WAAW,OAAO,QAAQ,SAAS,WAAW,GAAG,QACpE,KACA;CACA,MAAM,EAAE,cAAc,gBAAgB,sBAAsB,uBAAuB;CACnF,MAAM,EAAE,YAAY,eAAe,kBAAkB;CACrD,MAAM,aAAa,OAAO;CAC1B,MAAM,WAAW,mBAAmB;CAEpC,MAAM,cAAc,aACjB,SAAkB;AACjB,oBAAkB,OAAO,aAAa,KAAK;IAE7C,CAAC,YAAY,kBAAkB,CAChC;CAED,MAAM,WAAW,aACd,MAAsB;AACrB,iBAAe,MAAM,EAAE;IAEzB,CAAC,cAAc,KAAK,CACrB;CAED,MAAM,eAAe,eACZ;EAAE;EAAM;EAAO;EAAU;EAAU;EAAU;EAAa,GACjE;EAAC;EAAM;EAAO;EAAU;EAAU;EAAU;EAAY,CACzD;CAED,MAAM,cAAc,CAAC,EAAE,WAAW;CAClC,MAAM,cAAc,UAChB,UACA,gBACG,MAAkC,SAAS,EAAE,GAC9C;CACN,MAAM,gBAAgB,eACjB,MAAqC;AACpC,MAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,KAAE,gBAAgB;AAClB,OAAI,QAAS,SAAQ,EAA2C;OAC3D,UAAS,EAAE;;KAGpB;CAEJ,MAAM,qBAAqB,CAAC;CAE5B,MAAM,OAAO,YAAY;CAEzB,MAAM,UAAU,UAAU;EACxB;EACA,gBAAgB;EAChB;EACA,OAAO;GAAE;GAAU;GAAU;EAC7B,OAAO,WACL;GACE,MAAM,cAAc,WAAW;GAC/B,UAAU,cAAc,IAAI;GAC5B,SAAS;GACT,WAAW;GACX,WAAW,GACT,uBACA,sBACE,6FACF,sBAAsB,eAAe,wBACrC,eAAe,qBACf,YAAY,MACZ,UACD;GACD,GAAI,qBAAqB,EAAE,UAAU,cAAc,GAAG,EAAE;GAClD,WAAW;GAClB,EACD,KACD;EACF,CAAC;AAEF,KAAI,KACF,QACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO;YACtC,oBAAC,MAAD,YAAO,cAAoB;EACK;AAItC,QACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO;YACrC;EAC+B;EAGvC"}
@@ -1,30 +1,23 @@
1
- import { RenderProp } from "../../../utils/render-slot.mjs";
2
1
  import { CategoryOption } from "../../defaults/catalog/category-filter.mjs";
3
- import * as _$react from "react";
4
- import { ComponentProps } from "react";
2
+ import { useRender } from "@base-ui/react/use-render";
5
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
4
  import { PipeCategory } from "@pipe0/base";
7
5
 
8
6
  //#region src/components/compound/pipe-catalog/category-filter.d.ts
9
7
  interface PipeCatalogCategoryFilterState {
10
8
  value: PipeCategory | null;
11
- setValue: (v: PipeCategory | null) => void;
12
- options: ReadonlyArray<CategoryOption<PipeCategory>>;
13
- counts: Partial<Record<PipeCategory, number>>;
14
- totalCount: number;
15
- isActive: (id: PipeCategory | null) => boolean;
9
+ isActive: boolean;
16
10
  }
17
- interface PipeCatalogCategoryFilterProps {
11
+ interface PipeCatalogCategoryFilterProps extends useRender.ComponentProps<"div", PipeCatalogCategoryFilterState> {
18
12
  /** Override the default category options. */
19
13
  options?: ReadonlyArray<CategoryOption<PipeCategory>>;
20
- className?: string;
21
- render?: RenderProp<ComponentProps<"div">, PipeCatalogCategoryFilterState>;
22
14
  }
23
15
  declare function PipeCatalogCategoryFilter({
24
16
  options,
25
17
  className,
26
- render
27
- }: PipeCatalogCategoryFilterProps): string | number | bigint | boolean | _$react_jsx_runtime0.JSX.Element | Iterable<_$react.ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<_$react.ReactNode> | null | undefined> | null | undefined;
18
+ render,
19
+ ...props
20
+ }: PipeCatalogCategoryFilterProps): _$react_jsx_runtime0.JSX.Element;
28
21
  //#endregion
29
22
  export { PipeCatalogCategoryFilter, PipeCatalogCategoryFilterProps, PipeCatalogCategoryFilterState };
30
23
  //# sourceMappingURL=category-filter.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"category-filter.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/category-filter.tsx"],"mappings":";;;;;;;;UA4CiB,8BAAA;EACf,KAAA,EAAO,YAAA;EACP,QAAA,GAAW,CAAA,EAAG,YAAA;EACd,OAAA,EAAS,aAAA,CAAc,cAAA,CAAe,YAAA;EACtC,MAAA,EAAQ,OAAA,CAAQ,MAAA,CAAO,YAAA;EACvB,UAAA;EACA,QAAA,GAAW,EAAA,EAAI,YAAA;AAAA;AAAA,UAGA,8BAAA;EANuB;EAQtC,OAAA,GAAU,aAAA,CAAc,cAAA,CAAe,YAAA;EACvC,SAAA;EACA,MAAA,GAAS,UAAA,CAAW,cAAA,SAAuB,8BAAA;AAAA;AAAA,iBAG7B,yBAAA,CAAA;EACd,OAAA;EACA,SAAA;EACA;AAAA,GACC,8BAAA,wCAA8B,oBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,QAAA,CAAA,OAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,OAAA,CAAA,SAAA"}
1
+ {"version":3,"file":"category-filter.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/category-filter.tsx"],"mappings":";;;;;;UA4CiB,8BAAA;EACf,KAAA,EAAO,YAAA;EACP,QAAA;AAAA;AAAA,UAGe,8BAAA,SACP,SAAA,CAAU,cAAA,QAAsB,8BAAA;;EAExC,OAAA,GAAU,aAAA,CAAc,cAAA,CAAe,YAAA;AAAA;AAAA,iBAGzB,yBAAA,CAAA;EACd,OAAA;EACA,SAAA;EACA,MAAA;EAAA,GACG;AAAA,GACF,8BAAA,GAA8B,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,7 @@
1
1
  import { usePipeCatalogContext } from "../../../context/pipe-catalog-context.mjs";
2
- import { renderSlot } from "../../../utils/render-slot.mjs";
3
2
  import { DefaultCategoryFilter } from "../../defaults/catalog/category-filter.mjs";
3
+ import { mergeProps } from "@base-ui/react/merge-props";
4
+ import { useRender } from "@base-ui/react/use-render";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  import { Building2, Database, Hammer, Plug, ScanFace, Search, Users, X, Zap } from "lucide-react";
6
7
  import { getPipeCategoryEntries } from "@pipe0/base";
@@ -25,24 +26,22 @@ const DEFAULT_OPTIONS = [{
25
26
  label: entry.label,
26
27
  icon: PIPE_CATEGORY_ICONS[entry.id]
27
28
  }))];
28
- function PipeCatalogCategoryFilter({ options = DEFAULT_OPTIONS, className, render }) {
29
+ function PipeCatalogCategoryFilter({ options = DEFAULT_OPTIONS, className, render, ...props }) {
29
30
  const ctx = usePipeCatalogContext();
30
- if (render) return renderSlot({
31
+ const value = ctx.category;
32
+ const element = useRender({
31
33
  defaultTagName: "div",
32
34
  render,
33
35
  state: {
34
- value: ctx.category,
35
- setValue: ctx.setCategory,
36
- options,
37
- counts: ctx.baselineCategoryCounts,
38
- totalCount: ctx.baselineCardCount,
39
- isActive: (id) => ctx.category === id
36
+ value,
37
+ isActive: value !== null
40
38
  },
41
- props: {
42
- "data-p0": "catalog-category-filter",
43
- className
44
- }
39
+ props: mergeProps({
40
+ className,
41
+ "data-p0": "catalog-category-filter"
42
+ }, props)
45
43
  });
44
+ if (render) return element;
46
45
  return /* @__PURE__ */ jsx(DefaultCategoryFilter, {
47
46
  options,
48
47
  value: ctx.category,
@@ -1 +1 @@
1
- {"version":3,"file":"category-filter.mjs","names":["SearchIcon"],"sources":["../../../../src/components/compound/pipe-catalog/category-filter.tsx"],"sourcesContent":["import { getPipeCategoryEntries, type PipeCategory } from \"@pipe0/base\";\nimport {\n Building2,\n Database,\n Hammer,\n Plug,\n ScanFace,\n Search as SearchIcon,\n Users,\n X,\n Zap,\n} from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport { type RenderProp, renderSlot } from \"../../../utils/render-slot.js\";\nimport {\n type CategoryOption,\n DefaultCategoryFilter,\n} from \"../../defaults/catalog/category-filter.js\";\n\nconst PIPE_CATEGORY_ICONS: Record<PipeCategory, CategoryOption<PipeCategory>[\"icon\"]> = {\n people_data: ScanFace,\n company_data: Building2,\n find_people: Users,\n find_comapnies: SearchIcon,\n tools: Hammer,\n actions: Zap,\n integrations: Plug,\n deprecated: X,\n};\n\nconst DEFAULT_OPTIONS: ReadonlyArray<CategoryOption<PipeCategory>> = [\n { id: null, label: \"All\", icon: Database },\n ...[...getPipeCategoryEntries()]\n .sort((a, b) => a.order - b.order)\n .map(\n (entry): CategoryOption<PipeCategory> => ({\n id: entry.id,\n label: entry.label,\n icon: PIPE_CATEGORY_ICONS[entry.id],\n }),\n ),\n];\n\nexport interface PipeCatalogCategoryFilterState {\n value: PipeCategory | null;\n setValue: (v: PipeCategory | null) => void;\n options: ReadonlyArray<CategoryOption<PipeCategory>>;\n counts: Partial<Record<PipeCategory, number>>;\n totalCount: number;\n isActive: (id: PipeCategory | null) => boolean;\n}\n\nexport interface PipeCatalogCategoryFilterProps {\n /** Override the default category options. */\n options?: ReadonlyArray<CategoryOption<PipeCategory>>;\n className?: string;\n render?: RenderProp<ComponentProps<\"div\">, PipeCatalogCategoryFilterState>;\n}\n\nexport function PipeCatalogCategoryFilter({\n options = DEFAULT_OPTIONS,\n className,\n render,\n}: PipeCatalogCategoryFilterProps) {\n const ctx = usePipeCatalogContext();\n\n if (render) {\n return renderSlot({\n defaultTagName: \"div\",\n render,\n state: {\n value: ctx.category,\n setValue: ctx.setCategory,\n options,\n counts: ctx.baselineCategoryCounts,\n totalCount: ctx.baselineCardCount,\n isActive: (id: PipeCategory | null) => ctx.category === id,\n },\n props: {\n \"data-p0\": \"catalog-category-filter\",\n className,\n } as ComponentProps<\"div\">,\n });\n }\n\n return (\n <DefaultCategoryFilter\n options={options}\n value={ctx.category}\n onChange={ctx.setCategory}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;;;AAoBA,MAAM,sBAAkF;CACtF,aAAa;CACb,cAAc;CACd,aAAa;CACb,gBAAgBA;CAChB,OAAO;CACP,SAAS;CACT,cAAc;CACd,YAAY;CACb;AAED,MAAM,kBAA+D,CACnE;CAAE,IAAI;CAAM,OAAO;CAAO,MAAM;CAAU,EAC1C,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAC7B,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CACjC,KACE,WAAyC;CACxC,IAAI,MAAM;CACV,OAAO,MAAM;CACb,MAAM,oBAAoB,MAAM;CACjC,EACF,CACJ;AAkBD,SAAgB,0BAA0B,EACxC,UAAU,iBACV,WACA,UACiC;CACjC,MAAM,MAAM,uBAAuB;AAEnC,KAAI,OACF,QAAO,WAAW;EAChB,gBAAgB;EAChB;EACA,OAAO;GACL,OAAO,IAAI;GACX,UAAU,IAAI;GACd;GACA,QAAQ,IAAI;GACZ,YAAY,IAAI;GAChB,WAAW,OAA4B,IAAI,aAAa;GACzD;EACD,OAAO;GACL,WAAW;GACX;GACD;EACF,CAAC;AAGJ,QACE,oBAAC,uBAAD;EACW;EACT,OAAO,IAAI;EACX,UAAU,IAAI;EACH;EACX"}
1
+ {"version":3,"file":"category-filter.mjs","names":["SearchIcon"],"sources":["../../../../src/components/compound/pipe-catalog/category-filter.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { getPipeCategoryEntries, type PipeCategory } from \"@pipe0/base\";\nimport {\n Building2,\n Database,\n Hammer,\n Plug,\n ScanFace,\n Search as SearchIcon,\n Users,\n X,\n Zap,\n} from \"lucide-react\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport {\n type CategoryOption,\n DefaultCategoryFilter,\n} from \"../../defaults/catalog/category-filter.js\";\n\nconst PIPE_CATEGORY_ICONS: Record<PipeCategory, CategoryOption<PipeCategory>[\"icon\"]> = {\n people_data: ScanFace,\n company_data: Building2,\n find_people: Users,\n find_comapnies: SearchIcon,\n tools: Hammer,\n actions: Zap,\n integrations: Plug,\n deprecated: X,\n};\n\nconst DEFAULT_OPTIONS: ReadonlyArray<CategoryOption<PipeCategory>> = [\n { id: null, label: \"All\", icon: Database },\n ...[...getPipeCategoryEntries()]\n .sort((a, b) => a.order - b.order)\n .map(\n (entry): CategoryOption<PipeCategory> => ({\n id: entry.id,\n label: entry.label,\n icon: PIPE_CATEGORY_ICONS[entry.id],\n }),\n ),\n];\n\nexport interface PipeCatalogCategoryFilterState {\n value: PipeCategory | null;\n isActive: boolean;\n}\n\nexport interface PipeCatalogCategoryFilterProps\n extends useRender.ComponentProps<\"div\", PipeCatalogCategoryFilterState> {\n /** Override the default category options. */\n options?: ReadonlyArray<CategoryOption<PipeCategory>>;\n}\n\nexport function PipeCatalogCategoryFilter({\n options = DEFAULT_OPTIONS,\n className,\n render,\n ...props\n}: PipeCatalogCategoryFilterProps) {\n const ctx = usePipeCatalogContext();\n const value = ctx.category;\n const isActive = value !== null;\n\n const element = useRender({\n defaultTagName: \"div\",\n render,\n state: { value, isActive },\n props: mergeProps<\"div\">(\n {\n className,\n ...({ \"data-p0\": \"catalog-category-filter\" } as Record<string, string>),\n },\n props,\n ),\n });\n\n if (render) return element;\n\n return (\n <DefaultCategoryFilter\n options={options}\n value={ctx.category}\n onChange={ctx.setCategory}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;;;;AAoBA,MAAM,sBAAkF;CACtF,aAAa;CACb,cAAc;CACd,aAAa;CACb,gBAAgBA;CAChB,OAAO;CACP,SAAS;CACT,cAAc;CACd,YAAY;CACb;AAED,MAAM,kBAA+D,CACnE;CAAE,IAAI;CAAM,OAAO;CAAO,MAAM;CAAU,EAC1C,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAC7B,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CACjC,KACE,WAAyC;CACxC,IAAI,MAAM;CACV,OAAO,MAAM;CACb,MAAM,oBAAoB,MAAM;CACjC,EACF,CACJ;AAaD,SAAgB,0BAA0B,EACxC,UAAU,iBACV,WACA,QACA,GAAG,SAC8B;CACjC,MAAM,MAAM,uBAAuB;CACnC,MAAM,QAAQ,IAAI;CAGlB,MAAM,UAAU,UAAU;EACxB,gBAAgB;EAChB;EACA,OAAO;GAAE;GAAO,UALD,UAAU;GAKC;EAC1B,OAAO,WACL;GACE;GACM,WAAW;GAClB,EACD,MACD;EACF,CAAC;AAEF,KAAI,OAAQ,QAAO;AAEnB,QACE,oBAAC,uBAAD;EACW;EACT,OAAO,IAAI;EACX,UAAU,IAAI;EACH;EACX"}
@@ -1,27 +1,18 @@
1
- import { RenderProp } from "../../../utils/render-slot.mjs";
2
1
  import { FilterSelectOption } from "../../defaults/catalog/filter-select.mjs";
3
- import * as _$react from "react";
4
- import { ComponentProps, ReactNode } from "react";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ import { ReactNode } from "react";
5
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
5
 
7
6
  //#region src/components/compound/pipe-catalog/column-filter.d.ts
8
7
  type PipeColumnFilterId = "inputFields" | "outputFields" | "providers" | "tags";
9
- /**
10
- * Render-prop state shared by every specific column filter component
11
- * (input/output/provider/tag) and the generic `<PipeCatalogColumnFilter>`.
12
- */
13
8
  interface ColumnFilterState {
14
9
  value: string;
15
- setValue: (v: string | null) => void;
16
- options: ReadonlyArray<FilterSelectOption>;
17
10
  isActive: boolean;
18
11
  }
19
- interface PipeCatalogColumnFilterProps {
12
+ interface PipeCatalogColumnFilterProps extends useRender.ComponentProps<"div", ColumnFilterState> {
20
13
  id: PipeColumnFilterId;
21
14
  placeholder?: ReactNode;
22
15
  options?: ReadonlyArray<FilterSelectOption>;
23
- className?: string;
24
- render?: RenderProp<ComponentProps<"div">, ColumnFilterState>;
25
16
  }
26
17
  /**
27
18
  * Generic column-filter escape hatch. For built-in filters prefer the specific
@@ -33,8 +24,9 @@ declare function PipeCatalogColumnFilter({
33
24
  placeholder,
34
25
  options,
35
26
  className,
36
- render
37
- }: PipeCatalogColumnFilterProps): string | number | bigint | boolean | _$react_jsx_runtime0.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
27
+ render,
28
+ ...props
29
+ }: PipeCatalogColumnFilterProps): _$react_jsx_runtime0.JSX.Element;
38
30
  //#endregion
39
31
  export { ColumnFilterState, PipeCatalogColumnFilter, PipeCatalogColumnFilterProps, PipeColumnFilterId };
40
32
  //# sourceMappingURL=column-filter.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-filter.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/column-filter.tsx"],"mappings":";;;;;;;KAQY,kBAAA;;;;AAAZ;UAMiB,iBAAA;EACf,KAAA;EACA,QAAA,GAAW,CAAA;EACX,OAAA,EAAS,aAAA,CAAc,kBAAA;EACvB,QAAA;AAAA;AAAA,UAGe,4BAAA;EACf,EAAA,EAAI,kBAAA;EACJ,WAAA,GAAc,SAAA;EACd,OAAA,GAAU,aAAA,CAAc,kBAAA;EACxB,SAAA;EACA,MAAA,GAAS,UAAA,CAAW,cAAA,SAAuB,iBAAA;AAAA;;;;;AAL7C;iBAmCgB,uBAAA,CAAA;EACd,EAAA;EACA,WAAA;EACA,OAAA;EACA,SAAA;EACA;AAAA,GACC,4BAAA,wCAA4B,oBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,QAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,SAAA"}
1
+ {"version":3,"file":"column-filter.d.mts","names":[],"sources":["../../../../src/components/compound/pipe-catalog/column-filter.tsx"],"mappings":";;;;;;KASY,kBAAA;AAAA,UAEK,iBAAA;EACf,KAAA;EACA,QAAA;AAAA;AAAA,UAGe,4BAAA,SACP,SAAA,CAAU,cAAA,QAAsB,iBAAA;EACxC,EAAA,EAAI,kBAAA;EACJ,WAAA,GAAc,SAAA;EACd,OAAA,GAAU,aAAA,CAAc,kBAAA;AAAA;;;;AAJ1B;;iBAkCgB,uBAAA,CAAA;EACd,EAAA;EACA,WAAA;EACA,OAAA;EACA,SAAA;EACA,MAAA;EAAA,GACG;AAAA,GACF,4BAAA,GAA4B,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,7 @@
1
1
  import { usePipeCatalogContext } from "../../../context/pipe-catalog-context.mjs";
2
- import { renderSlot } from "../../../utils/render-slot.mjs";
3
2
  import { DefaultFilterSelect } from "../../defaults/catalog/filter-select.mjs";
3
+ import { mergeProps } from "@base-ui/react/merge-props";
4
+ import { useRender } from "@base-ui/react/use-render";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
 
6
7
  //#region src/components/compound/pipe-catalog/column-filter.tsx
@@ -30,7 +31,7 @@ function getDefaultOptions(id, ctx) {
30
31
  * components: `<PipeCatalogInputFieldFilter>`, `<PipeCatalogOutputFieldFilter>`,
31
32
  * `<PipeCatalogProviderFilter>`, `<PipeCatalogTagFilter>`.
32
33
  */
33
- function PipeCatalogColumnFilter({ id, placeholder, options, className, render }) {
34
+ function PipeCatalogColumnFilter({ id, placeholder, options, className, render, ...props }) {
34
35
  const ctx = usePipeCatalogContext();
35
36
  const value = ctx.getColumnFilterValue(id) || "";
36
37
  const resolvedOptions = options ?? getDefaultOptions(id, ctx);
@@ -38,20 +39,19 @@ function PipeCatalogColumnFilter({ id, placeholder, options, className, render }
38
39
  if (v == null) ctx.removeColumnFilter(id);
39
40
  else ctx.addColumnFilter(id, v);
40
41
  };
41
- if (render) return renderSlot({
42
+ const element = useRender({
42
43
  defaultTagName: "div",
43
44
  render,
44
45
  state: {
45
46
  value,
46
- setValue,
47
- options: resolvedOptions,
48
47
  isActive: !!value
49
48
  },
50
- props: {
51
- "data-p0": `catalog-column-filter-${id}`,
52
- className
53
- }
49
+ props: mergeProps({
50
+ className,
51
+ "data-p0": `catalog-column-filter-${id}`
52
+ }, props)
54
53
  });
54
+ if (render) return element;
55
55
  return /* @__PURE__ */ jsx(DefaultFilterSelect, {
56
56
  placeholder,
57
57
  value,
@@ -1 +1 @@
1
- {"version":3,"file":"column-filter.mjs","names":[],"sources":["../../../../src/components/compound/pipe-catalog/column-filter.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport { type RenderProp, renderSlot } from \"../../../utils/render-slot.js\";\nimport {\n DefaultFilterSelect,\n type FilterSelectOption,\n} from \"../../defaults/catalog/filter-select.js\";\n\nexport type PipeColumnFilterId = \"inputFields\" | \"outputFields\" | \"providers\" | \"tags\";\n\n/**\n * Render-prop state shared by every specific column filter component\n * (input/output/provider/tag) and the generic `<PipeCatalogColumnFilter>`.\n */\nexport interface ColumnFilterState {\n value: string;\n setValue: (v: string | null) => void;\n options: ReadonlyArray<FilterSelectOption>;\n isActive: boolean;\n}\n\nexport interface PipeCatalogColumnFilterProps {\n id: PipeColumnFilterId;\n placeholder?: ReactNode;\n options?: ReadonlyArray<FilterSelectOption>;\n className?: string;\n render?: RenderProp<ComponentProps<\"div\">, ColumnFilterState>;\n}\n\nfunction getDefaultOptions(\n id: PipeColumnFilterId,\n ctx: ReturnType<typeof usePipeCatalogContext>,\n): FilterSelectOption[] {\n let entries: ReadonlyArray<readonly [string, unknown]> = [];\n switch (id) {\n case \"inputFields\":\n entries = ctx.sortedInputFieldEntries;\n break;\n case \"outputFields\":\n entries = ctx.sortedOutputFieldEntries;\n break;\n case \"providers\":\n entries = ctx.sortedProviderEntries;\n break;\n case \"tags\":\n entries = ctx.sortedTagEntries;\n break;\n }\n return entries.map(([name]) => ({ label: name, value: name }));\n}\n\n/**\n * Generic column-filter escape hatch. For built-in filters prefer the specific\n * components: `<PipeCatalogInputFieldFilter>`, `<PipeCatalogOutputFieldFilter>`,\n * `<PipeCatalogProviderFilter>`, `<PipeCatalogTagFilter>`.\n */\nexport function PipeCatalogColumnFilter({\n id,\n placeholder,\n options,\n className,\n render,\n}: PipeCatalogColumnFilterProps) {\n const ctx = usePipeCatalogContext();\n const value = ctx.getColumnFilterValue(id) || \"\";\n const resolvedOptions = options ?? getDefaultOptions(id, ctx);\n const setValue = (v: string | null) => {\n if (v == null) ctx.removeColumnFilter(id);\n else ctx.addColumnFilter(id, v);\n };\n\n if (render) {\n return renderSlot({\n defaultTagName: \"div\",\n render,\n state: {\n value,\n setValue,\n options: resolvedOptions,\n isActive: !!value,\n },\n props: {\n \"data-p0\": `catalog-column-filter-${id}`,\n className,\n } as ComponentProps<\"div\">,\n });\n }\n\n return (\n <DefaultFilterSelect\n placeholder={placeholder}\n value={value}\n onChange={setValue}\n options={resolvedOptions}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;AA6BA,SAAS,kBACP,IACA,KACsB;CACtB,IAAI,UAAqD,EAAE;AAC3D,SAAQ,IAAR;EACE,KAAK;AACH,aAAU,IAAI;AACd;EACF,KAAK;AACH,aAAU,IAAI;AACd;EACF,KAAK;AACH,aAAU,IAAI;AACd;EACF,KAAK;AACH,aAAU,IAAI;AACd;;AAEJ,QAAO,QAAQ,KAAK,CAAC,WAAW;EAAE,OAAO;EAAM,OAAO;EAAM,EAAE;;;;;;;AAQhE,SAAgB,wBAAwB,EACtC,IACA,aACA,SACA,WACA,UAC+B;CAC/B,MAAM,MAAM,uBAAuB;CACnC,MAAM,QAAQ,IAAI,qBAAqB,GAAG,IAAI;CAC9C,MAAM,kBAAkB,WAAW,kBAAkB,IAAI,IAAI;CAC7D,MAAM,YAAY,MAAqB;AACrC,MAAI,KAAK,KAAM,KAAI,mBAAmB,GAAG;MACpC,KAAI,gBAAgB,IAAI,EAAE;;AAGjC,KAAI,OACF,QAAO,WAAW;EAChB,gBAAgB;EAChB;EACA,OAAO;GACL;GACA;GACA,SAAS;GACT,UAAU,CAAC,CAAC;GACb;EACD,OAAO;GACL,WAAW,yBAAyB;GACpC;GACD;EACF,CAAC;AAGJ,QACE,oBAAC,qBAAD;EACe;EACN;EACP,UAAU;EACV,SAAS;EACE;EACX"}
1
+ {"version":3,"file":"column-filter.mjs","names":[],"sources":["../../../../src/components/compound/pipe-catalog/column-filter.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ReactNode } from \"react\";\nimport { usePipeCatalogContext } from \"../../../context/pipe-catalog-context.js\";\nimport {\n DefaultFilterSelect,\n type FilterSelectOption,\n} from \"../../defaults/catalog/filter-select.js\";\n\nexport type PipeColumnFilterId = \"inputFields\" | \"outputFields\" | \"providers\" | \"tags\";\n\nexport interface ColumnFilterState {\n value: string;\n isActive: boolean;\n}\n\nexport interface PipeCatalogColumnFilterProps\n extends useRender.ComponentProps<\"div\", ColumnFilterState> {\n id: PipeColumnFilterId;\n placeholder?: ReactNode;\n options?: ReadonlyArray<FilterSelectOption>;\n}\n\nfunction getDefaultOptions(\n id: PipeColumnFilterId,\n ctx: ReturnType<typeof usePipeCatalogContext>,\n): FilterSelectOption[] {\n let entries: ReadonlyArray<readonly [string, unknown]> = [];\n switch (id) {\n case \"inputFields\":\n entries = ctx.sortedInputFieldEntries;\n break;\n case \"outputFields\":\n entries = ctx.sortedOutputFieldEntries;\n break;\n case \"providers\":\n entries = ctx.sortedProviderEntries;\n break;\n case \"tags\":\n entries = ctx.sortedTagEntries;\n break;\n }\n return entries.map(([name]) => ({ label: name, value: name }));\n}\n\n/**\n * Generic column-filter escape hatch. For built-in filters prefer the specific\n * components: `<PipeCatalogInputFieldFilter>`, `<PipeCatalogOutputFieldFilter>`,\n * `<PipeCatalogProviderFilter>`, `<PipeCatalogTagFilter>`.\n */\nexport function PipeCatalogColumnFilter({\n id,\n placeholder,\n options,\n className,\n render,\n ...props\n}: PipeCatalogColumnFilterProps) {\n const ctx = usePipeCatalogContext();\n const value = ctx.getColumnFilterValue(id) || \"\";\n const resolvedOptions = options ?? getDefaultOptions(id, ctx);\n const setValue = (v: string | null) => {\n if (v == null) ctx.removeColumnFilter(id);\n else ctx.addColumnFilter(id, v);\n };\n\n const element = useRender({\n defaultTagName: \"div\",\n render,\n state: { value, isActive: !!value },\n props: mergeProps<\"div\">(\n {\n className,\n ...({ \"data-p0\": `catalog-column-filter-${id}` } as Record<string, string>),\n },\n props,\n ),\n });\n\n if (render) return element;\n\n return (\n <DefaultFilterSelect\n placeholder={placeholder}\n value={value}\n onChange={setValue}\n options={resolvedOptions}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,kBACP,IACA,KACsB;CACtB,IAAI,UAAqD,EAAE;AAC3D,SAAQ,IAAR;EACE,KAAK;AACH,aAAU,IAAI;AACd;EACF,KAAK;AACH,aAAU,IAAI;AACd;EACF,KAAK;AACH,aAAU,IAAI;AACd;EACF,KAAK;AACH,aAAU,IAAI;AACd;;AAEJ,QAAO,QAAQ,KAAK,CAAC,WAAW;EAAE,OAAO;EAAM,OAAO;EAAM,EAAE;;;;;;;AAQhE,SAAgB,wBAAwB,EACtC,IACA,aACA,SACA,WACA,QACA,GAAG,SAC4B;CAC/B,MAAM,MAAM,uBAAuB;CACnC,MAAM,QAAQ,IAAI,qBAAqB,GAAG,IAAI;CAC9C,MAAM,kBAAkB,WAAW,kBAAkB,IAAI,IAAI;CAC7D,MAAM,YAAY,MAAqB;AACrC,MAAI,KAAK,KAAM,KAAI,mBAAmB,GAAG;MACpC,KAAI,gBAAgB,IAAI,EAAE;;CAGjC,MAAM,UAAU,UAAU;EACxB,gBAAgB;EAChB;EACA,OAAO;GAAE;GAAO,UAAU,CAAC,CAAC;GAAO;EACnC,OAAO,WACL;GACE;GACM,WAAW,yBAAyB;GAC3C,EACD,MACD;EACF,CAAC;AAEF,KAAI,OAAQ,QAAO;AAEnB,QACE,oBAAC,qBAAD;EACe;EACN;EACP,UAAU;EACV,SAAS;EACE;EACX"}