@flanksource/clicky-ui 0.3.34 → 0.3.36

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 (733) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +4 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +4 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.d.ts +1 -1
  7. package/dist/comments/CommentProvider.d.ts +1 -1
  8. package/dist/comments/CommentThread.d.ts +1 -1
  9. package/dist/comments/CommentThreadList.d.ts +1 -1
  10. package/dist/comments/MentionTextarea.d.ts +1 -1
  11. package/dist/comments/comment-context.d.ts +4 -4
  12. package/dist/comments/comment-fixtures.d.ts +1 -1
  13. package/dist/comments/comment-types.d.ts +1 -1
  14. package/dist/components/AccordionList.d.ts +1 -1
  15. package/dist/components/ComboboxControl.d.ts +1 -1
  16. package/dist/components/ComboboxMenu.d.ts +2 -2
  17. package/dist/components/ComboboxTags.cjs +41 -11
  18. package/dist/components/ComboboxTags.cjs.map +1 -1
  19. package/dist/components/ComboboxTags.d.ts +6 -0
  20. package/dist/components/ComboboxTags.d.ts.map +1 -1
  21. package/dist/components/ComboboxTags.js +41 -11
  22. package/dist/components/ComboboxTags.js.map +1 -1
  23. package/dist/components/DateField.d.ts +3 -3
  24. package/dist/components/DatePicker.d.ts +3 -3
  25. package/dist/components/DateTimePicker.d.ts +3 -3
  26. package/dist/components/ErrorWrapper.d.ts +2 -2
  27. package/dist/components/Field.d.ts +1 -1
  28. package/dist/components/FilterBar.d.ts +1 -1
  29. package/dist/components/FormLookupProvider.d.ts +1 -1
  30. package/dist/components/FormatOptionsDropdown.d.ts +1 -1
  31. package/dist/components/IconButton.d.ts +3 -3
  32. package/dist/components/InputField.d.ts +2 -2
  33. package/dist/components/ItemActions.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.cjs +17 -36
  35. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  36. package/dist/components/JsonSchemaForm.d.ts +1 -1
  37. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  38. package/dist/components/JsonSchemaForm.js +17 -36
  39. package/dist/components/JsonSchemaForm.js.map +1 -1
  40. package/dist/components/ListMenu.d.ts +1 -1
  41. package/dist/components/MultiSelect.d.ts +1 -1
  42. package/dist/components/SearchInput.d.ts +1 -1
  43. package/dist/components/SegmentedControl.d.ts +1 -1
  44. package/dist/components/SplitButton.d.ts +1 -1
  45. package/dist/components/Switch.d.ts +1 -1
  46. package/dist/components/TreePickerField.cjs +11 -2
  47. package/dist/components/TreePickerField.cjs.map +1 -1
  48. package/dist/components/TreePickerField.d.ts +13 -4
  49. package/dist/components/TreePickerField.d.ts.map +1 -1
  50. package/dist/components/TreePickerField.js +11 -2
  51. package/dist/components/TreePickerField.js.map +1 -1
  52. package/dist/components/UnitStepControls.d.ts +1 -1
  53. package/dist/components/button.d.ts +3 -3
  54. package/dist/components/combobox-types.d.ts +1 -1
  55. package/dist/components/density-switcher.d.ts +1 -1
  56. package/dist/components/filter-bar-context.d.ts +1 -1
  57. package/dist/components/filter-bar-field-utils.d.ts +2 -2
  58. package/dist/components/form-lookup-context.d.ts +1 -1
  59. package/dist/components/icon-menu-picker.d.ts +1 -1
  60. package/dist/components/json-schema-form-accordion-array.cjs +44 -21
  61. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  63. package/dist/components/json-schema-form-accordion-array.js +47 -24
  64. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  65. package/dist/components/json-schema-form-array.cjs +53 -30
  66. package/dist/components/json-schema-form-array.cjs.map +1 -1
  67. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  68. package/dist/components/json-schema-form-array.js +54 -31
  69. package/dist/components/json-schema-form-array.js.map +1 -1
  70. package/dist/components/json-schema-form-cards-array.cjs +32 -22
  71. package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-cards-array.js +33 -23
  74. package/dist/components/json-schema-form-cards-array.js.map +1 -1
  75. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
  76. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
  77. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  78. package/dist/components/json-schema-form-errors.cjs +5 -1
  79. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  80. package/dist/components/json-schema-form-errors.d.ts +2 -1
  81. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  82. package/dist/components/json-schema-form-errors.js +6 -2
  83. package/dist/components/json-schema-form-errors.js.map +1 -1
  84. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  85. package/dist/components/json-schema-form-filter-input.cjs +50 -0
  86. package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
  87. package/dist/components/json-schema-form-filter-input.d.ts +5 -0
  88. package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
  89. package/dist/components/json-schema-form-filter-input.js +50 -0
  90. package/dist/components/json-schema-form-filter-input.js.map +1 -0
  91. package/dist/components/json-schema-form-filter.cjs +49 -0
  92. package/dist/components/json-schema-form-filter.cjs.map +1 -0
  93. package/dist/components/json-schema-form-filter.d.ts +8 -0
  94. package/dist/components/json-schema-form-filter.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-filter.js +49 -0
  96. package/dist/components/json-schema-form-filter.js.map +1 -0
  97. package/dist/components/json-schema-form-layout.cjs +84 -17
  98. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  99. package/dist/components/json-schema-form-layout.d.ts +1 -1
  100. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-layout.js +84 -17
  102. package/dist/components/json-schema-form-layout.js.map +1 -1
  103. package/dist/components/json-schema-form-list-array.cjs +16 -5
  104. package/dist/components/json-schema-form-list-array.cjs.map +1 -1
  105. package/dist/components/json-schema-form-list-array.d.ts +2 -1
  106. package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-list-array.js +16 -5
  108. package/dist/components/json-schema-form-list-array.js.map +1 -1
  109. package/dist/components/json-schema-form-object.cjs +239 -85
  110. package/dist/components/json-schema-form-object.cjs.map +1 -1
  111. package/dist/components/json-schema-form-object.d.ts +2 -2
  112. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  113. package/dist/components/json-schema-form-object.js +241 -87
  114. package/dist/components/json-schema-form-object.js.map +1 -1
  115. package/dist/components/json-schema-form-preferences.cjs +1 -1
  116. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  117. package/dist/components/json-schema-form-preferences.d.ts +1 -1
  118. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  119. package/dist/components/json-schema-form-preferences.js +1 -1
  120. package/dist/components/json-schema-form-preferences.js.map +1 -1
  121. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
  122. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
  123. package/dist/components/json-schema-form-properties-size.cjs +19 -0
  124. package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
  125. package/dist/components/json-schema-form-properties-size.d.ts +4 -0
  126. package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-properties-size.js +19 -0
  128. package/dist/components/json-schema-form-properties-size.js.map +1 -0
  129. package/dist/components/json-schema-form-properties.cjs +305 -0
  130. package/dist/components/json-schema-form-properties.cjs.map +1 -0
  131. package/dist/components/json-schema-form-properties.d.ts +20 -0
  132. package/dist/components/json-schema-form-properties.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
  134. package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
  135. package/dist/components/json-schema-form-properties.js +305 -0
  136. package/dist/components/json-schema-form-properties.js.map +1 -0
  137. package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
  138. package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
  139. package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
  140. package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
  141. package/dist/components/json-schema-form-property-actions-context.js +6 -0
  142. package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
  143. package/dist/components/json-schema-form-property-collection.cjs +31 -0
  144. package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
  145. package/dist/components/json-schema-form-property-collection.d.ts +6 -0
  146. package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
  147. package/dist/components/json-schema-form-property-collection.js +31 -0
  148. package/dist/components/json-schema-form-property-collection.js.map +1 -0
  149. package/dist/components/json-schema-form-property-draft.cjs +45 -0
  150. package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
  151. package/dist/components/json-schema-form-property-draft.d.ts +8 -0
  152. package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
  153. package/dist/components/json-schema-form-property-draft.js +45 -0
  154. package/dist/components/json-schema-form-property-draft.js.map +1 -0
  155. package/dist/components/json-schema-form-property-preview.cjs +68 -0
  156. package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
  157. package/dist/components/json-schema-form-property-preview.d.ts +7 -0
  158. package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
  159. package/dist/components/json-schema-form-property-preview.js +68 -0
  160. package/dist/components/json-schema-form-property-preview.js.map +1 -0
  161. package/dist/components/json-schema-form-property-selection.cjs +89 -0
  162. package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
  163. package/dist/components/json-schema-form-property-selection.d.ts +6 -0
  164. package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-property-selection.js +89 -0
  166. package/dist/components/json-schema-form-property-selection.js.map +1 -0
  167. package/dist/components/json-schema-form-render.cjs +41 -4
  168. package/dist/components/json-schema-form-render.cjs.map +1 -1
  169. package/dist/components/json-schema-form-render.d.ts +1 -1
  170. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  171. package/dist/components/json-schema-form-render.js +42 -5
  172. package/dist/components/json-schema-form-render.js.map +1 -1
  173. package/dist/components/json-schema-form-resolve.cjs +2 -0
  174. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  175. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  176. package/dist/components/json-schema-form-resolve.js +2 -0
  177. package/dist/components/json-schema-form-resolve.js.map +1 -1
  178. package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
  179. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
  180. package/dist/components/json-schema-form-table-array.cjs +82 -51
  181. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  182. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  183. package/dist/components/json-schema-form-table-array.js +84 -53
  184. package/dist/components/json-schema-form-table-array.js.map +1 -1
  185. package/dist/components/json-schema-form-template-menu.d.ts +1 -1
  186. package/dist/components/json-schema-form-template.d.ts +1 -1
  187. package/dist/components/json-schema-form-types.d.ts +7 -179
  188. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-utils.cjs +10 -9
  190. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  191. package/dist/components/json-schema-form-utils.d.ts +11 -1
  192. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-utils.js +10 -9
  194. package/dist/components/json-schema-form-utils.js.map +1 -1
  195. package/dist/components/loading.d.ts +4 -4
  196. package/dist/components/mdx-editor-callout.d.ts +1 -1
  197. package/dist/components/mdx-editor-options.d.ts +1 -1
  198. package/dist/components/select.d.ts +3 -3
  199. package/dist/components/theme-switcher.d.ts +1 -1
  200. package/dist/components/use-list-menu-selection.d.ts +1 -1
  201. package/dist/components/useComboboxLayout.d.ts +1 -1
  202. package/dist/components/workload-picker-utils.d.ts +1 -1
  203. package/dist/data/Avatar.d.ts +1 -1
  204. package/dist/data/AvatarBadge.d.ts +1 -1
  205. package/dist/data/Badge.d.ts +1 -1
  206. package/dist/data/Callout.d.ts +1 -1
  207. package/dist/data/DataTable.cjs +575 -435
  208. package/dist/data/DataTable.cjs.map +1 -1
  209. package/dist/data/DataTable.d.ts +21 -13
  210. package/dist/data/DataTable.d.ts.map +1 -1
  211. package/dist/data/DataTable.grouping.d.ts +1 -1
  212. package/dist/data/DataTable.js +575 -435
  213. package/dist/data/DataTable.js.map +1 -1
  214. package/dist/data/ExecutionTree.d.ts +1 -1
  215. package/dist/data/FilterPill.d.ts +1 -1
  216. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
  217. package/dist/data/FixtureEditor/types.d.ts +1 -1
  218. package/dist/data/Gauge.d.ts +1 -1
  219. package/dist/data/GaugeHoverCard.d.ts +1 -1
  220. package/dist/data/Icon.d.ts +1 -1
  221. package/dist/data/KeyValueList.d.ts +1 -1
  222. package/dist/data/MarkdownEditor.d.ts +1 -1
  223. package/dist/data/MatrixTable.d.ts +1 -1
  224. package/dist/data/ObjectGraph.d.ts +1 -1
  225. package/dist/data/ProgressBars.d.ts +1 -1
  226. package/dist/data/Properties.cjs +86 -35
  227. package/dist/data/Properties.cjs.map +1 -1
  228. package/dist/data/Properties.d.ts +2 -2
  229. package/dist/data/Properties.d.ts.map +1 -1
  230. package/dist/data/Properties.js +87 -36
  231. package/dist/data/Properties.js.map +1 -1
  232. package/dist/data/RadialGauge.d.ts +1 -1
  233. package/dist/data/SchemaViewer.d.ts +1 -1
  234. package/dist/data/SortableHeader.d.ts +1 -1
  235. package/dist/data/StatStrip.d.ts +1 -1
  236. package/dist/data/StatusBreakdown.d.ts +1 -1
  237. package/dist/data/TabButton.d.ts +1 -1
  238. package/dist/data/TaskHeaderExtras.cjs +35 -0
  239. package/dist/data/TaskHeaderExtras.cjs.map +1 -0
  240. package/dist/data/TaskHeaderExtras.d.ts +27 -0
  241. package/dist/data/TaskHeaderExtras.d.ts.map +1 -0
  242. package/dist/data/TaskHeaderExtras.js +35 -0
  243. package/dist/data/TaskHeaderExtras.js.map +1 -0
  244. package/dist/data/TaskManager.cjs +27 -23
  245. package/dist/data/TaskManager.cjs.map +1 -1
  246. package/dist/data/TaskManager.d.ts +13 -1
  247. package/dist/data/TaskManager.d.ts.map +1 -1
  248. package/dist/data/TaskManager.js +27 -23
  249. package/dist/data/TaskManager.js.map +1 -1
  250. package/dist/data/TaskManagerButton.cjs +17 -34
  251. package/dist/data/TaskManagerButton.cjs.map +1 -1
  252. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  253. package/dist/data/TaskManagerButton.js +18 -35
  254. package/dist/data/TaskManagerButton.js.map +1 -1
  255. package/dist/data/TaskProcessDetails.cjs +7 -25
  256. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  257. package/dist/data/TaskProcessDetails.d.ts +2 -1
  258. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  259. package/dist/data/TaskProcessDetails.js +7 -25
  260. package/dist/data/TaskProcessDetails.js.map +1 -1
  261. package/dist/data/TaskProcessMetadata.cjs +50 -0
  262. package/dist/data/TaskProcessMetadata.cjs.map +1 -0
  263. package/dist/data/TaskProcessMetadata.d.ts +20 -0
  264. package/dist/data/TaskProcessMetadata.d.ts.map +1 -0
  265. package/dist/data/TaskProcessMetadata.js +50 -0
  266. package/dist/data/TaskProcessMetadata.js.map +1 -0
  267. package/dist/data/TaskProgress.cjs +41 -41
  268. package/dist/data/TaskProgress.cjs.map +1 -1
  269. package/dist/data/TaskProgress.d.ts +15 -1
  270. package/dist/data/TaskProgress.d.ts.map +1 -1
  271. package/dist/data/TaskProgress.js +41 -41
  272. package/dist/data/TaskProgress.js.map +1 -1
  273. package/dist/data/TaskResourceReadings.cjs +42 -0
  274. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  275. package/dist/data/TaskResourceReadings.d.ts +6 -0
  276. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  277. package/dist/data/TaskResourceReadings.js +42 -0
  278. package/dist/data/TaskResourceReadings.js.map +1 -0
  279. package/dist/data/TaskSnapshot.cjs.map +1 -1
  280. package/dist/data/TaskSnapshot.d.ts +36 -1
  281. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  282. package/dist/data/TaskSnapshot.js.map +1 -1
  283. package/dist/data/TaskStreamTabs.cjs +78 -0
  284. package/dist/data/TaskStreamTabs.cjs.map +1 -0
  285. package/dist/data/TaskStreamTabs.d.ts +35 -0
  286. package/dist/data/TaskStreamTabs.d.ts.map +1 -0
  287. package/dist/data/TaskStreamTabs.js +78 -0
  288. package/dist/data/TaskStreamTabs.js.map +1 -0
  289. package/dist/data/Timeline.d.ts +1 -1
  290. package/dist/data/Tree.d.ts +1 -1
  291. package/dist/data/TreeGroupHeader.d.ts +1 -1
  292. package/dist/data/TreeNode.d.ts +1 -1
  293. package/dist/data/Version.d.ts +3 -3
  294. package/dist/data/ai/ChatWindow.cjs +22 -12
  295. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  296. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  297. package/dist/data/ai/ChatWindow.js +22 -12
  298. package/dist/data/ai/ChatWindow.js.map +1 -1
  299. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  300. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  301. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  302. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  303. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  304. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  305. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  306. package/dist/data/ai/ChatWindowManager.js +2 -0
  307. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  308. package/dist/data/ai/PolicyTree.d.ts +1 -1
  309. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  310. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  311. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  312. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  313. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  314. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  315. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  316. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  317. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  318. package/dist/data/ai/SessionInspector.approvals-model.cjs +9 -0
  319. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -0
  320. package/dist/data/ai/SessionInspector.approvals-model.d.ts +17 -0
  321. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -0
  322. package/dist/data/ai/SessionInspector.approvals-model.js +9 -0
  323. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -0
  324. package/dist/data/ai/SessionInspector.approvals.cjs +143 -0
  325. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  326. package/dist/data/ai/SessionInspector.approvals.d.ts +13 -0
  327. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  328. package/dist/data/ai/SessionInspector.approvals.js +143 -0
  329. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  330. package/dist/data/ai/SessionInspector.cjs +21 -8
  331. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  332. package/dist/data/ai/SessionInspector.d.ts +6 -2
  333. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  334. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  335. package/dist/data/ai/SessionInspector.js +21 -8
  336. package/dist/data/ai/SessionInspector.js.map +1 -1
  337. package/dist/data/ai/SessionInspector.panel-parts.cjs +34 -0
  338. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  339. package/dist/data/ai/SessionInspector.panel-parts.d.ts +19 -0
  340. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  341. package/dist/data/ai/SessionInspector.panel-parts.js +34 -0
  342. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  343. package/dist/data/ai/SessionInspector.panel-values.cjs +18 -0
  344. package/dist/data/ai/SessionInspector.panel-values.cjs.map +1 -0
  345. package/dist/data/ai/SessionInspector.panel-values.d.ts +13 -0
  346. package/dist/data/ai/SessionInspector.panel-values.d.ts.map +1 -0
  347. package/dist/data/ai/SessionInspector.panel-values.js +18 -0
  348. package/dist/data/ai/SessionInspector.panel-values.js.map +1 -0
  349. package/dist/data/ai/SessionInspector.panels.cjs +41 -99
  350. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  351. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  352. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  353. package/dist/data/ai/SessionInspector.panels.js +13 -71
  354. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  355. package/dist/data/ai/SessionViewer.d.ts +1 -1
  356. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  357. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  358. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  359. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  360. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  361. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  362. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  363. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  364. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  365. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  366. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  367. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  368. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  369. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  371. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  372. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  373. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  374. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  375. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  376. package/dist/data/ai/chat-window-context.cjs +1 -0
  377. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  378. package/dist/data/ai/chat-window-context.d.ts +13 -5
  379. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  380. package/dist/data/ai/chat-window-context.js +1 -0
  381. package/dist/data/ai/chat-window-context.js.map +1 -1
  382. package/dist/data/ai/index.d.ts +3 -1
  383. package/dist/data/ai/index.d.ts.map +1 -1
  384. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  385. package/dist/data/cache-browser/adapter.d.ts +1 -1
  386. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  387. package/dist/data/cells/EntityCell.d.ts +1 -1
  388. package/dist/data/cells/tag-utils.d.ts +1 -1
  389. package/dist/data/chat/Chat.cjs +42 -46
  390. package/dist/data/chat/Chat.cjs.map +1 -1
  391. package/dist/data/chat/Chat.d.ts +16 -5
  392. package/dist/data/chat/Chat.d.ts.map +1 -1
  393. package/dist/data/chat/Chat.js +43 -47
  394. package/dist/data/chat/Chat.js.map +1 -1
  395. package/dist/data/chat/ModelSelector.d.ts +1 -1
  396. package/dist/data/chat/PromptInput.cjs +13 -0
  397. package/dist/data/chat/PromptInput.cjs.map +1 -1
  398. package/dist/data/chat/PromptInput.d.ts +8 -2
  399. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  400. package/dist/data/chat/PromptInput.js +14 -1
  401. package/dist/data/chat/PromptInput.js.map +1 -1
  402. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  403. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  404. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  405. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  406. package/dist/data/chat/tool-render/context.d.ts +1 -1
  407. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  408. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  409. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  410. package/dist/data/chat/types.d.ts +1 -1
  411. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  412. package/dist/data/data-table-server-filters.d.ts +1 -1
  413. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  414. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  415. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  416. package/dist/data/git/GitChangeList.d.ts +1 -1
  417. package/dist/data/icon-fallback.d.ts +1 -1
  418. package/dist/data/properties-context.cjs +6 -0
  419. package/dist/data/properties-context.cjs.map +1 -0
  420. package/dist/data/properties-context.d.ts +7 -0
  421. package/dist/data/properties-context.d.ts.map +1 -0
  422. package/dist/data/properties-context.js +6 -0
  423. package/dist/data/properties-context.js.map +1 -0
  424. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  425. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  426. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  427. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  428. package/dist/data/runtime/RuntimeBar.js +7 -3
  429. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  430. package/dist/data/task-copy.cjs +1 -1
  431. package/dist/data/task-copy.cjs.map +1 -1
  432. package/dist/data/task-copy.js +1 -1
  433. package/dist/data/task-copy.js.map +1 -1
  434. package/dist/data/task-metadata.cjs +36 -0
  435. package/dist/data/task-metadata.cjs.map +1 -0
  436. package/dist/data/task-metadata.d.ts +39 -0
  437. package/dist/data/task-metadata.d.ts.map +1 -0
  438. package/dist/data/task-metadata.js +36 -0
  439. package/dist/data/task-metadata.js.map +1 -0
  440. package/dist/data/task-resource-summary.cjs +30 -0
  441. package/dist/data/task-resource-summary.cjs.map +1 -0
  442. package/dist/data/task-resource-summary.d.ts +15 -0
  443. package/dist/data/task-resource-summary.d.ts.map +1 -0
  444. package/dist/data/task-resource-summary.js +30 -0
  445. package/dist/data/task-resource-summary.js.map +1 -0
  446. package/dist/data/task-status.cjs +8 -2
  447. package/dist/data/task-status.cjs.map +1 -1
  448. package/dist/data/task-status.d.ts +3 -0
  449. package/dist/data/task-status.d.ts.map +1 -1
  450. package/dist/data/task-status.js +8 -2
  451. package/dist/data/task-status.js.map +1 -1
  452. package/dist/data/task-streams.cjs +39 -0
  453. package/dist/data/task-streams.cjs.map +1 -0
  454. package/dist/data/task-streams.d.ts +60 -0
  455. package/dist/data/task-streams.d.ts.map +1 -0
  456. package/dist/data/task-streams.js +39 -0
  457. package/dist/data/task-streams.js.map +1 -0
  458. package/dist/data/task-work-progress.cjs +24 -0
  459. package/dist/data/task-work-progress.cjs.map +1 -0
  460. package/dist/data/task-work-progress.d.ts +21 -0
  461. package/dist/data/task-work-progress.d.ts.map +1 -0
  462. package/dist/data/task-work-progress.js +24 -0
  463. package/dist/data/task-work-progress.js.map +1 -0
  464. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  465. package/dist/data/test-runner/adapter.d.ts +1 -1
  466. package/dist/data/test-runner/context.d.ts +1 -1
  467. package/dist/data/use-data-table-virtual.cjs +73 -0
  468. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  469. package/dist/data/use-data-table-virtual.d.ts +40 -0
  470. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  471. package/dist/data/use-data-table-virtual.js +73 -0
  472. package/dist/data/use-data-table-virtual.js.map +1 -0
  473. package/dist/data/verification/VerificationResults.d.ts +1 -1
  474. package/dist/data/version-info.cjs +3 -3
  475. package/dist/data/version-info.js +3 -3
  476. package/dist/data.cjs +14 -0
  477. package/dist/data.cjs.map +1 -1
  478. package/dist/data.d.ts +6 -1
  479. package/dist/data.d.ts.map +1 -1
  480. package/dist/data.js +14 -0
  481. package/dist/data.js.map +1 -1
  482. package/dist/expressions/lang/attributes.cjs +56 -0
  483. package/dist/expressions/lang/attributes.cjs.map +1 -0
  484. package/dist/expressions/lang/attributes.d.ts +22 -0
  485. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  486. package/dist/expressions/lang/attributes.js +56 -0
  487. package/dist/expressions/lang/attributes.js.map +1 -0
  488. package/dist/expressions/lang/completion.cjs +164 -0
  489. package/dist/expressions/lang/completion.cjs.map +1 -0
  490. package/dist/expressions/lang/completion.d.ts +29 -0
  491. package/dist/expressions/lang/completion.d.ts.map +1 -0
  492. package/dist/expressions/lang/completion.js +164 -0
  493. package/dist/expressions/lang/completion.js.map +1 -0
  494. package/dist/expressions/lang/environment.cjs +115 -0
  495. package/dist/expressions/lang/environment.cjs.map +1 -0
  496. package/dist/expressions/lang/environment.d.ts +54 -0
  497. package/dist/expressions/lang/environment.d.ts.map +1 -0
  498. package/dist/expressions/lang/environment.js +115 -0
  499. package/dist/expressions/lang/environment.js.map +1 -0
  500. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  501. package/dist/expressions/lang/generated/index.cjs +18 -0
  502. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  503. package/dist/expressions/lang/generated/index.d.ts +9 -0
  504. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  505. package/dist/expressions/lang/generated/index.js +18 -0
  506. package/dist/expressions/lang/generated/index.js.map +1 -0
  507. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  508. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  509. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  510. package/dist/expressions/lang/generated/languages.json.js +18 -0
  511. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  512. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  513. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  514. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  515. package/dist/expressions/lang/generated/spec.json.js +12 -0
  516. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  517. package/dist/expressions/lang/hover.cjs +106 -0
  518. package/dist/expressions/lang/hover.cjs.map +1 -0
  519. package/dist/expressions/lang/hover.d.ts +54 -0
  520. package/dist/expressions/lang/hover.d.ts.map +1 -0
  521. package/dist/expressions/lang/hover.js +106 -0
  522. package/dist/expressions/lang/hover.js.map +1 -0
  523. package/dist/expressions/lang/index.cjs +87 -0
  524. package/dist/expressions/lang/index.cjs.map +1 -0
  525. package/dist/expressions/lang/index.d.ts +65 -0
  526. package/dist/expressions/lang/index.d.ts.map +1 -0
  527. package/dist/expressions/lang/index.js +90 -0
  528. package/dist/expressions/lang/index.js.map +1 -0
  529. package/dist/expressions/lang/merge.cjs +52 -0
  530. package/dist/expressions/lang/merge.cjs.map +1 -0
  531. package/dist/expressions/lang/merge.d.ts +12 -0
  532. package/dist/expressions/lang/merge.d.ts.map +1 -0
  533. package/dist/expressions/lang/merge.js +52 -0
  534. package/dist/expressions/lang/merge.js.map +1 -0
  535. package/dist/expressions/lang/prefix.cjs +91 -0
  536. package/dist/expressions/lang/prefix.cjs.map +1 -0
  537. package/dist/expressions/lang/prefix.d.ts +36 -0
  538. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  539. package/dist/expressions/lang/prefix.js +91 -0
  540. package/dist/expressions/lang/prefix.js.map +1 -0
  541. package/dist/expressions/lang/spec.d.ts +13 -0
  542. package/dist/expressions/lang/spec.d.ts.map +1 -0
  543. package/dist/expressions/lang/theme.cjs +97 -0
  544. package/dist/expressions/lang/theme.cjs.map +1 -0
  545. package/dist/expressions/lang/theme.d.ts +6 -0
  546. package/dist/expressions/lang/theme.d.ts.map +1 -0
  547. package/dist/expressions/lang/theme.js +97 -0
  548. package/dist/expressions/lang/theme.js.map +1 -0
  549. package/dist/expressions/lang/types.d.ts +81 -0
  550. package/dist/expressions/lang/types.d.ts.map +1 -0
  551. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  552. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  553. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  554. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  555. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  556. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  557. package/dist/expressions/playground/RunControls.cjs +51 -0
  558. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  559. package/dist/expressions/playground/RunControls.d.ts +7 -0
  560. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  561. package/dist/expressions/playground/RunControls.js +51 -0
  562. package/dist/expressions/playground/RunControls.js.map +1 -0
  563. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  564. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  565. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  566. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  567. package/dist/expressions/playground/VerticalSplit.js +109 -0
  568. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  569. package/dist/expressions/playground/api.cjs +49 -0
  570. package/dist/expressions/playground/api.cjs.map +1 -0
  571. package/dist/expressions/playground/api.d.ts +53 -0
  572. package/dist/expressions/playground/api.d.ts.map +1 -0
  573. package/dist/expressions/playground/api.js +49 -0
  574. package/dist/expressions/playground/api.js.map +1 -0
  575. package/dist/expressions/playground/languages.cjs +88 -0
  576. package/dist/expressions/playground/languages.cjs.map +1 -0
  577. package/dist/expressions/playground/languages.d.ts +43 -0
  578. package/dist/expressions/playground/languages.d.ts.map +1 -0
  579. package/dist/expressions/playground/languages.js +88 -0
  580. package/dist/expressions/playground/languages.js.map +1 -0
  581. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  582. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  583. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  584. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  585. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  586. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  587. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  588. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  589. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  590. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  591. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  592. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  593. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  594. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  595. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  596. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  597. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  598. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  599. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  600. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  601. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  602. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  603. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  604. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  605. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  606. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  607. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  608. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  609. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  610. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  611. package/dist/expressions/playground/runAction.cjs +12 -0
  612. package/dist/expressions/playground/runAction.cjs.map +1 -0
  613. package/dist/expressions/playground/runAction.d.ts +15 -0
  614. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  615. package/dist/expressions/playground/runAction.js +12 -0
  616. package/dist/expressions/playground/runAction.js.map +1 -0
  617. package/dist/expressions/playground/runShortcut.cjs +9 -0
  618. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  619. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  620. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  621. package/dist/expressions/playground/runShortcut.js +9 -0
  622. package/dist/expressions/playground/runShortcut.js.map +1 -0
  623. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  624. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  625. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  626. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  627. package/dist/expressions/playground/useEditorTheme.js +23 -0
  628. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  629. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  630. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  631. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  632. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  633. package/dist/expressions/playground/useEvaluator.js +72 -0
  634. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  635. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  636. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  637. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  638. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  639. package/dist/expressions/playground/useParsedInput.js +22 -0
  640. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  641. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  642. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  643. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  644. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  645. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  646. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  647. package/dist/expressions/playground.cjs +18 -0
  648. package/dist/expressions/playground.cjs.map +1 -0
  649. package/dist/expressions/playground.d.ts +18 -0
  650. package/dist/expressions/playground.d.ts.map +1 -0
  651. package/dist/expressions/playground.js +18 -0
  652. package/dist/expressions/playground.js.map +1 -0
  653. package/dist/expressions.cjs +28 -0
  654. package/dist/expressions.cjs.map +1 -0
  655. package/dist/expressions.d.ts +10 -0
  656. package/dist/expressions.d.ts.map +1 -0
  657. package/dist/expressions.js +28 -0
  658. package/dist/expressions.js.map +1 -0
  659. package/dist/hooks/density-provider.d.ts +1 -1
  660. package/dist/hooks/theme-provider.d.ts +1 -1
  661. package/dist/hooks/use-density.d.ts +1 -1
  662. package/dist/hooks/use-resource-clock.cjs +14 -0
  663. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  664. package/dist/hooks/use-resource-clock.d.ts +2 -0
  665. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  666. package/dist/hooks/use-resource-clock.js +14 -0
  667. package/dist/hooks/use-resource-clock.js.map +1 -0
  668. package/dist/hooks/use-task-run.cjs +25 -18
  669. package/dist/hooks/use-task-run.cjs.map +1 -1
  670. package/dist/hooks/use-task-run.d.ts.map +1 -1
  671. package/dist/hooks/use-task-run.js +26 -19
  672. package/dist/hooks/use-task-run.js.map +1 -1
  673. package/dist/hooks/use-theme.d.ts +1 -1
  674. package/dist/icons/registry.d.ts +1 -1
  675. package/dist/icons/types.d.ts +1 -1
  676. package/dist/index.cjs +14 -0
  677. package/dist/index.cjs.map +1 -1
  678. package/dist/index.js +14 -0
  679. package/dist/index.js.map +1 -1
  680. package/dist/layout/AppShell.d.ts +1 -1
  681. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  682. package/dist/layout/AppSidebar.d.ts +1 -1
  683. package/dist/layout/Panel.d.ts +1 -1
  684. package/dist/layout/PanelFrame.d.ts +1 -1
  685. package/dist/layout/Section.d.ts +1 -1
  686. package/dist/layout/SplitPane.d.ts +1 -1
  687. package/dist/layout/Tabs.d.ts +1 -1
  688. package/dist/layout/Workspace.d.ts +1 -1
  689. package/dist/layout/Workspace.model.d.ts +1 -1
  690. package/dist/lib/combobox-values.d.ts +1 -1
  691. package/dist/monaco/MonacoEditor.cjs +3 -3
  692. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  693. package/dist/monaco/MonacoEditor.js +2 -2
  694. package/dist/monaco/MonacoEditor.js.map +1 -1
  695. package/dist/monaco/types.d.ts +1 -1
  696. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  697. package/dist/overlay/CellActions.d.ts +1 -1
  698. package/dist/overlay/CommandPalette.d.ts +2 -2
  699. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  700. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  701. package/dist/overlay/DropdownMenu.d.ts +1 -1
  702. package/dist/overlay/HoverCard.d.ts +1 -1
  703. package/dist/overlay/Modal.d.ts +2 -2
  704. package/dist/overlay/Toast.d.ts +1 -1
  705. package/dist/overlay/TourCard.d.ts +1 -1
  706. package/dist/overlay/TourProvider.d.ts +1 -1
  707. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  708. package/dist/overlay/toast-context.d.ts +2 -2
  709. package/dist/overlay/tour-context.d.ts +1 -1
  710. package/dist/overlay/tour-types.d.ts +1 -1
  711. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  712. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  713. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  714. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  715. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  716. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  717. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  718. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  719. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  720. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  721. package/dist/rpc/EndpointList.d.ts +1 -1
  722. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  723. package/dist/rpc/OperationCatalog.d.ts +1 -1
  724. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  725. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  726. package/dist/rpc/OperationResultView.d.ts +1 -1
  727. package/dist/rpc/RouterProvider.d.ts +1 -1
  728. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  729. package/dist/rpc/formMetadata.d.ts +1 -1
  730. package/dist/rpc/router.d.ts +1 -1
  731. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  732. package/dist/styles.css +1 -1
  733. package/package.json +21 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-filter.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-filter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,GACN,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAqDV"}
