@flanksource/clicky-ui 0.3.17 → 0.3.18

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 (822) hide show
  1. package/dist/ai.cjs +12 -6
  2. package/dist/ai.cjs.map +1 -1
  3. package/dist/ai.js +10 -4
  4. package/dist/ai.js.map +1 -1
  5. package/dist/chat.cjs +36 -0
  6. package/dist/chat.cjs.map +1 -1
  7. package/dist/chat.js +37 -1
  8. package/dist/chat.js.map +1 -1
  9. package/dist/components/Combobox.cjs +122 -153
  10. package/dist/components/Combobox.cjs.map +1 -1
  11. package/dist/components/Combobox.d.ts.map +1 -1
  12. package/dist/components/Combobox.js +124 -155
  13. package/dist/components/Combobox.js.map +1 -1
  14. package/dist/components/ComboboxControl.cjs +145 -0
  15. package/dist/components/ComboboxControl.cjs.map +1 -0
  16. package/dist/components/ComboboxControl.d.ts +37 -0
  17. package/dist/components/ComboboxControl.d.ts.map +1 -0
  18. package/dist/components/ComboboxControl.js +145 -0
  19. package/dist/components/ComboboxControl.js.map +1 -0
  20. package/dist/components/ComboboxMenu.cjs +31 -14
  21. package/dist/components/ComboboxMenu.cjs.map +1 -1
  22. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  23. package/dist/components/ComboboxMenu.js +31 -14
  24. package/dist/components/ComboboxMenu.js.map +1 -1
  25. package/dist/components/ComboboxTags.cjs +40 -0
  26. package/dist/components/ComboboxTags.cjs.map +1 -0
  27. package/dist/components/ComboboxTags.d.ts +8 -0
  28. package/dist/components/ComboboxTags.d.ts.map +1 -0
  29. package/dist/components/ComboboxTags.js +40 -0
  30. package/dist/components/ComboboxTags.js.map +1 -0
  31. package/dist/components/ErrorWrapper.cjs +168 -0
  32. package/dist/components/ErrorWrapper.cjs.map +1 -0
  33. package/dist/components/ErrorWrapper.d.ts +19 -0
  34. package/dist/components/ErrorWrapper.d.ts.map +1 -0
  35. package/dist/components/ErrorWrapper.js +168 -0
  36. package/dist/components/ErrorWrapper.js.map +1 -0
  37. package/dist/components/FilterBar.cjs +64 -2
  38. package/dist/components/FilterBar.cjs.map +1 -1
  39. package/dist/components/FilterBar.d.ts +18 -1
  40. package/dist/components/FilterBar.d.ts.map +1 -1
  41. package/dist/components/FilterBar.js +64 -2
  42. package/dist/components/FilterBar.js.map +1 -1
  43. package/dist/components/JSONPathField.cjs +91 -0
  44. package/dist/components/JSONPathField.cjs.map +1 -0
  45. package/dist/components/JSONPathField.d.ts +19 -0
  46. package/dist/components/JSONPathField.d.ts.map +1 -0
  47. package/dist/components/JSONPathField.js +91 -0
  48. package/dist/components/JSONPathField.js.map +1 -0
  49. package/dist/components/JsonSchemaForm.cjs +8 -4
  50. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  51. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  52. package/dist/components/JsonSchemaForm.js +8 -4
  53. package/dist/components/JsonSchemaForm.js.map +1 -1
  54. package/dist/components/TreePickerField.cjs +22 -4
  55. package/dist/components/TreePickerField.cjs.map +1 -1
  56. package/dist/components/TreePickerField.d.ts +22 -2
  57. package/dist/components/TreePickerField.d.ts.map +1 -1
  58. package/dist/components/TreePickerField.js +22 -4
  59. package/dist/components/TreePickerField.js.map +1 -1
  60. package/dist/components/TriStateToggle.cjs +53 -0
  61. package/dist/components/TriStateToggle.cjs.map +1 -0
  62. package/dist/components/TriStateToggle.d.ts +27 -0
  63. package/dist/components/TriStateToggle.d.ts.map +1 -0
  64. package/dist/components/TriStateToggle.js +53 -0
  65. package/dist/components/TriStateToggle.js.map +1 -0
  66. package/dist/components/combobox-types.d.ts +16 -1
  67. package/dist/components/combobox-types.d.ts.map +1 -1
  68. package/dist/components/combobox-utils.cjs +26 -0
  69. package/dist/components/combobox-utils.cjs.map +1 -1
  70. package/dist/components/combobox-utils.d.ts +10 -0
  71. package/dist/components/combobox-utils.d.ts.map +1 -1
  72. package/dist/components/combobox-utils.js +26 -0
  73. package/dist/components/combobox-utils.js.map +1 -1
  74. package/dist/components/filter-bar-utils.cjs +5 -0
  75. package/dist/components/filter-bar-utils.cjs.map +1 -1
  76. package/dist/components/filter-bar-utils.d.ts.map +1 -1
  77. package/dist/components/filter-bar-utils.js +5 -0
  78. package/dist/components/filter-bar-utils.js.map +1 -1
  79. package/dist/components/json-schema-form-accordion-array.cjs +290 -0
  80. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -0
  81. package/dist/components/json-schema-form-accordion-array.d.ts +7 -0
  82. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -0
  83. package/dist/components/json-schema-form-accordion-array.js +290 -0
  84. package/dist/components/json-schema-form-accordion-array.js.map +1 -0
  85. package/dist/components/json-schema-form-array.cjs +99 -110
  86. package/dist/components/json-schema-form-array.cjs.map +1 -1
  87. package/dist/components/json-schema-form-array.d.ts +1 -1
  88. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  89. package/dist/components/json-schema-form-array.js +98 -109
  90. package/dist/components/json-schema-form-array.js.map +1 -1
  91. package/dist/components/json-schema-form-error-display.cjs +4 -2
  92. package/dist/components/json-schema-form-error-display.cjs.map +1 -1
  93. package/dist/components/json-schema-form-error-display.d.ts +4 -2
  94. package/dist/components/json-schema-form-error-display.d.ts.map +1 -1
  95. package/dist/components/json-schema-form-error-display.js +4 -2
  96. package/dist/components/json-schema-form-error-display.js.map +1 -1
  97. package/dist/components/json-schema-form-extensions.cjs +10 -0
  98. package/dist/components/json-schema-form-extensions.cjs.map +1 -0
  99. package/dist/components/json-schema-form-extensions.d.ts +8 -0
  100. package/dist/components/json-schema-form-extensions.d.ts.map +1 -0
  101. package/dist/components/json-schema-form-extensions.js +10 -0
  102. package/dist/components/json-schema-form-extensions.js.map +1 -0
  103. package/dist/components/json-schema-form-fields.cjs +25 -101
  104. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  105. package/dist/components/json-schema-form-fields.d.ts +1 -32
  106. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-fields.js +28 -104
  108. package/dist/components/json-schema-form-fields.js.map +1 -1
  109. package/dist/components/json-schema-form-item-summary.cjs +131 -0
  110. package/dist/components/json-schema-form-item-summary.cjs.map +1 -0
  111. package/dist/components/json-schema-form-item-summary.d.ts +13 -0
  112. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -0
  113. package/dist/components/json-schema-form-item-summary.js +131 -0
  114. package/dist/components/json-schema-form-item-summary.js.map +1 -0
  115. package/dist/components/json-schema-form-layout.cjs +156 -0
  116. package/dist/components/json-schema-form-layout.cjs.map +1 -0
  117. package/dist/components/json-schema-form-layout.d.ts +43 -0
  118. package/dist/components/json-schema-form-layout.d.ts.map +1 -0
  119. package/dist/components/json-schema-form-layout.js +156 -0
  120. package/dist/components/json-schema-form-layout.js.map +1 -0
  121. package/dist/components/json-schema-form-lookup-tree.cjs +149 -0
  122. package/dist/components/json-schema-form-lookup-tree.cjs.map +1 -0
  123. package/dist/components/json-schema-form-lookup-tree.d.ts +22 -0
  124. package/dist/components/json-schema-form-lookup-tree.d.ts.map +1 -0
  125. package/dist/components/json-schema-form-lookup-tree.js +149 -0
  126. package/dist/components/json-schema-form-lookup-tree.js.map +1 -0
  127. package/dist/components/json-schema-form-object.cjs +11 -4
  128. package/dist/components/json-schema-form-object.cjs.map +1 -1
  129. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  130. package/dist/components/json-schema-form-object.js +11 -4
  131. package/dist/components/json-schema-form-object.js.map +1 -1
  132. package/dist/components/json-schema-form-render.cjs +51 -28
  133. package/dist/components/json-schema-form-render.cjs.map +1 -1
  134. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  135. package/dist/components/json-schema-form-render.js +51 -28
  136. package/dist/components/json-schema-form-render.js.map +1 -1
  137. package/dist/components/json-schema-form-resolve.cjs +62 -13
  138. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  139. package/dist/components/json-schema-form-resolve.d.ts +1 -0
  140. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  141. package/dist/components/json-schema-form-resolve.js +62 -13
  142. package/dist/components/json-schema-form-resolve.js.map +1 -1
  143. package/dist/components/json-schema-form-table-array.cjs +123 -0
  144. package/dist/components/json-schema-form-table-array.cjs.map +1 -0
  145. package/dist/components/json-schema-form-table-array.d.ts +7 -0
  146. package/dist/components/json-schema-form-table-array.d.ts.map +1 -0
  147. package/dist/components/json-schema-form-table-array.js +123 -0
  148. package/dist/components/json-schema-form-table-array.js.map +1 -0
  149. package/dist/components/json-schema-form-tone.cjs +34 -0
  150. package/dist/components/json-schema-form-tone.cjs.map +1 -0
  151. package/dist/components/json-schema-form-tone.d.ts +8 -0
  152. package/dist/components/json-schema-form-tone.d.ts.map +1 -0
  153. package/dist/components/json-schema-form-tone.js +34 -0
  154. package/dist/components/json-schema-form-tone.js.map +1 -0
  155. package/dist/components/json-schema-form-types.d.ts +79 -10
  156. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  157. package/dist/components/json-schema-form-utils.cjs +47 -4
  158. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  159. package/dist/components/json-schema-form-utils.d.ts +19 -4
  160. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  161. package/dist/components/json-schema-form-utils.js +47 -4
  162. package/dist/components/json-schema-form-utils.js.map +1 -1
  163. package/dist/components/tri-state.cjs +8 -0
  164. package/dist/components/tri-state.cjs.map +1 -0
  165. package/dist/components/tri-state.d.ts +5 -0
  166. package/dist/components/tri-state.d.ts.map +1 -0
  167. package/dist/components/tri-state.js +8 -0
  168. package/dist/components/tri-state.js.map +1 -0
  169. package/dist/components/useComboboxLayout.cjs +59 -0
  170. package/dist/components/useComboboxLayout.cjs.map +1 -0
  171. package/dist/components/useComboboxLayout.d.ts +5 -0
  172. package/dist/components/useComboboxLayout.d.ts.map +1 -0
  173. package/dist/components/useComboboxLayout.js +59 -0
  174. package/dist/components/useComboboxLayout.js.map +1 -0
  175. package/dist/components.cjs +21 -0
  176. package/dist/components.cjs.map +1 -1
  177. package/dist/components.d.ts +14 -4
  178. package/dist/components.d.ts.map +1 -1
  179. package/dist/components.js +22 -1
  180. package/dist/components.js.map +1 -1
  181. package/dist/data/Clicky.cjs +51 -2
  182. package/dist/data/Clicky.cjs.map +1 -1
  183. package/dist/data/Clicky.d.ts +10 -1
  184. package/dist/data/Clicky.d.ts.map +1 -1
  185. package/dist/data/Clicky.js +51 -2
  186. package/dist/data/Clicky.js.map +1 -1
  187. package/dist/data/DataTable.cjs +185 -53
  188. package/dist/data/DataTable.cjs.map +1 -1
  189. package/dist/data/DataTable.d.ts +63 -3
  190. package/dist/data/DataTable.d.ts.map +1 -1
  191. package/dist/data/DataTable.js +185 -53
  192. package/dist/data/DataTable.js.map +1 -1
  193. package/dist/data/LogsTable.cjs +10 -1
  194. package/dist/data/LogsTable.cjs.map +1 -1
  195. package/dist/data/LogsTable.d.ts +3 -1
  196. package/dist/data/LogsTable.d.ts.map +1 -1
  197. package/dist/data/LogsTable.js +10 -1
  198. package/dist/data/LogsTable.js.map +1 -1
  199. package/dist/data/TaskManager.cjs +99 -14
  200. package/dist/data/TaskManager.cjs.map +1 -1
  201. package/dist/data/TaskManager.d.ts.map +1 -1
  202. package/dist/data/TaskManager.js +100 -15
  203. package/dist/data/TaskManager.js.map +1 -1
  204. package/dist/data/TaskProgress.cjs +50 -11
  205. package/dist/data/TaskProgress.cjs.map +1 -1
  206. package/dist/data/TaskProgress.d.ts +2 -1
  207. package/dist/data/TaskProgress.d.ts.map +1 -1
  208. package/dist/data/TaskProgress.js +50 -11
  209. package/dist/data/TaskProgress.js.map +1 -1
  210. package/dist/data/ai/AdvancedChatConfig.cjs +289 -0
  211. package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -0
  212. package/dist/data/ai/AdvancedChatConfig.d.ts +21 -0
  213. package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -0
  214. package/dist/data/ai/AdvancedChatConfig.js +289 -0
  215. package/dist/data/ai/AdvancedChatConfig.js.map +1 -0
  216. package/dist/data/ai/AdvancedCostsPanel.cjs +120 -0
  217. package/dist/data/ai/AdvancedCostsPanel.cjs.map +1 -0
  218. package/dist/data/ai/AdvancedCostsPanel.d.ts +16 -0
  219. package/dist/data/ai/AdvancedCostsPanel.d.ts.map +1 -0
  220. package/dist/data/ai/AdvancedCostsPanel.js +120 -0
  221. package/dist/data/ai/AdvancedCostsPanel.js.map +1 -0
  222. package/dist/data/ai/ChatWindow.catalogs.cjs +74 -0
  223. package/dist/data/ai/ChatWindow.catalogs.cjs.map +1 -0
  224. package/dist/data/ai/ChatWindow.catalogs.d.ts +16 -0
  225. package/dist/data/ai/ChatWindow.catalogs.d.ts.map +1 -0
  226. package/dist/data/ai/ChatWindow.catalogs.js +74 -0
  227. package/dist/data/ai/ChatWindow.catalogs.js.map +1 -0
  228. package/dist/data/ai/ChatWindow.cjs +78 -100
  229. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  230. package/dist/data/ai/ChatWindow.d.ts +1 -1
  231. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  232. package/dist/data/ai/ChatWindow.js +80 -102
  233. package/dist/data/ai/ChatWindow.js.map +1 -1
  234. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
  235. package/dist/data/ai/ChatWindow.preferences.d.ts +2 -4
  236. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
  237. package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
  238. package/dist/data/ai/ChatWindow.runtime.cjs +120 -0
  239. package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -0
  240. package/dist/data/ai/ChatWindow.runtime.d.ts +20 -0
  241. package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -0
  242. package/dist/data/ai/ChatWindow.runtime.js +120 -0
  243. package/dist/data/ai/ChatWindow.runtime.js.map +1 -0
  244. package/dist/data/ai/ChatWindow.thread.cjs +1 -1
  245. package/dist/data/ai/ChatWindow.thread.cjs.map +1 -1
  246. package/dist/data/ai/ChatWindow.thread.js +1 -1
  247. package/dist/data/ai/ChatWindow.thread.js.map +1 -1
  248. package/dist/data/ai/ChatWindow.tool-catalog.cjs +20 -0
  249. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
  250. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +17 -1
  251. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
  252. package/dist/data/ai/ChatWindow.tool-catalog.js +20 -0
  253. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
  254. package/dist/data/ai/ChatWindow.types.d.ts +13 -5
  255. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
  256. package/dist/data/ai/ChatWindowManager.cjs +3 -1
  257. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  258. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  259. package/dist/data/ai/ChatWindowManager.js +3 -1
  260. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  261. package/dist/data/ai/PromptPicker/PromptPicker.cjs +1 -1
  262. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  263. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +1 -1
  264. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
  265. package/dist/data/ai/PromptPicker/PromptPicker.js +1 -1
  266. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  267. package/dist/data/ai/PromptRunEditor/index.cjs +2 -2
  268. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  269. package/dist/data/ai/PromptRunEditor/index.d.ts +1 -1
  270. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  271. package/dist/data/ai/PromptRunEditor/index.js +2 -2
  272. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  273. package/dist/data/ai/RuntimeModePicker.cjs +1 -1
  274. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
  275. package/dist/data/ai/RuntimeModePicker.d.ts +1 -1
  276. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
  277. package/dist/data/ai/RuntimeModePicker.js +1 -1
  278. package/dist/data/ai/RuntimeModePicker.js.map +1 -1
  279. package/dist/data/ai/SessionInspector.files.cjs +26 -43
  280. package/dist/data/ai/SessionInspector.files.cjs.map +1 -1
  281. package/dist/data/ai/SessionInspector.files.d.ts.map +1 -1
  282. package/dist/data/ai/SessionInspector.files.js +26 -43
  283. package/dist/data/ai/SessionInspector.files.js.map +1 -1
  284. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  285. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  286. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  287. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  288. package/dist/data/ai/SessionInspector.model.cjs +1 -1
  289. package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
  290. package/dist/data/ai/SessionInspector.model.js +1 -1
  291. package/dist/data/ai/SessionInspector.model.js.map +1 -1
  292. package/dist/data/ai/SessionViewer.rows.cjs +4 -16
  293. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  294. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  295. package/dist/data/ai/SessionViewer.rows.js +4 -16
  296. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  297. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +12 -3
  298. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  299. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +1 -1
  300. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  301. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +12 -3
  302. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  303. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  304. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +1 -1
  305. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  306. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  307. package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
  308. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  309. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +2 -2
  310. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  311. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  312. package/dist/data/ai/ThreadPicker.cjs +65 -3
  313. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  314. package/dist/data/ai/ThreadPicker.d.ts +11 -5
  315. package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
  316. package/dist/data/ai/ThreadPicker.js +65 -3
  317. package/dist/data/ai/ThreadPicker.js.map +1 -1
  318. package/dist/data/ai/ToolPreferences.cjs +65 -685
  319. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  320. package/dist/data/ai/ToolPreferences.d.ts +15 -17
  321. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  322. package/dist/data/ai/ToolPreferences.js +64 -683
  323. package/dist/data/ai/ToolPreferences.js.map +1 -1
  324. package/dist/data/ai/ToolPreferences.model.cjs +148 -0
  325. package/dist/data/ai/ToolPreferences.model.cjs.map +1 -0
  326. package/dist/data/ai/ToolPreferences.model.d.ts +31 -0
  327. package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -0
  328. package/dist/data/ai/ToolPreferences.model.js +148 -0
  329. package/dist/data/ai/ToolPreferences.model.js.map +1 -0
  330. package/dist/data/ai/ToolPreferencesList.cjs +270 -0
  331. package/dist/data/ai/ToolPreferencesList.cjs.map +1 -0
  332. package/dist/data/ai/ToolPreferencesList.d.ts +18 -0
  333. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -0
  334. package/dist/data/ai/ToolPreferencesList.js +270 -0
  335. package/dist/data/ai/ToolPreferencesList.js.map +1 -0
  336. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  337. package/dist/data/ai/agent-action-icons.js.map +1 -1
  338. package/dist/data/ai/chat-window-context.cjs +4 -1
  339. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  340. package/dist/data/ai/chat-window-context.d.ts +7 -0
  341. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  342. package/dist/data/ai/chat-window-context.js +4 -1
  343. package/dist/data/ai/chat-window-context.js.map +1 -1
  344. package/dist/data/ai/index.d.ts +6 -3
  345. package/dist/data/ai/index.d.ts.map +1 -1
  346. package/dist/data/ai/session-tones.cjs +67 -0
  347. package/dist/data/ai/session-tones.cjs.map +1 -0
  348. package/dist/data/ai/session-tones.d.ts +34 -0
  349. package/dist/data/ai/session-tones.d.ts.map +1 -0
  350. package/dist/data/ai/session-tones.js +67 -0
  351. package/dist/data/ai/session-tones.js.map +1 -0
  352. package/dist/data/ai/thread-costs.cjs +39 -0
  353. package/dist/data/ai/thread-costs.cjs.map +1 -0
  354. package/dist/data/ai/thread-costs.d.ts +62 -0
  355. package/dist/data/ai/thread-costs.d.ts.map +1 -0
  356. package/dist/data/ai/thread-costs.js +39 -0
  357. package/dist/data/ai/thread-costs.js.map +1 -0
  358. package/dist/data/cells/CellFilterActions.cjs +68 -0
  359. package/dist/data/cells/CellFilterActions.cjs.map +1 -0
  360. package/dist/data/cells/CellFilterActions.d.ts +15 -0
  361. package/dist/data/cells/CellFilterActions.d.ts.map +1 -0
  362. package/dist/data/cells/CellFilterActions.js +68 -0
  363. package/dist/data/cells/CellFilterActions.js.map +1 -0
  364. package/dist/data/chat/Chat.cjs +156 -113
  365. package/dist/data/chat/Chat.cjs.map +1 -1
  366. package/dist/data/chat/Chat.d.ts +24 -7
  367. package/dist/data/chat/Chat.d.ts.map +1 -1
  368. package/dist/data/chat/Chat.fixtures.cjs +48 -3
  369. package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
  370. package/dist/data/chat/Chat.fixtures.d.ts +1 -1
  371. package/dist/data/chat/Chat.fixtures.d.ts.map +1 -1
  372. package/dist/data/chat/Chat.fixtures.js +48 -3
  373. package/dist/data/chat/Chat.fixtures.js.map +1 -1
  374. package/dist/data/chat/Chat.js +160 -117
  375. package/dist/data/chat/Chat.js.map +1 -1
  376. package/dist/data/chat/Chat.runtime.cjs +63 -0
  377. package/dist/data/chat/Chat.runtime.cjs.map +1 -0
  378. package/dist/data/chat/Chat.runtime.d.ts +16 -0
  379. package/dist/data/chat/Chat.runtime.d.ts.map +1 -0
  380. package/dist/data/chat/Chat.runtime.js +63 -0
  381. package/dist/data/chat/Chat.runtime.js.map +1 -0
  382. package/dist/data/chat/ChatRuntimeToolbar.cjs +62 -0
  383. package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -0
  384. package/dist/data/chat/ChatRuntimeToolbar.d.ts +14 -0
  385. package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -0
  386. package/dist/data/chat/ChatRuntimeToolbar.js +62 -0
  387. package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -0
  388. package/dist/data/chat/ToolCall.cjs +86 -24
  389. package/dist/data/chat/ToolCall.cjs.map +1 -1
  390. package/dist/data/chat/ToolCall.d.ts +12 -5
  391. package/dist/data/chat/ToolCall.d.ts.map +1 -1
  392. package/dist/data/chat/ToolCall.js +86 -24
  393. package/dist/data/chat/ToolCall.js.map +1 -1
  394. package/dist/data/chat/approval.cjs +49 -6
  395. package/dist/data/chat/approval.cjs.map +1 -1
  396. package/dist/data/chat/approval.d.ts +11 -4
  397. package/dist/data/chat/approval.d.ts.map +1 -1
  398. package/dist/data/chat/approval.js +49 -6
  399. package/dist/data/chat/approval.js.map +1 -1
  400. package/dist/data/chat/index.d.ts +5 -3
  401. package/dist/data/chat/index.d.ts.map +1 -1
  402. package/dist/data/chat/tool-render/ToolArgs.cjs +50 -0
  403. package/dist/data/chat/tool-render/ToolArgs.cjs.map +1 -0
  404. package/dist/data/chat/tool-render/ToolArgs.d.ts +7 -0
  405. package/dist/data/chat/tool-render/ToolArgs.d.ts.map +1 -0
  406. package/dist/data/chat/tool-render/ToolArgs.js +50 -0
  407. package/dist/data/chat/tool-render/ToolArgs.js.map +1 -0
  408. package/dist/data/chat/tool-render/ToolParams.cjs +155 -0
  409. package/dist/data/chat/tool-render/ToolParams.cjs.map +1 -0
  410. package/dist/data/chat/tool-render/ToolParams.d.ts +20 -0
  411. package/dist/data/chat/tool-render/ToolParams.d.ts.map +1 -0
  412. package/dist/data/chat/tool-render/ToolParams.js +155 -0
  413. package/dist/data/chat/tool-render/ToolParams.js.map +1 -0
  414. package/dist/data/chat/tool-render/ToolValue.cjs +140 -0
  415. package/dist/data/chat/tool-render/ToolValue.cjs.map +1 -0
  416. package/dist/data/chat/tool-render/ToolValue.d.ts +16 -0
  417. package/dist/data/chat/tool-render/ToolValue.d.ts.map +1 -0
  418. package/dist/data/chat/tool-render/ToolValue.js +140 -0
  419. package/dist/data/chat/tool-render/ToolValue.js.map +1 -0
  420. package/dist/data/chat/tool-render/adapter.cjs +48 -0
  421. package/dist/data/chat/tool-render/adapter.cjs.map +1 -0
  422. package/dist/data/chat/tool-render/adapter.d.ts +57 -0
  423. package/dist/data/chat/tool-render/adapter.d.ts.map +1 -0
  424. package/dist/data/chat/tool-render/adapter.js +48 -0
  425. package/dist/data/chat/tool-render/adapter.js.map +1 -0
  426. package/dist/data/chat/tool-render/context.cjs +16 -0
  427. package/dist/data/chat/tool-render/context.cjs.map +1 -0
  428. package/dist/data/chat/tool-render/context.d.ts +6 -0
  429. package/dist/data/chat/tool-render/context.d.ts.map +1 -0
  430. package/dist/data/chat/tool-render/context.js +16 -0
  431. package/dist/data/chat/tool-render/context.js.map +1 -0
  432. package/dist/data/chat/tool-render/defaults.cjs +45 -0
  433. package/dist/data/chat/tool-render/defaults.cjs.map +1 -0
  434. package/dist/data/chat/tool-render/defaults.d.ts +11 -0
  435. package/dist/data/chat/tool-render/defaults.d.ts.map +1 -0
  436. package/dist/data/chat/tool-render/defaults.js +45 -0
  437. package/dist/data/chat/tool-render/defaults.js.map +1 -0
  438. package/dist/data/chat/tool-render/index.d.ts +13 -0
  439. package/dist/data/chat/tool-render/index.d.ts.map +1 -0
  440. package/dist/data/chat/tool-render/known-tool-views.cjs +208 -0
  441. package/dist/data/chat/tool-render/known-tool-views.cjs.map +1 -0
  442. package/dist/data/chat/tool-render/known-tool-views.d.ts +10 -0
  443. package/dist/data/chat/tool-render/known-tool-views.d.ts.map +1 -0
  444. package/dist/data/chat/tool-render/known-tool-views.js +208 -0
  445. package/dist/data/chat/tool-render/known-tool-views.js.map +1 -0
  446. package/dist/data/chat/tool-render/known-tools.cjs +58 -0
  447. package/dist/data/chat/tool-render/known-tools.cjs.map +1 -0
  448. package/dist/data/chat/tool-render/known-tools.d.ts +4 -0
  449. package/dist/data/chat/tool-render/known-tools.d.ts.map +1 -0
  450. package/dist/data/chat/tool-render/known-tools.js +58 -0
  451. package/dist/data/chat/tool-render/known-tools.js.map +1 -0
  452. package/dist/data/chat/tool-render/normalize.cjs +42 -0
  453. package/dist/data/chat/tool-render/normalize.cjs.map +1 -0
  454. package/dist/data/chat/tool-render/normalize.d.ts +13 -0
  455. package/dist/data/chat/tool-render/normalize.d.ts.map +1 -0
  456. package/dist/data/chat/tool-render/normalize.js +42 -0
  457. package/dist/data/chat/tool-render/normalize.js.map +1 -0
  458. package/dist/data/chat/tool-render/registry.cjs +14 -0
  459. package/dist/data/chat/tool-render/registry.cjs.map +1 -0
  460. package/dist/data/chat/tool-render/registry.d.ts +7 -0
  461. package/dist/data/chat/tool-render/registry.d.ts.map +1 -0
  462. package/dist/data/chat/tool-render/registry.js +14 -0
  463. package/dist/data/chat/tool-render/registry.js.map +1 -0
  464. package/dist/data/chat/tool-render/schema.cjs +57 -0
  465. package/dist/data/chat/tool-render/schema.cjs.map +1 -0
  466. package/dist/data/chat/tool-render/schema.d.ts +28 -0
  467. package/dist/data/chat/tool-render/schema.d.ts.map +1 -0
  468. package/dist/data/chat/tool-render/schema.js +57 -0
  469. package/dist/data/chat/tool-render/schema.js.map +1 -0
  470. package/dist/data/chat/tool-render/shape.cjs +94 -0
  471. package/dist/data/chat/tool-render/shape.cjs.map +1 -0
  472. package/dist/data/chat/tool-render/shape.d.ts +39 -0
  473. package/dist/data/chat/tool-render/shape.d.ts.map +1 -0
  474. package/dist/data/chat/tool-render/shape.js +94 -0
  475. package/dist/data/chat/tool-render/shape.js.map +1 -0
  476. package/dist/data/chat/tool-render/summary.cjs +34 -0
  477. package/dist/data/chat/tool-render/summary.cjs.map +1 -0
  478. package/dist/data/chat/tool-render/summary.d.ts +8 -0
  479. package/dist/data/chat/tool-render/summary.d.ts.map +1 -0
  480. package/dist/data/chat/tool-render/summary.js +34 -0
  481. package/dist/data/chat/tool-render/summary.js.map +1 -0
  482. package/dist/data/chat/types.cjs.map +1 -1
  483. package/dist/data/chat/types.d.ts +7 -0
  484. package/dist/data/chat/types.d.ts.map +1 -1
  485. package/dist/data/chat/types.js.map +1 -1
  486. package/dist/data/chat/usage-snapshot.cjs +17 -0
  487. package/dist/data/chat/usage-snapshot.cjs.map +1 -0
  488. package/dist/data/chat/usage-snapshot.d.ts +21 -0
  489. package/dist/data/chat/usage-snapshot.d.ts.map +1 -0
  490. package/dist/data/chat/usage-snapshot.js +17 -0
  491. package/dist/data/chat/usage-snapshot.js.map +1 -0
  492. package/dist/data/data-table-filter-values.cjs +83 -0
  493. package/dist/data/data-table-filter-values.cjs.map +1 -0
  494. package/dist/data/data-table-filter-values.d.ts +18 -0
  495. package/dist/data/data-table-filter-values.d.ts.map +1 -0
  496. package/dist/data/data-table-filter-values.js +83 -0
  497. package/dist/data/data-table-filter-values.js.map +1 -0
  498. package/dist/data/data-table-server-filters.cjs +171 -0
  499. package/dist/data/data-table-server-filters.cjs.map +1 -0
  500. package/dist/data/data-table-server-filters.d.ts +128 -0
  501. package/dist/data/data-table-server-filters.d.ts.map +1 -0
  502. package/dist/data/data-table-server-filters.js +171 -0
  503. package/dist/data/data-table-server-filters.js.map +1 -0
  504. package/dist/data/query-browser/QueryBrowser.cjs +96 -19
  505. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  506. package/dist/data/query-browser/QueryBrowser.d.ts +37 -6
  507. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  508. package/dist/data/query-browser/QueryBrowser.js +96 -19
  509. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  510. package/dist/data/query-browser/index.d.ts +1 -1
  511. package/dist/data/query-browser/index.d.ts.map +1 -1
  512. package/dist/data/runtime/ProviderStatusPanel.cjs +187 -0
  513. package/dist/data/runtime/ProviderStatusPanel.cjs.map +1 -0
  514. package/dist/data/runtime/ProviderStatusPanel.d.ts +10 -0
  515. package/dist/data/runtime/ProviderStatusPanel.d.ts.map +1 -0
  516. package/dist/data/runtime/ProviderStatusPanel.js +187 -0
  517. package/dist/data/runtime/ProviderStatusPanel.js.map +1 -0
  518. package/dist/data/runtime/RuntimeBar.cjs +147 -0
  519. package/dist/data/runtime/RuntimeBar.cjs.map +1 -0
  520. package/dist/data/{ai → runtime}/RuntimeBar.d.ts +8 -6
  521. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -0
  522. package/dist/data/runtime/RuntimeBar.js +147 -0
  523. package/dist/data/runtime/RuntimeBar.js.map +1 -0
  524. package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -0
  525. package/dist/data/{ai → runtime}/RuntimeBar.model.d.ts +2 -2
  526. package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -0
  527. package/dist/data/runtime/RuntimeBar.model.js.map +1 -0
  528. package/dist/data/{ai → runtime}/RuntimeBarCombo.cjs +25 -30
  529. package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -0
  530. package/dist/data/{ai → runtime}/RuntimeBarCombo.d.ts +4 -3
  531. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -0
  532. package/dist/data/{ai → runtime}/RuntimeBarCombo.js +25 -30
  533. package/dist/data/runtime/RuntimeBarCombo.js.map +1 -0
  534. package/dist/data/{ai/RuntimeBar.cjs → runtime/RuntimeBarSegments.cjs} +54 -120
  535. package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -0
  536. package/dist/data/runtime/RuntimeBarSegments.d.ts +25 -0
  537. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -0
  538. package/dist/data/{ai/RuntimeBar.js → runtime/RuntimeBarSegments.js} +58 -124
  539. package/dist/data/runtime/RuntimeBarSegments.js.map +1 -0
  540. package/dist/data/runtime/availability.cjs +11 -0
  541. package/dist/data/runtime/availability.cjs.map +1 -0
  542. package/dist/data/runtime/availability.d.ts +6 -0
  543. package/dist/data/runtime/availability.d.ts.map +1 -0
  544. package/dist/data/runtime/availability.js +11 -0
  545. package/dist/data/runtime/availability.js.map +1 -0
  546. package/dist/data/runtime/model-capabilities.cjs.map +1 -0
  547. package/dist/data/runtime/model-capabilities.d.ts.map +1 -0
  548. package/dist/data/runtime/model-capabilities.js.map +1 -0
  549. package/dist/data/runtime/provider-status.cjs +106 -0
  550. package/dist/data/runtime/provider-status.cjs.map +1 -0
  551. package/dist/data/runtime/provider-status.d.ts +24 -0
  552. package/dist/data/runtime/provider-status.d.ts.map +1 -0
  553. package/dist/data/runtime/provider-status.js +106 -0
  554. package/dist/data/runtime/provider-status.js.map +1 -0
  555. package/dist/data/{ai → runtime}/runtime-mode.cjs +119 -27
  556. package/dist/data/runtime/runtime-mode.cjs.map +1 -0
  557. package/dist/data/{ai → runtime}/runtime-mode.d.ts +7 -1
  558. package/dist/data/runtime/runtime-mode.d.ts.map +1 -0
  559. package/dist/data/{ai → runtime}/runtime-mode.js +120 -28
  560. package/dist/data/runtime/runtime-mode.js.map +1 -0
  561. package/dist/data/task-query-keys.cjs +26 -0
  562. package/dist/data/task-query-keys.cjs.map +1 -0
  563. package/dist/data/task-query-keys.d.ts +27 -0
  564. package/dist/data/task-query-keys.d.ts.map +1 -0
  565. package/dist/data/task-query-keys.js +26 -0
  566. package/dist/data/task-query-keys.js.map +1 -0
  567. package/dist/data/version-info.cjs +3 -3
  568. package/dist/data/version-info.js +3 -3
  569. package/dist/data.cjs +16 -0
  570. package/dist/data.cjs.map +1 -1
  571. package/dist/data.d.ts +6 -2
  572. package/dist/data.d.ts.map +1 -1
  573. package/dist/data.js +16 -0
  574. package/dist/data.js.map +1 -1
  575. package/dist/hooks/use-hotkey.cjs +6 -1
  576. package/dist/hooks/use-hotkey.cjs.map +1 -1
  577. package/dist/hooks/use-hotkey.d.ts.map +1 -1
  578. package/dist/hooks/use-hotkey.js +6 -1
  579. package/dist/hooks/use-hotkey.js.map +1 -1
  580. package/dist/hooks/use-task-run.cjs +7 -4
  581. package/dist/hooks/use-task-run.cjs.map +1 -1
  582. package/dist/hooks/use-task-run.d.ts +12 -0
  583. package/dist/hooks/use-task-run.d.ts.map +1 -1
  584. package/dist/hooks/use-task-run.js +7 -4
  585. package/dist/hooks/use-task-run.js.map +1 -1
  586. package/dist/icons/index.d.ts +1 -0
  587. package/dist/icons/index.d.ts.map +1 -1
  588. package/dist/icons/registry.cjs +692 -0
  589. package/dist/icons/registry.cjs.map +1 -0
  590. package/dist/icons/registry.d.ts +21 -0
  591. package/dist/icons/registry.d.ts.map +1 -0
  592. package/dist/icons/registry.js +692 -0
  593. package/dist/icons/registry.js.map +1 -0
  594. package/dist/icons.cjs +3 -0
  595. package/dist/icons.cjs.map +1 -1
  596. package/dist/icons.js +4 -1
  597. package/dist/icons.js.map +1 -1
  598. package/dist/index.cjs +47 -0
  599. package/dist/index.cjs.map +1 -1
  600. package/dist/index.js +49 -2
  601. package/dist/index.js.map +1 -1
  602. package/dist/layout/AppShell.cjs +92 -56
  603. package/dist/layout/AppShell.cjs.map +1 -1
  604. package/dist/layout/AppShell.d.ts +49 -1
  605. package/dist/layout/AppShell.d.ts.map +1 -1
  606. package/dist/layout/AppShell.js +92 -56
  607. package/dist/layout/AppShell.js.map +1 -1
  608. package/dist/layout/AppShell.nav.cjs +144 -19
  609. package/dist/layout/AppShell.nav.cjs.map +1 -1
  610. package/dist/layout/AppShell.nav.d.ts +6 -1
  611. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  612. package/dist/layout/AppShell.nav.js +144 -19
  613. package/dist/layout/AppShell.nav.js.map +1 -1
  614. package/dist/layout/SplitPane.cjs +23 -7
  615. package/dist/layout/SplitPane.cjs.map +1 -1
  616. package/dist/layout/SplitPane.d.ts +3 -1
  617. package/dist/layout/SplitPane.d.ts.map +1 -1
  618. package/dist/layout/SplitPane.js +23 -7
  619. package/dist/layout/SplitPane.js.map +1 -1
  620. package/dist/lib/format.cjs +86 -4
  621. package/dist/lib/format.cjs.map +1 -1
  622. package/dist/lib/format.d.ts +69 -0
  623. package/dist/lib/format.d.ts.map +1 -1
  624. package/dist/lib/format.js +86 -4
  625. package/dist/lib/format.js.map +1 -1
  626. package/dist/lib/path-tree.cjs +69 -0
  627. package/dist/lib/path-tree.cjs.map +1 -0
  628. package/dist/lib/path-tree.d.ts +54 -0
  629. package/dist/lib/path-tree.d.ts.map +1 -0
  630. package/dist/lib/path-tree.js +69 -0
  631. package/dist/lib/path-tree.js.map +1 -0
  632. package/dist/monaco.d.ts +1 -0
  633. package/dist/monaco.d.ts.map +1 -1
  634. package/dist/overlay/DropdownMenuSubmenu.cjs +13 -7
  635. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  636. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  637. package/dist/overlay/DropdownMenuSubmenu.js +13 -7
  638. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  639. package/dist/overlay/Tour.cjs +173 -0
  640. package/dist/overlay/Tour.cjs.map +1 -0
  641. package/dist/overlay/Tour.d.ts +61 -0
  642. package/dist/overlay/Tour.d.ts.map +1 -0
  643. package/dist/overlay/Tour.js +173 -0
  644. package/dist/overlay/Tour.js.map +1 -0
  645. package/dist/overlay/TourCard.cjs +108 -0
  646. package/dist/overlay/TourCard.cjs.map +1 -0
  647. package/dist/overlay/TourCard.d.ts +23 -0
  648. package/dist/overlay/TourCard.d.ts.map +1 -0
  649. package/dist/overlay/TourCard.js +108 -0
  650. package/dist/overlay/TourCard.js.map +1 -0
  651. package/dist/overlay/TourProvider.cjs +160 -0
  652. package/dist/overlay/TourProvider.cjs.map +1 -0
  653. package/dist/overlay/TourProvider.d.ts +31 -0
  654. package/dist/overlay/TourProvider.d.ts.map +1 -0
  655. package/dist/overlay/TourProvider.js +160 -0
  656. package/dist/overlay/TourProvider.js.map +1 -0
  657. package/dist/overlay/TourSpotlight.cjs +47 -0
  658. package/dist/overlay/TourSpotlight.cjs.map +1 -0
  659. package/dist/overlay/TourSpotlight.d.ts +12 -0
  660. package/dist/overlay/TourSpotlight.d.ts.map +1 -0
  661. package/dist/overlay/TourSpotlight.js +47 -0
  662. package/dist/overlay/TourSpotlight.js.map +1 -0
  663. package/dist/overlay/modalStack.cjs +18 -4
  664. package/dist/overlay/modalStack.cjs.map +1 -1
  665. package/dist/overlay/modalStack.d.ts +10 -2
  666. package/dist/overlay/modalStack.d.ts.map +1 -1
  667. package/dist/overlay/modalStack.js +19 -5
  668. package/dist/overlay/modalStack.js.map +1 -1
  669. package/dist/overlay/tour-anchor.cjs +114 -0
  670. package/dist/overlay/tour-anchor.cjs.map +1 -0
  671. package/dist/overlay/tour-anchor.d.ts +30 -0
  672. package/dist/overlay/tour-anchor.d.ts.map +1 -0
  673. package/dist/overlay/tour-anchor.js +114 -0
  674. package/dist/overlay/tour-anchor.js.map +1 -0
  675. package/dist/overlay/tour-context.cjs +12 -0
  676. package/dist/overlay/tour-context.cjs.map +1 -0
  677. package/dist/overlay/tour-context.d.ts +40 -0
  678. package/dist/overlay/tour-context.d.ts.map +1 -0
  679. package/dist/overlay/tour-context.js +12 -0
  680. package/dist/overlay/tour-context.js.map +1 -0
  681. package/dist/overlay/tour-geometry.cjs +65 -0
  682. package/dist/overlay/tour-geometry.cjs.map +1 -0
  683. package/dist/overlay/tour-geometry.d.ts +47 -0
  684. package/dist/overlay/tour-geometry.d.ts.map +1 -0
  685. package/dist/overlay/tour-geometry.js +65 -0
  686. package/dist/overlay/tour-geometry.js.map +1 -0
  687. package/dist/overlay/tour-model.cjs +79 -0
  688. package/dist/overlay/tour-model.cjs.map +1 -0
  689. package/dist/overlay/tour-model.d.ts +29 -0
  690. package/dist/overlay/tour-model.d.ts.map +1 -0
  691. package/dist/overlay/tour-model.js +79 -0
  692. package/dist/overlay/tour-model.js.map +1 -0
  693. package/dist/overlay/tour-progress.cjs +54 -0
  694. package/dist/overlay/tour-progress.cjs.map +1 -0
  695. package/dist/overlay/tour-progress.d.ts +40 -0
  696. package/dist/overlay/tour-progress.d.ts.map +1 -0
  697. package/dist/overlay/tour-progress.js +54 -0
  698. package/dist/overlay/tour-progress.js.map +1 -0
  699. package/dist/overlay/tour-types.d.ts +144 -0
  700. package/dist/overlay/tour-types.d.ts.map +1 -0
  701. package/dist/overlay/use-tour-anchor.cjs +43 -0
  702. package/dist/overlay/use-tour-anchor.cjs.map +1 -0
  703. package/dist/overlay/use-tour-anchor.d.ts +23 -0
  704. package/dist/overlay/use-tour-anchor.d.ts.map +1 -0
  705. package/dist/overlay/use-tour-anchor.js +43 -0
  706. package/dist/overlay/use-tour-anchor.js.map +1 -0
  707. package/dist/overlay/use-tour-rect.cjs +33 -0
  708. package/dist/overlay/use-tour-rect.cjs.map +1 -0
  709. package/dist/overlay/use-tour-rect.d.ts +12 -0
  710. package/dist/overlay/use-tour-rect.d.ts.map +1 -0
  711. package/dist/overlay/use-tour-rect.js +33 -0
  712. package/dist/overlay/use-tour-rect.js.map +1 -0
  713. package/dist/overlay/use-tour-step.cjs +66 -0
  714. package/dist/overlay/use-tour-step.cjs.map +1 -0
  715. package/dist/overlay/use-tour-step.d.ts +45 -0
  716. package/dist/overlay/use-tour-step.d.ts.map +1 -0
  717. package/dist/overlay/use-tour-step.js +66 -0
  718. package/dist/overlay/use-tour-step.js.map +1 -0
  719. package/dist/overlay/zIndex.cjs +8 -0
  720. package/dist/overlay/zIndex.cjs.map +1 -1
  721. package/dist/overlay/zIndex.d.ts +8 -0
  722. package/dist/overlay/zIndex.d.ts.map +1 -1
  723. package/dist/overlay/zIndex.js +8 -0
  724. package/dist/overlay/zIndex.js.map +1 -1
  725. package/dist/rpc/CommandOutput.cjs +8 -0
  726. package/dist/rpc/CommandOutput.cjs.map +1 -1
  727. package/dist/rpc/CommandOutput.d.ts +4 -1
  728. package/dist/rpc/CommandOutput.d.ts.map +1 -1
  729. package/dist/rpc/CommandOutput.js +8 -0
  730. package/dist/rpc/CommandOutput.js.map +1 -1
  731. package/dist/rpc/EntityExplorerApp.cjs +10 -16
  732. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  733. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  734. package/dist/rpc/EntityExplorerApp.js +10 -16
  735. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  736. package/dist/rpc/OperationActionBar.cjs +1 -1
  737. package/dist/rpc/OperationActionBar.cjs.map +1 -1
  738. package/dist/rpc/OperationActionBar.js +1 -1
  739. package/dist/rpc/OperationActionBar.js.map +1 -1
  740. package/dist/rpc/OperationCatalog.cjs +83 -7
  741. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  742. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  743. package/dist/rpc/OperationCatalog.js +84 -8
  744. package/dist/rpc/OperationCatalog.js.map +1 -1
  745. package/dist/rpc/OperationResultView.cjs +2 -0
  746. package/dist/rpc/OperationResultView.cjs.map +1 -1
  747. package/dist/rpc/OperationResultView.d.ts +6 -0
  748. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  749. package/dist/rpc/OperationResultView.js +2 -0
  750. package/dist/rpc/OperationResultView.js.map +1 -1
  751. package/dist/rpc/SchemaActionForm.cjs +2 -21
  752. package/dist/rpc/SchemaActionForm.cjs.map +1 -1
  753. package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
  754. package/dist/rpc/SchemaActionForm.js +3 -22
  755. package/dist/rpc/SchemaActionForm.js.map +1 -1
  756. package/dist/rpc/apiClient.cjs +16 -2
  757. package/dist/rpc/apiClient.cjs.map +1 -1
  758. package/dist/rpc/apiClient.d.ts.map +1 -1
  759. package/dist/rpc/apiClient.js +16 -2
  760. package/dist/rpc/apiClient.js.map +1 -1
  761. package/dist/rpc/formMetadata.cjs +89 -49
  762. package/dist/rpc/formMetadata.cjs.map +1 -1
  763. package/dist/rpc/formMetadata.d.ts +14 -6
  764. package/dist/rpc/formMetadata.d.ts.map +1 -1
  765. package/dist/rpc/formMetadata.js +87 -47
  766. package/dist/rpc/formMetadata.js.map +1 -1
  767. package/dist/rpc/operationFilterSearch.cjs +23 -0
  768. package/dist/rpc/operationFilterSearch.cjs.map +1 -0
  769. package/dist/rpc/operationFilterSearch.d.ts +22 -0
  770. package/dist/rpc/operationFilterSearch.d.ts.map +1 -0
  771. package/dist/rpc/operationFilterSearch.js +23 -0
  772. package/dist/rpc/operationFilterSearch.js.map +1 -0
  773. package/dist/rpc/operationLookupFetcher.cjs +28 -0
  774. package/dist/rpc/operationLookupFetcher.cjs.map +1 -0
  775. package/dist/rpc/operationLookupFetcher.d.ts +17 -0
  776. package/dist/rpc/operationLookupFetcher.d.ts.map +1 -0
  777. package/dist/rpc/operationLookupFetcher.js +28 -0
  778. package/dist/rpc/operationLookupFetcher.js.map +1 -0
  779. package/dist/rpc/surfaceNav.cjs +77 -0
  780. package/dist/rpc/surfaceNav.cjs.map +1 -0
  781. package/dist/rpc/surfaceNav.d.ts +19 -0
  782. package/dist/rpc/surfaceNav.d.ts.map +1 -0
  783. package/dist/rpc/surfaceNav.js +77 -0
  784. package/dist/rpc/surfaceNav.js.map +1 -0
  785. package/dist/rpc/types.cjs.map +1 -1
  786. package/dist/rpc/types.d.ts +12 -1
  787. package/dist/rpc/types.d.ts.map +1 -1
  788. package/dist/rpc/types.js.map +1 -1
  789. package/dist/rpc.cjs +2 -0
  790. package/dist/rpc.cjs.map +1 -1
  791. package/dist/rpc.d.ts +1 -0
  792. package/dist/rpc.d.ts.map +1 -1
  793. package/dist/rpc.js +2 -0
  794. package/dist/rpc.js.map +1 -1
  795. package/dist/styles.css +1 -1
  796. package/dist/utils.cjs +8 -0
  797. package/dist/utils.cjs.map +1 -1
  798. package/dist/utils.d.ts +2 -1
  799. package/dist/utils.d.ts.map +1 -1
  800. package/dist/utils.js +10 -2
  801. package/dist/utils.js.map +1 -1
  802. package/package.json +1 -1
  803. package/dist/data/ai/RuntimeBar.cjs.map +0 -1
  804. package/dist/data/ai/RuntimeBar.d.ts.map +0 -1
  805. package/dist/data/ai/RuntimeBar.js.map +0 -1
  806. package/dist/data/ai/RuntimeBar.model.cjs.map +0 -1
  807. package/dist/data/ai/RuntimeBar.model.d.ts.map +0 -1
  808. package/dist/data/ai/RuntimeBar.model.js.map +0 -1
  809. package/dist/data/ai/RuntimeBarCombo.cjs.map +0 -1
  810. package/dist/data/ai/RuntimeBarCombo.d.ts.map +0 -1
  811. package/dist/data/ai/RuntimeBarCombo.js.map +0 -1
  812. package/dist/data/ai/model-capabilities.cjs.map +0 -1
  813. package/dist/data/ai/model-capabilities.d.ts.map +0 -1
  814. package/dist/data/ai/model-capabilities.js.map +0 -1
  815. package/dist/data/ai/runtime-mode.cjs.map +0 -1
  816. package/dist/data/ai/runtime-mode.d.ts.map +0 -1
  817. package/dist/data/ai/runtime-mode.js.map +0 -1
  818. /package/dist/data/{ai → runtime}/RuntimeBar.model.cjs +0 -0
  819. /package/dist/data/{ai → runtime}/RuntimeBar.model.js +0 -0
  820. /package/dist/data/{ai → runtime}/model-capabilities.cjs +0 -0
  821. /package/dist/data/{ai → runtime}/model-capabilities.d.ts +0 -0
  822. /package/dist/data/{ai → runtime}/model-capabilities.js +0 -0
