@flanksource/clicky-ui 0.3.18 → 0.3.20

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 (609) hide show
  1. package/dist/components/ComboboxMenu.cjs +5 -1
  2. package/dist/components/ComboboxMenu.cjs.map +1 -1
  3. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  4. package/dist/components/ComboboxMenu.js +5 -1
  5. package/dist/components/ComboboxMenu.js.map +1 -1
  6. package/dist/components/EndpointSelector.model.cjs +96 -0
  7. package/dist/components/EndpointSelector.model.cjs.map +1 -0
  8. package/dist/components/EndpointSelector.model.d.ts +2 -0
  9. package/dist/components/EndpointSelector.model.d.ts.map +1 -1
  10. package/dist/components/EndpointSelector.model.js +96 -0
  11. package/dist/components/EndpointSelector.model.js.map +1 -0
  12. package/dist/components/ErrorWrapper.cjs +1 -1
  13. package/dist/components/ErrorWrapper.cjs.map +1 -1
  14. package/dist/components/ErrorWrapper.js +1 -1
  15. package/dist/components/ErrorWrapper.js.map +1 -1
  16. package/dist/components/FilterBar.cjs +52 -2
  17. package/dist/components/FilterBar.cjs.map +1 -1
  18. package/dist/components/FilterBar.d.ts +20 -2
  19. package/dist/components/FilterBar.d.ts.map +1 -1
  20. package/dist/components/FilterBar.js +52 -2
  21. package/dist/components/FilterBar.js.map +1 -1
  22. package/dist/components/JSONPathField.cjs +87 -66
  23. package/dist/components/JSONPathField.cjs.map +1 -1
  24. package/dist/components/JSONPathField.d.ts +26 -9
  25. package/dist/components/JSONPathField.d.ts.map +1 -1
  26. package/dist/components/JSONPathField.js +88 -67
  27. package/dist/components/JSONPathField.js.map +1 -1
  28. package/dist/components/JSONPathPlayground.cjs +225 -0
  29. package/dist/components/JSONPathPlayground.cjs.map +1 -0
  30. package/dist/components/JSONPathPlayground.d.ts +59 -0
  31. package/dist/components/JSONPathPlayground.d.ts.map +1 -0
  32. package/dist/components/JSONPathPlayground.js +225 -0
  33. package/dist/components/JSONPathPlayground.js.map +1 -0
  34. package/dist/components/OnePasswordSelector.cjs +178 -0
  35. package/dist/components/OnePasswordSelector.cjs.map +1 -0
  36. package/dist/components/OnePasswordSelector.d.ts +8 -0
  37. package/dist/components/OnePasswordSelector.d.ts.map +1 -0
  38. package/dist/components/OnePasswordSelector.js +178 -0
  39. package/dist/components/OnePasswordSelector.js.map +1 -0
  40. package/dist/components/OnePasswordSelector.model.cjs +31 -0
  41. package/dist/components/OnePasswordSelector.model.cjs.map +1 -0
  42. package/dist/components/OnePasswordSelector.model.d.ts +27 -0
  43. package/dist/components/OnePasswordSelector.model.d.ts.map +1 -0
  44. package/dist/components/OnePasswordSelector.model.js +31 -0
  45. package/dist/components/OnePasswordSelector.model.js.map +1 -0
  46. package/dist/components/SecretFormField.cjs +142 -0
  47. package/dist/components/SecretFormField.cjs.map +1 -0
  48. package/dist/components/SecretFormField.d.ts +9 -0
  49. package/dist/components/SecretFormField.d.ts.map +1 -0
  50. package/dist/components/SecretFormField.js +142 -0
  51. package/dist/components/SecretFormField.js.map +1 -0
  52. package/dist/components/SecretKeySelector.cjs +20 -14
  53. package/dist/components/SecretKeySelector.cjs.map +1 -1
  54. package/dist/components/SecretKeySelector.d.ts +4 -1
  55. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  56. package/dist/components/SecretKeySelector.js +20 -14
  57. package/dist/components/SecretKeySelector.js.map +1 -1
  58. package/dist/components/TreePickerField.cjs +55 -29
  59. package/dist/components/TreePickerField.cjs.map +1 -1
  60. package/dist/components/TreePickerField.d.ts +10 -1
  61. package/dist/components/TreePickerField.d.ts.map +1 -1
  62. package/dist/components/TreePickerField.js +56 -30
  63. package/dist/components/TreePickerField.js.map +1 -1
  64. package/dist/components/UnitStepControls.cjs +55 -0
  65. package/dist/components/UnitStepControls.cjs.map +1 -0
  66. package/dist/components/UnitStepControls.d.ts +10 -0
  67. package/dist/components/UnitStepControls.d.ts.map +1 -0
  68. package/dist/components/UnitStepControls.js +55 -0
  69. package/dist/components/UnitStepControls.js.map +1 -0
  70. package/dist/components/combobox-types.d.ts +9 -0
  71. package/dist/components/combobox-types.d.ts.map +1 -1
  72. package/dist/components/filter-bar-utils.cjs +7 -0
  73. package/dist/components/filter-bar-utils.cjs.map +1 -1
  74. package/dist/components/filter-bar-utils.d.ts.map +1 -1
  75. package/dist/components/filter-bar-utils.js +7 -0
  76. package/dist/components/filter-bar-utils.js.map +1 -1
  77. package/dist/components/jotai-bindings-core.cjs.map +1 -1
  78. package/dist/components/jotai-bindings-core.d.ts +4 -1
  79. package/dist/components/jotai-bindings-core.d.ts.map +1 -1
  80. package/dist/components/jotai-bindings-core.js.map +1 -1
  81. package/dist/components/json-schema-form-accordion-array.cjs +5 -73
  82. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  83. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  84. package/dist/components/json-schema-form-accordion-array.js +3 -71
  85. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  86. package/dist/components/json-schema-form-array.cjs +6 -1
  87. package/dist/components/json-schema-form-array.cjs.map +1 -1
  88. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  89. package/dist/components/json-schema-form-array.js +6 -1
  90. package/dist/components/json-schema-form-array.js.map +1 -1
  91. package/dist/components/json-schema-form-cards-array.cjs +96 -0
  92. package/dist/components/json-schema-form-cards-array.cjs.map +1 -0
  93. package/dist/components/json-schema-form-cards-array.d.ts +7 -0
  94. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-cards-array.js +96 -0
  96. package/dist/components/json-schema-form-cards-array.js.map +1 -0
  97. package/dist/components/json-schema-form-item-row.cjs +81 -0
  98. package/dist/components/json-schema-form-item-row.cjs.map +1 -0
  99. package/dist/components/json-schema-form-item-row.d.ts +19 -0
  100. package/dist/components/json-schema-form-item-row.d.ts.map +1 -0
  101. package/dist/components/json-schema-form-item-row.js +81 -0
  102. package/dist/components/json-schema-form-item-row.js.map +1 -0
  103. package/dist/components/json-schema-form-render.cjs +4 -3
  104. package/dist/components/json-schema-form-render.cjs.map +1 -1
  105. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  106. package/dist/components/json-schema-form-render.js +4 -3
  107. package/dist/components/json-schema-form-render.js.map +1 -1
  108. package/dist/components/json-schema-form-resolve.cjs +1 -1
  109. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  110. package/dist/components/json-schema-form-resolve.js +1 -1
  111. package/dist/components/json-schema-form-resolve.js.map +1 -1
  112. package/dist/components/json-schema-form-tone.cjs +12 -0
  113. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  114. package/dist/components/json-schema-form-tone.js +12 -0
  115. package/dist/components/json-schema-form-tone.js.map +1 -1
  116. package/dist/components/json-schema-form-types.d.ts +10 -1
  117. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  118. package/dist/components/jsonPathTree.cjs +189 -0
  119. package/dist/components/jsonPathTree.cjs.map +1 -0
  120. package/dist/components/jsonPathTree.d.ts +92 -0
  121. package/dist/components/jsonPathTree.d.ts.map +1 -0
  122. package/dist/components/jsonPathTree.js +189 -0
  123. package/dist/components/jsonPathTree.js.map +1 -0
  124. package/dist/components/secret-form-extension.cjs +30 -0
  125. package/dist/components/secret-form-extension.cjs.map +1 -0
  126. package/dist/components/secret-form-extension.d.ts +23 -0
  127. package/dist/components/secret-form-extension.d.ts.map +1 -0
  128. package/dist/components/secret-form-extension.js +30 -0
  129. package/dist/components/secret-form-extension.js.map +1 -0
  130. package/dist/components/unit-form-extension.cjs +126 -0
  131. package/dist/components/unit-form-extension.cjs.map +1 -0
  132. package/dist/components/unit-form-extension.d.ts +8 -0
  133. package/dist/components/unit-form-extension.d.ts.map +1 -0
  134. package/dist/components/unit-form-extension.js +126 -0
  135. package/dist/components/unit-form-extension.js.map +1 -0
  136. package/dist/components.cjs +20 -0
  137. package/dist/components.cjs.map +1 -1
  138. package/dist/components.d.ts +7 -0
  139. package/dist/components.d.ts.map +1 -1
  140. package/dist/components.js +20 -0
  141. package/dist/components.js.map +1 -1
  142. package/dist/data/TaskExecDetails.cjs +40 -0
  143. package/dist/data/TaskExecDetails.cjs.map +1 -0
  144. package/dist/data/TaskExecDetails.d.ts +5 -0
  145. package/dist/data/TaskExecDetails.d.ts.map +1 -0
  146. package/dist/data/TaskExecDetails.js +40 -0
  147. package/dist/data/TaskExecDetails.js.map +1 -0
  148. package/dist/data/TaskProgress.cjs +9 -3
  149. package/dist/data/TaskProgress.cjs.map +1 -1
  150. package/dist/data/TaskProgress.d.ts.map +1 -1
  151. package/dist/data/TaskProgress.js +9 -3
  152. package/dist/data/TaskProgress.js.map +1 -1
  153. package/dist/data/TaskSnapshot.cjs.map +1 -1
  154. package/dist/data/TaskSnapshot.d.ts +12 -1
  155. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  156. package/dist/data/TaskSnapshot.js.map +1 -1
  157. package/dist/data/TreeNode.cjs +3 -0
  158. package/dist/data/TreeNode.cjs.map +1 -1
  159. package/dist/data/TreeNode.d.ts.map +1 -1
  160. package/dist/data/TreeNode.js +3 -0
  161. package/dist/data/TreeNode.js.map +1 -1
  162. package/dist/data/data-table-filter-values.cjs +20 -0
  163. package/dist/data/data-table-filter-values.cjs.map +1 -1
  164. package/dist/data/data-table-filter-values.d.ts +16 -0
  165. package/dist/data/data-table-filter-values.d.ts.map +1 -1
  166. package/dist/data/data-table-filter-values.js +20 -0
  167. package/dist/data/data-table-filter-values.js.map +1 -1
  168. package/dist/data/data-table-server-filters.cjs +23 -29
  169. package/dist/data/data-table-server-filters.cjs.map +1 -1
  170. package/dist/data/data-table-server-filters.d.ts.map +1 -1
  171. package/dist/data/data-table-server-filters.js +21 -27
  172. package/dist/data/data-table-server-filters.js.map +1 -1
  173. package/dist/data/diagnostics/ErrorDetails.cjs +61 -8
  174. package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
  175. package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
  176. package/dist/data/diagnostics/ErrorDetails.js +61 -8
  177. package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
  178. package/dist/data/diagnostics/error-diagnostics.cjs +10 -4
  179. package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
  180. package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
  181. package/dist/data/diagnostics/error-diagnostics.js +10 -4
  182. package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
  183. package/dist/data/query-browser/QueryBrowser.cjs +139 -161
  184. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  185. package/dist/data/query-browser/QueryBrowser.d.ts +1 -71
  186. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  187. package/dist/data/query-browser/QueryBrowser.editor.cjs +88 -0
  188. package/dist/data/query-browser/QueryBrowser.editor.cjs.map +1 -0
  189. package/dist/data/query-browser/QueryBrowser.editor.d.ts +12 -0
  190. package/dist/data/query-browser/QueryBrowser.editor.d.ts.map +1 -0
  191. package/dist/data/query-browser/QueryBrowser.editor.js +88 -0
  192. package/dist/data/query-browser/QueryBrowser.editor.js.map +1 -0
  193. package/dist/data/query-browser/QueryBrowser.js +140 -162
  194. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  195. package/dist/data/query-browser/QueryBrowser.types.cjs +12 -0
  196. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -0
  197. package/dist/data/query-browser/QueryBrowser.types.d.ts +94 -0
  198. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -0
  199. package/dist/data/query-browser/QueryBrowser.types.js +12 -0
  200. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -0
  201. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +56 -0
  202. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -0
  203. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +5 -0
  204. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -0
  205. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +56 -0
  206. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -0
  207. package/dist/data/query-browser/QueryBrowserResults.cjs +80 -0
  208. package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -0
  209. package/dist/data/query-browser/QueryBrowserResults.d.ts +16 -0
  210. package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -0
  211. package/dist/data/query-browser/QueryBrowserResults.js +80 -0
  212. package/dist/data/query-browser/QueryBrowserResults.js.map +1 -0
  213. package/dist/data/query-browser/index.d.ts +2 -1
  214. package/dist/data/query-browser/index.d.ts.map +1 -1
  215. package/dist/data/task-exec-details.cjs +9 -0
  216. package/dist/data/task-exec-details.cjs.map +1 -0
  217. package/dist/data/task-exec-details.d.ts +3 -0
  218. package/dist/data/task-exec-details.d.ts.map +1 -0
  219. package/dist/data/task-exec-details.js +9 -0
  220. package/dist/data/task-exec-details.js.map +1 -0
  221. package/dist/data/version-info.cjs +3 -3
  222. package/dist/data/version-info.js +3 -3
  223. package/dist/data.cjs +2 -0
  224. package/dist/data.cjs.map +1 -1
  225. package/dist/data.d.ts +1 -1
  226. package/dist/data.d.ts.map +1 -1
  227. package/dist/data.js +2 -0
  228. package/dist/data.js.map +1 -1
  229. package/dist/index.cjs +22 -0
  230. package/dist/index.cjs.map +1 -1
  231. package/dist/index.js +22 -0
  232. package/dist/index.js.map +1 -1
  233. package/dist/lib/string.cjs +8 -0
  234. package/dist/lib/string.cjs.map +1 -1
  235. package/dist/lib/string.d.ts +1 -0
  236. package/dist/lib/string.d.ts.map +1 -1
  237. package/dist/lib/string.js +8 -0
  238. package/dist/lib/string.js.map +1 -1
  239. package/dist/profiles/catalogTree.cjs +133 -0
  240. package/dist/profiles/catalogTree.cjs.map +1 -0
  241. package/dist/profiles/catalogTree.d.ts +11 -0
  242. package/dist/profiles/catalogTree.d.ts.map +1 -0
  243. package/dist/profiles/catalogTree.js +133 -0
  244. package/dist/profiles/catalogTree.js.map +1 -0
  245. package/dist/profiles/connectionBrowserModel.cjs +185 -0
  246. package/dist/profiles/connectionBrowserModel.cjs.map +1 -0
  247. package/dist/profiles/connectionBrowserModel.d.ts +169 -0
  248. package/dist/profiles/connectionBrowserModel.d.ts.map +1 -0
  249. package/dist/profiles/connectionBrowserModel.js +185 -0
  250. package/dist/profiles/connectionBrowserModel.js.map +1 -0
  251. package/dist/profiles/connectionQueryWorkspace.cjs +185 -0
  252. package/dist/profiles/connectionQueryWorkspace.cjs.map +1 -0
  253. package/dist/profiles/connectionQueryWorkspace.d.ts +63 -0
  254. package/dist/profiles/connectionQueryWorkspace.d.ts.map +1 -0
  255. package/dist/profiles/connectionQueryWorkspace.js +185 -0
  256. package/dist/profiles/connectionQueryWorkspace.js.map +1 -0
  257. package/dist/profiles/connectionQueryWorkspaceModel.cjs +28 -0
  258. package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +1 -0
  259. package/dist/profiles/connectionQueryWorkspaceModel.d.ts +38 -0
  260. package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +1 -0
  261. package/dist/profiles/connectionQueryWorkspaceModel.js +28 -0
  262. package/dist/profiles/connectionQueryWorkspaceModel.js.map +1 -0
  263. package/dist/profiles/esFieldValues.cjs +64 -0
  264. package/dist/profiles/esFieldValues.cjs.map +1 -0
  265. package/dist/profiles/esFieldValues.d.ts +48 -0
  266. package/dist/profiles/esFieldValues.d.ts.map +1 -0
  267. package/dist/profiles/esFieldValues.js +64 -0
  268. package/dist/profiles/esFieldValues.js.map +1 -0
  269. package/dist/profiles/esParamMappingModel.cjs +301 -0
  270. package/dist/profiles/esParamMappingModel.cjs.map +1 -0
  271. package/dist/profiles/esParamMappingModel.d.ts +37 -0
  272. package/dist/profiles/esParamMappingModel.d.ts.map +1 -0
  273. package/dist/profiles/esParamMappingModel.js +301 -0
  274. package/dist/profiles/esParamMappingModel.js.map +1 -0
  275. package/dist/profiles/esParamMappingPill.cjs +24 -0
  276. package/dist/profiles/esParamMappingPill.cjs.map +1 -0
  277. package/dist/profiles/esParamMappingPill.d.ts +13 -0
  278. package/dist/profiles/esParamMappingPill.d.ts.map +1 -0
  279. package/dist/profiles/esParamMappingPill.js +24 -0
  280. package/dist/profiles/esParamMappingPill.js.map +1 -0
  281. package/dist/profiles/esParamOperandExtension.cjs +75 -0
  282. package/dist/profiles/esParamOperandExtension.cjs.map +1 -0
  283. package/dist/profiles/esParamOperandExtension.d.ts +11 -0
  284. package/dist/profiles/esParamOperandExtension.d.ts.map +1 -0
  285. package/dist/profiles/esParamOperandExtension.js +75 -0
  286. package/dist/profiles/esParamOperandExtension.js.map +1 -0
  287. package/dist/profiles/esQueryBuilder.cjs +205 -0
  288. package/dist/profiles/esQueryBuilder.cjs.map +1 -0
  289. package/dist/profiles/esQueryBuilder.d.ts +35 -0
  290. package/dist/profiles/esQueryBuilder.d.ts.map +1 -0
  291. package/dist/profiles/esQueryBuilder.js +205 -0
  292. package/dist/profiles/esQueryBuilder.js.map +1 -0
  293. package/dist/profiles/esQueryBuilderExtension.cjs +23 -0
  294. package/dist/profiles/esQueryBuilderExtension.cjs.map +1 -0
  295. package/dist/profiles/esQueryBuilderExtension.d.ts +5 -0
  296. package/dist/profiles/esQueryBuilderExtension.d.ts.map +1 -0
  297. package/dist/profiles/esQueryBuilderExtension.js +23 -0
  298. package/dist/profiles/esQueryBuilderExtension.js.map +1 -0
  299. package/dist/profiles/esQueryBuilderForm.cjs +26 -0
  300. package/dist/profiles/esQueryBuilderForm.cjs.map +1 -0
  301. package/dist/profiles/esQueryBuilderForm.d.ts +18 -0
  302. package/dist/profiles/esQueryBuilderForm.d.ts.map +1 -0
  303. package/dist/profiles/esQueryBuilderForm.js +26 -0
  304. package/dist/profiles/esQueryBuilderForm.js.map +1 -0
  305. package/dist/profiles/esQueryBuilderModel.cjs +131 -0
  306. package/dist/profiles/esQueryBuilderModel.cjs.map +1 -0
  307. package/dist/profiles/esQueryBuilderModel.d.ts +108 -0
  308. package/dist/profiles/esQueryBuilderModel.d.ts.map +1 -0
  309. package/dist/profiles/esQueryBuilderModel.js +131 -0
  310. package/dist/profiles/esQueryBuilderModel.js.map +1 -0
  311. package/dist/profiles/esQueryClauseGroup.cjs +144 -0
  312. package/dist/profiles/esQueryClauseGroup.cjs.map +1 -0
  313. package/dist/profiles/esQueryClauseGroup.d.ts +10 -0
  314. package/dist/profiles/esQueryClauseGroup.d.ts.map +1 -0
  315. package/dist/profiles/esQueryClauseGroup.js +144 -0
  316. package/dist/profiles/esQueryClauseGroup.js.map +1 -0
  317. package/dist/profiles/esQueryCompile.cjs +47 -0
  318. package/dist/profiles/esQueryCompile.cjs.map +1 -0
  319. package/dist/profiles/esQueryCompile.d.ts +39 -0
  320. package/dist/profiles/esQueryCompile.d.ts.map +1 -0
  321. package/dist/profiles/esQueryCompile.js +47 -0
  322. package/dist/profiles/esQueryCompile.js.map +1 -0
  323. package/dist/profiles/esQueryConditionRow.cjs +168 -0
  324. package/dist/profiles/esQueryConditionRow.cjs.map +1 -0
  325. package/dist/profiles/esQueryConditionRow.d.ts +37 -0
  326. package/dist/profiles/esQueryConditionRow.d.ts.map +1 -0
  327. package/dist/profiles/esQueryConditionRow.js +168 -0
  328. package/dist/profiles/esQueryConditionRow.js.map +1 -0
  329. package/dist/profiles/esQueryGroupModel.cjs +12 -0
  330. package/dist/profiles/esQueryGroupModel.cjs.map +1 -0
  331. package/dist/profiles/esQueryGroupModel.d.ts +9 -0
  332. package/dist/profiles/esQueryGroupModel.d.ts.map +1 -0
  333. package/dist/profiles/esQueryGroupModel.js +12 -0
  334. package/dist/profiles/esQueryGroupModel.js.map +1 -0
  335. package/dist/profiles/esQueryOccur.cjs +16 -0
  336. package/dist/profiles/esQueryOccur.cjs.map +1 -0
  337. package/dist/profiles/esQueryOccur.d.ts +11 -0
  338. package/dist/profiles/esQueryOccur.d.ts.map +1 -0
  339. package/dist/profiles/esQueryOccur.js +16 -0
  340. package/dist/profiles/esQueryOccur.js.map +1 -0
  341. package/dist/profiles/esQueryOperandEditors.cjs +279 -0
  342. package/dist/profiles/esQueryOperandEditors.cjs.map +1 -0
  343. package/dist/profiles/esQueryOperandEditors.d.ts +24 -0
  344. package/dist/profiles/esQueryOperandEditors.d.ts.map +1 -0
  345. package/dist/profiles/esQueryOperandEditors.js +279 -0
  346. package/dist/profiles/esQueryOperandEditors.js.map +1 -0
  347. package/dist/profiles/esQueryOperandModel.cjs +28 -0
  348. package/dist/profiles/esQueryOperandModel.cjs.map +1 -0
  349. package/dist/profiles/esQueryOperandModel.d.ts +17 -0
  350. package/dist/profiles/esQueryOperandModel.d.ts.map +1 -0
  351. package/dist/profiles/esQueryOperandModel.js +28 -0
  352. package/dist/profiles/esQueryOperandModel.js.map +1 -0
  353. package/dist/profiles/esQueryOperators.cjs +165 -0
  354. package/dist/profiles/esQueryOperators.cjs.map +1 -0
  355. package/dist/profiles/esQueryOperators.d.ts +83 -0
  356. package/dist/profiles/esQueryOperators.d.ts.map +1 -0
  357. package/dist/profiles/esQueryOperators.js +165 -0
  358. package/dist/profiles/esQueryOperators.js.map +1 -0
  359. package/dist/profiles/esQueryOutputEditor.cjs +138 -0
  360. package/dist/profiles/esQueryOutputEditor.cjs.map +1 -0
  361. package/dist/profiles/esQueryOutputEditor.d.ts +7 -0
  362. package/dist/profiles/esQueryOutputEditor.d.ts.map +1 -0
  363. package/dist/profiles/esQueryOutputEditor.js +138 -0
  364. package/dist/profiles/esQueryOutputEditor.js.map +1 -0
  365. package/dist/profiles/esQueryOutputModel.cjs +16 -0
  366. package/dist/profiles/esQueryOutputModel.cjs.map +1 -0
  367. package/dist/profiles/esQueryOutputModel.d.ts +14 -0
  368. package/dist/profiles/esQueryOutputModel.d.ts.map +1 -0
  369. package/dist/profiles/esQueryOutputModel.js +16 -0
  370. package/dist/profiles/esQueryOutputModel.js.map +1 -0
  371. package/dist/profiles/esQueryPreview.cjs +30 -0
  372. package/dist/profiles/esQueryPreview.cjs.map +1 -0
  373. package/dist/profiles/esQueryPreview.d.ts +6 -0
  374. package/dist/profiles/esQueryPreview.d.ts.map +1 -0
  375. package/dist/profiles/esQueryPreview.js +30 -0
  376. package/dist/profiles/esQueryPreview.js.map +1 -0
  377. package/dist/profiles/esQuerySortEditor.cjs +143 -0
  378. package/dist/profiles/esQuerySortEditor.cjs.map +1 -0
  379. package/dist/profiles/esQuerySortEditor.d.ts +9 -0
  380. package/dist/profiles/esQuerySortEditor.d.ts.map +1 -0
  381. package/dist/profiles/esQuerySortEditor.js +143 -0
  382. package/dist/profiles/esQuerySortEditor.js.map +1 -0
  383. package/dist/profiles/esQuerySortModel.cjs +13 -0
  384. package/dist/profiles/esQuerySortModel.cjs.map +1 -0
  385. package/dist/profiles/esQuerySortModel.d.ts +4 -0
  386. package/dist/profiles/esQuerySortModel.d.ts.map +1 -0
  387. package/dist/profiles/esQuerySortModel.js +13 -0
  388. package/dist/profiles/esQuerySortModel.js.map +1 -0
  389. package/dist/profiles/esValueCombobox.cjs +86 -0
  390. package/dist/profiles/esValueCombobox.cjs.map +1 -0
  391. package/dist/profiles/esValueCombobox.d.ts +15 -0
  392. package/dist/profiles/esValueCombobox.d.ts.map +1 -0
  393. package/dist/profiles/esValueCombobox.js +86 -0
  394. package/dist/profiles/esValueCombobox.js.map +1 -0
  395. package/dist/profiles/jsonPathSample.cjs +75 -0
  396. package/dist/profiles/jsonPathSample.cjs.map +1 -0
  397. package/dist/profiles/jsonPathSample.d.ts +27 -0
  398. package/dist/profiles/jsonPathSample.d.ts.map +1 -0
  399. package/dist/profiles/jsonPathSample.js +75 -0
  400. package/dist/profiles/jsonPathSample.js.map +1 -0
  401. package/dist/profiles/jsonPathSampleRow.cjs +14 -0
  402. package/dist/profiles/jsonPathSampleRow.cjs.map +1 -0
  403. package/dist/profiles/jsonPathSampleRow.d.ts +6 -0
  404. package/dist/profiles/jsonPathSampleRow.d.ts.map +1 -0
  405. package/dist/profiles/jsonPathSampleRow.js +14 -0
  406. package/dist/profiles/jsonPathSampleRow.js.map +1 -0
  407. package/dist/profiles/profileApi.cjs +37 -0
  408. package/dist/profiles/profileApi.cjs.map +1 -0
  409. package/dist/profiles/profileApi.d.ts +32 -0
  410. package/dist/profiles/profileApi.d.ts.map +1 -0
  411. package/dist/profiles/profileApi.js +37 -0
  412. package/dist/profiles/profileApi.js.map +1 -0
  413. package/dist/profiles/profileBuilder.cjs +65 -0
  414. package/dist/profiles/profileBuilder.cjs.map +1 -0
  415. package/dist/profiles/profileBuilder.d.ts +11 -0
  416. package/dist/profiles/profileBuilder.d.ts.map +1 -0
  417. package/dist/profiles/profileBuilder.js +65 -0
  418. package/dist/profiles/profileBuilder.js.map +1 -0
  419. package/dist/profiles/profileBuilderExtension.cjs +25 -0
  420. package/dist/profiles/profileBuilderExtension.cjs.map +1 -0
  421. package/dist/profiles/profileBuilderExtension.d.ts +5 -0
  422. package/dist/profiles/profileBuilderExtension.d.ts.map +1 -0
  423. package/dist/profiles/profileBuilderExtension.js +25 -0
  424. package/dist/profiles/profileBuilderExtension.js.map +1 -0
  425. package/dist/profiles/profileBuilderWorkspace.cjs +368 -0
  426. package/dist/profiles/profileBuilderWorkspace.cjs.map +1 -0
  427. package/dist/profiles/profileBuilderWorkspace.d.ts +21 -0
  428. package/dist/profiles/profileBuilderWorkspace.d.ts.map +1 -0
  429. package/dist/profiles/profileBuilderWorkspace.js +368 -0
  430. package/dist/profiles/profileBuilderWorkspace.js.map +1 -0
  431. package/dist/profiles/profileColumnModel.cjs +23 -0
  432. package/dist/profiles/profileColumnModel.cjs.map +1 -0
  433. package/dist/profiles/profileColumnModel.d.ts +8 -0
  434. package/dist/profiles/profileColumnModel.d.ts.map +1 -0
  435. package/dist/profiles/profileColumnModel.js +23 -0
  436. package/dist/profiles/profileColumnModel.js.map +1 -0
  437. package/dist/profiles/profileColumnPicker.cjs +68 -0
  438. package/dist/profiles/profileColumnPicker.cjs.map +1 -0
  439. package/dist/profiles/profileColumnPicker.d.ts +11 -0
  440. package/dist/profiles/profileColumnPicker.d.ts.map +1 -0
  441. package/dist/profiles/profileColumnPicker.js +68 -0
  442. package/dist/profiles/profileColumnPicker.js.map +1 -0
  443. package/dist/profiles/profileEditor.cjs +386 -0
  444. package/dist/profiles/profileEditor.cjs.map +1 -0
  445. package/dist/profiles/profileEditor.d.ts +19 -0
  446. package/dist/profiles/profileEditor.d.ts.map +1 -0
  447. package/dist/profiles/profileEditor.js +386 -0
  448. package/dist/profiles/profileEditor.js.map +1 -0
  449. package/dist/profiles/profileEditorModel.cjs +181 -0
  450. package/dist/profiles/profileEditorModel.cjs.map +1 -0
  451. package/dist/profiles/profileEditorModel.d.ts +74 -0
  452. package/dist/profiles/profileEditorModel.d.ts.map +1 -0
  453. package/dist/profiles/profileEditorModel.js +181 -0
  454. package/dist/profiles/profileEditorModel.js.map +1 -0
  455. package/dist/profiles/profileEditorPreview.cjs +38 -0
  456. package/dist/profiles/profileEditorPreview.cjs.map +1 -0
  457. package/dist/profiles/profileEditorPreview.d.ts +12 -0
  458. package/dist/profiles/profileEditorPreview.d.ts.map +1 -0
  459. package/dist/profiles/profileEditorPreview.js +38 -0
  460. package/dist/profiles/profileEditorPreview.js.map +1 -0
  461. package/dist/profiles/profileEditorRail.cjs +46 -0
  462. package/dist/profiles/profileEditorRail.cjs.map +1 -0
  463. package/dist/profiles/profileEditorRail.d.ts +8 -0
  464. package/dist/profiles/profileEditorRail.d.ts.map +1 -0
  465. package/dist/profiles/profileEditorRail.js +46 -0
  466. package/dist/profiles/profileEditorRail.js.map +1 -0
  467. package/dist/profiles/profileEditorRaw.cjs +118 -0
  468. package/dist/profiles/profileEditorRaw.cjs.map +1 -0
  469. package/dist/profiles/profileEditorRaw.d.ts +7 -0
  470. package/dist/profiles/profileEditorRaw.d.ts.map +1 -0
  471. package/dist/profiles/profileEditorRaw.js +118 -0
  472. package/dist/profiles/profileEditorRaw.js.map +1 -0
  473. package/dist/profiles/profileEditorRoutes.cjs +7 -0
  474. package/dist/profiles/profileEditorRoutes.cjs.map +1 -0
  475. package/dist/profiles/profileEditorRoutes.d.ts +2 -0
  476. package/dist/profiles/profileEditorRoutes.d.ts.map +1 -0
  477. package/dist/profiles/profileEditorRoutes.js +7 -0
  478. package/dist/profiles/profileEditorRoutes.js.map +1 -0
  479. package/dist/profiles/profileEditorSections.cjs +213 -0
  480. package/dist/profiles/profileEditorSections.cjs.map +1 -0
  481. package/dist/profiles/profileEditorSections.d.ts +23 -0
  482. package/dist/profiles/profileEditorSections.d.ts.map +1 -0
  483. package/dist/profiles/profileEditorSections.js +213 -0
  484. package/dist/profiles/profileEditorSections.js.map +1 -0
  485. package/dist/profiles/profileFieldEditor.cjs +200 -0
  486. package/dist/profiles/profileFieldEditor.cjs.map +1 -0
  487. package/dist/profiles/profileFieldEditor.d.ts +34 -0
  488. package/dist/profiles/profileFieldEditor.d.ts.map +1 -0
  489. package/dist/profiles/profileFieldEditor.js +200 -0
  490. package/dist/profiles/profileFieldEditor.js.map +1 -0
  491. package/dist/profiles/profileFieldGrid.cjs +250 -0
  492. package/dist/profiles/profileFieldGrid.cjs.map +1 -0
  493. package/dist/profiles/profileFieldGrid.d.ts +20 -0
  494. package/dist/profiles/profileFieldGrid.d.ts.map +1 -0
  495. package/dist/profiles/profileFieldGrid.js +250 -0
  496. package/dist/profiles/profileFieldGrid.js.map +1 -0
  497. package/dist/profiles/profileFieldManager.cjs +103 -0
  498. package/dist/profiles/profileFieldManager.cjs.map +1 -0
  499. package/dist/profiles/profileFieldManager.d.ts +9 -0
  500. package/dist/profiles/profileFieldManager.d.ts.map +1 -0
  501. package/dist/profiles/profileFieldManager.js +103 -0
  502. package/dist/profiles/profileFieldManager.js.map +1 -0
  503. package/dist/profiles/profileFieldState.cjs +136 -0
  504. package/dist/profiles/profileFieldState.cjs.map +1 -0
  505. package/dist/profiles/profileFieldState.d.ts +41 -0
  506. package/dist/profiles/profileFieldState.d.ts.map +1 -0
  507. package/dist/profiles/profileFieldState.js +136 -0
  508. package/dist/profiles/profileFieldState.js.map +1 -0
  509. package/dist/profiles/profileFieldTypes.cjs +17 -0
  510. package/dist/profiles/profileFieldTypes.cjs.map +1 -0
  511. package/dist/profiles/profileFieldTypes.d.ts +8 -0
  512. package/dist/profiles/profileFieldTypes.d.ts.map +1 -0
  513. package/dist/profiles/profileFieldTypes.js +17 -0
  514. package/dist/profiles/profileFieldTypes.js.map +1 -0
  515. package/dist/profiles/profileParamModel.cjs +78 -0
  516. package/dist/profiles/profileParamModel.cjs.map +1 -0
  517. package/dist/profiles/profileParamModel.d.ts +3 -0
  518. package/dist/profiles/profileParamModel.d.ts.map +1 -0
  519. package/dist/profiles/profileParamModel.js +78 -0
  520. package/dist/profiles/profileParamModel.js.map +1 -0
  521. package/dist/profiles/profileSamplePayload.cjs +15 -0
  522. package/dist/profiles/profileSamplePayload.cjs.map +1 -0
  523. package/dist/profiles/profileSamplePayload.d.ts +13 -0
  524. package/dist/profiles/profileSamplePayload.d.ts.map +1 -0
  525. package/dist/profiles/profileSamplePayload.js +15 -0
  526. package/dist/profiles/profileSamplePayload.js.map +1 -0
  527. package/dist/profiles/profileWizard.cjs +257 -0
  528. package/dist/profiles/profileWizard.cjs.map +1 -0
  529. package/dist/profiles/profileWizard.d.ts +12 -0
  530. package/dist/profiles/profileWizard.d.ts.map +1 -0
  531. package/dist/profiles/profileWizard.js +257 -0
  532. package/dist/profiles/profileWizard.js.map +1 -0
  533. package/dist/profiles/profileWizardHelp.cjs +10 -0
  534. package/dist/profiles/profileWizardHelp.cjs.map +1 -0
  535. package/dist/profiles/profileWizardHelp.d.ts +13 -0
  536. package/dist/profiles/profileWizardHelp.d.ts.map +1 -0
  537. package/dist/profiles/profileWizardHelp.js +10 -0
  538. package/dist/profiles/profileWizardHelp.js.map +1 -0
  539. package/dist/profiles/profileWizardModel.cjs +198 -0
  540. package/dist/profiles/profileWizardModel.cjs.map +1 -0
  541. package/dist/profiles/profileWizardModel.d.ts +255 -0
  542. package/dist/profiles/profileWizardModel.d.ts.map +1 -0
  543. package/dist/profiles/profileWizardModel.js +198 -0
  544. package/dist/profiles/profileWizardModel.js.map +1 -0
  545. package/dist/profiles/profileWizardQueryStep.cjs +215 -0
  546. package/dist/profiles/profileWizardQueryStep.cjs.map +1 -0
  547. package/dist/profiles/profileWizardQueryStep.d.ts +18 -0
  548. package/dist/profiles/profileWizardQueryStep.d.ts.map +1 -0
  549. package/dist/profiles/profileWizardQueryStep.js +215 -0
  550. package/dist/profiles/profileWizardQueryStep.js.map +1 -0
  551. package/dist/profiles/profileWizardSteps.cjs +214 -0
  552. package/dist/profiles/profileWizardSteps.cjs.map +1 -0
  553. package/dist/profiles/profileWizardSteps.d.ts +35 -0
  554. package/dist/profiles/profileWizardSteps.d.ts.map +1 -0
  555. package/dist/profiles/profileWizardSteps.js +214 -0
  556. package/dist/profiles/profileWizardSteps.js.map +1 -0
  557. package/dist/profiles/profileYaml.cjs +19 -0
  558. package/dist/profiles/profileYaml.cjs.map +1 -0
  559. package/dist/profiles/profileYaml.d.ts +4 -0
  560. package/dist/profiles/profileYaml.d.ts.map +1 -0
  561. package/dist/profiles/profileYaml.js +19 -0
  562. package/dist/profiles/profileYaml.js.map +1 -0
  563. package/dist/profiles/prometheusResults.cjs +60 -0
  564. package/dist/profiles/prometheusResults.cjs.map +1 -0
  565. package/dist/profiles/prometheusResults.d.ts +7 -0
  566. package/dist/profiles/prometheusResults.d.ts.map +1 -0
  567. package/dist/profiles/prometheusResults.js +60 -0
  568. package/dist/profiles/prometheusResults.js.map +1 -0
  569. package/dist/profiles/queryRowLimits.cjs +82 -0
  570. package/dist/profiles/queryRowLimits.cjs.map +1 -0
  571. package/dist/profiles/queryRowLimits.d.ts +9 -0
  572. package/dist/profiles/queryRowLimits.d.ts.map +1 -0
  573. package/dist/profiles/queryRowLimits.js +82 -0
  574. package/dist/profiles/queryRowLimits.js.map +1 -0
  575. package/dist/profiles/queryRowLimitsModel.cjs +10 -0
  576. package/dist/profiles/queryRowLimitsModel.cjs.map +1 -0
  577. package/dist/profiles/queryRowLimitsModel.d.ts +9 -0
  578. package/dist/profiles/queryRowLimitsModel.d.ts.map +1 -0
  579. package/dist/profiles/queryRowLimitsModel.js +10 -0
  580. package/dist/profiles/queryRowLimitsModel.js.map +1 -0
  581. package/dist/profiles/queryTargetPicker.cjs +42 -0
  582. package/dist/profiles/queryTargetPicker.cjs.map +1 -0
  583. package/dist/profiles/queryTargetPicker.d.ts +8 -0
  584. package/dist/profiles/queryTargetPicker.d.ts.map +1 -0
  585. package/dist/profiles/queryTargetPicker.js +42 -0
  586. package/dist/profiles/queryTargetPicker.js.map +1 -0
  587. package/dist/profiles/testSchema.d.ts +3 -0
  588. package/dist/profiles/testSchema.d.ts.map +1 -0
  589. package/dist/profiles.cjs +223 -0
  590. package/dist/profiles.cjs.map +1 -0
  591. package/dist/profiles.d.ts +68 -0
  592. package/dist/profiles.d.ts.map +1 -0
  593. package/dist/profiles.js +223 -0
  594. package/dist/profiles.js.map +1 -0
  595. package/dist/rpc/FilterForm.cjs +20 -0
  596. package/dist/rpc/FilterForm.cjs.map +1 -1
  597. package/dist/rpc/FilterForm.js +20 -0
  598. package/dist/rpc/FilterForm.js.map +1 -1
  599. package/dist/rpc/formMetadata.cjs +34 -0
  600. package/dist/rpc/formMetadata.cjs.map +1 -1
  601. package/dist/rpc/formMetadata.d.ts.map +1 -1
  602. package/dist/rpc/formMetadata.js +35 -1
  603. package/dist/rpc/formMetadata.js.map +1 -1
  604. package/dist/rpc/types.cjs.map +1 -1
  605. package/dist/rpc/types.d.ts +9 -1
  606. package/dist/rpc/types.d.ts.map +1 -1
  607. package/dist/rpc/types.js.map +1 -1
  608. package/dist/styles.css +1 -1
  609. package/package.json +6 -1