@@ -0,0 +1,49 @@
1
+ import { isPlainObject } from "../lib/collections.js";
2
+ import { effectiveProperties, isOpenStringMap, schemaRendersAsObject } from "./json-schema-form-resolve.js";
3
+ function matchesFieldFilter({
4
+ key,
5
+ prop,
6
+ filter,
7
+ value
8
+ }) {
9
+ var _a, _b;
10
+ const query = filter.trim().toLowerCase();
11
+ if (!query || key.toLowerCase().includes(query) || ((_a = prop.title) == null ? void 0 : _a.toLowerCase().includes(query)))
12
+ return true;
13
+ if (prop.format === "password") return false;
14
+ if (Array.isArray(value)) {
15
+ return value.some(
16
+ (item) => matchesFieldFilter({
17
+ key: "",
18
+ prop: prop.items ?? {},
19
+ filter,
20
+ value: item
21
+ })
22
+ );
23
+ }
24
+ if (isPlainObject(value)) {
25
+ const { properties } = effectiveProperties(prop, value);
26
+ const openMap = isOpenStringMap(prop) || schemaRendersAsObject(prop) && !prop.properties && Object.keys(properties).length === 0;
27
+ const keys = /* @__PURE__ */ new Set([...Object.keys(properties), ...Object.keys(value)]);
28
+ return [...keys].some((childKey) => {
29
+ var _a2;
30
+ const child = properties[childKey] ?? ((_a2 = Object.entries(prop.patternProperties ?? {}).find(
31
+ ([pattern]) => new RegExp(pattern).test(childKey)
32
+ )) == null ? void 0 : _a2[1]) ?? (isPlainObject(prop.additionalProperties) ? prop.additionalProperties : openMap ? { type: "string" } : void 0);
33
+ return child !== void 0 && matchesFieldFilter({
34
+ key: childKey,
35
+ prop: child,
36
+ filter,
37
+ value: value[childKey]
38
+ });
39
+ });
40
+ }
41
+ if (value === null || value === void 0) return false;
42
+ const text = String(value).toLowerCase();
43
+ const label = (_b = prop["x-enum-labels"]) == null ? void 0 : _b[String(value)];
44
+ return text.includes(query) || Boolean(label == null ? void 0 : label.toLowerCase().includes(query));
45
+ }
46
+ export {
47
+ matchesFieldFilter
48
+ };
49
+ //# sourceMappingURL=json-schema-form-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-filter.js","sources":["../../src/components/json-schema-form-filter.ts"],"sourcesContent":["import { isPlainObject } from \"../lib/collections\";\nimport {\n effectiveProperties,\n isOpenStringMap,\n schemaRendersAsObject,\n} from \"./json-schema-form-resolve\";\nimport type {\n JsonSchemaObject,\n JsonSchemaProperty,\n} from \"./json-schema-form-types\";\n\nexport function matchesFieldFilter({\n key,\n prop,\n filter,\n value,\n}: {\n key: string;\n prop: JsonSchemaProperty;\n filter: string;\n value?: unknown;\n}): boolean {\n const query = filter.trim().toLowerCase();\n if (\n !query ||\n key.toLowerCase().includes(query) ||\n prop.title?.toLowerCase().includes(query)\n )\n return true;\n if (prop.format === \"password\") return false;\n if (Array.isArray(value)) {\n return value.some((item) =>\n matchesFieldFilter({\n key: \"\",\n prop: prop.items ?? {},\n filter,\n value: item,\n }),\n );\n }\n if (isPlainObject(value)) {\n const { properties } = effectiveProperties(prop as JsonSchemaObject, value);\n const openMap =\n isOpenStringMap(prop) ||\n (schemaRendersAsObject(prop) &&\n !prop.properties &&\n Object.keys(properties).length === 0);\n const keys = new Set([...Object.keys(properties), ...Object.keys(value)]);\n return [...keys].some((childKey) => {\n const child =\n properties[childKey] ??\n Object.entries(prop.patternProperties ?? {}).find(([pattern]) =>\n new RegExp(pattern).test(childKey),\n )?.[1] ??\n (isPlainObject(prop.additionalProperties)\n ? prop.additionalProperties\n : openMap\n ? { type: \"string\" }\n : undefined);\n return (\n child !== undefined &&\n matchesFieldFilter({\n key: childKey,\n prop: child,\n filter,\n value: value[childKey],\n })\n );\n });\n }\n if (value === null || value === undefined) return false;\n const text = String(value).toLowerCase();\n const label = prop[\"x-enum-labels\"]?.[String(value)];\n return text.includes(query) || Boolean(label?.toLowerCase().includes(query));\n}\n"],"names":["_a"],"mappings":";;AAWO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKY;;AACV,QAAM,QAAQ,OAAO,KAAA,EAAO,YAAA;AAC5B,MACE,CAAC,SACD,IAAI,YAAA,EAAc,SAAS,KAAK,OAChC,UAAK,UAAL,mBAAY,cAAc,SAAS;AAEnC,WAAO;AACT,MAAI,KAAK,WAAW,WAAY,QAAO;AACvC,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM;AAAA,MAAK,CAAC,SACjB,mBAAmB;AAAA,QACjB,KAAK;AAAA,QACL,MAAM,KAAK,SAAS,CAAA;AAAA,QACpB;AAAA,QACA,OAAO;AAAA,MAAA,CACR;AAAA,IAAA;AAAA,EAEL;AACA,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,WAAA,IAAe,oBAAoB,MAA0B,KAAK;AAC1E,UAAM,UACJ,gBAAgB,IAAI,KACnB,sBAAsB,IAAI,KACzB,CAAC,KAAK,cACN,OAAO,KAAK,UAAU,EAAE,WAAW;AACvC,UAAM,OAAO,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAK,UAAU,GAAG,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC;AACxE,WAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,aAAa;;AAClC,YAAM,QACJ,WAAW,QAAQ,OACnBA,MAAA,OAAO,QAAQ,KAAK,qBAAqB,CAAA,CAAE,EAAE;AAAA,QAAK,CAAC,CAAC,OAAO,MACzD,IAAI,OAAO,OAAO,EAAE,KAAK,QAAQ;AAAA,MAAA,MADnC,gBAAAA,IAEI,QACH,cAAc,KAAK,oBAAoB,IACpC,KAAK,uBACL,UACE,EAAE,MAAM,aACR;AACR,aACE,UAAU,UACV,mBAAmB;AAAA,QACjB,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,OAAO,MAAM,QAAQ;AAAA,MAAA,CACtB;AAAA,IAEL,CAAC;AAAA,EACH;AACA,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,OAAO,OAAO,KAAK,EAAE,YAAA;AAC3B,QAAM,SAAQ,UAAK,eAAe,MAApB,mBAAwB,OAAO,KAAK;AAClD,SAAO,KAAK,SAAS,KAAK,KAAK,QAAQ,+BAAO,cAAc,SAAS,MAAM;AAC7E;"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- require("react");
4
+ const react = require("react");
5
+ const propertiesContext = require("../data/properties-context.cjs");
5
6
  const utils = require("../lib/utils.cjs");