@@ -0,0 +1,131 @@
1
+ import { normalizeTone } from "./json-schema-form-tone.js";
2
+ import { isPlainObject } from "./json-schema-form-utils.js";
3
+ const DEFAULT_TITLE_KEYS = ["title", "name", "label", "id", "key"];
4
+ const SUMMARY_SEPARATOR = " · ";
5
+ const VALUE_SEPARATOR = ", ";
6
+ function resolveItemSpec(arraySchema, itemSchema) {
7
+ const raw = isPlainObject(arraySchema["x-item"]) ? arraySchema["x-item"] : {};
8
+ const title = stringArray(raw.title);
9
+ const summary = summaryParts(raw.summary);
10
+ const glyph = typeof raw.glyph === "string" ? raw.glyph : autoGlyphKey(itemSchema);
11
+ return {
12
+ title: title.length > 0 ? title : DEFAULT_TITLE_KEYS,
13
+ ...typeof raw.fallback === "string" && raw.fallback ? { fallback: raw.fallback } : {},
14
+ ...summary.length > 0 ? { summary } : {},
15
+ ...glyph ? { glyph } : {},
16
+ ...typeof raw.badge === "string" && raw.badge ? { badge: raw.badge } : {},
17
+ ...typeof raw.flag === "string" && raw.flag ? { flag: raw.flag } : {},
18
+ noun: firstNonEmpty([raw.noun, itemSchema == null ? void 0 : itemSchema.title]) ?? "item",
19
+ nounPlural: firstNonEmpty([raw.nounPlural, arraySchema.title]) ?? "items",
20
+ ...typeof raw.empty === "string" && raw.empty ? { empty: raw.empty } : {}
21
+ };
22
+ }
23
+ function autoGlyphKey(itemSchema) {
24
+ for (const [key, prop] of Object.entries((itemSchema == null ? void 0 : itemSchema.properties) ?? {})) {
25
+ const icons = prop["x-enum-icons"];
26
+ if (Array.isArray(prop.enum) && icons && Object.keys(icons).length > 0) return key;
27
+ }
28
+ return void 0;
29
+ }
30
+ function itemSummaryFor({
31
+ item,
32
+ index,
33
+ spec,
34
+ itemSchema
35
+ }) {
36
+ var _a, _b, _c;
37
+ const obj = isPlainObject(item) ? item : {};
38
+ const props = (itemSchema == null ? void 0 : itemSchema.properties) ?? {};
39
+ const title = firstNonEmpty((spec.title ?? DEFAULT_TITLE_KEYS).map((key) => text(obj[key]))) ?? spec.fallback ?? `Item ${index + 1}`;
40
+ const summary = (spec.summary ?? []).map((part) => summaryPart(obj, part)).filter((s) => !!s).join(SUMMARY_SEPARATOR);
41
+ const glyphValue = spec.glyph ? text(obj[spec.glyph]) : "";
42
+ const glyphProp = spec.glyph ? props[spec.glyph] : void 0;
43
+ const badgeValue = spec.badge ? text(obj[spec.badge]) : "";
44
+ const badgeProp = spec.badge ? props[spec.badge] : void 0;
45
+ const badgeIcon = (_a = badgeProp == null ? void 0 : badgeProp["x-enum-icons"]) == null ? void 0 : _a[badgeValue];
46
+ return {
47
+ title,
48
+ ...summary ? { summary } : {},
49
+ ...spec.glyph ? {
50
+ glyph: {
51
+ ...((_b = glyphProp == null ? void 0 : glyphProp["x-enum-icons"]) == null ? void 0 : _b[glyphValue]) ? { icon: glyphProp["x-enum-icons"][glyphValue] } : {},
52
+ tone: normalizeTone((_c = glyphProp == null ? void 0 : glyphProp["x-enum-tones"]) == null ? void 0 : _c[glyphValue]),
53
+ ...glyphValue ? { label: enumLabel(glyphProp, glyphValue) } : {}
54
+ }
55
+ } : {},
56
+ ...badgeValue ? {
57
+ badge: {
58
+ ...badgeIcon ? { icon: badgeIcon } : {},
59
+ label: enumLabel(badgeProp, badgeValue)
60
+ }
61
+ } : {},
62
+ ...spec.flag && obj[spec.flag] === true ? { flagged: true } : {}
63
+ };
64
+ }
65
+ function addItemLabel(spec) {
66
+ return `Add ${spec.noun ?? "item"}`;
67
+ }
68
+ function itemCountLabel(spec, count) {
69
+ return count === 1 ? `1 ${spec.noun ?? "item"}` : `${count} ${spec.nounPlural ?? "items"}`;
70
+ }
71
+ function emptyItemsCopy(spec, arraySchema) {
72
+ if (spec.empty) return spec.empty;
73
+ const description = typeof arraySchema.description === "string" ? arraySchema.description.trim() : "";
74
+ return description || void 0;
75
+ }
76
+ function noItemsLabel(spec) {
77
+ return `No ${spec.nounPlural ?? "items"} yet`;
78
+ }
79
+ function summaryPart(obj, part) {
80
+ const { property, pattern } = typeof part === "string" ? { property: part, pattern: void 0 } : part;
81
+ const value = text(obj[property]);
82
+ if (!value) return void 0;
83
+ return pattern ? pattern.replace("{}", value) : value;
84
+ }
85
+ function enumLabel(prop, value) {
86
+ var _a;
87
+ const label = (_a = prop == null ? void 0 : prop["x-enum-labels"]) == null ? void 0 : _a[value];
88
+ return typeof label === "string" && label ? label : value;
89
+ }
90
+ function text(value) {
91
+ if (value === void 0 || value === null) return "";
92
+ if (Array.isArray(value)) return value.map(text).filter(Boolean).join(VALUE_SEPARATOR);
93
+ if (typeof value === "object") return "";
94
+ return String(value).trim();
95
+ }
96
+ function stringArray(value) {
97
+ if (typeof value === "string") return [value];
98
+ if (!Array.isArray(value)) return [];
99
+ return value.filter((v) => typeof v === "string" && !!v);
100
+ }
101
+ function summaryParts(value) {
102
+ if (!Array.isArray(value)) return [];
103
+ return value.flatMap((part) => {
104
+ if (typeof part === "string" && part) return [part];
105
+ if (isPlainObject(part) && typeof part.property === "string" && part.property) {
106
+ return [
107
+ {
108
+ property: part.property,
109
+ ...typeof part.pattern === "string" && part.pattern ? { pattern: part.pattern } : {}
110
+ }
111
+ ];
112
+ }
113
+ return [];
114
+ });
115
+ }
116
+ function firstNonEmpty(values) {
117
+ for (const value of values) {
118
+ const trimmed = typeof value === "string" ? value.trim() : "";
119
+ if (trimmed) return trimmed;
120
+ }
121
+ return void 0;
122
+ }
123
+ export {
124
+ addItemLabel,
125
+ emptyItemsCopy,
126
+ itemCountLabel,
127
+ itemSummaryFor,
128
+ noItemsLabel,
129
+ resolveItemSpec
130
+ };
131
+ //# sourceMappingURL=json-schema-form-item-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-item-summary.js","sources":["../../src/components/json-schema-form-item-summary.ts"],"sourcesContent":["import { normalizeTone } from \"./json-schema-form-tone\";\nimport { isPlainObject } from \"./json-schema-form-utils\";\nimport type {\n ArrayItemSpec,\n ArrayItemSummary,\n ArrayItemSummaryPart,\n JsonSchemaProperty,\n} from \"./json-schema-form-types\";\n\n// Property names worth trying for a row title when the schema does not say.\n// Ordered most-human-readable first.\nconst DEFAULT_TITLE_KEYS = [\"title\", \"name\", \"label\", \"id\", \"key\"];\n\nconst SUMMARY_SEPARATOR = \" · \";\nconst VALUE_SEPARATOR = \", \";\n\n// resolveItemSpec reads the array's `x-item` and fills in every default, so the\n// renderer never has to ask whether a key was supplied. With no `x-item` at all\n// the result reproduces today's behaviour exactly: an `Item <n>` title and an\n// \"Add item\" button.\nexport function resolveItemSpec(\n arraySchema: JsonSchemaProperty,\n itemSchema: JsonSchemaProperty | undefined,\n): ArrayItemSpec {\n const raw = isPlainObject(arraySchema[\"x-item\"])\n ? (arraySchema[\"x-item\"] as ArrayItemSpec)\n : {};\n const title = stringArray(raw.title);\n const summary = summaryParts(raw.summary);\n const glyph = typeof raw.glyph === \"string\" ? raw.glyph : autoGlyphKey(itemSchema);\n return {\n title: title.length > 0 ? title : DEFAULT_TITLE_KEYS,\n ...(typeof raw.fallback === \"string\" && raw.fallback ? { fallback: raw.fallback } : {}),\n ...(summary.length > 0 ? { summary } : {}),\n ...(glyph ? { glyph } : {}),\n ...(typeof raw.badge === \"string\" && raw.badge ? { badge: raw.badge } : {}),\n ...(typeof raw.flag === \"string\" && raw.flag ? { flag: raw.flag } : {}),\n noun: firstNonEmpty([raw.noun, itemSchema?.title]) ?? \"item\",\n nounPlural: firstNonEmpty([raw.nounPlural, arraySchema.title]) ?? \"items\",\n ...(typeof raw.empty === \"string\" && raw.empty ? { empty: raw.empty } : {}),\n };\n}\n\n// autoGlyphKey picks the item property that can colour a row without being told:\n// the first enum carrying per-value icons. Keeps a schema that already declares\n// x-enum-icons from having to repeat itself in x-item.\nfunction autoGlyphKey(itemSchema: JsonSchemaProperty | undefined): string | undefined {\n for (const [key, prop] of Object.entries(itemSchema?.properties ?? {})) {\n const icons = prop[\"x-enum-icons\"];\n if (Array.isArray(prop.enum) && icons && Object.keys(icons).length > 0) return key;\n }\n return undefined;\n}\n\n// itemSummaryFor derives one collapsed row from the item's raw VALUE — never\n// from its rendered fields. A consumer pre-extension may hide a property's\n// control entirely (returning null) and still have it appear in the summary.\nexport function itemSummaryFor({\n item,\n index,\n spec,\n itemSchema,\n}: {\n item: unknown;\n index: number;\n spec: ArrayItemSpec;\n itemSchema: JsonSchemaProperty | undefined;\n}): ArrayItemSummary {\n const obj = isPlainObject(item) ? item : {};\n const props = itemSchema?.properties ?? {};\n\n const title =\n firstNonEmpty((spec.title ?? DEFAULT_TITLE_KEYS).map((key) => text(obj[key]))) ??\n spec.fallback ??\n `Item ${index + 1}`;\n\n const summary = (spec.summary ?? [])\n .map((part) => summaryPart(obj, part))\n .filter((s): s is string => !!s)\n .join(SUMMARY_SEPARATOR);\n\n const glyphValue = spec.glyph ? text(obj[spec.glyph]) : \"\";\n const glyphProp = spec.glyph ? props[spec.glyph] : undefined;\n const badgeValue = spec.badge ? text(obj[spec.badge]) : \"\";\n const badgeProp = spec.badge ? props[spec.badge] : undefined;\n const badgeIcon = badgeProp?.[\"x-enum-icons\"]?.[badgeValue];\n\n return {\n title,\n ...(summary ? { summary } : {}),\n ...(spec.glyph\n ? {\n glyph: {\n ...(glyphProp?.[\"x-enum-icons\"]?.[glyphValue]\n ? { icon: glyphProp[\"x-enum-icons\"][glyphValue] }\n : {}),\n tone: normalizeTone(glyphProp?.[\"x-enum-tones\"]?.[glyphValue]),\n ...(glyphValue ? { label: enumLabel(glyphProp, glyphValue) } : {}),\n },\n }\n : {}),\n ...(badgeValue\n ? {\n badge: {\n ...(badgeIcon ? { icon: badgeIcon } : {}),\n label: enumLabel(badgeProp, badgeValue),\n },\n }\n : {}),\n ...(spec.flag && obj[spec.flag] === true ? { flagged: true } : {}),\n };\n}\n\n// The add row's button text — \"Add parameter\" when the schema names its noun,\n// and the historical \"Add item\" when it does not.\nexport function addItemLabel(spec: ArrayItemSpec): string {\n return `Add ${spec.noun ?? \"item\"}`;\n}\n\nexport function itemCountLabel(spec: ArrayItemSpec, count: number): string {\n return count === 1\n ? `1 ${spec.noun ?? \"item\"}`\n : `${count} ${spec.nounPlural ?? \"items\"}`;\n}\n\n// The zero-item explanation. Falls back to the array's own description, so a\n// schema that already documents the field gets the empty state for free.\nexport function emptyItemsCopy(\n spec: ArrayItemSpec,\n arraySchema: JsonSchemaProperty,\n): string | undefined {\n if (spec.empty) return spec.empty;\n const description = typeof arraySchema.description === \"string\" ? arraySchema.description.trim() : \"\";\n return description || undefined;\n}\n\nexport function noItemsLabel(spec: ArrayItemSpec): string {\n return `No ${spec.nounPlural ?? \"items\"} yet`;\n}\n\n// summaryPart renders one part, substituting the value into a single literal\n// `{}` in the pattern. A pattern without `{}` renders as-is (it is a literal),\n// and a missing value drops the part rather than leaving a dangling separator.\nfunction summaryPart(\n obj: Record<string, unknown>,\n part: string | ArrayItemSummaryPart,\n): string | undefined {\n const { property, pattern } = typeof part === \"string\" ? { property: part, pattern: undefined } : part;\n const value = text(obj[property]);\n if (!value) return undefined;\n return pattern ? pattern.replace(\"{}\", value) : value;\n}\n\n// enumLabel prefers the human label the schema declares for a code, falling back\n// to the code itself. Unlike the combobox option list this does NOT render\n// \"Label (code)\" — a chip has room for one of the two, and the label is the one\n// worth reading.\nfunction enumLabel(prop: JsonSchemaProperty | undefined, value: string): string {\n const label = prop?.[\"x-enum-labels\"]?.[value];\n return typeof label === \"string\" && label ? label : value;\n}\n\n// text flattens a value to its display string. Arrays join, so a list-valued\n// property still reads as one line.\nfunction text(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (Array.isArray(value)) return value.map(text).filter(Boolean).join(VALUE_SEPARATOR);\n if (typeof value === \"object\") return \"\";\n return String(value).trim();\n}\n\nfunction stringArray(value: unknown): string[] {\n if (typeof value === \"string\") return [value];\n if (!Array.isArray(value)) return [];\n return value.filter((v): v is string => typeof v === \"string\" && !!v);\n}\n\nfunction summaryParts(value: unknown): Array<string | ArrayItemSummaryPart> {\n if (!Array.isArray(value)) return [];\n return (value as unknown[]).flatMap((part): Array<string | ArrayItemSummaryPart> => {\n if (typeof part === \"string\" && part) return [part];\n if (isPlainObject(part) && typeof part.property === \"string\" && part.property) {\n return [\n {\n property: part.property,\n ...(typeof part.pattern === \"string\" && part.pattern ? { pattern: part.pattern } : {}),\n } satisfies ArrayItemSummaryPart,\n ];\n }\n return [];\n });\n}\n\nfunction firstNonEmpty(values: Array<string | undefined>): string | undefined {\n for (const value of values) {\n const trimmed = typeof value === \"string\" ? value.trim() : \"\";\n if (trimmed) return trimmed;\n }\n return undefined;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ require("react");
5
+ const utils = require("../lib/utils.cjs");
6
+ const Icon = require("../data/Icon.cjs");
7
+ const HoverCard = require("../overlay/HoverCard.cjs");
8
+ const jsonSchemaFormUtils = require("./json-schema-form-utils.cjs");
9
+ const jsonSchemaFormSize = require("./json-schema-form-size.cjs");
10
+ const UiQuestion = require("../icons/components/UiQuestion.cjs");
11
+ function FieldsGrid({
12
+ layout,
13
+ size,
14
+ columns,
15
+ columnMinWidth,
16
+ columnsMaxWidth,
17
+ className,
18
+ children
19
+ }) {
20
+ if (layout.mode === "inline") {
21
+ const labelMaxWidth = layout.labelMaxWidth ?? "40ch";
22
+ const valueMaxWidth = layout.valueMaxWidth ?? "600px";
23
+ return /* @__PURE__ */ jsxRuntime.jsx(
24
+ "div",
25
+ {
26
+ className: utils.cn("grid", jsonSchemaFormSize.inlineRowGapClass[size], className),
27
+ style: { gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})` },
28
+ children
29
+ }
30
+ );
31
+ }
32
+ if (columns === "auto") {
33
+ return /* @__PURE__ */ jsxRuntime.jsx(
34
+ "div",
35
+ {
36
+ className: utils.cn("grid gap-x-4", jsonSchemaFormSize.stackedRowGapClass[size], className),
37
+ style: {
38
+ gridTemplateColumns: `repeat(auto-fill, minmax(${columnMinWidth ?? jsonSchemaFormUtils.DEFAULT_COLUMN_MIN_WIDTH}, 1fr))`,
39
+ ...columnsMaxWidth ? { maxWidth: columnsMaxWidth } : {}
40
+ },
41
+ children
42
+ }
43
+ );
44
+ }
45
+ if (columns && columns > 1) {
46
+ return /* @__PURE__ */ jsxRuntime.jsx(
47
+ "div",
48
+ {
49
+ className: utils.cn("grid gap-x-3", jsonSchemaFormSize.stackedRowGapClass[size], className),
50
+ style: { gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` },
51
+ children
52
+ }
53
+ );
54
+ }
55
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("grid", jsonSchemaFormSize.stackedRowGapClass[size], className), children });
56
+ }
57
+ function FieldWrapper({
58
+ label,
59
+ value,
60
+ helper,
61
+ error,
62
+ layout,
63
+ size,
64
+ maxWidth
65
+ }) {
66
+ if (layout.mode === "inline") {
67
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 grid grid-cols-subgrid items-start gap-x-3 gap-y-0.5", children: [
68
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("flex min-w-0 items-center", jsonSchemaFormSize.controlMinHeightClass[size]), children: label }),
69
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: value }),
70
+ helper && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-start-2 text-xs text-muted-foreground", children: helper }),
71
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-start-2 text-xs text-destructive", children: error })
72
+ ] });
73
+ }
74
+ return /* @__PURE__ */ jsxRuntime.jsxs(
75
+ "div",
76
+ {
77
+ className: "flex w-full flex-col gap-1",
78
+ style: { maxWidth: maxWidth ?? layout.valueMaxWidth ?? "600px" },
79
+ children: [
80
+ label,
81
+ value,
82
+ helper && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: helper }),
83
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive", children: error })
84
+ ]
85
+ }
86
+ );
87
+ }
88
+ function FieldLabel({
89
+ field,
90
+ fieldId,
91
+ size,
92
+ helpDisplay
93
+ }) {
94
+ return /* @__PURE__ */ jsxRuntime.jsxs(
95
+ "label",
96
+ {
97
+ htmlFor: fieldId,
98
+ className: utils.cn("flex min-w-0 items-center gap-2 font-medium", jsonSchemaFormSize.labelSizeClass[size], field.labelClassName),
99
+ children: [
100
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.LabelIcon, { icon: field.labelIcon, className: "shrink-0 text-[15px] text-muted-foreground" }),
101
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", title: field.label !== field.key ? field.key : void 0, children: field.label }),
102
+ field.required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
103
+ field.badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: field.badge }),
104
+ helpDisplay === "hover" && field.helper && /* @__PURE__ */ jsxRuntime.jsx(HelpHint, { label: field.label, helper: field.helper })
105
+ ]
106
+ }
107
+ );
108
+ }
109
+ function HelpHint({ label, helper }) {
110
+ return /* @__PURE__ */ jsxRuntime.jsx(
111
+ HoverCard.HoverCard,
112
+ {
113
+ placement: "top",
114
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(
115
+ "button",
116
+ {
117
+ type: "button",
118
+ "aria-label": `About ${label}`,
119
+ className: "shrink-0 cursor-help text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
120
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiQuestion.UiQuestion, className: "text-sm" })
121
+ }
122
+ ),
123
+ cardClassName: "max-w-xs whitespace-normal text-left text-xs font-normal text-foreground",
124
+ children: helper
125
+ }
126
+ );
127
+ }
128
+ function ObjectSection({
129
+ label,
130
+ required,
131
+ size,
132
+ badge,
133
+ helper,
134
+ labelIcon,
135
+ helpDisplay,
136
+ children
137
+ }) {
138
+ const hoverHelp = helpDisplay === "hover" && !!helper;
139
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("col-span-full flex min-w-0 max-w-full flex-col", jsonSchemaFormSize.fieldInnerGapClass[size]), children: [
140
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold", jsonSchemaFormSize.labelSizeClass[size]), children: [
141
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.LabelIcon, { icon: labelIcon, className: "shrink-0 text-[15px] text-muted-foreground" }),
142
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: label }),
143
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
144
+ badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: badge }),
145
+ hoverHelp && helper && /* @__PURE__ */ jsxRuntime.jsx(HelpHint, { label, helper })
146
+ ] }),
147
+ helper && !hoverHelp && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "min-w-0 break-words text-xs text-muted-foreground", children: helper }),
148
+ children
149
+ ] });
150
+ }
151
+ exports.FieldLabel = FieldLabel;
152
+ exports.FieldWrapper = FieldWrapper;
153
+ exports.FieldsGrid = FieldsGrid;
154
+ exports.HelpHint = HelpHint;
155
+ exports.ObjectSection = ObjectSection;
156
+ //# sourceMappingURL=json-schema-form-layout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-layout.cjs","sources":["../../src/components/json-schema-form-layout.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, LabelIcon, type LabelIconSpec } from \"../data/Icon\";\nimport { UiQuestion } from \"../icons\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport type {\n FieldControl,\n FormLayout,\n GridColumns,\n HelpDisplay,\n} from \"./json-schema-form-types\";\nimport { DEFAULT_COLUMN_MIN_WIDTH } from \"./json-schema-form-utils\";\nimport {\n controlMinHeightClass,\n fieldInnerGapClass,\n inlineRowGapClass,\n labelSizeClass,\n stackedRowGapClass,\n type FormSize,\n} from \"./json-schema-form-size\";\n\n// FieldsGrid is the container every group of field rows renders into — the\n// top-level form and each nested object/map. In inline mode it owns the single\n// 2-column track definition: `fit-content(labelMaxWidth)` for the label column,\n// `minmax(0, valueMaxWidth)` for the value column. Every field row is a\n// `subgrid` that inherits these tracks, so all labels share one column width and\n// every value lines up — a real form grid, not per-row independent grids.\n// (`fit-content()` is the only valid CSS for \"size to content, clamped to a max\"\n// — `min(w, max-content)` is rejected by the browser, which silently drops the\n// whole declaration and collapses every row to a stacked-looking column. The\n// template is an inline style because Tailwind can't interpolate runtime widths.)\n// Stacked mode is a plain single-column grid.\nexport function FieldsGrid({\n layout,\n size,\n columns,\n columnMinWidth,\n columnsMaxWidth,\n className,\n children,\n}: {\n layout: FormLayout;\n size: FormSize;\n // Object-level `x-columns`: split a stacked object into N equal columns, or\n // \"auto\" to fit as many `columnMinWidth`-wide columns as the container allows.\n // Fields span one column unless they set `x-col-span`. Ignored in inline mode\n // (which owns its own 2-track label/value layout).\n columns?: GridColumns;\n // `x-columns: \"auto\"` only: the minmax() floor for one column, and an optional\n // cap on the whole grid so controls don't stretch edge to edge on a wide\n // screen. CSS lengths, applied inline — a runtime width can't be a Tailwind\n // arbitrary class, because the scanner never sees it.\n columnMinWidth?: string;\n columnsMaxWidth?: string;\n // Object-level `x-classes`: extra classes merged onto the grid container\n // (e.g. `gap-2`, padding). Applied last so a standard utility wins over the\n // defaults via tailwind-merge.\n className?: string;\n children: ReactNode;\n}) {\n if (layout.mode === \"inline\") {\n const labelMaxWidth = layout.labelMaxWidth ?? \"40ch\";\n const valueMaxWidth = layout.valueMaxWidth ?? \"600px\";\n return (\n <div\n className={cn(\"grid\", inlineRowGapClass[size], className)}\n style={{ gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})` }}\n >\n {children}\n </div>\n );\n }\n if (columns === \"auto\") {\n return (\n <div\n className={cn(\"grid gap-x-4\", stackedRowGapClass[size], className)}\n style={{\n gridTemplateColumns: `repeat(auto-fill, minmax(${columnMinWidth ?? DEFAULT_COLUMN_MIN_WIDTH}, 1fr))`,\n ...(columnsMaxWidth ? { maxWidth: columnsMaxWidth } : {}),\n }}\n >\n {children}\n </div>\n );\n }\n if (columns && columns > 1) {\n return (\n <div\n className={cn(\"grid gap-x-3\", stackedRowGapClass[size], className)}\n style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}\n >\n {children}\n </div>\n );\n }\n return <div className={cn(\"grid\", stackedRowGapClass[size], className)}>{children}</div>;\n}\n\n// FieldWrapper lays out a single label + value (+ helper/error). In inline mode\n// it is a `subgrid` row spanning the parent FieldsGrid's two columns, so its\n// label and value snap to the shared label/value tracks (helper/error sit under\n// the value column). In stacked mode the label sits tight above its control as\n// one unit, capped at valueMaxWidth so controls don't stretch edge to edge.\nexport function FieldWrapper({\n label,\n value,\n helper,\n error,\n layout,\n size,\n maxWidth,\n}: {\n label: ReactNode;\n value: ReactNode;\n helper?: ReactNode;\n error?: ReactNode;\n layout: FormLayout;\n size: FormSize;\n // Overrides the stacked value-width cap. A field spanning the full row of a\n // multi-column grid passes \"none\", so it actually fills the row it was given\n // instead of stopping at the shared 600px cap.\n maxWidth?: string;\n}) {\n if (layout.mode === \"inline\") {\n return (\n <div className=\"col-span-2 grid grid-cols-subgrid items-start gap-x-3 gap-y-0.5\">\n <div className={cn(\"flex min-w-0 items-center\", controlMinHeightClass[size])}>{label}</div>\n <div className=\"min-w-0\">{value}</div>\n {helper && <p className=\"col-start-2 text-xs text-muted-foreground\">{helper}</p>}\n {error && <p className=\"col-start-2 text-xs text-destructive\">{error}</p>}\n </div>\n );\n }\n return (\n <div\n className=\"flex w-full flex-col gap-1\"\n style={{ maxWidth: maxWidth ?? layout.valueMaxWidth ?? \"600px\" }}\n >\n {label}\n {value}\n {helper && <p className=\"text-xs text-muted-foreground\">{helper}</p>}\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </div>\n );\n}\n\nexport function FieldLabel({\n field,\n fieldId,\n size,\n helpDisplay,\n}: {\n field: FieldControl;\n fieldId: string;\n size: FormSize;\n // When \"hover\", the description rides on the label as a `?` instead of being\n // rendered as a paragraph under the control by FieldWrapper.\n helpDisplay?: HelpDisplay;\n}) {\n return (\n <label\n htmlFor={fieldId}\n className={cn(\"flex min-w-0 items-center gap-2 font-medium\", labelSizeClass[size], field.labelClassName)}\n >\n <LabelIcon icon={field.labelIcon} className=\"shrink-0 text-[15px] text-muted-foreground\" />\n <span className=\"truncate\" title={field.label !== field.key ? field.key : undefined}>\n {field.label}\n </span>\n {field.required && <span className=\"shrink-0 text-destructive\">*</span>}\n {field.badge && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {field.badge}\n </span>\n )}\n {helpDisplay === \"hover\" && field.helper && (\n <HelpHint label={field.label} helper={field.helper} />\n )}\n </label>\n );\n}\n\n// HelpHint is the `?` affordance that replaces a permanent description\n// paragraph. HoverCard opens on focus as well as hover, so the text stays\n// reachable from the keyboard rather than being mouse-only.\nexport function HelpHint({ label, helper }: { label: string; helper: string }) {\n return (\n <HoverCard\n placement=\"top\"\n trigger={\n <button\n type=\"button\"\n aria-label={`About ${label}`}\n className=\"shrink-0 cursor-help text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Icon icon={UiQuestion} className=\"text-sm\" />\n </button>\n }\n cardClassName=\"max-w-xs whitespace-normal text-left text-xs font-normal text-foreground\"\n >\n {helper}\n </HoverCard>\n );\n}\n\n// ObjectSection renders a nested object as a labelled section: a header row\n// (the field label + required/badge) above its fields, which fill the full\n// width below. It replaces the inline label + bordered box so nested objects\n// read as flat, headed groups rather than indented sub-forms. `col-span-full`\n// makes it span both tracks of an inline FieldsGrid (full width, not crammed\n// into the value column); in a stacked single-column grid it is a no-op.\nexport function ObjectSection({\n label,\n required,\n size,\n badge,\n helper,\n labelIcon,\n helpDisplay,\n children,\n}: {\n label: string;\n required: boolean;\n size: FormSize;\n badge?: string;\n helper?: string;\n labelIcon?: LabelIconSpec;\n helpDisplay?: HelpDisplay;\n children: ReactNode;\n}) {\n const hoverHelp = helpDisplay === \"hover\" && !!helper;\n return (\n <div className={cn(\"col-span-full flex min-w-0 max-w-full flex-col\", fieldInnerGapClass[size])}>\n <div className={cn(\"flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold\", labelSizeClass[size])}>\n <LabelIcon icon={labelIcon} className=\"shrink-0 text-[15px] text-muted-foreground\" />\n <span className=\"min-w-0 truncate\">{label}</span>\n {required && <span className=\"shrink-0 text-destructive\">*</span>}\n {badge && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {badge}\n </span>\n )}\n {hoverHelp && helper && <HelpHint label={label} helper={helper} />}\n </div>\n {helper && !hoverHelp && (\n <p className=\"min-w-0 break-words text-xs text-muted-foreground\">{helper}</p>\n )}\n {children}\n </div>\n );\n}\n"],"names":["jsx","cn","inlineRowGapClass","stackedRowGapClass","DEFAULT_COLUMN_MIN_WIDTH","jsxs","controlMinHeightClass","labelSizeClass","LabelIcon","HoverCard","Icon","UiQuestion","fieldInnerGapClass"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ReactNode } from 'react';
2
+ import { LabelIconSpec } from '../data/Icon';
3
+ import { FieldControl, FormLayout, GridColumns, HelpDisplay } from './json-schema-form-types';
4
+ import { FormSize } from './json-schema-form-size';
5
+ export declare function FieldsGrid({ layout, size, columns, columnMinWidth, columnsMaxWidth, className, children, }: {
6
+ layout: FormLayout;
7
+ size: FormSize;
8
+ columns?: GridColumns;
9
+ columnMinWidth?: string;
10
+ columnsMaxWidth?: string;
11
+ className?: string;
12
+ children: ReactNode;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export declare function FieldWrapper({ label, value, helper, error, layout, size, maxWidth, }: {
15
+ label: ReactNode;
16
+ value: ReactNode;
17
+ helper?: ReactNode;
18
+ error?: ReactNode;
19
+ layout: FormLayout;
20
+ size: FormSize;
21
+ maxWidth?: string;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ export declare function FieldLabel({ field, fieldId, size, helpDisplay, }: {
24
+ field: FieldControl;
25
+ fieldId: string;
26
+ size: FormSize;
27
+ helpDisplay?: HelpDisplay;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ export declare function HelpHint({ label, helper }: {
30
+ label: string;
31
+ helper: string;
32
+ }): import("react/jsx-runtime").JSX.Element;
33
+ export declare function ObjectSection({ label, required, size, badge, helper, labelIcon, helpDisplay, children, }: {
34
+ label: string;
35
+ required: boolean;
36
+ size: FormSize;
37
+ badge?: string;
38
+ helper?: string;
39
+ labelIcon?: LabelIconSpec;
40
+ helpDisplay?: HelpDisplay;
41
+ children: ReactNode;
42
+ }): import("react/jsx-runtime").JSX.Element;
43
+ //# sourceMappingURL=json-schema-form-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-layout.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnE,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAajC,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,IAAI,EACJ,OAAO,EACP,cAAc,EACd,eAAe,EACf,SAAS,EACT,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IAKf,OAAO,CAAC,EAAE,WAAW,CAAC;IAKtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAIzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAqCA;AAOD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAM,EACN,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IAIf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,2CAsBA;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IAGf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,2CAqBA;AAKD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,2CAkB5E;AAQD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAqBA"}
@@ -0,0 +1,156 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import "react";
3
+ import { cn } from "../lib/utils.js";
4
+ import { LabelIcon, Icon } from "../data/Icon.js";
5
+ import { HoverCard } from "../overlay/HoverCard.js";
6
+ import { DEFAULT_COLUMN_MIN_WIDTH } from "./json-schema-form-utils.js";
7
+ import { inlineRowGapClass, stackedRowGapClass, labelSizeClass, fieldInnerGapClass, controlMinHeightClass } from "./json-schema-form-size.js";
8
+ import { UiQuestion } from "../icons/components/UiQuestion.js";
9
+ function FieldsGrid({
10
+ layout,
11
+ size,
12
+ columns,
13
+ columnMinWidth,
14
+ columnsMaxWidth,
15
+ className,
16
+ children
17
+ }) {
18
+ if (layout.mode === "inline") {
19
+ const labelMaxWidth = layout.labelMaxWidth ?? "40ch";
20
+ const valueMaxWidth = layout.valueMaxWidth ?? "600px";
21
+ return /* @__PURE__ */ jsx(
22
+ "div",
23
+ {
24
+ className: cn("grid", inlineRowGapClass[size], className),
25
+ style: { gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})` },
26
+ children
27
+ }
28
+ );
29
+ }
30
+ if (columns === "auto") {
31
+ return /* @__PURE__ */ jsx(
32
+ "div",
33
+ {
34
+ className: cn("grid gap-x-4", stackedRowGapClass[size], className),
35
+ style: {
36
+ gridTemplateColumns: `repeat(auto-fill, minmax(${columnMinWidth ?? DEFAULT_COLUMN_MIN_WIDTH}, 1fr))`,
37
+ ...columnsMaxWidth ? { maxWidth: columnsMaxWidth } : {}
38
+ },
39
+ children
40
+ }
41
+ );
42
+ }
43
+ if (columns && columns > 1) {
44
+ return /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ className: cn("grid gap-x-3", stackedRowGapClass[size], className),
48
+ style: { gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` },
49
+ children
50
+ }
51
+ );
52
+ }
53
+ return /* @__PURE__ */ jsx("div", { className: cn("grid", stackedRowGapClass[size], className), children });
54
+ }
55
+ function FieldWrapper({
56
+ label,
57
+ value,
58
+ helper,
59
+ error,
60
+ layout,
61
+ size,
62
+ maxWidth
63
+ }) {
64
+ if (layout.mode === "inline") {
65
+ return /* @__PURE__ */ jsxs("div", { className: "col-span-2 grid grid-cols-subgrid items-start gap-x-3 gap-y-0.5", children: [
66
+ /* @__PURE__ */ jsx("div", { className: cn("flex min-w-0 items-center", controlMinHeightClass[size]), children: label }),
67
+ /* @__PURE__ */ jsx("div", { className: "min-w-0", children: value }),
68
+ helper && /* @__PURE__ */ jsx("p", { className: "col-start-2 text-xs text-muted-foreground", children: helper }),
69
+ error && /* @__PURE__ */ jsx("p", { className: "col-start-2 text-xs text-destructive", children: error })
70
+ ] });
71
+ }
72
+ return /* @__PURE__ */ jsxs(
73
+ "div",
74
+ {
75
+ className: "flex w-full flex-col gap-1",
76
+ style: { maxWidth: maxWidth ?? layout.valueMaxWidth ?? "600px" },
77
+ children: [
78
+ label,
79
+ value,
80
+ helper && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: helper }),
81
+ error && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: error })
82
+ ]
83
+ }
84
+ );
85
+ }
86
+ function FieldLabel({
87
+ field,
88
+ fieldId,
89
+ size,
90
+ helpDisplay
91
+ }) {
92
+ return /* @__PURE__ */ jsxs(
93
+ "label",
94
+ {
95
+ htmlFor: fieldId,
96
+ className: cn("flex min-w-0 items-center gap-2 font-medium", labelSizeClass[size], field.labelClassName),
97
+ children: [
98
+ /* @__PURE__ */ jsx(LabelIcon, { icon: field.labelIcon, className: "shrink-0 text-[15px] text-muted-foreground" }),
99
+ /* @__PURE__ */ jsx("span", { className: "truncate", title: field.label !== field.key ? field.key : void 0, children: field.label }),
100
+ field.required && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
101
+ field.badge && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: field.badge }),
102
+ helpDisplay === "hover" && field.helper && /* @__PURE__ */ jsx(HelpHint, { label: field.label, helper: field.helper })
103
+ ]
104
+ }
105
+ );
106
+ }
107
+ function HelpHint({ label, helper }) {
108
+ return /* @__PURE__ */ jsx(
109
+ HoverCard,
110
+ {
111
+ placement: "top",
112
+ trigger: /* @__PURE__ */ jsx(
113
+ "button",
114
+ {
115
+ type: "button",
116
+ "aria-label": `About ${label}`,
117
+ className: "shrink-0 cursor-help text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
118
+ children: /* @__PURE__ */ jsx(Icon, { icon: UiQuestion, className: "text-sm" })
119
+ }
120
+ ),
121
+ cardClassName: "max-w-xs whitespace-normal text-left text-xs font-normal text-foreground",
122
+ children: helper
123
+ }
124
+ );
125
+ }
126
+ function ObjectSection({
127
+ label,
128
+ required,
129
+ size,
130
+ badge,
131
+ helper,
132
+ labelIcon,
133
+ helpDisplay,
134
+ children
135
+ }) {
136
+ const hoverHelp = helpDisplay === "hover" && !!helper;
137
+ return /* @__PURE__ */ jsxs("div", { className: cn("col-span-full flex min-w-0 max-w-full flex-col", fieldInnerGapClass[size]), children: [
138
+ /* @__PURE__ */ jsxs("div", { className: cn("flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold", labelSizeClass[size]), children: [
139
+ /* @__PURE__ */ jsx(LabelIcon, { icon: labelIcon, className: "shrink-0 text-[15px] text-muted-foreground" }),
140
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: label }),
141
+ required && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
142
+ badge && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: badge }),
143
+ hoverHelp && helper && /* @__PURE__ */ jsx(HelpHint, { label, helper })
144
+ ] }),
145
+ helper && !hoverHelp && /* @__PURE__ */ jsx("p", { className: "min-w-0 break-words text-xs text-muted-foreground", children: helper }),
146
+ children
147
+ ] });
148
+ }
149
+ export {
150
+ FieldLabel,
151
+ FieldWrapper,
152
+ FieldsGrid,
153
+ HelpHint,
154
+ ObjectSection
155
+ };
156
+ //# sourceMappingURL=json-schema-form-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-layout.js","sources":["../../src/components/json-schema-form-layout.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, LabelIcon, type LabelIconSpec } from \"../data/Icon\";\nimport { UiQuestion } from \"../icons\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport type {\n FieldControl,\n FormLayout,\n GridColumns,\n HelpDisplay,\n} from \"./json-schema-form-types\";\nimport { DEFAULT_COLUMN_MIN_WIDTH } from \"./json-schema-form-utils\";\nimport {\n controlMinHeightClass,\n fieldInnerGapClass,\n inlineRowGapClass,\n labelSizeClass,\n stackedRowGapClass,\n type FormSize,\n} from \"./json-schema-form-size\";\n\n// FieldsGrid is the container every group of field rows renders into — the\n// top-level form and each nested object/map. In inline mode it owns the single\n// 2-column track definition: `fit-content(labelMaxWidth)` for the label column,\n// `minmax(0, valueMaxWidth)` for the value column. Every field row is a\n// `subgrid` that inherits these tracks, so all labels share one column width and\n// every value lines up — a real form grid, not per-row independent grids.\n// (`fit-content()` is the only valid CSS for \"size to content, clamped to a max\"\n// — `min(w, max-content)` is rejected by the browser, which silently drops the\n// whole declaration and collapses every row to a stacked-looking column. The\n// template is an inline style because Tailwind can't interpolate runtime widths.)\n// Stacked mode is a plain single-column grid.\nexport function FieldsGrid({\n layout,\n size,\n columns,\n columnMinWidth,\n columnsMaxWidth,\n className,\n children,\n}: {\n layout: FormLayout;\n size: FormSize;\n // Object-level `x-columns`: split a stacked object into N equal columns, or\n // \"auto\" to fit as many `columnMinWidth`-wide columns as the container allows.\n // Fields span one column unless they set `x-col-span`. Ignored in inline mode\n // (which owns its own 2-track label/value layout).\n columns?: GridColumns;\n // `x-columns: \"auto\"` only: the minmax() floor for one column, and an optional\n // cap on the whole grid so controls don't stretch edge to edge on a wide\n // screen. CSS lengths, applied inline — a runtime width can't be a Tailwind\n // arbitrary class, because the scanner never sees it.\n columnMinWidth?: string;\n columnsMaxWidth?: string;\n // Object-level `x-classes`: extra classes merged onto the grid container\n // (e.g. `gap-2`, padding). Applied last so a standard utility wins over the\n // defaults via tailwind-merge.\n className?: string;\n children: ReactNode;\n}) {\n if (layout.mode === \"inline\") {\n const labelMaxWidth = layout.labelMaxWidth ?? \"40ch\";\n const valueMaxWidth = layout.valueMaxWidth ?? \"600px\";\n return (\n <div\n className={cn(\"grid\", inlineRowGapClass[size], className)}\n style={{ gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})` }}\n >\n {children}\n </div>\n );\n }\n if (columns === \"auto\") {\n return (\n <div\n className={cn(\"grid gap-x-4\", stackedRowGapClass[size], className)}\n style={{\n gridTemplateColumns: `repeat(auto-fill, minmax(${columnMinWidth ?? DEFAULT_COLUMN_MIN_WIDTH}, 1fr))`,\n ...(columnsMaxWidth ? { maxWidth: columnsMaxWidth } : {}),\n }}\n >\n {children}\n </div>\n );\n }\n if (columns && columns > 1) {\n return (\n <div\n className={cn(\"grid gap-x-3\", stackedRowGapClass[size], className)}\n style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}\n >\n {children}\n </div>\n );\n }\n return <div className={cn(\"grid\", stackedRowGapClass[size], className)}>{children}</div>;\n}\n\n// FieldWrapper lays out a single label + value (+ helper/error). In inline mode\n// it is a `subgrid` row spanning the parent FieldsGrid's two columns, so its\n// label and value snap to the shared label/value tracks (helper/error sit under\n// the value column). In stacked mode the label sits tight above its control as\n// one unit, capped at valueMaxWidth so controls don't stretch edge to edge.\nexport function FieldWrapper({\n label,\n value,\n helper,\n error,\n layout,\n size,\n maxWidth,\n}: {\n label: ReactNode;\n value: ReactNode;\n helper?: ReactNode;\n error?: ReactNode;\n layout: FormLayout;\n size: FormSize;\n // Overrides the stacked value-width cap. A field spanning the full row of a\n // multi-column grid passes \"none\", so it actually fills the row it was given\n // instead of stopping at the shared 600px cap.\n maxWidth?: string;\n}) {\n if (layout.mode === \"inline\") {\n return (\n <div className=\"col-span-2 grid grid-cols-subgrid items-start gap-x-3 gap-y-0.5\">\n <div className={cn(\"flex min-w-0 items-center\", controlMinHeightClass[size])}>{label}</div>\n <div className=\"min-w-0\">{value}</div>\n {helper && <p className=\"col-start-2 text-xs text-muted-foreground\">{helper}</p>}\n {error && <p className=\"col-start-2 text-xs text-destructive\">{error}</p>}\n </div>\n );\n }\n return (\n <div\n className=\"flex w-full flex-col gap-1\"\n style={{ maxWidth: maxWidth ?? layout.valueMaxWidth ?? \"600px\" }}\n >\n {label}\n {value}\n {helper && <p className=\"text-xs text-muted-foreground\">{helper}</p>}\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </div>\n );\n}\n\nexport function FieldLabel({\n field,\n fieldId,\n size,\n helpDisplay,\n}: {\n field: FieldControl;\n fieldId: string;\n size: FormSize;\n // When \"hover\", the description rides on the label as a `?` instead of being\n // rendered as a paragraph under the control by FieldWrapper.\n helpDisplay?: HelpDisplay;\n}) {\n return (\n <label\n htmlFor={fieldId}\n className={cn(\"flex min-w-0 items-center gap-2 font-medium\", labelSizeClass[size], field.labelClassName)}\n >\n <LabelIcon icon={field.labelIcon} className=\"shrink-0 text-[15px] text-muted-foreground\" />\n <span className=\"truncate\" title={field.label !== field.key ? field.key : undefined}>\n {field.label}\n </span>\n {field.required && <span className=\"shrink-0 text-destructive\">*</span>}\n {field.badge && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {field.badge}\n </span>\n )}\n {helpDisplay === \"hover\" && field.helper && (\n <HelpHint label={field.label} helper={field.helper} />\n )}\n </label>\n );\n}\n\n// HelpHint is the `?` affordance that replaces a permanent description\n// paragraph. HoverCard opens on focus as well as hover, so the text stays\n// reachable from the keyboard rather than being mouse-only.\nexport function HelpHint({ label, helper }: { label: string; helper: string }) {\n return (\n <HoverCard\n placement=\"top\"\n trigger={\n <button\n type=\"button\"\n aria-label={`About ${label}`}\n className=\"shrink-0 cursor-help text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Icon icon={UiQuestion} className=\"text-sm\" />\n </button>\n }\n cardClassName=\"max-w-xs whitespace-normal text-left text-xs font-normal text-foreground\"\n >\n {helper}\n </HoverCard>\n );\n}\n\n// ObjectSection renders a nested object as a labelled section: a header row\n// (the field label + required/badge) above its fields, which fill the full\n// width below. It replaces the inline label + bordered box so nested objects\n// read as flat, headed groups rather than indented sub-forms. `col-span-full`\n// makes it span both tracks of an inline FieldsGrid (full width, not crammed\n// into the value column); in a stacked single-column grid it is a no-op.\nexport function ObjectSection({\n label,\n required,\n size,\n badge,\n helper,\n labelIcon,\n helpDisplay,\n children,\n}: {\n label: string;\n required: boolean;\n size: FormSize;\n badge?: string;\n helper?: string;\n labelIcon?: LabelIconSpec;\n helpDisplay?: HelpDisplay;\n children: ReactNode;\n}) {\n const hoverHelp = helpDisplay === \"hover\" && !!helper;\n return (\n <div className={cn(\"col-span-full flex min-w-0 max-w-full flex-col\", fieldInnerGapClass[size])}>\n <div className={cn(\"flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold\", labelSizeClass[size])}>\n <LabelIcon icon={labelIcon} className=\"shrink-0 text-[15px] text-muted-foreground\" />\n <span className=\"min-w-0 truncate\">{label}</span>\n {required && <span className=\"shrink-0 text-destructive\">*</span>}\n {badge && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {badge}\n </span>\n )}\n {hoverHelp && helper && <HelpHint label={label} helper={helper} />}\n </div>\n {helper && !hoverHelp && (\n <p className=\"min-w-0 break-words text-xs text-muted-foreground\">{helper}</p>\n )}\n {children}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}