@flanksource/clicky-ui 0.3.33 → 0.3.35

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 (729) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +3 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +3 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.cjs +9 -8
  7. package/dist/comments/CommentCard.cjs.map +1 -1
  8. package/dist/comments/CommentCard.d.ts +1 -1
  9. package/dist/comments/CommentCard.d.ts.map +1 -1
  10. package/dist/comments/CommentCard.js +2 -1
  11. package/dist/comments/CommentCard.js.map +1 -1
  12. package/dist/comments/CommentCardParts.cjs +2 -1
  13. package/dist/comments/CommentCardParts.cjs.map +1 -1
  14. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  15. package/dist/comments/CommentCardParts.js +2 -1
  16. package/dist/comments/CommentCardParts.js.map +1 -1
  17. package/dist/comments/CommentProvider.d.ts +1 -1
  18. package/dist/comments/CommentSidePanel.cjs +3 -2
  19. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  20. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  21. package/dist/comments/CommentSidePanel.js +2 -1
  22. package/dist/comments/CommentSidePanel.js.map +1 -1
  23. package/dist/comments/CommentThread.d.ts +1 -1
  24. package/dist/comments/CommentThreadList.d.ts +1 -1
  25. package/dist/comments/MentionTextarea.d.ts +1 -1
  26. package/dist/comments/comment-context.d.ts +4 -4
  27. package/dist/comments/comment-fixtures.d.ts +1 -1
  28. package/dist/comments/comment-types.d.ts +1 -1
  29. package/dist/comments/comment-utils.cjs +0 -27
  30. package/dist/comments/comment-utils.cjs.map +1 -1
  31. package/dist/comments/comment-utils.d.ts +1 -7
  32. package/dist/comments/comment-utils.d.ts.map +1 -1
  33. package/dist/comments/comment-utils.js +0 -27
  34. package/dist/comments/comment-utils.js.map +1 -1
  35. package/dist/comments.cjs +4 -3
  36. package/dist/comments.cjs.map +1 -1
  37. package/dist/comments.d.ts +1 -0
  38. package/dist/comments.d.ts.map +1 -1
  39. package/dist/comments.js +2 -1
  40. package/dist/comments.js.map +1 -1
  41. package/dist/components/AccordionList.d.ts +1 -1
  42. package/dist/components/ComboboxControl.d.ts +1 -1
  43. package/dist/components/ComboboxMenu.d.ts +2 -2
  44. package/dist/components/ComboboxTags.cjs +41 -11
  45. package/dist/components/ComboboxTags.cjs.map +1 -1
  46. package/dist/components/ComboboxTags.d.ts +6 -0
  47. package/dist/components/ComboboxTags.d.ts.map +1 -1
  48. package/dist/components/ComboboxTags.js +41 -11
  49. package/dist/components/ComboboxTags.js.map +1 -1
  50. package/dist/components/DateField.d.ts +3 -3
  51. package/dist/components/DatePicker.d.ts +3 -3
  52. package/dist/components/DateTimePicker.d.ts +3 -3
  53. package/dist/components/ErrorWrapper.d.ts +2 -2
  54. package/dist/components/Field.d.ts +1 -1
  55. package/dist/components/FilterBar.d.ts +1 -1
  56. package/dist/components/FormLookupProvider.d.ts +1 -1
  57. package/dist/components/FormatOptionsDropdown.d.ts +1 -1
  58. package/dist/components/IconButton.d.ts +3 -3
  59. package/dist/components/InputField.d.ts +2 -2
  60. package/dist/components/ItemActions.d.ts +1 -1
  61. package/dist/components/JsonSchemaForm.cjs +17 -36
  62. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  63. package/dist/components/JsonSchemaForm.d.ts +1 -1
  64. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  65. package/dist/components/JsonSchemaForm.js +17 -36
  66. package/dist/components/JsonSchemaForm.js.map +1 -1
  67. package/dist/components/ListMenu.d.ts +1 -1
  68. package/dist/components/MultiSelect.d.ts +1 -1
  69. package/dist/components/RangeSlider.cjs +15 -1
  70. package/dist/components/RangeSlider.cjs.map +1 -1
  71. package/dist/components/RangeSlider.d.ts.map +1 -1
  72. package/dist/components/RangeSlider.js +15 -1
  73. package/dist/components/RangeSlider.js.map +1 -1
  74. package/dist/components/SearchInput.d.ts +1 -1
  75. package/dist/components/SegmentedControl.d.ts +1 -1
  76. package/dist/components/SplitButton.d.ts +1 -1
  77. package/dist/components/Switch.d.ts +1 -1
  78. package/dist/components/TreePickerField.cjs +11 -2
  79. package/dist/components/TreePickerField.cjs.map +1 -1
  80. package/dist/components/TreePickerField.d.ts +13 -4
  81. package/dist/components/TreePickerField.d.ts.map +1 -1
  82. package/dist/components/TreePickerField.js +11 -2
  83. package/dist/components/TreePickerField.js.map +1 -1
  84. package/dist/components/UnitStepControls.d.ts +1 -1
  85. package/dist/components/button.d.ts +3 -3
  86. package/dist/components/combobox-types.d.ts +1 -1
  87. package/dist/components/density-switcher.d.ts +1 -1
  88. package/dist/components/filter-bar-context.d.ts +1 -1
  89. package/dist/components/filter-bar-field-utils.d.ts +2 -2
  90. package/dist/components/form-lookup-context.d.ts +1 -1
  91. package/dist/components/icon-menu-picker.d.ts +1 -1
  92. package/dist/components/json-schema-form-accordion-array.cjs +44 -21
  93. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  94. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  95. package/dist/components/json-schema-form-accordion-array.js +47 -24
  96. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  97. package/dist/components/json-schema-form-array.cjs +53 -30
  98. package/dist/components/json-schema-form-array.cjs.map +1 -1
  99. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  100. package/dist/components/json-schema-form-array.js +54 -31
  101. package/dist/components/json-schema-form-array.js.map +1 -1
  102. package/dist/components/json-schema-form-cards-array.cjs +32 -22
  103. package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
  104. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  105. package/dist/components/json-schema-form-cards-array.js +33 -23
  106. package/dist/components/json-schema-form-cards-array.js.map +1 -1
  107. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
  108. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
  109. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  110. package/dist/components/json-schema-form-errors.cjs +5 -1
  111. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  112. package/dist/components/json-schema-form-errors.d.ts +2 -1
  113. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  114. package/dist/components/json-schema-form-errors.js +6 -2
  115. package/dist/components/json-schema-form-errors.js.map +1 -1
  116. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  117. package/dist/components/json-schema-form-filter-input.cjs +50 -0
  118. package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
  119. package/dist/components/json-schema-form-filter-input.d.ts +5 -0
  120. package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
  121. package/dist/components/json-schema-form-filter-input.js +50 -0
  122. package/dist/components/json-schema-form-filter-input.js.map +1 -0
  123. package/dist/components/json-schema-form-filter.cjs +49 -0
  124. package/dist/components/json-schema-form-filter.cjs.map +1 -0
  125. package/dist/components/json-schema-form-filter.d.ts +8 -0
  126. package/dist/components/json-schema-form-filter.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-filter.js +49 -0
  128. package/dist/components/json-schema-form-filter.js.map +1 -0
  129. package/dist/components/json-schema-form-layout.cjs +84 -17
  130. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  131. package/dist/components/json-schema-form-layout.d.ts +1 -1
  132. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  133. package/dist/components/json-schema-form-layout.js +84 -17
  134. package/dist/components/json-schema-form-layout.js.map +1 -1
  135. package/dist/components/json-schema-form-list-array.cjs +16 -5
  136. package/dist/components/json-schema-form-list-array.cjs.map +1 -1
  137. package/dist/components/json-schema-form-list-array.d.ts +2 -1
  138. package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
  139. package/dist/components/json-schema-form-list-array.js +16 -5
  140. package/dist/components/json-schema-form-list-array.js.map +1 -1
  141. package/dist/components/json-schema-form-object.cjs +239 -85
  142. package/dist/components/json-schema-form-object.cjs.map +1 -1
  143. package/dist/components/json-schema-form-object.d.ts +2 -2
  144. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  145. package/dist/components/json-schema-form-object.js +241 -87
  146. package/dist/components/json-schema-form-object.js.map +1 -1
  147. package/dist/components/json-schema-form-preferences.cjs +1 -1
  148. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  149. package/dist/components/json-schema-form-preferences.d.ts +1 -1
  150. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  151. package/dist/components/json-schema-form-preferences.js +1 -1
  152. package/dist/components/json-schema-form-preferences.js.map +1 -1
  153. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
  154. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
  155. package/dist/components/json-schema-form-properties-size.cjs +19 -0
  156. package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
  157. package/dist/components/json-schema-form-properties-size.d.ts +4 -0
  158. package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
  159. package/dist/components/json-schema-form-properties-size.js +19 -0
  160. package/dist/components/json-schema-form-properties-size.js.map +1 -0
  161. package/dist/components/json-schema-form-properties.cjs +305 -0
  162. package/dist/components/json-schema-form-properties.cjs.map +1 -0
  163. package/dist/components/json-schema-form-properties.d.ts +20 -0
  164. package/dist/components/json-schema-form-properties.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
  166. package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
  167. package/dist/components/json-schema-form-properties.js +305 -0
  168. package/dist/components/json-schema-form-properties.js.map +1 -0
  169. package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
  170. package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
  171. package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
  172. package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
  173. package/dist/components/json-schema-form-property-actions-context.js +6 -0
  174. package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
  175. package/dist/components/json-schema-form-property-collection.cjs +31 -0
  176. package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
  177. package/dist/components/json-schema-form-property-collection.d.ts +6 -0
  178. package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
  179. package/dist/components/json-schema-form-property-collection.js +31 -0
  180. package/dist/components/json-schema-form-property-collection.js.map +1 -0
  181. package/dist/components/json-schema-form-property-draft.cjs +45 -0
  182. package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
  183. package/dist/components/json-schema-form-property-draft.d.ts +8 -0
  184. package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
  185. package/dist/components/json-schema-form-property-draft.js +45 -0
  186. package/dist/components/json-schema-form-property-draft.js.map +1 -0
  187. package/dist/components/json-schema-form-property-preview.cjs +68 -0
  188. package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
  189. package/dist/components/json-schema-form-property-preview.d.ts +7 -0
  190. package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
  191. package/dist/components/json-schema-form-property-preview.js +68 -0
  192. package/dist/components/json-schema-form-property-preview.js.map +1 -0
  193. package/dist/components/json-schema-form-property-selection.cjs +89 -0
  194. package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
  195. package/dist/components/json-schema-form-property-selection.d.ts +6 -0
  196. package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
  197. package/dist/components/json-schema-form-property-selection.js +89 -0
  198. package/dist/components/json-schema-form-property-selection.js.map +1 -0
  199. package/dist/components/json-schema-form-render.cjs +41 -4
  200. package/dist/components/json-schema-form-render.cjs.map +1 -1
  201. package/dist/components/json-schema-form-render.d.ts +1 -1
  202. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  203. package/dist/components/json-schema-form-render.js +42 -5
  204. package/dist/components/json-schema-form-render.js.map +1 -1
  205. package/dist/components/json-schema-form-resolve.cjs +2 -0
  206. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  207. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  208. package/dist/components/json-schema-form-resolve.js +2 -0
  209. package/dist/components/json-schema-form-resolve.js.map +1 -1
  210. package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
  211. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
  212. package/dist/components/json-schema-form-table-array.cjs +82 -51
  213. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  214. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  215. package/dist/components/json-schema-form-table-array.js +84 -53
  216. package/dist/components/json-schema-form-table-array.js.map +1 -1
  217. package/dist/components/json-schema-form-template-menu.d.ts +1 -1
  218. package/dist/components/json-schema-form-template.d.ts +1 -1
  219. package/dist/components/json-schema-form-types.d.ts +7 -179
  220. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  221. package/dist/components/json-schema-form-utils.cjs +10 -9
  222. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  223. package/dist/components/json-schema-form-utils.d.ts +11 -1
  224. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  225. package/dist/components/json-schema-form-utils.js +10 -9
  226. package/dist/components/json-schema-form-utils.js.map +1 -1
  227. package/dist/components/loading.d.ts +4 -4
  228. package/dist/components/mdx-editor-callout.d.ts +1 -1
  229. package/dist/components/mdx-editor-options.d.ts +1 -1
  230. package/dist/components/select.d.ts +3 -3
  231. package/dist/components/theme-switcher.d.ts +1 -1
  232. package/dist/components/use-list-menu-selection.d.ts +1 -1
  233. package/dist/components/useComboboxLayout.d.ts +1 -1
  234. package/dist/components/workload-picker-utils.d.ts +1 -1
  235. package/dist/data/Avatar.d.ts +1 -1
  236. package/dist/data/AvatarBadge.d.ts +1 -1
  237. package/dist/data/Badge.d.ts +1 -1
  238. package/dist/data/Callout.d.ts +1 -1
  239. package/dist/data/DataTable.cjs +575 -435
  240. package/dist/data/DataTable.cjs.map +1 -1
  241. package/dist/data/DataTable.d.ts +21 -13
  242. package/dist/data/DataTable.d.ts.map +1 -1
  243. package/dist/data/DataTable.grouping.d.ts +1 -1
  244. package/dist/data/DataTable.js +575 -435
  245. package/dist/data/DataTable.js.map +1 -1
  246. package/dist/data/ExecutionTree.d.ts +1 -1
  247. package/dist/data/FilterPill.d.ts +1 -1
  248. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
  249. package/dist/data/FixtureEditor/types.d.ts +1 -1
  250. package/dist/data/Gauge.d.ts +1 -1
  251. package/dist/data/GaugeHoverCard.d.ts +1 -1
  252. package/dist/data/Icon.d.ts +1 -1
  253. package/dist/data/KeyValueList.d.ts +1 -1
  254. package/dist/data/MarkdownEditor.d.ts +1 -1
  255. package/dist/data/MatrixTable.d.ts +1 -1
  256. package/dist/data/ObjectGraph.d.ts +1 -1
  257. package/dist/data/ProgressBars.d.ts +1 -1
  258. package/dist/data/Properties.cjs +86 -35
  259. package/dist/data/Properties.cjs.map +1 -1
  260. package/dist/data/Properties.d.ts +2 -2
  261. package/dist/data/Properties.d.ts.map +1 -1
  262. package/dist/data/Properties.js +87 -36
  263. package/dist/data/Properties.js.map +1 -1
  264. package/dist/data/RadialGauge.d.ts +1 -1
  265. package/dist/data/SchemaViewer.d.ts +1 -1
  266. package/dist/data/SortableHeader.d.ts +1 -1
  267. package/dist/data/StatStrip.d.ts +1 -1
  268. package/dist/data/StatusBreakdown.d.ts +1 -1
  269. package/dist/data/TabButton.d.ts +1 -1
  270. package/dist/data/TaskManager.cjs +9 -17
  271. package/dist/data/TaskManager.cjs.map +1 -1
  272. package/dist/data/TaskManager.d.ts.map +1 -1
  273. package/dist/data/TaskManager.js +9 -17
  274. package/dist/data/TaskManager.js.map +1 -1
  275. package/dist/data/TaskManagerButton.cjs +17 -34
  276. package/dist/data/TaskManagerButton.cjs.map +1 -1
  277. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  278. package/dist/data/TaskManagerButton.js +18 -35
  279. package/dist/data/TaskManagerButton.js.map +1 -1
  280. package/dist/data/TaskProcessDetails.cjs +5 -26
  281. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  282. package/dist/data/TaskProcessDetails.d.ts +2 -1
  283. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  284. package/dist/data/TaskProcessDetails.js +5 -26
  285. package/dist/data/TaskProcessDetails.js.map +1 -1
  286. package/dist/data/TaskProgress.cjs +24 -15
  287. package/dist/data/TaskProgress.cjs.map +1 -1
  288. package/dist/data/TaskProgress.d.ts +2 -1
  289. package/dist/data/TaskProgress.d.ts.map +1 -1
  290. package/dist/data/TaskProgress.js +24 -15
  291. package/dist/data/TaskProgress.js.map +1 -1
  292. package/dist/data/TaskResourceReadings.cjs +42 -0
  293. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  294. package/dist/data/TaskResourceReadings.d.ts +6 -0
  295. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  296. package/dist/data/TaskResourceReadings.js +42 -0
  297. package/dist/data/TaskResourceReadings.js.map +1 -0
  298. package/dist/data/TaskSnapshot.cjs.map +1 -1
  299. package/dist/data/TaskSnapshot.d.ts +14 -1
  300. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  301. package/dist/data/TaskSnapshot.js.map +1 -1
  302. package/dist/data/Timeline.d.ts +1 -1
  303. package/dist/data/Tree.d.ts +1 -1
  304. package/dist/data/TreeGroupHeader.d.ts +1 -1
  305. package/dist/data/TreeNode.d.ts +1 -1
  306. package/dist/data/Version.d.ts +3 -3
  307. package/dist/data/ai/ChatWindow.cjs +22 -12
  308. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  309. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  310. package/dist/data/ai/ChatWindow.js +22 -12
  311. package/dist/data/ai/ChatWindow.js.map +1 -1
  312. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  313. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  314. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  315. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  316. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  317. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  318. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  319. package/dist/data/ai/ChatWindowManager.js +2 -0
  320. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  321. package/dist/data/ai/PolicyTree.d.ts +1 -1
  322. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  323. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  324. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  325. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  326. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  327. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  328. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  329. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  330. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  331. package/dist/data/ai/SessionInspector.approvals.cjs +147 -0
  332. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  333. package/dist/data/ai/SessionInspector.approvals.d.ts +21 -0
  334. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  335. package/dist/data/ai/SessionInspector.approvals.js +147 -0
  336. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  337. package/dist/data/ai/SessionInspector.cjs +21 -8
  338. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  339. package/dist/data/ai/SessionInspector.d.ts +6 -2
  340. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  341. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  342. package/dist/data/ai/SessionInspector.js +21 -8
  343. package/dist/data/ai/SessionInspector.js.map +1 -1
  344. package/dist/data/ai/SessionInspector.panel-parts.cjs +47 -0
  345. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  346. package/dist/data/ai/SessionInspector.panel-parts.d.ts +20 -0
  347. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  348. package/dist/data/ai/SessionInspector.panel-parts.js +47 -0
  349. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  350. package/dist/data/ai/SessionInspector.panels.cjs +40 -99
  351. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  352. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  353. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  354. package/dist/data/ai/SessionInspector.panels.js +12 -71
  355. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  356. package/dist/data/ai/SessionViewer.d.ts +1 -1
  357. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  358. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  359. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  360. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  361. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  362. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  363. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  364. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  365. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  366. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  367. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  368. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  369. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  371. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  372. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  373. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  374. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  375. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  376. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  377. package/dist/data/ai/chat-window-context.cjs +1 -0
  378. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  379. package/dist/data/ai/chat-window-context.d.ts +13 -5
  380. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  381. package/dist/data/ai/chat-window-context.js +1 -0
  382. package/dist/data/ai/chat-window-context.js.map +1 -1
  383. package/dist/data/ai/index.d.ts +2 -1
  384. package/dist/data/ai/index.d.ts.map +1 -1
  385. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  386. package/dist/data/badge-variants.d.ts +2 -2
  387. package/dist/data/cache-browser/adapter.d.ts +1 -1
  388. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  389. package/dist/data/cells/EntityCell.d.ts +1 -1
  390. package/dist/data/cells/tag-utils.d.ts +1 -1
  391. package/dist/data/chat/Chat.cjs +42 -46
  392. package/dist/data/chat/Chat.cjs.map +1 -1
  393. package/dist/data/chat/Chat.d.ts +16 -5
  394. package/dist/data/chat/Chat.d.ts.map +1 -1
  395. package/dist/data/chat/Chat.js +43 -47
  396. package/dist/data/chat/Chat.js.map +1 -1
  397. package/dist/data/chat/ModelSelector.d.ts +1 -1
  398. package/dist/data/chat/PromptInput.cjs +13 -0
  399. package/dist/data/chat/PromptInput.cjs.map +1 -1
  400. package/dist/data/chat/PromptInput.d.ts +8 -2
  401. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  402. package/dist/data/chat/PromptInput.js +14 -1
  403. package/dist/data/chat/PromptInput.js.map +1 -1
  404. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  405. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  406. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  407. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  408. package/dist/data/chat/tool-render/context.d.ts +1 -1
  409. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  410. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  411. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  412. package/dist/data/chat/types.d.ts +1 -1
  413. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  414. package/dist/data/data-table-server-filters.d.ts +1 -1
  415. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  416. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  417. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  418. package/dist/data/git/GitChangeList.d.ts +1 -1
  419. package/dist/data/icon-fallback.d.ts +1 -1
  420. package/dist/data/properties-context.cjs +6 -0
  421. package/dist/data/properties-context.cjs.map +1 -0
  422. package/dist/data/properties-context.d.ts +7 -0
  423. package/dist/data/properties-context.d.ts.map +1 -0
  424. package/dist/data/properties-context.js +6 -0
  425. package/dist/data/properties-context.js.map +1 -0
  426. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  427. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  428. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  429. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  430. package/dist/data/runtime/RuntimeBar.js +7 -3
  431. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  432. package/dist/data/task-copy.cjs +1 -1
  433. package/dist/data/task-copy.cjs.map +1 -1
  434. package/dist/data/task-copy.js +1 -1
  435. package/dist/data/task-copy.js.map +1 -1
  436. package/dist/data/task-resource-summary.cjs +30 -0
  437. package/dist/data/task-resource-summary.cjs.map +1 -0
  438. package/dist/data/task-resource-summary.d.ts +15 -0
  439. package/dist/data/task-resource-summary.d.ts.map +1 -0
  440. package/dist/data/task-resource-summary.js +30 -0
  441. package/dist/data/task-resource-summary.js.map +1 -0
  442. package/dist/data/task-status.cjs +8 -2
  443. package/dist/data/task-status.cjs.map +1 -1
  444. package/dist/data/task-status.d.ts +3 -0
  445. package/dist/data/task-status.d.ts.map +1 -1
  446. package/dist/data/task-status.js +8 -2
  447. package/dist/data/task-status.js.map +1 -1
  448. package/dist/data/task-work-progress.cjs +24 -0
  449. package/dist/data/task-work-progress.cjs.map +1 -0
  450. package/dist/data/task-work-progress.d.ts +21 -0
  451. package/dist/data/task-work-progress.d.ts.map +1 -0
  452. package/dist/data/task-work-progress.js +24 -0
  453. package/dist/data/task-work-progress.js.map +1 -0
  454. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  455. package/dist/data/test-runner/adapter.d.ts +1 -1
  456. package/dist/data/test-runner/context.d.ts +1 -1
  457. package/dist/data/use-data-table-virtual.cjs +73 -0
  458. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  459. package/dist/data/use-data-table-virtual.d.ts +40 -0
  460. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  461. package/dist/data/use-data-table-virtual.js +73 -0
  462. package/dist/data/use-data-table-virtual.js.map +1 -0
  463. package/dist/data/verification/VerificationResults.d.ts +1 -1
  464. package/dist/data/version-info.cjs +3 -3
  465. package/dist/data/version-info.js +3 -3
  466. package/dist/expressions/lang/attributes.cjs +56 -0
  467. package/dist/expressions/lang/attributes.cjs.map +1 -0
  468. package/dist/expressions/lang/attributes.d.ts +22 -0
  469. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  470. package/dist/expressions/lang/attributes.js +56 -0
  471. package/dist/expressions/lang/attributes.js.map +1 -0
  472. package/dist/expressions/lang/completion.cjs +164 -0
  473. package/dist/expressions/lang/completion.cjs.map +1 -0
  474. package/dist/expressions/lang/completion.d.ts +29 -0
  475. package/dist/expressions/lang/completion.d.ts.map +1 -0
  476. package/dist/expressions/lang/completion.js +164 -0
  477. package/dist/expressions/lang/completion.js.map +1 -0
  478. package/dist/expressions/lang/environment.cjs +115 -0
  479. package/dist/expressions/lang/environment.cjs.map +1 -0
  480. package/dist/expressions/lang/environment.d.ts +54 -0
  481. package/dist/expressions/lang/environment.d.ts.map +1 -0
  482. package/dist/expressions/lang/environment.js +115 -0
  483. package/dist/expressions/lang/environment.js.map +1 -0
  484. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  485. package/dist/expressions/lang/generated/index.cjs +18 -0
  486. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  487. package/dist/expressions/lang/generated/index.d.ts +9 -0
  488. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  489. package/dist/expressions/lang/generated/index.js +18 -0
  490. package/dist/expressions/lang/generated/index.js.map +1 -0
  491. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  492. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  493. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  494. package/dist/expressions/lang/generated/languages.json.js +18 -0
  495. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  496. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  497. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  498. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  499. package/dist/expressions/lang/generated/spec.json.js +12 -0
  500. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  501. package/dist/expressions/lang/hover.cjs +106 -0
  502. package/dist/expressions/lang/hover.cjs.map +1 -0
  503. package/dist/expressions/lang/hover.d.ts +54 -0
  504. package/dist/expressions/lang/hover.d.ts.map +1 -0
  505. package/dist/expressions/lang/hover.js +106 -0
  506. package/dist/expressions/lang/hover.js.map +1 -0
  507. package/dist/expressions/lang/index.cjs +87 -0
  508. package/dist/expressions/lang/index.cjs.map +1 -0
  509. package/dist/expressions/lang/index.d.ts +65 -0
  510. package/dist/expressions/lang/index.d.ts.map +1 -0
  511. package/dist/expressions/lang/index.js +90 -0
  512. package/dist/expressions/lang/index.js.map +1 -0
  513. package/dist/expressions/lang/merge.cjs +52 -0
  514. package/dist/expressions/lang/merge.cjs.map +1 -0
  515. package/dist/expressions/lang/merge.d.ts +12 -0
  516. package/dist/expressions/lang/merge.d.ts.map +1 -0
  517. package/dist/expressions/lang/merge.js +52 -0
  518. package/dist/expressions/lang/merge.js.map +1 -0
  519. package/dist/expressions/lang/prefix.cjs +91 -0
  520. package/dist/expressions/lang/prefix.cjs.map +1 -0
  521. package/dist/expressions/lang/prefix.d.ts +36 -0
  522. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  523. package/dist/expressions/lang/prefix.js +91 -0
  524. package/dist/expressions/lang/prefix.js.map +1 -0
  525. package/dist/expressions/lang/spec.d.ts +13 -0
  526. package/dist/expressions/lang/spec.d.ts.map +1 -0
  527. package/dist/expressions/lang/theme.cjs +97 -0
  528. package/dist/expressions/lang/theme.cjs.map +1 -0
  529. package/dist/expressions/lang/theme.d.ts +6 -0
  530. package/dist/expressions/lang/theme.d.ts.map +1 -0
  531. package/dist/expressions/lang/theme.js +97 -0
  532. package/dist/expressions/lang/theme.js.map +1 -0
  533. package/dist/expressions/lang/types.d.ts +81 -0
  534. package/dist/expressions/lang/types.d.ts.map +1 -0
  535. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  536. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  537. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  538. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  539. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  540. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  541. package/dist/expressions/playground/RunControls.cjs +51 -0
  542. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  543. package/dist/expressions/playground/RunControls.d.ts +7 -0
  544. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  545. package/dist/expressions/playground/RunControls.js +51 -0
  546. package/dist/expressions/playground/RunControls.js.map +1 -0
  547. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  548. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  549. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  550. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  551. package/dist/expressions/playground/VerticalSplit.js +109 -0
  552. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  553. package/dist/expressions/playground/api.cjs +49 -0
  554. package/dist/expressions/playground/api.cjs.map +1 -0
  555. package/dist/expressions/playground/api.d.ts +53 -0
  556. package/dist/expressions/playground/api.d.ts.map +1 -0
  557. package/dist/expressions/playground/api.js +49 -0
  558. package/dist/expressions/playground/api.js.map +1 -0
  559. package/dist/expressions/playground/languages.cjs +88 -0
  560. package/dist/expressions/playground/languages.cjs.map +1 -0
  561. package/dist/expressions/playground/languages.d.ts +43 -0
  562. package/dist/expressions/playground/languages.d.ts.map +1 -0
  563. package/dist/expressions/playground/languages.js +88 -0
  564. package/dist/expressions/playground/languages.js.map +1 -0
  565. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  566. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  567. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  568. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  569. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  570. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  571. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  572. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  573. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  574. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  575. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  576. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  577. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  578. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  579. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  580. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  581. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  582. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  583. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  584. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  585. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  586. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  587. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  588. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  589. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  590. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  591. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  592. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  593. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  594. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  595. package/dist/expressions/playground/runAction.cjs +12 -0
  596. package/dist/expressions/playground/runAction.cjs.map +1 -0
  597. package/dist/expressions/playground/runAction.d.ts +15 -0
  598. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  599. package/dist/expressions/playground/runAction.js +12 -0
  600. package/dist/expressions/playground/runAction.js.map +1 -0
  601. package/dist/expressions/playground/runShortcut.cjs +9 -0
  602. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  603. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  604. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  605. package/dist/expressions/playground/runShortcut.js +9 -0
  606. package/dist/expressions/playground/runShortcut.js.map +1 -0
  607. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  608. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  609. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  610. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  611. package/dist/expressions/playground/useEditorTheme.js +23 -0
  612. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  613. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  614. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  615. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  616. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  617. package/dist/expressions/playground/useEvaluator.js +72 -0
  618. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  619. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  620. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  621. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  622. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  623. package/dist/expressions/playground/useParsedInput.js +22 -0
  624. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  625. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  626. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  627. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  628. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  629. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  630. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  631. package/dist/expressions/playground.cjs +18 -0
  632. package/dist/expressions/playground.cjs.map +1 -0
  633. package/dist/expressions/playground.d.ts +18 -0
  634. package/dist/expressions/playground.d.ts.map +1 -0
  635. package/dist/expressions/playground.js +18 -0
  636. package/dist/expressions/playground.js.map +1 -0
  637. package/dist/expressions.cjs +28 -0
  638. package/dist/expressions.cjs.map +1 -0
  639. package/dist/expressions.d.ts +10 -0
  640. package/dist/expressions.d.ts.map +1 -0
  641. package/dist/expressions.js +28 -0
  642. package/dist/expressions.js.map +1 -0
  643. package/dist/hooks/density-provider.d.ts +1 -1
  644. package/dist/hooks/theme-provider.d.ts +1 -1
  645. package/dist/hooks/use-density.d.ts +1 -1
  646. package/dist/hooks/use-resource-clock.cjs +14 -0
  647. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  648. package/dist/hooks/use-resource-clock.d.ts +2 -0
  649. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  650. package/dist/hooks/use-resource-clock.js +14 -0
  651. package/dist/hooks/use-resource-clock.js.map +1 -0
  652. package/dist/hooks/use-task-run.cjs +12 -3
  653. package/dist/hooks/use-task-run.cjs.map +1 -1
  654. package/dist/hooks/use-task-run.d.ts.map +1 -1
  655. package/dist/hooks/use-task-run.js +12 -3
  656. package/dist/hooks/use-task-run.js.map +1 -1
  657. package/dist/hooks/use-theme.d.ts +1 -1
  658. package/dist/icons/registry.d.ts +1 -1
  659. package/dist/icons/types.d.ts +1 -1
  660. package/dist/index.cjs +4 -3
  661. package/dist/index.cjs.map +1 -1
  662. package/dist/index.js +2 -1
  663. package/dist/index.js.map +1 -1
  664. package/dist/layout/AppShell.d.ts +1 -1
  665. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  666. package/dist/layout/AppSidebar.d.ts +1 -1
  667. package/dist/layout/Panel.d.ts +1 -1
  668. package/dist/layout/PanelFrame.d.ts +1 -1
  669. package/dist/layout/Section.d.ts +1 -1
  670. package/dist/layout/SplitPane.d.ts +1 -1
  671. package/dist/layout/Tabs.d.ts +1 -1
  672. package/dist/layout/Workspace.d.ts +1 -1
  673. package/dist/layout/Workspace.model.d.ts +1 -1
  674. package/dist/lib/combobox-values.d.ts +1 -1
  675. package/dist/lib/comment-stage.cjs +31 -0
  676. package/dist/lib/comment-stage.cjs.map +1 -0
  677. package/dist/lib/comment-stage.d.ts +8 -0
  678. package/dist/lib/comment-stage.d.ts.map +1 -0
  679. package/dist/lib/comment-stage.js +31 -0
  680. package/dist/lib/comment-stage.js.map +1 -0
  681. package/dist/monaco/MonacoEditor.cjs +3 -3
  682. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  683. package/dist/monaco/MonacoEditor.js +2 -2
  684. package/dist/monaco/MonacoEditor.js.map +1 -1
  685. package/dist/monaco/types.d.ts +1 -1
  686. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  687. package/dist/overlay/CellActions.d.ts +1 -1
  688. package/dist/overlay/CommandPalette.d.ts +2 -2
  689. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  690. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  691. package/dist/overlay/DropdownMenu.d.ts +1 -1
  692. package/dist/overlay/HoverCard.d.ts +1 -1
  693. package/dist/overlay/Modal.d.ts +2 -2
  694. package/dist/overlay/Toast.d.ts +1 -1
  695. package/dist/overlay/TourCard.d.ts +1 -1
  696. package/dist/overlay/TourProvider.d.ts +1 -1
  697. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  698. package/dist/overlay/toast-context.d.ts +2 -2
  699. package/dist/overlay/tour-context.d.ts +1 -1
  700. package/dist/overlay/tour-types.d.ts +1 -1
  701. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  702. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  703. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  704. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  705. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  706. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  707. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  708. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  709. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  710. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  711. package/dist/rpc/EndpointList.d.ts +1 -1
  712. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  713. package/dist/rpc/OperationCatalog.d.ts +1 -1
  714. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  715. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  716. package/dist/rpc/OperationResultView.d.ts +1 -1
  717. package/dist/rpc/RouterProvider.d.ts +1 -1
  718. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  719. package/dist/rpc/formMetadata.d.ts +1 -1
  720. package/dist/rpc/router.d.ts +1 -1
  721. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  722. package/dist/styles.css +1 -1
  723. package/dist/utils.cjs +4 -0
  724. package/dist/utils.cjs.map +1 -1
  725. package/dist/utils.d.ts +1 -0
  726. package/dist/utils.d.ts.map +1 -1
  727. package/dist/utils.js +4 -0
  728. package/dist/utils.js.map +1 -1
  729. package/package.json +21 -2