6
7
  const Icon = require("../data/Icon.cjs");
7
8
  const HoverCard = require("../overlay/HoverCard.cjs");
@@ -17,6 +18,20 @@ function FieldsGrid({
17
18
  className,
18
19
  children
19
20
  }) {
21
+ const propertiesParent = react.useContext(propertiesContext.PropertiesContext);
22
+ if (layout.mode === "properties") {
23
+ return /* @__PURE__ */ jsxRuntime.jsx(
24
+ "div",
25
+ {
26
+ className: utils.cn(
27
+ "min-w-0 overflow-hidden rounded-md border border-border",
28
+ propertiesParent && "col-span-full grid grid-cols-subgrid rounded-none border-0",
29
+ className
30
+ ),
31
+ children
32
+ }
33
+ );
34
+ }
20
35
  if (layout.mode === "inline") {
21
36
  const labelMaxWidth = layout.labelMaxWidth ?? "40ch";
22
37
  const valueMaxWidth = layout.valueMaxWidth ?? "600px";
@@ -24,7 +39,9 @@ function FieldsGrid({
24
39
  "div",
25
40
  {
26
41
  className: utils.cn("grid", jsonSchemaFormSize.inlineRowGapClass[size], className),
27
- style: { gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})` },
42
+ style: {
43
+ gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})`
44
+ },
28
45
  children
29
46
  }
30
47
  );
@@ -65,7 +82,16 @@ function FieldWrapper({
65
82
  }) {
66
83
  if (layout.mode === "inline") {
67
84
  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 }),
85
+ /* @__PURE__ */ jsxRuntime.jsx(
86
+ "div",
87
+ {
88
+ className: utils.cn(
89
+ "flex min-w-0 items-center",
90
+ jsonSchemaFormSize.controlMinHeightClass[size]
91
+ ),
92
+ children: label
93
+ }
94
+ ),
69
95
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: value }),
70
96
  helper && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-start-2 text-xs text-muted-foreground", children: helper }),