@@ -0,0 +1,250 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { IconButton } from "../components/IconButton.js";
4
+ import { PROFILE_FIELD_TYPES } from "./profileFieldTypes.js";
5
+ import { UiDotsVertical } from "../icons/components/UiDotsVertical.js";
6
+ import { UiEye } from "../icons/components/UiEye.js";
7
+ import { UiEyeClosed } from "../icons/components/UiEyeClosed.js";
8
+ import { UiTrash } from "../icons/components/UiTrash.js";
9
+ const inputClassName = "w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15";
10
+ const inputClassNameSm = "w-full rounded-md border border-input bg-background px-2 py-1 text-xs outline-none focus:border-primary focus:ring-2 focus:ring-primary/15";
11
+ function ProfileFieldFilters({
12
+ state,
13
+ compact = false
14
+ }) {
15
+ const className = compact ? inputClassNameSm : inputClassName;
16
+ const patch = (next) => state.setFilter((current) => ({ ...current, ...next }));
17
+ const search = /* @__PURE__ */ jsx(
18
+ "input",
19
+ {
20
+ type: "search",
21
+ value: state.filter.query,
22
+ onChange: (event) => patch({ query: event.target.value }),
23
+ placeholder: `Search ${state.available.length} fields`,
24
+ "aria-label": "Search fields",
25
+ className
26
+ }
27
+ );
28
+ const selects = /* @__PURE__ */ jsxs(Fragment, { children: [
29
+ /* @__PURE__ */ jsxs(
30
+ "select",
31
+ {
32
+ value: state.filter.type,
33
+ "aria-label": "Filter by field type",
34
+ className: compact ? `${className} w-auto` : className,
35
+ onChange: (event) => patch({ type: event.target.value }),
36
+ children: [
37
+ /* @__PURE__ */ jsx("option", { value: "", children: "All types" }),
38
+ state.types.map((type) => /* @__PURE__ */ jsx("option", { value: type, children: type }, type))
39
+ ]
40
+ }
41
+ ),
42
+ /* @__PURE__ */ jsxs(
43
+ "select",
44
+ {
45
+ value: state.filter.selection,
46
+ "aria-label": "Filter by selection",
47
+ className: compact ? `${className} w-auto` : className,
48
+ onChange: (event) => patch({ selection: event.target.value }),
49
+ children: [
50
+ /* @__PURE__ */ jsx("option", { value: "all", children: "All fields" }),
51
+ /* @__PURE__ */ jsx("option", { value: "selected", children: "Selected" }),
52
+ /* @__PURE__ */ jsx("option", { value: "unselected", children: "Not selected" })
53
+ ]
54
+ }
55
+ )
56
+ ] });
57
+ if (compact) {
58
+ return /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[1fr_auto_auto] gap-2", children: [
59
+ search,
60
+ selects
61
+ ] });
62
+ }
63
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
64
+ search,
65
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2", children: selects })
66
+ ] });
67
+ }
68
+ function ProfileFieldGrid({ state }) {
69
+ const [source, setSource] = useState("");
70
+ const [target, setTarget] = useState("");
71
+ const order = state.visibleFields.map((field) => field.name);
72
+ const end = () => {
73
+ setSource("");
74
+ setTarget("");
75
+ };
76
+ const drag = {
77
+ source,
78
+ edgeFor: (name) => !source || target !== name || source === name ? null : order.indexOf(source) < order.indexOf(name) ? "bottom" : "top",
79
+ start: setSource,
80
+ over: setTarget,
81
+ drop: (name) => {
82
+ state.reorderField(source, name);
83
+ end();
84
+ },
85
+ end
86
+ };
87
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 overflow-auto", role: "list", children: [
88
+ /* @__PURE__ */ jsxs("table", { className: "w-fit border-collapse text-left", children: [
89
+ /* @__PURE__ */ jsx("thead", { className: "sticky top-0 z-10 bg-muted/70 backdrop-blur", children: /* @__PURE__ */ jsx("tr", { children: ["Actions", "Field", "Display label", "Type", "CEL"].map((heading) => /* @__PURE__ */ jsx(
90
+ "th",
91
+ {
92
+ className: "whitespace-nowrap border-b border-border px-3 py-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground",
93
+ children: heading
94
+ },
95
+ heading
96
+ )) }) }),
97
+ /* @__PURE__ */ jsx("tbody", { children: state.visibleFields.map((field) => {
98
+ var _a;
99
+ return /* @__PURE__ */ jsx(
100
+ ProfileFieldGridRow,
101
+ {
102
+ field,
103
+ state,
104
+ drag,
105
+ selected: state.selectedNames.has(field.name),
106
+ active: ((_a = state.activeField) == null ? void 0 : _a.name) === field.name
107
+ },
108
+ field.name
109
+ );
110
+ }) })
111
+ ] }),
112
+ state.visibleFields.length === 0 ? /* @__PURE__ */ jsx("p", { className: "p-8 text-center text-sm text-muted-foreground", children: "No fields match these filters." }) : null
113
+ ] });
114
+ }
115
+ const dropEdgeClassName = {
116
+ top: "[&>td]:shadow-[inset_0_2px_0_0_var(--color-primary)]",
117
+ bottom: "[&>td]:shadow-[inset_0_-2px_0_0_var(--color-primary)]"
118
+ };
119
+ function ProfileFieldGridRow({
120
+ field,
121
+ state,
122
+ drag,
123
+ selected,
124
+ active
125
+ }) {
126
+ const [grabbed, setGrabbed] = useState(false);
127
+ const fieldState = !selected ? "deleted" : field.hidden ? "hidden" : "visible";
128
+ const stateClassName = fieldState === "deleted" ? "text-muted-foreground line-through opacity-60 [&_input]:line-through [&_select]:line-through" : fieldState === "hidden" ? "text-muted-foreground opacity-60" : "";
129
+ const dragging = drag.source === field.name;
130
+ const droppable = selected && Boolean(drag.source) && !dragging;
131
+ const edge = droppable ? drag.edgeFor(field.name) : null;
132
+ const release = () => {
133
+ setGrabbed(false);
134
+ drag.end();
135
+ };
136
+ return /* @__PURE__ */ jsxs(
137
+ "tr",
138
+ {
139
+ role: "listitem",
140
+ "data-field-state": fieldState,
141
+ "data-drop-edge": edge ?? void 0,
142
+ draggable: grabbed,
143
+ onDragStart: (event) => {
144
+ event.dataTransfer.effectAllowed = "move";
145
+ event.dataTransfer.setData("text/plain", field.name);
146
+ drag.start(field.name);
147
+ },
148
+ onDragOver: (event) => {
149
+ if (!droppable) return;
150
+ event.preventDefault();
151
+ event.dataTransfer.dropEffect = "move";
152
+ drag.over(field.name);
153
+ },
154
+ onDrop: (event) => {
155
+ if (!droppable) return;
156
+ event.preventDefault();
157
+ setGrabbed(false);
158
+ drag.drop(field.name);
159
+ },
160
+ onDragEnd: release,
161
+ className: [
162
+ "border-b border-border",
163
+ active ? "bg-primary/10" : "hover:bg-muted/40",
164
+ stateClassName,
165
+ dragging ? "opacity-40" : "",
166
+ edge ? dropEdgeClassName[edge] : ""
167
+ ].filter(Boolean).join(" "),
168
+ onClick: () => state.setActiveName(field.name),
169
+ children: [
170
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-1", onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
171
+ /* @__PURE__ */ jsx(
172
+ IconButton,
173
+ {
174
+ icon: UiDotsVertical,
175
+ label: `Reorder ${field.name}`,
176
+ disabled: !selected,
177
+ className: "cursor-grab active:cursor-grabbing",
178
+ onMouseDown: () => setGrabbed(true),
179
+ onMouseUp: release,
180
+ onKeyDown: (event) => {
181
+ const offset = event.key === "ArrowUp" ? -1 : event.key === "ArrowDown" ? 1 : 0;
182
+ if (!offset) return;
183
+ event.preventDefault();
184
+ state.moveField(field, offset);
185
+ }
186
+ }
187
+ ),
188
+ /* @__PURE__ */ jsx(
189
+ IconButton,
190
+ {
191
+ icon: field.hidden ? UiEye : UiEyeClosed,
192
+ label: `${field.hidden ? "Show" : "Hide"} ${field.name}`,
193
+ disabled: !selected,
194
+ onClick: () => state.patchField(field, { hidden: !field.hidden })
195
+ }
196
+ ),
197
+ /* @__PURE__ */ jsx(
198
+ IconButton,
199
+ {
200
+ icon: UiTrash,
201
+ label: `Delete ${field.name}`,
202
+ disabled: !selected,
203
+ className: "text-destructive hover:text-destructive",
204
+ onClick: () => state.removeField(field)
205
+ }
206
+ )
207
+ ] }) }),
208
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: /* @__PURE__ */ jsx(
209
+ "input",
210
+ {
211
+ value: field.name,
212
+ "aria-label": `Rename ${field.name}`,
213
+ disabled: !selected,
214
+ className: `${inputClassNameSm} min-w-[10rem] font-mono`,
215
+ onChange: (event) => state.patchField(field, { name: event.target.value })
216
+ }
217
+ ) }),
218
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: /* @__PURE__ */ jsx(
219
+ "input",
220
+ {
221
+ value: field.label ?? "",
222
+ placeholder: field.name,
223
+ "aria-label": `Label for ${field.name}`,
224
+ className: `${inputClassNameSm} min-w-[9rem]`,
225
+ onChange: (event) => state.patchField(field, { label: event.target.value || void 0 })
226
+ }
227
+ ) }),
228
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: /* @__PURE__ */ jsxs(
229
+ "select",
230
+ {
231
+ value: field.type ?? "",
232
+ "aria-label": `Type for ${field.name}`,
233
+ className: `${inputClassNameSm} w-auto`,
234
+ onChange: (event) => state.patchField(field, { type: event.target.value || void 0 }),
235
+ children: [
236
+ /* @__PURE__ */ jsx("option", { value: "", children: "auto" }),
237
+ PROFILE_FIELD_TYPES.map((type) => /* @__PURE__ */ jsx("option", { value: type, children: type }, type))
238
+ ]
239
+ }
240
+ ) }),
241
+ /* @__PURE__ */ jsx("td", { className: "px-3 py-1", children: field.cel ? /* @__PURE__ */ jsx("span", { className: "rounded bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] text-primary", children: "set" }) : /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: "—" }) })
242
+ ]
243
+ }
244
+ );
245
+ }
246
+ export {
247
+ ProfileFieldFilters,
248
+ ProfileFieldGrid
249
+ };
250
+ //# sourceMappingURL=profileFieldGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileFieldGrid.js","sources":["../../src/profiles/profileFieldGrid.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { IconButton } from \"../components/IconButton\";\nimport {\n UiDotsVertical,\n UiEye,\n UiEyeClosed,\n UiTrash,\n} from \"../icons\";\nimport type { ProfileFieldState } from \"./profileFieldState\";\nimport type { ProfileColumn, ProfileFieldFilter } from \"./profileWizardModel\";\nimport { PROFILE_FIELD_TYPES } from \"./profileFieldTypes\";\n\nconst inputClassName =\n \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15\";\n\nconst inputClassNameSm =\n \"w-full rounded-md border border-input bg-background px-2 py-1 text-xs outline-none focus:border-primary focus:ring-2 focus:ring-primary/15\";\n\n/** Search, type and selection filters. `compact` lays them out on one row for\n * the editor route's pinned toolbar; the wizard stacks them in its card. */\nexport function ProfileFieldFilters({\n state,\n compact = false,\n}: {\n state: ProfileFieldState;\n compact?: boolean;\n}) {\n const className = compact ? inputClassNameSm : inputClassName;\n const patch = (next: Partial<ProfileFieldFilter>) =>\n state.setFilter((current) => ({ ...current, ...next }));\n const search = (\n <input\n type=\"search\"\n value={state.filter.query}\n onChange={(event) => patch({ query: event.target.value })}\n placeholder={`Search ${state.available.length} fields`}\n aria-label=\"Search fields\"\n className={className}\n />\n );\n const selects = (\n <>\n <select\n value={state.filter.type}\n aria-label=\"Filter by field type\"\n className={compact ? `${className} w-auto` : className}\n onChange={(event) => patch({ type: event.target.value })}\n >\n <option value=\"\">All types</option>\n {state.types.map((type) => (\n <option key={type} value={type}>{type}</option>\n ))}\n </select>\n <select\n value={state.filter.selection}\n aria-label=\"Filter by selection\"\n className={compact ? `${className} w-auto` : className}\n onChange={(event) =>\n patch({ selection: event.target.value as ProfileFieldFilter[\"selection\"] })\n }\n >\n <option value=\"all\">All fields</option>\n <option value=\"selected\">Selected</option>\n <option value=\"unselected\">Not selected</option>\n </select>\n </>\n );\n if (compact) {\n return <div className=\"grid grid-cols-[1fr_auto_auto] gap-2\">{search}{selects}</div>;\n }\n return (\n <div className=\"space-y-3\">\n {search}\n <div className=\"grid grid-cols-2 gap-2\">{selects}</div>\n </div>\n );\n}\n\n/** The in-flight row drag, shared by every row so a row can tell whether it is\n * the one being dragged and which of its edges the drop would land on. */\ntype ProfileFieldDrag = {\n /** Name of the field being dragged, or \"\" when no drag is in flight. */\n source: string;\n /** Which edge of `name` an insertion line belongs on, if any. */\n edgeFor: (name: string) => \"top\" | \"bottom\" | null;\n start: (name: string) => void;\n over: (name: string) => void;\n drop: (name: string) => void;\n end: () => void;\n};\n\n/**\n * Spreadsheet-style column list: include, label and type are edited in place,\n * with quick visibility and delete actions on every row. Anything that does not\n * fit a grid cell — role, format, unit, width, CEL — stays in the inspector pane.\n *\n * Rows are dragged by their handle to reorder the profile's columns. Only\n * configured fields take part: a deleted one has no position of its own, so it\n * is neither draggable nor a drop target.\n */\nexport function ProfileFieldGrid({ state }: { state: ProfileFieldState }) {\n const [source, setSource] = useState(\"\");\n const [target, setTarget] = useState(\"\");\n const order = state.visibleFields.map((field) => field.name);\n const end = () => {\n setSource(\"\");\n setTarget(\"\");\n };\n const drag: ProfileFieldDrag = {\n source,\n edgeFor: (name) =>\n !source || target !== name || source === name\n ? null\n : order.indexOf(source) < order.indexOf(name)\n ? \"bottom\"\n : \"top\",\n start: setSource,\n over: setTarget,\n drop: (name) => {\n state.reorderField(source, name);\n end();\n },\n end,\n };\n return (\n <div className=\"min-h-0 flex-1 overflow-auto\" role=\"list\">\n <table className=\"w-fit border-collapse text-left\">\n <thead className=\"sticky top-0 z-10 bg-muted/70 backdrop-blur\">\n <tr>\n {[\"Actions\", \"Field\", \"Display label\", \"Type\", \"CEL\"].map((heading) => (\n <th\n key={heading}\n className=\"whitespace-nowrap border-b border-border px-3 py-1.5 text-[11px] font-medium uppercase tracking-wide text-muted-foreground\"\n >\n {heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {state.visibleFields.map((field) => (\n <ProfileFieldGridRow\n key={field.name}\n field={field}\n state={state}\n drag={drag}\n selected={state.selectedNames.has(field.name)}\n active={state.activeField?.name === field.name}\n />\n ))}\n </tbody>\n </table>\n {state.visibleFields.length === 0 ? (\n <p className=\"p-8 text-center text-sm text-muted-foreground\">\n No fields match these filters.\n </p>\n ) : null}\n </div>\n );\n}\n\nconst dropEdgeClassName = {\n top: \"[&>td]:shadow-[inset_0_2px_0_0_var(--color-primary)]\",\n bottom: \"[&>td]:shadow-[inset_0_-2px_0_0_var(--color-primary)]\",\n} as const;\n\nfunction ProfileFieldGridRow({\n field,\n state,\n drag,\n selected,\n active,\n}: {\n field: ProfileColumn;\n state: ProfileFieldState;\n drag: ProfileFieldDrag;\n selected: boolean;\n active: boolean;\n}) {\n // The row carries text inputs, so it stays undraggable until the handle is\n // pressed — otherwise selecting text in a cell starts a reorder.\n const [grabbed, setGrabbed] = useState(false);\n const fieldState = !selected ? \"deleted\" : field.hidden ? \"hidden\" : \"visible\";\n const stateClassName =\n fieldState === \"deleted\"\n ? \"text-muted-foreground line-through opacity-60 [&_input]:line-through [&_select]:line-through\"\n : fieldState === \"hidden\"\n ? \"text-muted-foreground opacity-60\"\n : \"\";\n const dragging = drag.source === field.name;\n const droppable = selected && Boolean(drag.source) && !dragging;\n const edge = droppable ? drag.edgeFor(field.name) : null;\n const release = () => {\n setGrabbed(false);\n drag.end();\n };\n return (\n <tr\n role=\"listitem\"\n data-field-state={fieldState}\n data-drop-edge={edge ?? undefined}\n draggable={grabbed}\n onDragStart={(event) => {\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(\"text/plain\", field.name);\n drag.start(field.name);\n }}\n onDragOver={(event) => {\n if (!droppable) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n drag.over(field.name);\n }}\n onDrop={(event) => {\n if (!droppable) return;\n event.preventDefault();\n setGrabbed(false);\n drag.drop(field.name);\n }}\n onDragEnd={release}\n className={[\n \"border-b border-border\",\n active ? \"bg-primary/10\" : \"hover:bg-muted/40\",\n stateClassName,\n dragging ? \"opacity-40\" : \"\",\n edge ? dropEdgeClassName[edge] : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => state.setActiveName(field.name)}\n >\n <td className=\"px-3 py-1\" onClick={(event) => event.stopPropagation()}>\n <div className=\"flex items-center gap-1\">\n <IconButton\n icon={UiDotsVertical}\n label={`Reorder ${field.name}`}\n disabled={!selected}\n className=\"cursor-grab active:cursor-grabbing\"\n onMouseDown={() => setGrabbed(true)}\n onMouseUp={release}\n onKeyDown={(event) => {\n const offset =\n event.key === \"ArrowUp\" ? -1 : event.key === \"ArrowDown\" ? 1 : 0;\n if (!offset) return;\n event.preventDefault();\n state.moveField(field, offset);\n }}\n />\n <IconButton\n icon={field.hidden ? UiEye : UiEyeClosed}\n label={`${field.hidden ? \"Show\" : \"Hide\"} ${field.name}`}\n disabled={!selected}\n onClick={() => state.patchField(field, { hidden: !field.hidden })}\n />\n <IconButton\n icon={UiTrash}\n label={`Delete ${field.name}`}\n disabled={!selected}\n className=\"text-destructive hover:text-destructive\"\n onClick={() => state.removeField(field)}\n />\n </div>\n </td>\n <td className=\"px-3 py-1\">\n <input\n value={field.name}\n aria-label={`Rename ${field.name}`}\n disabled={!selected}\n className={`${inputClassNameSm} min-w-[10rem] font-mono`}\n onChange={(event) =>\n state.patchField(field, { name: event.target.value })\n }\n />\n </td>\n <td className=\"px-3 py-1\">\n <input\n value={field.label ?? \"\"}\n placeholder={field.name}\n aria-label={`Label for ${field.name}`}\n className={`${inputClassNameSm} min-w-[9rem]`}\n onChange={(event) =>\n state.patchField(field, { label: event.target.value || undefined })\n }\n />\n </td>\n <td className=\"px-3 py-1\">\n <select\n value={field.type ?? \"\"}\n aria-label={`Type for ${field.name}`}\n className={`${inputClassNameSm} w-auto`}\n onChange={(event) =>\n state.patchField(field, { type: event.target.value || undefined })\n }\n >\n <option value=\"\">auto</option>\n {PROFILE_FIELD_TYPES.map((type) => (\n <option key={type} value={type}>{type}</option>\n ))}\n </select>\n </td>\n <td className=\"px-3 py-1\">\n {field.cel ? (\n <span className=\"rounded bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] text-primary\">\n set\n </span>\n ) : (\n <span className=\"text-[11px] text-muted-foreground\">—</span>\n )}\n </td>\n </tr>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const button = require("../components/button.cjs");
5
+ const profileFieldEditor = require("./profileFieldEditor.cjs");
6
+ const profileFieldGrid = require("./profileFieldGrid.cjs");
7
+ const profileFieldState = require("./profileFieldState.cjs");
8
+ function ProfileFieldManager(props) {
9
+ const state = profileFieldState.useProfileFieldState(props);
10
+ const { activeField } = state;
11
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]", children: [
12
+ /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card", children: [
13
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 border-b p-4", children: [
14
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
15
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
16
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold", children: "Fields" }),
17
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
18
+ state.configuredCount,
19
+ " of ",
20
+ state.available.length,
21
+ " fields selected"
22
+ ] })
23
+ ] }),
24
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
25
+ /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "button", size: "sm", variant: "outline", onClick: state.addField, children: "Add column" }),
26
+ /* @__PURE__ */ jsxRuntime.jsx(
27
+ "button",
28
+ {
29
+ type: "button",
30
+ className: "font-medium text-primary hover:underline",
31
+ onClick: () => state.setVisibleSelection(true),
32
+ children: "Select visible"
33
+ }
34
+ ),
35
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-border", children: "|" }),
36
+ /* @__PURE__ */ jsxRuntime.jsx(
37
+ "button",
38
+ {
39
+ type: "button",
40
+ className: "font-medium text-muted-foreground hover:text-foreground",
41
+ onClick: () => state.setVisibleSelection(false),
42
+ children: "Clear visible"
43
+ }
44
+ )
45
+ ] })
46
+ ] }),
47
+ /* @__PURE__ */ jsxRuntime.jsx(profileFieldGrid.ProfileFieldFilters, { state })
48
+ ] }),
49
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-64 flex-1 overflow-auto", role: "list", children: [
50
+ state.visibleFields.map((field) => /* @__PURE__ */ jsxRuntime.jsxs(
51
+ "div",
52
+ {
53
+ role: "listitem",
54
+ className: `flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${(activeField == null ? void 0 : activeField.name) === field.name ? "bg-primary/8" : "hover:bg-muted/50"}`,
55
+ children: [
56
+ /* @__PURE__ */ jsxRuntime.jsx(
57
+ "input",
58
+ {
59
+ type: "checkbox",
60
+ checked: state.selectedNames.has(field.name),
61
+ "aria-label": `Include ${field.name}`,
62
+ onChange: (event) => state.setFieldSelection(field, event.target.checked)
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxRuntime.jsxs(
66
+ "button",
67
+ {
68
+ type: "button",
69
+ className: "flex min-w-0 flex-1 items-center gap-3 text-left",
70
+ onClick: () => state.setActiveName(field.name),
71
+ children: [
72
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-xs", children: field.name }),
73
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground", children: field.type || "auto" })
74
+ ]
75
+ }
76
+ )
77
+ ]
78
+ },
79
+ field.name
80
+ )),
81
+ state.visibleFields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-8 text-center text-sm text-muted-foreground", children: "No fields match these filters." }) : null
82
+ ] })
83
+ ] }),
84
+ /* @__PURE__ */ jsxRuntime.jsx(
85
+ profileFieldEditor.ProfileFieldEditor,
86
+ {
87
+ field: activeField,
88
+ selected: Boolean(activeField && state.selectedNames.has(activeField.name)),
89
+ onSelectedChange: (selected) => {
90
+ if (activeField) state.setFieldSelection(activeField, selected);
91
+ },
92
+ onChange: state.updateActiveField,
93
+ canMoveUp: state.canMoveUp,
94
+ canMoveDown: state.canMoveDown,
95
+ onMoveUp: () => state.moveActive(-1),
96
+ onMoveDown: () => state.moveActive(1),
97
+ onRemove: state.removeActive
98
+ }
99
+ )
100
+ ] });
101
+ }
102
+ exports.ProfileFieldManager = ProfileFieldManager;
103
+ //# sourceMappingURL=profileFieldManager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileFieldManager.cjs","sources":["../../src/profiles/profileFieldManager.tsx"],"sourcesContent":["import { Button } from \"../components/button\";\nimport { ProfileFieldEditor } from \"./profileFieldEditor\";\nimport { ProfileFieldFilters } from \"./profileFieldGrid\";\nimport { useProfileFieldState, type ProfileFieldStateProps } from \"./profileFieldState\";\n\n/**\n * The wizard's two-pane column step: a field list beside the inspector.\n *\n * The editor route spreads the same state across Workspace panes instead; both\n * read `useProfileFieldState`, so selection and filtering behave identically.\n */\nexport function ProfileFieldManager(props: ProfileFieldStateProps) {\n const state = useProfileFieldState(props);\n const { activeField } = state;\n\n return (\n <div className=\"grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]\">\n <section className=\"flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card\">\n <div className=\"space-y-3 border-b p-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <h3 className=\"font-semibold\">Fields</h3>\n <p className=\"text-xs text-muted-foreground\">\n {state.configuredCount} of {state.available.length} fields selected\n </p>\n </div>\n <div className=\"flex items-center gap-2 text-xs\">\n <Button type=\"button\" size=\"sm\" variant=\"outline\" onClick={state.addField}>\n Add column\n </Button>\n <button\n type=\"button\"\n className=\"font-medium text-primary hover:underline\"\n onClick={() => state.setVisibleSelection(true)}\n >\n Select visible\n </button>\n <span className=\"text-border\">|</span>\n <button\n type=\"button\"\n className=\"font-medium text-muted-foreground hover:text-foreground\"\n onClick={() => state.setVisibleSelection(false)}\n >\n Clear visible\n </button>\n </div>\n </div>\n <ProfileFieldFilters state={state} />\n </div>\n <div className=\"min-h-64 flex-1 overflow-auto\" role=\"list\">\n {state.visibleFields.map((field) => (\n <div\n key={field.name}\n role=\"listitem\"\n className={`flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${\n activeField?.name === field.name ? \"bg-primary/8\" : \"hover:bg-muted/50\"\n }`}\n >\n <input\n type=\"checkbox\"\n checked={state.selectedNames.has(field.name)}\n aria-label={`Include ${field.name}`}\n onChange={(event) => state.setFieldSelection(field, event.target.checked)}\n />\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-3 text-left\"\n onClick={() => state.setActiveName(field.name)}\n >\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {field.name}\n </span>\n <span className=\"rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground\">\n {field.type || \"auto\"}\n </span>\n </button>\n </div>\n ))}\n {state.visibleFields.length === 0 ? (\n <p className=\"p-8 text-center text-sm text-muted-foreground\">\n No fields match these filters.\n </p>\n ) : null}\n </div>\n </section>\n\n <ProfileFieldEditor\n field={activeField}\n selected={Boolean(activeField && state.selectedNames.has(activeField.name))}\n onSelectedChange={(selected) => {\n if (activeField) state.setFieldSelection(activeField, selected);\n }}\n onChange={state.updateActiveField}\n canMoveUp={state.canMoveUp}\n canMoveDown={state.canMoveDown}\n onMoveUp={() => state.moveActive(-1)}\n onMoveDown={() => state.moveActive(1)}\n onRemove={state.removeActive}\n />\n </div>\n );\n}\n"],"names":["useProfileFieldState","jsxs","jsx","Button","ProfileFieldFilters","ProfileFieldEditor"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ProfileFieldStateProps } from './profileFieldState';
2
+ /**
3
+ * The wizard's two-pane column step: a field list beside the inspector.
4
+ *
5
+ * The editor route spreads the same state across Workspace panes instead; both
6
+ * read `useProfileFieldState`, so selection and filtering behave identically.
7
+ */
8
+ export declare function ProfileFieldManager(props: ProfileFieldStateProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=profileFieldManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileFieldManager.d.ts","sourceRoot":"","sources":["../../src/profiles/profileFieldManager.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,2CA0FhE"}
@@ -0,0 +1,103 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Button } from "../components/button.js";
3
+ import { ProfileFieldEditor } from "./profileFieldEditor.js";
4
+ import { ProfileFieldFilters } from "./profileFieldGrid.js";
5
+ import { useProfileFieldState } from "./profileFieldState.js";
6
+ function ProfileFieldManager(props) {
7
+ const state = useProfileFieldState(props);
8
+ const { activeField } = state;
9
+ return /* @__PURE__ */ jsxs("div", { className: "grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]", children: [
10
+ /* @__PURE__ */ jsxs("section", { className: "flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card", children: [
11
+ /* @__PURE__ */ jsxs("div", { className: "space-y-3 border-b p-4", children: [
12
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
13
+ /* @__PURE__ */ jsxs("div", { children: [
14
+ /* @__PURE__ */ jsx("h3", { className: "font-semibold", children: "Fields" }),
15
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
16
+ state.configuredCount,
17
+ " of ",
18
+ state.available.length,
19
+ " fields selected"
20
+ ] })
21
+ ] }),
22
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
23
+ /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", variant: "outline", onClick: state.addField, children: "Add column" }),
24
+ /* @__PURE__ */ jsx(
25
+ "button",
26
+ {
27
+ type: "button",
28
+ className: "font-medium text-primary hover:underline",
29
+ onClick: () => state.setVisibleSelection(true),
30
+ children: "Select visible"
31
+ }
32
+ ),
33
+ /* @__PURE__ */ jsx("span", { className: "text-border", children: "|" }),
34
+ /* @__PURE__ */ jsx(
35
+ "button",
36
+ {
37
+ type: "button",
38
+ className: "font-medium text-muted-foreground hover:text-foreground",
39
+ onClick: () => state.setVisibleSelection(false),
40
+ children: "Clear visible"
41
+ }
42
+ )
43
+ ] })
44
+ ] }),
45
+ /* @__PURE__ */ jsx(ProfileFieldFilters, { state })
46
+ ] }),
47
+ /* @__PURE__ */ jsxs("div", { className: "min-h-64 flex-1 overflow-auto", role: "list", children: [
48
+ state.visibleFields.map((field) => /* @__PURE__ */ jsxs(
49
+ "div",
50
+ {
51
+ role: "listitem",
52
+ className: `flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${(activeField == null ? void 0 : activeField.name) === field.name ? "bg-primary/8" : "hover:bg-muted/50"}`,
53
+ children: [
54
+ /* @__PURE__ */ jsx(
55
+ "input",
56
+ {
57
+ type: "checkbox",
58
+ checked: state.selectedNames.has(field.name),
59
+ "aria-label": `Include ${field.name}`,
60
+ onChange: (event) => state.setFieldSelection(field, event.target.checked)
61
+ }
62
+ ),
63
+ /* @__PURE__ */ jsxs(
64
+ "button",
65
+ {
66
+ type: "button",
67
+ className: "flex min-w-0 flex-1 items-center gap-3 text-left",
68
+ onClick: () => state.setActiveName(field.name),
69
+ children: [
70
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-xs", children: field.name }),
71
+ /* @__PURE__ */ jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground", children: field.type || "auto" })
72
+ ]
73
+ }
74
+ )
75
+ ]
76
+ },
77
+ field.name
78
+ )),
79
+ state.visibleFields.length === 0 ? /* @__PURE__ */ jsx("p", { className: "p-8 text-center text-sm text-muted-foreground", children: "No fields match these filters." }) : null
80
+ ] })
81
+ ] }),
82
+ /* @__PURE__ */ jsx(
83
+ ProfileFieldEditor,
84
+ {
85
+ field: activeField,
86
+ selected: Boolean(activeField && state.selectedNames.has(activeField.name)),
87
+ onSelectedChange: (selected) => {
88
+ if (activeField) state.setFieldSelection(activeField, selected);
89
+ },
90
+ onChange: state.updateActiveField,
91
+ canMoveUp: state.canMoveUp,
92
+ canMoveDown: state.canMoveDown,
93
+ onMoveUp: () => state.moveActive(-1),
94
+ onMoveDown: () => state.moveActive(1),
95
+ onRemove: state.removeActive
96
+ }
97
+ )
98
+ ] });
99
+ }
100
+ export {
101
+ ProfileFieldManager
102
+ };
103
+ //# sourceMappingURL=profileFieldManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileFieldManager.js","sources":["../../src/profiles/profileFieldManager.tsx"],"sourcesContent":["import { Button } from \"../components/button\";\nimport { ProfileFieldEditor } from \"./profileFieldEditor\";\nimport { ProfileFieldFilters } from \"./profileFieldGrid\";\nimport { useProfileFieldState, type ProfileFieldStateProps } from \"./profileFieldState\";\n\n/**\n * The wizard's two-pane column step: a field list beside the inspector.\n *\n * The editor route spreads the same state across Workspace panes instead; both\n * read `useProfileFieldState`, so selection and filtering behave identically.\n */\nexport function ProfileFieldManager(props: ProfileFieldStateProps) {\n const state = useProfileFieldState(props);\n const { activeField } = state;\n\n return (\n <div className=\"grid min-h-0 gap-4 lg:grid-cols-[minmax(22rem,0.9fr)_minmax(24rem,1.1fr)]\">\n <section className=\"flex min-h-0 flex-col overflow-hidden rounded-xl border bg-card\">\n <div className=\"space-y-3 border-b p-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <h3 className=\"font-semibold\">Fields</h3>\n <p className=\"text-xs text-muted-foreground\">\n {state.configuredCount} of {state.available.length} fields selected\n </p>\n </div>\n <div className=\"flex items-center gap-2 text-xs\">\n <Button type=\"button\" size=\"sm\" variant=\"outline\" onClick={state.addField}>\n Add column\n </Button>\n <button\n type=\"button\"\n className=\"font-medium text-primary hover:underline\"\n onClick={() => state.setVisibleSelection(true)}\n >\n Select visible\n </button>\n <span className=\"text-border\">|</span>\n <button\n type=\"button\"\n className=\"font-medium text-muted-foreground hover:text-foreground\"\n onClick={() => state.setVisibleSelection(false)}\n >\n Clear visible\n </button>\n </div>\n </div>\n <ProfileFieldFilters state={state} />\n </div>\n <div className=\"min-h-64 flex-1 overflow-auto\" role=\"list\">\n {state.visibleFields.map((field) => (\n <div\n key={field.name}\n role=\"listitem\"\n className={`flex w-full items-center gap-3 border-b px-4 py-2.5 text-sm transition-colors ${\n activeField?.name === field.name ? \"bg-primary/8\" : \"hover:bg-muted/50\"\n }`}\n >\n <input\n type=\"checkbox\"\n checked={state.selectedNames.has(field.name)}\n aria-label={`Include ${field.name}`}\n onChange={(event) => state.setFieldSelection(field, event.target.checked)}\n />\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-3 text-left\"\n onClick={() => state.setActiveName(field.name)}\n >\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {field.name}\n </span>\n <span className=\"rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground\">\n {field.type || \"auto\"}\n </span>\n </button>\n </div>\n ))}\n {state.visibleFields.length === 0 ? (\n <p className=\"p-8 text-center text-sm text-muted-foreground\">\n No fields match these filters.\n </p>\n ) : null}\n </div>\n </section>\n\n <ProfileFieldEditor\n field={activeField}\n selected={Boolean(activeField && state.selectedNames.has(activeField.name))}\n onSelectedChange={(selected) => {\n if (activeField) state.setFieldSelection(activeField, selected);\n }}\n onChange={state.updateActiveField}\n canMoveUp={state.canMoveUp}\n canMoveDown={state.canMoveDown}\n onMoveUp={() => state.moveActive(-1)}\n onMoveDown={() => state.moveActive(1)}\n onRemove={state.removeActive}\n />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}