@@ -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"}
@@ -4,12 +4,14 @@ import { Icon } from "../data/Icon.js";
4
4
  import { Button } from "./button.js";
5
5
  import { InputField } from "./InputField.js";
6
6
  import { ListMenu, ListMenuItem } from "./ListMenu.js";
7
+ import { cn } from "../lib/utils.js";
7
8
  import { UiClose } from "../icons/components/UiClose.js";
8
9
  import { UiAdd } from "../icons/components/UiAdd.js";
9
10
  function CompactListArray({
10
11
  field,
11
12
  fieldId,
12
- readOnly
13
+ readOnly,
14
+ presentation = false
13
15
  }) {
14
16
  const [draft, setDraft] = useState("");
15
17
  const rawItems = Array.isArray(field.value) ? field.value : [];
@@ -33,8 +35,11 @@ function CompactListArray({
33
35
  {
34
36
  role: "list",
35
37
  "aria-label": field.label,
36
- className: "overflow-hidden rounded-md border border-input bg-background",
37
- "data-jsf-input": true,
38
+ className: cn(
39
+ "overflow-hidden",
40
+ !presentation && "rounded-md border border-input bg-background"
41
+ ),
42
+ "data-jsf-input": presentation ? void 0 : true,
38
43
  children: [
39
44
  items.map((item, index) => /* @__PURE__ */ jsx(
40
45
  ListMenuItem,
@@ -49,7 +54,11 @@ function CompactListArray({
49
54
  id: `${fieldId}-${index}`,
50
55
  "aria-label": `${field.label} ${index + 1}`,
51
56
  value: item,
52
- onChange: (next) => field.onChange(items.map((value, itemIndex) => itemIndex === index ? next : value)),
57
+ onChange: (next) => field.onChange(
58
+ items.map(
59
+ (value, itemIndex) => itemIndex === index ? next : value
60
+ )
61
+ ),
53
62
  className: "h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0",
54
63
  inputClassName: "font-mono text-xs",
55
64
  suffix: /* @__PURE__ */ jsx(
@@ -60,7 +69,9 @@ function CompactListArray({
60
69
  size: "icon",
61
70
  className: "size-6 p-0 text-muted-foreground hover:text-foreground",
62
71
  "aria-label": `Remove ${item}`,
63
- onClick: () => field.onChange(items.filter((_, itemIndex) => itemIndex !== index)),
72
+ onClick: () => field.onChange(
73
+ items.filter((_, itemIndex) => itemIndex !== index)
74
+ ),
64
75
  children: /* @__PURE__ */ jsx(Icon, { icon: UiClose, className: "size-3.5" })
65
76
  }
66
77
  )
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-list-array.js","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":[],"mappings":";;;;;;;;AAQO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,WAAW,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC5D,MAAI,SAAS,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AACrD,UAAM,IAAI,MAAM,GAAG,MAAM,GAAG,2CAA2C;AAAA,EACzE;AACA,QAAM,QAAQ;AAEd,QAAM,WAAW,MAAM;AACrB,UAAM,OAAO,MAAM,KAAA;AACnB,QAAI,CAAC,KAAM;AACX,UAAM,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC;AAC/B,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,aAAa,CAAC,UAAiE;AACnF,QAAI,MAAM,QAAQ,QAAS;AAC3B,UAAM,eAAA;AACN,aAAA;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY,MAAM;AAAA,MAClB,WAAU;AAAA,MACV,kBAAc;AAAA,MAEb,UAAA;AAAA,QAAA,MAAM,IAAI,CAAC,MAAM,UAChB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA,YAET,qBACC,oBAAC,QAAA,EAAK,WAAU,iDAAiD,gBAAK,IAEtE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI,GAAG,OAAO,IAAI,KAAK;AAAA,gBACvB,cAAY,GAAG,MAAM,KAAK,IAAI,QAAQ,CAAC;AAAA,gBACvC,OAAO;AAAA,gBACP,UAAU,CAAC,SACT,MAAM,SAAS,MAAM,IAAI,CAAC,OAAO,cAAe,cAAc,QAAQ,OAAO,KAAM,CAAC;AAAA,gBAEtF,WAAU;AAAA,gBACV,gBAAe;AAAA,gBACf,QACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,cAAY,UAAU,IAAI;AAAA,oBAC1B,SAAS,MAAM,MAAM,SAAS,MAAM,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK,CAAC;AAAA,oBAEjF,UAAA,oBAAC,MAAA,EAAK,MAAM,SAAS,WAAU,WAAA,CAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC5C;AAAA,YAAA;AAAA,UAEJ;AAAA,UA9BG,GAAG,IAAI,IAAI,KAAK;AAAA,QAAA,CAiCxB;AAAA,QACA,CAAC,YACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA,YAEV,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,cAAY,OAAO,MAAM,KAAK;AAAA,gBAC9B,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,QAAQ,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,kCAAiC;AAAA,gBACtE,QACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,UAAU,CAAC,MAAM,KAAA;AAAA,oBACjB,SAAS;AAAA,oBACV,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAIH,WAAU;AAAA,gBACV,gBAAe;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"json-schema-form-list-array.js","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":[],"mappings":";;;;;;;;;AASO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,GAKG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,WAAW,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC5D,MAAI,SAAS,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AACrD,UAAM,IAAI,MAAM,GAAG,MAAM,GAAG,2CAA2C;AAAA,EACzE;AACA,QAAM,QAAQ;AAEd,QAAM,WAAW,MAAM;AACrB,UAAM,OAAO,MAAM,KAAA;AACnB,QAAI,CAAC,KAAM;AACX,UAAM,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC;AAC/B,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,aAAa,CACjB,UACG;AACH,QAAI,MAAM,QAAQ,QAAS;AAC3B,UAAM,eAAA;AACN,aAAA;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY,MAAM;AAAA,MAClB,WAAW;AAAA,QACT;AAAA,QACA,CAAC,gBAAgB;AAAA,MAAA;AAAA,MAEnB,kBAAgB,eAAe,SAAY;AAAA,MAE1C,UAAA;AAAA,QAAA,MAAM,IAAI,CAAC,MAAM,UAChB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA,YAET,qBACC,oBAAC,QAAA,EAAK,WAAU,iDACb,gBACH,IAEA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI,GAAG,OAAO,IAAI,KAAK;AAAA,gBACvB,cAAY,GAAG,MAAM,KAAK,IAAI,QAAQ,CAAC;AAAA,gBACvC,OAAO;AAAA,gBACP,UAAU,CAAC,SACT,MAAM;AAAA,kBACJ,MAAM;AAAA,oBAAI,CAAC,OAAO,cAChB,cAAc,QAAQ,OAAO;AAAA,kBAAA;AAAA,gBAC/B;AAAA,gBAGJ,WAAU;AAAA,gBACV,gBAAe;AAAA,gBACf,QACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,cAAY,UAAU,IAAI;AAAA,oBAC1B,SAAS,MACP,MAAM;AAAA,sBACJ,MAAM,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK;AAAA,oBAAA;AAAA,oBAItD,UAAA,oBAAC,MAAA,EAAK,MAAM,SAAS,WAAU,WAAA,CAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC5C;AAAA,YAAA;AAAA,UAEJ;AAAA,UAxCG,GAAG,IAAI,IAAI,KAAK;AAAA,QAAA,CA2CxB;AAAA,QACA,CAAC,YACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA,YAEV,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,cAAY,OAAO,MAAM,KAAK;AAAA,gBAC9B,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,QACE,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,kCAAiC;AAAA,gBAEhE,QACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,UAAU,CAAC,MAAM,KAAA;AAAA,oBACjB,SAAS;AAAA,oBACV,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAIH,WAAU;AAAA,gBACV,gBAAe;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}