71
97
  error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-start-2 text-xs text-destructive", children: error })
@@ -95,10 +121,27 @@ function FieldLabel({
95
121
  "label",
96
122
  {
97
123
  htmlFor: fieldId,
98
- className: utils.cn("flex min-w-0 items-center gap-2 font-medium", jsonSchemaFormSize.labelSizeClass[size], field.labelClassName),
124
+ className: utils.cn(
125
+ "flex min-w-0 items-center gap-2 font-medium",
126
+ jsonSchemaFormSize.labelSizeClass[size],
127
+ field.labelClassName
128
+ ),
99
129
  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 }),
130
+ /* @__PURE__ */ jsxRuntime.jsx(
131
+ Icon.LabelIcon,
132
+ {
133
+ icon: field.labelIcon,
134
+ className: "shrink-0 text-[15px] text-muted-foreground"
135
+ }
136
+ ),
137
+ /* @__PURE__ */ jsxRuntime.jsx(
138
+ "span",
139
+ {
140
+ className: "truncate",
141
+ title: field.label !== field.key ? field.key : void 0,
142
+ children: field.label
143
+ }
144
+ ),
102
145
  field.required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
103
146
  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
147
  helpDisplay === "hover" && field.helper && /* @__PURE__ */ jsxRuntime.jsx(HelpHint, { label: field.label, helper: field.helper })
@@ -136,17 +179,41 @@ function ObjectSection({
136
179
  children
137
180
  }) {
138
181
  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
- ] });
182
+ return /* @__PURE__ */ jsxRuntime.jsxs(
183
+ "div",
184
+ {
185
+ className: utils.cn(
186
+ "col-span-full flex min-w-0 max-w-full flex-col",
187
+ jsonSchemaFormSize.fieldInnerGapClass[size]
188
+ ),
189
+ children: [
190
+ /* @__PURE__ */ jsxRuntime.jsxs(
191
+ "div",
192
+ {
193
+ className: utils.cn(
194
+ "flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold",
195
+ jsonSchemaFormSize.labelSizeClass[size]
196
+ ),
197
+ children: [
198
+ /* @__PURE__ */ jsxRuntime.jsx(
199
+ Icon.LabelIcon,
200
+ {
201
+ icon: labelIcon,
202
+ className: "shrink-0 text-[15px] text-muted-foreground"
203
+ }
204
+ ),
205
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: label }),
206
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
207
+ 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 }),
208
+ hoverHelp && helper && /* @__PURE__ */ jsxRuntime.jsx(HelpHint, { label, helper })
209
+ ]
210
+ }
211
+ ),
212
+ helper && !hoverHelp && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "min-w-0 break-words text-xs text-muted-foreground", children: helper }),
213
+ children
214
+ ]
215
+ }
216
+ );
150
217
  }
151
218
  exports.FieldLabel = FieldLabel;
152
219
  exports.FieldWrapper = FieldWrapper;
@@ -1 +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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"}
1
+ {"version":3,"file":"json-schema-form-layout.cjs","sources":["../../src/components/json-schema-form-layout.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { PropertiesContext } from \"../data/properties-context\";\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 const propertiesParent = useContext(PropertiesContext);\n if (layout.mode === \"properties\") {\n return (\n <div\n className={cn(\n \"min-w-0 overflow-hidden rounded-md border border-border\",\n propertiesParent &&\n \"col-span-full grid grid-cols-subgrid rounded-none border-0\",\n className,\n )}\n >\n {children}\n </div>\n );\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={{\n gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})`,\n }}\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 (\n <div className={cn(\"grid\", stackedRowGapClass[size], className)}>\n {children}\n </div>\n );\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\n className={cn(\n \"flex min-w-0 items-center\",\n controlMinHeightClass[size],\n )}\n >\n {label}\n </div>\n <div className=\"min-w-0\">{value}</div>\n {helper && (\n <p className=\"col-start-2 text-xs text-muted-foreground\">{helper}</p>\n )}\n {error && (\n <p className=\"col-start-2 text-xs text-destructive\">{error}</p>\n )}\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(\n \"flex min-w-0 items-center gap-2 font-medium\",\n labelSizeClass[size],\n field.labelClassName,\n )}\n >\n <LabelIcon\n icon={field.labelIcon}\n className=\"shrink-0 text-[15px] text-muted-foreground\"\n />\n <span\n className=\"truncate\"\n title={field.label !== field.key ? field.key : undefined}\n >\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\n className={cn(\n \"col-span-full flex min-w-0 max-w-full flex-col\",\n fieldInnerGapClass[size],\n )}\n >\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold\",\n labelSizeClass[size],\n )}\n >\n <LabelIcon\n icon={labelIcon}\n className=\"shrink-0 text-[15px] text-muted-foreground\"\n />\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\">\n {helper}\n </p>\n )}\n {children}\n </div>\n );\n}\n"],"names":["useContext","PropertiesContext","jsx","cn","inlineRowGapClass","stackedRowGapClass","DEFAULT_COLUMN_MIN_WIDTH","jsxs","controlMinHeightClass","labelSizeClass","LabelIcon","HoverCard","Icon","UiQuestion","fieldInnerGapClass"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from '../../../../node_modules/@types/react/index.d.ts';
1
+ import { ReactNode } from 'react';
2
2
  import { LabelIconSpec } from '../data/Icon';
3
3
  import { FieldControl, FormLayout, GridColumns, HelpDisplay } from './json-schema-form-types';
4
4
  import { FormSize } from './json-schema-form-size';
@@ -1 +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,+BAqCA;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,+BAsBA;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,+BAqBA;AAKD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+BAkB5E;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,+BAqBA"}
1
+ {"version":3,"file":"json-schema-form-layout.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,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,+BA0DA;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,+BAiCA;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,+BA+BA;AAKD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+BAkB5E;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,+BAoCA"}
@@ -1,5 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import "react";
2
+ import { useContext } from "react";
3
+ import { PropertiesContext } from "../data/properties-context.js";
3
4
  import { cn } from "../lib/utils.js";
4
5
  import { LabelIcon, Icon } from "../data/Icon.js";
5
6
  import { HoverCard } from "../overlay/HoverCard.js";
@@ -15,6 +16,20 @@ function FieldsGrid({
15
16
  className,
16
17
  children
17
18
  }) {
19
+ const propertiesParent = useContext(PropertiesContext);
20
+ if (layout.mode === "properties") {
21
+ return /* @__PURE__ */ jsx(
22
+ "div",
23
+ {
24
+ className: cn(
25
+ "min-w-0 overflow-hidden rounded-md border border-border",
26
+ propertiesParent && "col-span-full grid grid-cols-subgrid rounded-none border-0",
27
+ className
28
+ ),
29
+ children
30
+ }
31
+ );
32
+ }
18
33
  if (layout.mode === "inline") {
19
34
  const labelMaxWidth = layout.labelMaxWidth ?? "40ch";
20
35
  const valueMaxWidth = layout.valueMaxWidth ?? "600px";
@@ -22,7 +37,9 @@ function FieldsGrid({
22
37
  "div",
23
38
  {
24
39
  className: cn("grid", inlineRowGapClass[size], className),
25
- style: { gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})` },
40
+ style: {
41
+ gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})`
42
+ },
26
43
  children
27
44
  }
28
45
  );
@@ -63,7 +80,16 @@ function FieldWrapper({
63
80
  }) {
64
81
  if (layout.mode === "inline") {
65
82
  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 }),
83
+ /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ className: cn(
87
+ "flex min-w-0 items-center",
88
+ controlMinHeightClass[size]
89
+ ),
90
+ children: label
91
+ }
92
+ ),
67
93
  /* @__PURE__ */ jsx("div", { className: "min-w-0", children: value }),
68
94
  helper && /* @__PURE__ */ jsx("p", { className: "col-start-2 text-xs text-muted-foreground", children: helper }),
69
95
  error && /* @__PURE__ */ jsx("p", { className: "col-start-2 text-xs text-destructive", children: error })
@@ -93,10 +119,27 @@ function FieldLabel({
93
119
  "label",
94
120
  {
95
121
  htmlFor: fieldId,
96
- className: cn("flex min-w-0 items-center gap-2 font-medium", labelSizeClass[size], field.labelClassName),
122
+ className: cn(
123
+ "flex min-w-0 items-center gap-2 font-medium",
124
+ labelSizeClass[size],
125
+ field.labelClassName
126
+ ),
97
127
  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 }),
128
+ /* @__PURE__ */ jsx(
129
+ LabelIcon,
130
+ {
131
+ icon: field.labelIcon,
132
+ className: "shrink-0 text-[15px] text-muted-foreground"
133
+ }
134
+ ),
135
+ /* @__PURE__ */ jsx(
136
+ "span",
137
+ {
138
+ className: "truncate",
139
+ title: field.label !== field.key ? field.key : void 0,
140
+ children: field.label
141
+ }
142
+ ),
100
143
  field.required && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
101
144
  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
145
  helpDisplay === "hover" && field.helper && /* @__PURE__ */ jsx(HelpHint, { label: field.label, helper: field.helper })
@@ -134,17 +177,41 @@ function ObjectSection({
134
177
  children
135
178
  }) {
136
179
  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
- ] });
180
+ return /* @__PURE__ */ jsxs(
181
+ "div",
182
+ {
183
+ className: cn(
184
+ "col-span-full flex min-w-0 max-w-full flex-col",
185
+ fieldInnerGapClass[size]
186
+ ),
187
+ children: [
188
+ /* @__PURE__ */ jsxs(
189
+ "div",
190
+ {
191
+ className: cn(
192
+ "flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold",
193
+ labelSizeClass[size]
194
+ ),
195
+ children: [
196
+ /* @__PURE__ */ jsx(
197
+ LabelIcon,
198
+ {
199
+ icon: labelIcon,
200
+ className: "shrink-0 text-[15px] text-muted-foreground"
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: label }),
204
+ required && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-destructive", children: "*" }),
205
+ 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 }),
206
+ hoverHelp && helper && /* @__PURE__ */ jsx(HelpHint, { label, helper })
207
+ ]
208
+ }
209
+ ),
210
+ helper && !hoverHelp && /* @__PURE__ */ jsx("p", { className: "min-w-0 break-words text-xs text-muted-foreground", children: helper }),
211
+ children
212
+ ]
213
+ }
214
+ );
148
215
  }
149
216
  export {
150
217
  FieldLabel,
@@ -1 +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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"}
1
+ {"version":3,"file":"json-schema-form-layout.js","sources":["../../src/components/json-schema-form-layout.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { PropertiesContext } from \"../data/properties-context\";\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 const propertiesParent = useContext(PropertiesContext);\n if (layout.mode === \"properties\") {\n return (\n <div\n className={cn(\n \"min-w-0 overflow-hidden rounded-md border border-border\",\n propertiesParent &&\n \"col-span-full grid grid-cols-subgrid rounded-none border-0\",\n className,\n )}\n >\n {children}\n </div>\n );\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={{\n gridTemplateColumns: `fit-content(${labelMaxWidth}) minmax(0, ${valueMaxWidth})`,\n }}\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 (\n <div className={cn(\"grid\", stackedRowGapClass[size], className)}>\n {children}\n </div>\n );\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\n className={cn(\n \"flex min-w-0 items-center\",\n controlMinHeightClass[size],\n )}\n >\n {label}\n </div>\n <div className=\"min-w-0\">{value}</div>\n {helper && (\n <p className=\"col-start-2 text-xs text-muted-foreground\">{helper}</p>\n )}\n {error && (\n <p className=\"col-start-2 text-xs text-destructive\">{error}</p>\n )}\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(\n \"flex min-w-0 items-center gap-2 font-medium\",\n labelSizeClass[size],\n field.labelClassName,\n )}\n >\n <LabelIcon\n icon={field.labelIcon}\n className=\"shrink-0 text-[15px] text-muted-foreground\"\n />\n <span\n className=\"truncate\"\n title={field.label !== field.key ? field.key : undefined}\n >\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\n className={cn(\n \"col-span-full flex min-w-0 max-w-full flex-col\",\n fieldInnerGapClass[size],\n )}\n >\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 border-b border-border pb-1 font-semibold\",\n labelSizeClass[size],\n )}\n >\n <LabelIcon\n icon={labelIcon}\n className=\"shrink-0 text-[15px] text-muted-foreground\"\n />\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\">\n {helper}\n </p>\n )}\n {children}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -6,12 +6,14 @@ const Icon = require("../data/Icon.cjs");
6
6
  const button = require("./button.cjs");
7
7
  const InputField = require("./InputField.cjs");
8
8
  const ListMenu = require("./ListMenu.cjs");
9
+ const utils = require("../lib/utils.cjs");
9
10
  const UiClose = require("../icons/components/UiClose.cjs");
10
11
  const UiAdd = require("../icons/components/UiAdd.cjs");
11
12
  function CompactListArray({
12
13
  field,
13
14
  fieldId,
14
- readOnly
15
+ readOnly,
16
+ presentation = false
15
17
  }) {
16
18
  const [draft, setDraft] = react.useState("");
17
19
  const rawItems = Array.isArray(field.value) ? field.value : [];
@@ -35,8 +37,11 @@ function CompactListArray({
35
37
  {
36
38
  role: "list",
37
39
  "aria-label": field.label,
38
- className: "overflow-hidden rounded-md border border-input bg-background",
39
- "data-jsf-input": true,
40
+ className: utils.cn(
41
+ "overflow-hidden",
42
+ !presentation && "rounded-md border border-input bg-background"
43
+ ),
44
+ "data-jsf-input": presentation ? void 0 : true,
40
45
  children: [
41
46
  items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
42
47
  ListMenu.ListMenuItem,
@@ -51,7 +56,11 @@ function CompactListArray({
51
56
  id: `${fieldId}-${index}`,
52
57
  "aria-label": `${field.label} ${index + 1}`,
53
58
  value: item,
54
- onChange: (next) => field.onChange(items.map((value, itemIndex) => itemIndex === index ? next : value)),
59
+ onChange: (next) => field.onChange(
60
+ items.map(
61
+ (value, itemIndex) => itemIndex === index ? next : value
62
+ )
63
+ ),
55
64
  className: "h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0",
56
65
  inputClassName: "font-mono text-xs",
57
66
  suffix: /* @__PURE__ */ jsxRuntime.jsx(
@@ -62,7 +71,9 @@ function CompactListArray({
62
71
  size: "icon",
63
72
  className: "size-6 p-0 text-muted-foreground hover:text-foreground",
64
73
  "aria-label": `Remove ${item}`,
65
- onClick: () => field.onChange(items.filter((_, itemIndex) => itemIndex !== index)),
74
+ onClick: () => field.onChange(
75
+ items.filter((_, itemIndex) => itemIndex !== index)
76
+ ),
66
77
  children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiClose.UiClose, className: "size-3.5" })
67
78
  }
68
79
  )
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-list-array.cjs","sources":["../../src/components/json-schema-form-list-array.tsx"],"sourcesContent":["import { useState, type KeyboardEvent } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport { Button } from \"./button\";\nimport { InputField } from \"./InputField\";\nimport { ListMenu, ListMenuItem } from \"./ListMenu\";\nimport type { FieldControl } from \"./json-schema-form-types\";\n\nexport function CompactListArray({\n field,\n fieldId,\n readOnly,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n}) {\n const [draft, setDraft] = useState(\"\");\n const rawItems = Array.isArray(field.value) ? field.value : [];\n if (rawItems.some((item) => typeof item !== \"string\")) {\n throw new Error(`${field.key} compact list received a non-string value`);\n }\n const items = rawItems as string[];\n\n const addDraft = () => {\n const next = draft.trim();\n if (!next) return;\n field.onChange([...items, next]);\n setDraft(\"\");\n };\n\n const addOnEnter = (event: KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n addDraft();\n };\n\n return (\n <ListMenu\n role=\"list\"\n aria-label={field.label}\n className=\"overflow-hidden rounded-md border border-input bg-background\"\n data-jsf-input\n >\n {items.map((item, index) => (\n <ListMenuItem\n key={`${item}-${index}`}\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0\"\n >\n {readOnly ? (\n <span className=\"block truncate py-1 font-mono text-foreground\">{item}</span>\n ) : (\n <InputField\n id={`${fieldId}-${index}`}\n aria-label={`${field.label} ${index + 1}`}\n value={item}\n onChange={(next) =>\n field.onChange(items.map((value, itemIndex) => (itemIndex === index ? next : value)))\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6 p-0 text-muted-foreground hover:text-foreground\"\n aria-label={`Remove ${item}`}\n onClick={() => field.onChange(items.filter((_, itemIndex) => itemIndex !== index))}\n >\n <Icon icon={UiClose} className=\"size-3.5\" />\n </Button>\n }\n />\n )}\n </ListMenuItem>\n ))}\n {!readOnly && (\n <ListMenuItem\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0 bg-muted/20\"\n >\n <InputField\n id={fieldId}\n aria-label={`Add ${field.label}`}\n value={draft}\n onChange={setDraft}\n onKeyDown={addOnEnter}\n prefix={<Icon icon={UiAdd} className=\"size-3.5 text-muted-foreground\" />}\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n disabled={!draft.trim()}\n onClick={addDraft}\n >\n Add\n </Button>\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n />\n </ListMenuItem>\n )}\n </ListMenu>\n );\n}\n"],"names":["useState","jsxs","ListMenu","jsx","ListMenuItem","InputField","Button","Icon","UiClose","UiAdd"],"mappings":"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"}
1
+ {"version":3,"file":"json-schema-form-list-array.cjs","sources":["../../src/components/json-schema-form-list-array.tsx"],"sourcesContent":["import { useState, type KeyboardEvent } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport { Button } from \"./button\";\nimport { InputField } from \"./InputField\";\nimport { ListMenu, ListMenuItem } from \"./ListMenu\";\nimport { cn } from \"../lib/utils\";\nimport type { FieldControl } from \"./json-schema-form-types\";\n\nexport function CompactListArray({\n field,\n fieldId,\n readOnly,\n presentation = false,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n presentation?: boolean;\n}) {\n const [draft, setDraft] = useState(\"\");\n const rawItems = Array.isArray(field.value) ? field.value : [];\n if (rawItems.some((item) => typeof item !== \"string\")) {\n throw new Error(`${field.key} compact list received a non-string value`);\n }\n const items = rawItems as string[];\n\n const addDraft = () => {\n const next = draft.trim();\n if (!next) return;\n field.onChange([...items, next]);\n setDraft(\"\");\n };\n\n const addOnEnter = (\n event: KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n addDraft();\n };\n\n return (\n <ListMenu\n role=\"list\"\n aria-label={field.label}\n className={cn(\n \"overflow-hidden\",\n !presentation && \"rounded-md border border-input bg-background\",\n )}\n data-jsf-input={presentation ? undefined : true}\n >\n {items.map((item, index) => (\n <ListMenuItem\n key={`${item}-${index}`}\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0\"\n >\n {readOnly ? (\n <span className=\"block truncate py-1 font-mono text-foreground\">\n {item}\n </span>\n ) : (\n <InputField\n id={`${fieldId}-${index}`}\n aria-label={`${field.label} ${index + 1}`}\n value={item}\n onChange={(next) =>\n field.onChange(\n items.map((value, itemIndex) =>\n itemIndex === index ? next : value,\n ),\n )\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6 p-0 text-muted-foreground hover:text-foreground\"\n aria-label={`Remove ${item}`}\n onClick={() =>\n field.onChange(\n items.filter((_, itemIndex) => itemIndex !== index),\n )\n }\n >\n <Icon icon={UiClose} className=\"size-3.5\" />\n </Button>\n }\n />\n )}\n </ListMenuItem>\n ))}\n {!readOnly && (\n <ListMenuItem\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0 bg-muted/20\"\n >\n <InputField\n id={fieldId}\n aria-label={`Add ${field.label}`}\n value={draft}\n onChange={setDraft}\n onKeyDown={addOnEnter}\n prefix={\n <Icon icon={UiAdd} className=\"size-3.5 text-muted-foreground\" />\n }\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n disabled={!draft.trim()}\n onClick={addDraft}\n >\n Add\n </Button>\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n />\n </ListMenuItem>\n )}\n </ListMenu>\n );\n}\n"],"names":["useState","jsxs","ListMenu","cn","jsx","ListMenuItem","InputField","Button","Icon","UiClose","UiAdd"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { FieldControl } from './json-schema-form-types';
2
- export declare function CompactListArray({ field, fieldId, readOnly, }: {
2
+ export declare function CompactListArray({ field, fieldId, readOnly, presentation, }: {
3
3
  field: FieldControl;
4
4
  fieldId: string;
5
5
  readOnly: boolean;
6
+ presentation?: boolean;
6
7
  }): import("react").JSX.Element;
7
8
  //# sourceMappingURL=json-schema-form-list-array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-list-array.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-list-array.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,+BAiGA"}
1
+ {"version":3,"file":"json-schema-form-list-array.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-list-array.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,YAAoB,GACrB,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,+BAkHA"}