@flanksource/clicky-ui 0.3.10 → 0.3.11

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 (1162) hide show
  1. package/NOTICE.md +85 -0
  2. package/README.md +33 -2
  3. package/dist/ai.cjs +71 -5
  4. package/dist/ai.cjs.map +1 -1
  5. package/dist/ai.js +71 -5
  6. package/dist/ai.js.map +1 -1
  7. package/dist/chat.cjs +17 -13
  8. package/dist/chat.cjs.map +1 -1
  9. package/dist/chat.js +8 -4
  10. package/dist/clicky.d.ts +1 -1
  11. package/dist/clicky.d.ts.map +1 -1
  12. package/dist/comments/CommentCard.cjs +84 -38
  13. package/dist/comments/CommentCard.cjs.map +1 -1
  14. package/dist/comments/CommentCard.d.ts +1 -1
  15. package/dist/comments/CommentCard.d.ts.map +1 -1
  16. package/dist/comments/CommentCard.js +85 -39
  17. package/dist/comments/CommentCard.js.map +1 -1
  18. package/dist/comments/CommentComposer.cjs +21 -11
  19. package/dist/comments/CommentComposer.cjs.map +1 -1
  20. package/dist/comments/CommentComposer.d.ts.map +1 -1
  21. package/dist/comments/CommentComposer.js +21 -11
  22. package/dist/comments/CommentComposer.js.map +1 -1
  23. package/dist/comments/CommentProvider.cjs +84 -12
  24. package/dist/comments/CommentProvider.cjs.map +1 -1
  25. package/dist/comments/CommentProvider.d.ts +4 -2
  26. package/dist/comments/CommentProvider.d.ts.map +1 -1
  27. package/dist/comments/CommentProvider.js +86 -14
  28. package/dist/comments/CommentProvider.js.map +1 -1
  29. package/dist/comments/CommentSidePanel.cjs +116 -38
  30. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  31. package/dist/comments/CommentSidePanel.d.ts +2 -0
  32. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  33. package/dist/comments/CommentSidePanel.js +117 -39
  34. package/dist/comments/CommentSidePanel.js.map +1 -1
  35. package/dist/comments/CommentThread.cjs +4 -0
  36. package/dist/comments/CommentThread.cjs.map +1 -1
  37. package/dist/comments/CommentThread.d.ts +5 -1
  38. package/dist/comments/CommentThread.d.ts.map +1 -1
  39. package/dist/comments/CommentThread.js +4 -0
  40. package/dist/comments/CommentThread.js.map +1 -1
  41. package/dist/comments/CommentThreadList.cjs +17 -5
  42. package/dist/comments/CommentThreadList.cjs.map +1 -1
  43. package/dist/comments/CommentThreadList.d.ts +3 -1
  44. package/dist/comments/CommentThreadList.d.ts.map +1 -1
  45. package/dist/comments/CommentThreadList.js +18 -6
  46. package/dist/comments/CommentThreadList.js.map +1 -1
  47. package/dist/comments/comment-context.cjs +88 -0
  48. package/dist/comments/comment-context.cjs.map +1 -1
  49. package/dist/comments/comment-context.d.ts +26 -0
  50. package/dist/comments/comment-context.d.ts.map +1 -1
  51. package/dist/comments/comment-context.js +89 -1
  52. package/dist/comments/comment-context.js.map +1 -1
  53. package/dist/comments.cjs +3 -0
  54. package/dist/comments.cjs.map +1 -1
  55. package/dist/comments.d.ts +1 -1
  56. package/dist/comments.d.ts.map +1 -1
  57. package/dist/comments.js +4 -1
  58. package/dist/components/Combobox.cjs +145 -34
  59. package/dist/components/Combobox.cjs.map +1 -1
  60. package/dist/components/Combobox.d.ts +24 -1
  61. package/dist/components/Combobox.d.ts.map +1 -1
  62. package/dist/components/Combobox.js +147 -36
  63. package/dist/components/Combobox.js.map +1 -1
  64. package/dist/components/DatePicker.cjs +1 -1
  65. package/dist/components/DatePicker.cjs.map +1 -1
  66. package/dist/components/DatePicker.js +1 -1
  67. package/dist/components/DatePicker.js.map +1 -1
  68. package/dist/components/DateTimePicker.cjs +1 -1
  69. package/dist/components/DateTimePicker.cjs.map +1 -1
  70. package/dist/components/DateTimePicker.js +1 -1
  71. package/dist/components/DateTimePicker.js.map +1 -1
  72. package/dist/components/FilterBar.cjs +41 -459
  73. package/dist/components/FilterBar.cjs.map +1 -1
  74. package/dist/components/FilterBar.d.ts +4 -62
  75. package/dist/components/FilterBar.d.ts.map +1 -1
  76. package/dist/components/FilterBar.js +13 -430
  77. package/dist/components/FilterBar.js.map +1 -1
  78. package/dist/components/InputField.cjs +97 -0
  79. package/dist/components/InputField.cjs.map +1 -0
  80. package/dist/components/InputField.d.ts +42 -0
  81. package/dist/components/InputField.d.ts.map +1 -0
  82. package/dist/components/InputField.js +97 -0
  83. package/dist/components/InputField.js.map +1 -0
  84. package/dist/components/JsonSchemaForm.cjs +90 -15
  85. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  86. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  87. package/dist/components/JsonSchemaForm.js +92 -17
  88. package/dist/components/JsonSchemaForm.js.map +1 -1
  89. package/dist/components/MdxEditorField.cjs.map +1 -1
  90. package/dist/components/MdxEditorField.d.ts +1 -1
  91. package/dist/components/MdxEditorField.d.ts.map +1 -1
  92. package/dist/components/MdxEditorField.js.map +1 -1
  93. package/dist/components/MdxEditorToolbar.cjs +6 -1
  94. package/dist/components/MdxEditorToolbar.cjs.map +1 -1
  95. package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
  96. package/dist/components/MdxEditorToolbar.js +6 -1
  97. package/dist/components/MdxEditorToolbar.js.map +1 -1
  98. package/dist/components/MultiSelect.cjs +0 -1
  99. package/dist/components/MultiSelect.cjs.map +1 -1
  100. package/dist/components/MultiSelect.d.ts.map +1 -1
  101. package/dist/components/MultiSelect.js +0 -1
  102. package/dist/components/MultiSelect.js.map +1 -1
  103. package/dist/components/SearchInput.cjs +14 -43
  104. package/dist/components/SearchInput.cjs.map +1 -1
  105. package/dist/components/SearchInput.d.ts +6 -5
  106. package/dist/components/SearchInput.d.ts.map +1 -1
  107. package/dist/components/SearchInput.js +15 -44
  108. package/dist/components/SearchInput.js.map +1 -1
  109. package/dist/components/SecretKeySelector.cjs +155 -67
  110. package/dist/components/SecretKeySelector.cjs.map +1 -1
  111. package/dist/components/SecretKeySelector.d.ts +34 -16
  112. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  113. package/dist/components/SecretKeySelector.js +158 -70
  114. package/dist/components/SecretKeySelector.js.map +1 -1
  115. package/dist/components/SecretKeySelector.model.cjs +32 -0
  116. package/dist/components/SecretKeySelector.model.cjs.map +1 -0
  117. package/dist/components/SecretKeySelector.model.d.ts +4 -0
  118. package/dist/components/SecretKeySelector.model.d.ts.map +1 -0
  119. package/dist/components/SecretKeySelector.model.js +32 -0
  120. package/dist/components/SecretKeySelector.model.js.map +1 -0
  121. package/dist/components/SegmentedControl.cjs +41 -6
  122. package/dist/components/SegmentedControl.cjs.map +1 -1
  123. package/dist/components/SegmentedControl.d.ts +7 -3
  124. package/dist/components/SegmentedControl.d.ts.map +1 -1
  125. package/dist/components/SegmentedControl.js +41 -6
  126. package/dist/components/SegmentedControl.js.map +1 -1
  127. package/dist/components/filter-bar-context.cjs +10 -0
  128. package/dist/components/filter-bar-context.cjs.map +1 -0
  129. package/dist/components/filter-bar-context.d.ts +5 -0
  130. package/dist/components/filter-bar-context.d.ts.map +1 -0
  131. package/dist/components/filter-bar-context.js +10 -0
  132. package/dist/components/filter-bar-context.js.map +1 -0
  133. package/dist/components/filter-bar-field-utils.cjs +119 -0
  134. package/dist/components/filter-bar-field-utils.cjs.map +1 -0
  135. package/dist/components/filter-bar-field-utils.d.ts +21 -0
  136. package/dist/components/filter-bar-field-utils.d.ts.map +1 -0
  137. package/dist/components/filter-bar-field-utils.js +119 -0
  138. package/dist/components/filter-bar-field-utils.js.map +1 -0
  139. package/dist/components/filter-bar-multi.cjs +193 -0
  140. package/dist/components/filter-bar-multi.cjs.map +1 -0
  141. package/dist/components/filter-bar-multi.d.ts +74 -0
  142. package/dist/components/filter-bar-multi.d.ts.map +1 -0
  143. package/dist/components/filter-bar-multi.js +193 -0
  144. package/dist/components/filter-bar-multi.js.map +1 -0
  145. package/dist/components/json-schema-form-array.cjs +81 -10
  146. package/dist/components/json-schema-form-array.cjs.map +1 -1
  147. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  148. package/dist/components/json-schema-form-array.js +82 -11
  149. package/dist/components/json-schema-form-array.js.map +1 -1
  150. package/dist/components/json-schema-form-fields.cjs +156 -24
  151. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  152. package/dist/components/json-schema-form-fields.d.ts +9 -1
  153. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  154. package/dist/components/json-schema-form-fields.js +156 -24
  155. package/dist/components/json-schema-form-fields.js.map +1 -1
  156. package/dist/components/json-schema-form-object.cjs +35 -12
  157. package/dist/components/json-schema-form-object.cjs.map +1 -1
  158. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  159. package/dist/components/json-schema-form-object.js +37 -14
  160. package/dist/components/json-schema-form-object.js.map +1 -1
  161. package/dist/components/json-schema-form-render.cjs +21 -3
  162. package/dist/components/json-schema-form-render.cjs.map +1 -1
  163. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  164. package/dist/components/json-schema-form-render.js +22 -4
  165. package/dist/components/json-schema-form-render.js.map +1 -1
  166. package/dist/components/json-schema-form-resolve.cjs +123 -13
  167. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  168. package/dist/components/json-schema-form-resolve.d.ts +1 -0
  169. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  170. package/dist/components/json-schema-form-resolve.js +123 -13
  171. package/dist/components/json-schema-form-resolve.js.map +1 -1
  172. package/dist/components/json-schema-form-types.d.ts +30 -1
  173. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  174. package/dist/components/json-schema-form-utils.cjs +19 -0
  175. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  176. package/dist/components/json-schema-form-utils.d.ts +3 -0
  177. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  178. package/dist/components/json-schema-form-utils.js +19 -0
  179. package/dist/components/json-schema-form-utils.js.map +1 -1
  180. package/dist/components/loading.cjs +17 -0
  181. package/dist/components/loading.cjs.map +1 -1
  182. package/dist/components/loading.d.ts +9 -0
  183. package/dist/components/loading.d.ts.map +1 -1
  184. package/dist/components/loading.js +17 -0
  185. package/dist/components/loading.js.map +1 -1
  186. package/dist/components/mdx-editor-field-plugins.cjs +28 -4
  187. package/dist/components/mdx-editor-field-plugins.cjs.map +1 -1
  188. package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -1
  189. package/dist/components/mdx-editor-field-plugins.js +28 -4
  190. package/dist/components/mdx-editor-field-plugins.js.map +1 -1
  191. package/dist/components/mdx-editor-options.d.ts +23 -1
  192. package/dist/components/mdx-editor-options.d.ts.map +1 -1
  193. package/dist/components.cjs +13 -1
  194. package/dist/components.cjs.map +1 -1
  195. package/dist/components.d.ts +20 -16
  196. package/dist/components.d.ts.map +1 -1
  197. package/dist/components.js +14 -2
  198. package/dist/components.js.map +1 -1
  199. package/dist/data/Clicky.cjs +301 -51
  200. package/dist/data/Clicky.cjs.map +1 -1
  201. package/dist/data/Clicky.d.ts +21 -3
  202. package/dist/data/Clicky.d.ts.map +1 -1
  203. package/dist/data/Clicky.js +301 -51
  204. package/dist/data/Clicky.js.map +1 -1
  205. package/dist/data/CodeBlock.cjs +100 -20
  206. package/dist/data/CodeBlock.cjs.map +1 -1
  207. package/dist/data/CodeBlock.d.ts +18 -1
  208. package/dist/data/CodeBlock.d.ts.map +1 -1
  209. package/dist/data/CodeBlock.js +101 -21
  210. package/dist/data/CodeBlock.js.map +1 -1
  211. package/dist/data/CodeDiff.cjs +221 -0
  212. package/dist/data/CodeDiff.cjs.map +1 -0
  213. package/dist/data/CodeDiff.d.ts +24 -0
  214. package/dist/data/CodeDiff.d.ts.map +1 -0
  215. package/dist/data/CodeDiff.js +221 -0
  216. package/dist/data/CodeDiff.js.map +1 -0
  217. package/dist/data/DataTable.cjs +359 -219
  218. package/dist/data/DataTable.cjs.map +1 -1
  219. package/dist/data/DataTable.d.ts +12 -0
  220. package/dist/data/DataTable.d.ts.map +1 -1
  221. package/dist/data/DataTable.js +353 -213
  222. package/dist/data/DataTable.js.map +1 -1
  223. package/dist/data/FilterPill.cjs +43 -35
  224. package/dist/data/FilterPill.cjs.map +1 -1
  225. package/dist/data/FilterPill.d.ts +9 -1
  226. package/dist/data/FilterPill.d.ts.map +1 -1
  227. package/dist/data/FilterPill.js +43 -35
  228. package/dist/data/FilterPill.js.map +1 -1
  229. package/dist/data/FixtureEditor/FenceForm.cjs +123 -0
  230. package/dist/data/FixtureEditor/FenceForm.cjs.map +1 -0
  231. package/dist/data/FixtureEditor/FenceForm.d.ts +14 -0
  232. package/dist/data/FixtureEditor/FenceForm.d.ts.map +1 -0
  233. package/dist/data/FixtureEditor/FenceForm.js +123 -0
  234. package/dist/data/FixtureEditor/FenceForm.js.map +1 -0
  235. package/dist/data/FixtureEditor/FixtureEditor.cjs +236 -0
  236. package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -0
  237. package/dist/data/FixtureEditor/FixtureEditor.d.ts +3 -0
  238. package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -0
  239. package/dist/data/FixtureEditor/FixtureEditor.js +236 -0
  240. package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -0
  241. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs +128 -0
  242. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs.map +1 -0
  243. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +8 -0
  244. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts.map +1 -0
  245. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js +128 -0
  246. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js.map +1 -0
  247. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +148 -0
  248. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -0
  249. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +11 -0
  250. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts.map +1 -0
  251. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +148 -0
  252. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -0
  253. package/dist/data/FixtureEditor/RawFenceEditor.cjs +35 -0
  254. package/dist/data/FixtureEditor/RawFenceEditor.cjs.map +1 -0
  255. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +11 -0
  256. package/dist/data/FixtureEditor/RawFenceEditor.d.ts.map +1 -0
  257. package/dist/data/FixtureEditor/RawFenceEditor.js +35 -0
  258. package/dist/data/FixtureEditor/RawFenceEditor.js.map +1 -0
  259. package/dist/data/FixtureEditor/fixture-blocks.cjs +130 -0
  260. package/dist/data/FixtureEditor/fixture-blocks.cjs.map +1 -0
  261. package/dist/data/FixtureEditor/fixture-blocks.d.ts +26 -0
  262. package/dist/data/FixtureEditor/fixture-blocks.d.ts.map +1 -0
  263. package/dist/data/FixtureEditor/fixture-blocks.js +130 -0
  264. package/dist/data/FixtureEditor/fixture-blocks.js.map +1 -0
  265. package/dist/data/FixtureEditor/fixture-code-block-model.cjs +17 -0
  266. package/dist/data/FixtureEditor/fixture-code-block-model.cjs.map +1 -0
  267. package/dist/data/FixtureEditor/fixture-code-block-model.d.ts +3 -0
  268. package/dist/data/FixtureEditor/fixture-code-block-model.d.ts.map +1 -0
  269. package/dist/data/FixtureEditor/fixture-code-block-model.js +17 -0
  270. package/dist/data/FixtureEditor/fixture-code-block-model.js.map +1 -0
  271. package/dist/data/FixtureEditor/fixture-frontmatter.cjs +300 -0
  272. package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -0
  273. package/dist/data/FixtureEditor/fixture-frontmatter.d.ts +32 -0
  274. package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -0
  275. package/dist/data/FixtureEditor/fixture-frontmatter.js +300 -0
  276. package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -0
  277. package/dist/data/FixtureEditor/index.d.ts +5 -0
  278. package/dist/data/FixtureEditor/index.d.ts.map +1 -0
  279. package/dist/data/FixtureEditor/types.d.ts +44 -0
  280. package/dist/data/FixtureEditor/types.d.ts.map +1 -0
  281. package/dist/data/LogDetails.cjs +4 -4
  282. package/dist/data/LogDetails.cjs.map +1 -1
  283. package/dist/data/LogDetails.js +4 -4
  284. package/dist/data/LogDetails.js.map +1 -1
  285. package/dist/data/Markdown.cjs +29 -1
  286. package/dist/data/Markdown.cjs.map +1 -1
  287. package/dist/data/Markdown.d.ts +3 -2
  288. package/dist/data/Markdown.d.ts.map +1 -1
  289. package/dist/data/Markdown.js +30 -2
  290. package/dist/data/Markdown.js.map +1 -1
  291. package/dist/data/Properties.cjs +160 -40
  292. package/dist/data/Properties.cjs.map +1 -1
  293. package/dist/data/Properties.d.ts +8 -2
  294. package/dist/data/Properties.d.ts.map +1 -1
  295. package/dist/data/Properties.js +160 -40
  296. package/dist/data/Properties.js.map +1 -1
  297. package/dist/data/SchemaViewer.cjs +1 -1
  298. package/dist/data/SchemaViewer.cjs.map +1 -1
  299. package/dist/data/SchemaViewer.js +2 -2
  300. package/dist/data/SchemaViewer.js.map +1 -1
  301. package/dist/data/ai/ChatWindow.cjs +336 -18
  302. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  303. package/dist/data/ai/ChatWindow.d.ts +13 -4
  304. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  305. package/dist/data/ai/ChatWindow.js +336 -18
  306. package/dist/data/ai/ChatWindow.js.map +1 -1
  307. package/dist/data/ai/ChatWindow.test-utils.d.ts +12 -0
  308. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -0
  309. package/dist/data/ai/PolicyTree.cjs +265 -0
  310. package/dist/data/ai/PolicyTree.cjs.map +1 -0
  311. package/dist/data/ai/PolicyTree.d.ts +33 -0
  312. package/dist/data/ai/PolicyTree.d.ts.map +1 -0
  313. package/dist/data/ai/PolicyTree.js +265 -0
  314. package/dist/data/ai/PolicyTree.js.map +1 -0
  315. package/dist/data/ai/PromptPicker/PromptPicker.cjs +251 -0
  316. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -0
  317. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +31 -0
  318. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -0
  319. package/dist/data/ai/PromptPicker/PromptPicker.js +251 -0
  320. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -0
  321. package/dist/data/ai/PromptPicker/index.d.ts +4 -0
  322. package/dist/data/ai/PromptPicker/index.d.ts.map +1 -0
  323. package/dist/data/ai/PromptPicker/prompt-runtime.cjs +39 -0
  324. package/dist/data/ai/PromptPicker/prompt-runtime.cjs.map +1 -0
  325. package/dist/data/ai/PromptPicker/prompt-runtime.d.ts +9 -0
  326. package/dist/data/ai/PromptPicker/prompt-runtime.d.ts.map +1 -0
  327. package/dist/data/ai/PromptPicker/prompt-runtime.js +39 -0
  328. package/dist/data/ai/PromptPicker/prompt-runtime.js.map +1 -0
  329. package/dist/data/ai/PromptPicker/types.d.ts +25 -0
  330. package/dist/data/ai/PromptPicker/types.d.ts.map +1 -0
  331. package/dist/data/ai/PromptRunEditor/index.cjs +242 -0
  332. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -0
  333. package/dist/data/ai/PromptRunEditor/index.d.ts +42 -0
  334. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -0
  335. package/dist/data/ai/PromptRunEditor/index.js +242 -0
  336. package/dist/data/ai/PromptRunEditor/index.js.map +1 -0
  337. package/dist/data/ai/RuntimeModePicker.cjs +61 -0
  338. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -0
  339. package/dist/data/ai/RuntimeModePicker.d.ts +12 -0
  340. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -0
  341. package/dist/data/ai/RuntimeModePicker.js +61 -0
  342. package/dist/data/ai/RuntimeModePicker.js.map +1 -0
  343. package/dist/data/ai/SessionInspector.cjs +432 -0
  344. package/dist/data/ai/SessionInspector.cjs.map +1 -0
  345. package/dist/data/ai/SessionInspector.d.ts +11 -0
  346. package/dist/data/ai/SessionInspector.d.ts.map +1 -0
  347. package/dist/data/ai/SessionInspector.js +432 -0
  348. package/dist/data/ai/SessionInspector.js.map +1 -0
  349. package/dist/data/ai/SessionViewer.cjs +208 -196
  350. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  351. package/dist/data/ai/SessionViewer.d.ts +39 -3
  352. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  353. package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
  354. package/dist/data/ai/SessionViewer.grouping.cjs +44 -0
  355. package/dist/data/ai/SessionViewer.grouping.cjs.map +1 -0
  356. package/dist/data/ai/SessionViewer.grouping.d.ts +17 -0
  357. package/dist/data/ai/SessionViewer.grouping.d.ts.map +1 -0
  358. package/dist/data/ai/SessionViewer.grouping.js +44 -0
  359. package/dist/data/ai/SessionViewer.grouping.js.map +1 -0
  360. package/dist/data/ai/SessionViewer.input.cjs +219 -0
  361. package/dist/data/ai/SessionViewer.input.cjs.map +1 -0
  362. package/dist/data/ai/SessionViewer.input.d.ts +44 -0
  363. package/dist/data/ai/SessionViewer.input.d.ts.map +1 -0
  364. package/dist/data/ai/SessionViewer.input.js +219 -0
  365. package/dist/data/ai/SessionViewer.input.js.map +1 -0
  366. package/dist/data/ai/SessionViewer.js +209 -197
  367. package/dist/data/ai/SessionViewer.js.map +1 -1
  368. package/dist/data/ai/SessionViewer.model.cjs +203 -105
  369. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  370. package/dist/data/ai/SessionViewer.model.d.ts +45 -7
  371. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  372. package/dist/data/ai/SessionViewer.model.js +203 -105
  373. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  374. package/dist/data/ai/SessionViewer.rows.cjs +751 -0
  375. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -0
  376. package/dist/data/ai/SessionViewer.rows.d.ts +20 -0
  377. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -0
  378. package/dist/data/ai/SessionViewer.rows.js +751 -0
  379. package/dist/data/ai/SessionViewer.rows.js.map +1 -0
  380. package/dist/data/ai/SessionViewer.unified.d.ts +193 -0
  381. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -0
  382. package/dist/data/ai/SessionViewerMenu.cjs +57 -68
  383. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  384. package/dist/data/ai/SessionViewerMenu.d.ts +3 -3
  385. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  386. package/dist/data/ai/SessionViewerMenu.js +58 -69
  387. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  388. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs +25 -0
  389. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs.map +1 -0
  390. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +12 -0
  391. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts.map +1 -0
  392. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js +25 -0
  393. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js.map +1 -0
  394. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -0
  395. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -0
  396. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +6 -0
  397. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -0
  398. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +44 -0
  399. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -0
  400. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +137 -0
  401. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -0
  402. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +12 -0
  403. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -0
  404. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +137 -0
  405. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -0
  406. package/dist/data/ai/SpecRuntimeEditor/Footer.cjs +29 -0
  407. package/dist/data/ai/SpecRuntimeEditor/Footer.cjs.map +1 -0
  408. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +8 -0
  409. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts.map +1 -0
  410. package/dist/data/ai/SpecRuntimeEditor/Footer.js +29 -0
  411. package/dist/data/ai/SpecRuntimeEditor/Footer.js.map +1 -0
  412. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +481 -0
  413. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -0
  414. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +16 -0
  415. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -0
  416. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +481 -0
  417. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -0
  418. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +421 -0
  419. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -0
  420. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +17 -0
  421. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -0
  422. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +421 -0
  423. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -0
  424. package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts +8 -0
  425. package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts.map +1 -0
  426. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +98 -0
  427. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -0
  428. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +10 -0
  429. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -0
  430. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +98 -0
  431. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -0
  432. package/dist/data/ai/SpecRuntimeEditor/Rail.cjs +23 -0
  433. package/dist/data/ai/SpecRuntimeEditor/Rail.cjs.map +1 -0
  434. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +7 -0
  435. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts.map +1 -0
  436. package/dist/data/ai/SpecRuntimeEditor/Rail.js +23 -0
  437. package/dist/data/ai/SpecRuntimeEditor/Rail.js.map +1 -0
  438. package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +77 -0
  439. package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -0
  440. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +14 -0
  441. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -0
  442. package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +77 -0
  443. package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -0
  444. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +65 -0
  445. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -0
  446. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +12 -0
  447. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -0
  448. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +65 -0
  449. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -0
  450. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +227 -0
  451. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -0
  452. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +8 -0
  453. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -0
  454. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +227 -0
  455. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -0
  456. package/dist/data/ai/SpecRuntimeEditor/env-model.cjs +45 -0
  457. package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -0
  458. package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts +7 -0
  459. package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -0
  460. package/dist/data/ai/SpecRuntimeEditor/env-model.js +45 -0
  461. package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -0
  462. package/dist/data/ai/SpecRuntimeEditor/fields.cjs +287 -0
  463. package/dist/data/ai/SpecRuntimeEditor/fields.cjs.map +1 -0
  464. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +79 -0
  465. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -0
  466. package/dist/data/ai/SpecRuntimeEditor/fields.js +287 -0
  467. package/dist/data/ai/SpecRuntimeEditor/fields.js.map +1 -0
  468. package/dist/data/ai/SpecRuntimeEditor/index.cjs +213 -0
  469. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -0
  470. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +41 -0
  471. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -0
  472. package/dist/data/ai/SpecRuntimeEditor/index.js +213 -0
  473. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -0
  474. package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs +252 -0
  475. package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs.map +1 -0
  476. package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts +36 -0
  477. package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts.map +1 -0
  478. package/dist/data/ai/SpecRuntimeEditor/permissions-model.js +252 -0
  479. package/dist/data/ai/SpecRuntimeEditor/permissions-model.js.map +1 -0
  480. package/dist/data/ai/SpecRuntimeEditor/presets.cjs +214 -0
  481. package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -0
  482. package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +35 -0
  483. package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -0
  484. package/dist/data/ai/SpecRuntimeEditor/presets.js +214 -0
  485. package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -0
  486. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs +15 -0
  487. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -0
  488. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +13 -0
  489. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -0
  490. package/dist/data/ai/SpecRuntimeEditor/summaries.js +15 -0
  491. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -0
  492. package/dist/data/ai/SpecRuntimeEditor/types.cjs +74 -0
  493. package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -0
  494. package/dist/data/ai/SpecRuntimeEditor/types.d.ts +19 -0
  495. package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -0
  496. package/dist/data/ai/SpecRuntimeEditor/types.js +74 -0
  497. package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -0
  498. package/dist/data/ai/SpecRuntimeEditor/update.cjs +144 -0
  499. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -0
  500. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +28 -0
  501. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -0
  502. package/dist/data/ai/SpecRuntimeEditor/update.js +144 -0
  503. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -0
  504. package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs +55 -0
  505. package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs.map +1 -0
  506. package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts +9 -0
  507. package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts.map +1 -0
  508. package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js +55 -0
  509. package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js.map +1 -0
  510. package/dist/data/ai/SpecRuntimeEditor.model.cjs +398 -0
  511. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -0
  512. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +169 -0
  513. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -0
  514. package/dist/data/ai/SpecRuntimeEditor.model.js +398 -0
  515. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -0
  516. package/dist/data/ai/ToolPreferences.cjs +705 -165
  517. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  518. package/dist/data/ai/ToolPreferences.d.ts +29 -5
  519. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  520. package/dist/data/ai/ToolPreferences.js +707 -167
  521. package/dist/data/ai/ToolPreferences.js.map +1 -1
  522. package/dist/data/ai/ToolSchemaBrowser.cjs +549 -0
  523. package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -0
  524. package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -0
  525. package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -0
  526. package/dist/data/ai/ToolSchemaBrowser.js +549 -0
  527. package/dist/data/ai/ToolSchemaBrowser.js.map +1 -0
  528. package/dist/data/ai/agent-action-icons.cjs +78 -0
  529. package/dist/data/ai/agent-action-icons.cjs.map +1 -0
  530. package/dist/data/ai/agent-action-icons.d.ts +22 -0
  531. package/dist/data/ai/agent-action-icons.d.ts.map +1 -0
  532. package/dist/data/ai/agent-action-icons.js +78 -0
  533. package/dist/data/ai/agent-action-icons.js.map +1 -0
  534. package/dist/data/ai/index.d.ts +21 -6
  535. package/dist/data/ai/index.d.ts.map +1 -1
  536. package/dist/data/ai/model-capabilities.cjs +23 -0
  537. package/dist/data/ai/model-capabilities.cjs.map +1 -0
  538. package/dist/data/ai/model-capabilities.d.ts +9 -0
  539. package/dist/data/ai/model-capabilities.d.ts.map +1 -0
  540. package/dist/data/ai/model-capabilities.js +23 -0
  541. package/dist/data/ai/model-capabilities.js.map +1 -0
  542. package/dist/data/ai/runtime-mode.cjs +133 -0
  543. package/dist/data/ai/runtime-mode.cjs.map +1 -0
  544. package/dist/data/ai/runtime-mode.d.ts +31 -0
  545. package/dist/data/ai/runtime-mode.d.ts.map +1 -0
  546. package/dist/data/ai/runtime-mode.js +133 -0
  547. package/dist/data/ai/runtime-mode.js.map +1 -0
  548. package/dist/data/ai/session-categories.cjs +34 -0
  549. package/dist/data/ai/session-categories.cjs.map +1 -1
  550. package/dist/data/ai/session-categories.d.ts +2 -0
  551. package/dist/data/ai/session-categories.d.ts.map +1 -1
  552. package/dist/data/ai/session-categories.js +34 -0
  553. package/dist/data/ai/session-categories.js.map +1 -1
  554. package/dist/data/ai/session-cost.cjs +13 -0
  555. package/dist/data/ai/session-cost.cjs.map +1 -0
  556. package/dist/data/ai/session-cost.d.ts +8 -0
  557. package/dist/data/ai/session-cost.d.ts.map +1 -0
  558. package/dist/data/ai/session-cost.js +13 -0
  559. package/dist/data/ai/session-cost.js.map +1 -0
  560. package/dist/data/ai/tool-name.d.ts +10 -0
  561. package/dist/data/ai/tool-name.d.ts.map +1 -0
  562. package/dist/data/ai/use-session-scroll.cjs +96 -0
  563. package/dist/data/ai/use-session-scroll.cjs.map +1 -0
  564. package/dist/data/ai/use-session-scroll.d.ts +43 -0
  565. package/dist/data/ai/use-session-scroll.d.ts.map +1 -0
  566. package/dist/data/ai/use-session-scroll.js +96 -0
  567. package/dist/data/ai/use-session-scroll.js.map +1 -0
  568. package/dist/data/cells/TagList.cjs +4 -2
  569. package/dist/data/cells/TagList.cjs.map +1 -1
  570. package/dist/data/cells/TagList.d.ts +2 -1
  571. package/dist/data/cells/TagList.d.ts.map +1 -1
  572. package/dist/data/cells/TagList.js +4 -2
  573. package/dist/data/cells/TagList.js.map +1 -1
  574. package/dist/data/chat/Chat.cjs +49 -15
  575. package/dist/data/chat/Chat.cjs.map +1 -1
  576. package/dist/data/chat/Chat.d.ts +16 -2
  577. package/dist/data/chat/Chat.d.ts.map +1 -1
  578. package/dist/data/chat/Chat.js +49 -15
  579. package/dist/data/chat/Chat.js.map +1 -1
  580. package/dist/data/chat/ContextMeter.cjs +164 -0
  581. package/dist/data/chat/ContextMeter.cjs.map +1 -0
  582. package/dist/data/chat/ContextMeter.d.ts +50 -0
  583. package/dist/data/chat/ContextMeter.d.ts.map +1 -0
  584. package/dist/data/chat/ContextMeter.js +164 -0
  585. package/dist/data/chat/ContextMeter.js.map +1 -0
  586. package/dist/data/chat/ModelSelector.cjs +139 -10
  587. package/dist/data/chat/ModelSelector.cjs.map +1 -1
  588. package/dist/data/chat/ModelSelector.d.ts +44 -3
  589. package/dist/data/chat/ModelSelector.d.ts.map +1 -1
  590. package/dist/data/chat/ModelSelector.js +141 -12
  591. package/dist/data/chat/ModelSelector.js.map +1 -1
  592. package/dist/data/chat/clickyOperationsToTools.cjs +83 -69
  593. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
  594. package/dist/data/chat/clickyOperationsToTools.d.ts +3 -3
  595. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
  596. package/dist/data/chat/clickyOperationsToTools.js +83 -69
  597. package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
  598. package/dist/data/chat/effort-icons.cjs +43 -0
  599. package/dist/data/chat/effort-icons.cjs.map +1 -0
  600. package/dist/data/chat/effort-icons.d.ts +10 -0
  601. package/dist/data/chat/effort-icons.d.ts.map +1 -0
  602. package/dist/data/chat/effort-icons.js +43 -0
  603. package/dist/data/chat/effort-icons.js.map +1 -0
  604. package/dist/data/chat/index.d.ts +3 -3
  605. package/dist/data/chat/index.d.ts.map +1 -1
  606. package/dist/data/chat/provider-icons.cjs +25 -6
  607. package/dist/data/chat/provider-icons.cjs.map +1 -1
  608. package/dist/data/chat/provider-icons.d.ts +3 -5
  609. package/dist/data/chat/provider-icons.d.ts.map +1 -1
  610. package/dist/data/chat/provider-icons.js +25 -6
  611. package/dist/data/chat/provider-icons.js.map +1 -1
  612. package/dist/data/chat/types.cjs +42 -0
  613. package/dist/data/chat/types.cjs.map +1 -1
  614. package/dist/data/chat/types.d.ts +83 -19
  615. package/dist/data/chat/types.d.ts.map +1 -1
  616. package/dist/data/chat/types.js +42 -0
  617. package/dist/data/chat/types.js.map +1 -1
  618. package/dist/data/code-block-actions.cjs +101 -0
  619. package/dist/data/code-block-actions.cjs.map +1 -0
  620. package/dist/data/code-block-actions.d.ts +20 -0
  621. package/dist/data/code-block-actions.d.ts.map +1 -0
  622. package/dist/data/code-block-actions.js +101 -0
  623. package/dist/data/code-block-actions.js.map +1 -0
  624. package/dist/data/code-diff.cjs +106 -0
  625. package/dist/data/code-diff.cjs.map +1 -0
  626. package/dist/data/code-diff.d.ts +20 -0
  627. package/dist/data/code-diff.d.ts.map +1 -0
  628. package/dist/data/code-diff.js +106 -0
  629. package/dist/data/code-diff.js.map +1 -0
  630. package/dist/data/code-highlight.cjs +30 -0
  631. package/dist/data/code-highlight.cjs.map +1 -1
  632. package/dist/data/code-highlight.d.ts +8 -0
  633. package/dist/data/code-highlight.d.ts.map +1 -1
  634. package/dist/data/code-highlight.js +30 -0
  635. package/dist/data/code-highlight.js.map +1 -1
  636. package/dist/data/git/GitChangeList.cjs +410 -0
  637. package/dist/data/git/GitChangeList.cjs.map +1 -0
  638. package/dist/data/git/GitChangeList.d.ts +69 -0
  639. package/dist/data/git/GitChangeList.d.ts.map +1 -0
  640. package/dist/data/git/GitChangeList.js +410 -0
  641. package/dist/data/git/GitChangeList.js.map +1 -0
  642. package/dist/data/git/git-dates.cjs +37 -0
  643. package/dist/data/git/git-dates.cjs.map +1 -0
  644. package/dist/data/git/git-dates.d.ts +4 -0
  645. package/dist/data/git/git-dates.d.ts.map +1 -0
  646. package/dist/data/git/git-dates.js +37 -0
  647. package/dist/data/git/git-dates.js.map +1 -0
  648. package/dist/data/git/index.d.ts +3 -0
  649. package/dist/data/git/index.d.ts.map +1 -0
  650. package/dist/data/query-browser/QueryBrowser.cjs +323 -0
  651. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -0
  652. package/dist/data/query-browser/QueryBrowser.completion.cjs +99 -0
  653. package/dist/data/query-browser/QueryBrowser.completion.cjs.map +1 -0
  654. package/dist/data/query-browser/QueryBrowser.completion.d.ts +34 -0
  655. package/dist/data/query-browser/QueryBrowser.completion.d.ts.map +1 -0
  656. package/dist/data/query-browser/QueryBrowser.completion.js +99 -0
  657. package/dist/data/query-browser/QueryBrowser.completion.js.map +1 -0
  658. package/dist/data/query-browser/QueryBrowser.d.ts +42 -0
  659. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -0
  660. package/dist/data/query-browser/QueryBrowser.js +323 -0
  661. package/dist/data/query-browser/QueryBrowser.js.map +1 -0
  662. package/dist/data/query-browser/index.d.ts +3 -0
  663. package/dist/data/query-browser/index.d.ts.map +1 -0
  664. package/dist/data/version-info.cjs +3 -3
  665. package/dist/data/version-info.cjs.map +1 -1
  666. package/dist/data/version-info.js +3 -3
  667. package/dist/data/version-info.js.map +1 -1
  668. package/dist/data.cjs +164 -0
  669. package/dist/data.cjs.map +1 -1
  670. package/dist/data.d.ts +7 -2
  671. package/dist/data.d.ts.map +1 -1
  672. package/dist/data.js +166 -2
  673. package/dist/data.js.map +1 -1
  674. package/dist/icons/components/UiArrowFatUp.cjs +15 -0
  675. package/dist/icons/components/UiArrowFatUp.cjs.map +1 -0
  676. package/dist/icons/components/UiArrowFatUp.d.ts +15 -0
  677. package/dist/icons/components/UiArrowFatUp.d.ts.map +1 -0
  678. package/dist/icons/components/UiArrowFatUp.js +15 -0
  679. package/dist/icons/components/UiArrowFatUp.js.map +1 -0
  680. package/dist/icons/components/UiAsterisk.cjs +15 -0
  681. package/dist/icons/components/UiAsterisk.cjs.map +1 -0
  682. package/dist/icons/components/UiAsterisk.d.ts +15 -0
  683. package/dist/icons/components/UiAsterisk.d.ts.map +1 -0
  684. package/dist/icons/components/UiAsterisk.js +15 -0
  685. package/dist/icons/components/UiAsterisk.js.map +1 -0
  686. package/dist/icons/components/UiAtom.cjs +15 -0
  687. package/dist/icons/components/UiAtom.cjs.map +1 -0
  688. package/dist/icons/components/UiAtom.d.ts +15 -0
  689. package/dist/icons/components/UiAtom.d.ts.map +1 -0
  690. package/dist/icons/components/UiAtom.js +15 -0
  691. package/dist/icons/components/UiAtom.js.map +1 -0
  692. package/dist/icons/components/UiBatteryChargingVertical.cjs +15 -0
  693. package/dist/icons/components/UiBatteryChargingVertical.cjs.map +1 -0
  694. package/dist/icons/components/UiBatteryChargingVertical.d.ts +15 -0
  695. package/dist/icons/components/UiBatteryChargingVertical.d.ts.map +1 -0
  696. package/dist/icons/components/UiBatteryChargingVertical.js +15 -0
  697. package/dist/icons/components/UiBatteryChargingVertical.js.map +1 -0
  698. package/dist/icons/components/UiBatteryVerticalEmpty.cjs +15 -0
  699. package/dist/icons/components/UiBatteryVerticalEmpty.cjs.map +1 -0
  700. package/dist/icons/components/UiBatteryVerticalEmpty.d.ts +15 -0
  701. package/dist/icons/components/UiBatteryVerticalEmpty.d.ts.map +1 -0
  702. package/dist/icons/components/UiBatteryVerticalEmpty.js +15 -0
  703. package/dist/icons/components/UiBatteryVerticalEmpty.js.map +1 -0
  704. package/dist/icons/components/UiBatteryVerticalFull.cjs +15 -0
  705. package/dist/icons/components/UiBatteryVerticalFull.cjs.map +1 -0
  706. package/dist/icons/components/UiBatteryVerticalFull.d.ts +15 -0
  707. package/dist/icons/components/UiBatteryVerticalFull.d.ts.map +1 -0
  708. package/dist/icons/components/UiBatteryVerticalFull.js +15 -0
  709. package/dist/icons/components/UiBatteryVerticalFull.js.map +1 -0
  710. package/dist/icons/components/UiBatteryVerticalHigh.cjs +15 -0
  711. package/dist/icons/components/UiBatteryVerticalHigh.cjs.map +1 -0
  712. package/dist/icons/components/UiBatteryVerticalHigh.d.ts +15 -0
  713. package/dist/icons/components/UiBatteryVerticalHigh.d.ts.map +1 -0
  714. package/dist/icons/components/UiBatteryVerticalHigh.js +15 -0
  715. package/dist/icons/components/UiBatteryVerticalHigh.js.map +1 -0
  716. package/dist/icons/components/UiBatteryVerticalLow.cjs +15 -0
  717. package/dist/icons/components/UiBatteryVerticalLow.cjs.map +1 -0
  718. package/dist/icons/components/UiBatteryVerticalLow.d.ts +15 -0
  719. package/dist/icons/components/UiBatteryVerticalLow.d.ts.map +1 -0
  720. package/dist/icons/components/UiBatteryVerticalLow.js +15 -0
  721. package/dist/icons/components/UiBatteryVerticalLow.js.map +1 -0
  722. package/dist/icons/components/UiBatteryVerticalMedium.cjs +15 -0
  723. package/dist/icons/components/UiBatteryVerticalMedium.cjs.map +1 -0
  724. package/dist/icons/components/UiBatteryVerticalMedium.d.ts +15 -0
  725. package/dist/icons/components/UiBatteryVerticalMedium.d.ts.map +1 -0
  726. package/dist/icons/components/UiBatteryVerticalMedium.js +15 -0
  727. package/dist/icons/components/UiBatteryVerticalMedium.js.map +1 -0
  728. package/dist/icons/components/UiChatDots.cjs +15 -0
  729. package/dist/icons/components/UiChatDots.cjs.map +1 -0
  730. package/dist/icons/components/UiChatDots.d.ts +15 -0
  731. package/dist/icons/components/UiChatDots.d.ts.map +1 -0
  732. package/dist/icons/components/UiChatDots.js +15 -0
  733. package/dist/icons/components/UiChatDots.js.map +1 -0
  734. package/dist/icons/components/UiCoins.cjs +15 -0
  735. package/dist/icons/components/UiCoins.cjs.map +1 -0
  736. package/dist/icons/components/UiCoins.d.ts +15 -0
  737. package/dist/icons/components/UiCoins.d.ts.map +1 -0
  738. package/dist/icons/components/UiCoins.js +15 -0
  739. package/dist/icons/components/UiCoins.js.map +1 -0
  740. package/dist/icons/components/UiCompass.cjs +15 -0
  741. package/dist/icons/components/UiCompass.cjs.map +1 -0
  742. package/dist/icons/components/UiCompass.d.ts +15 -0
  743. package/dist/icons/components/UiCompass.d.ts.map +1 -0
  744. package/dist/icons/components/UiCompass.js +15 -0
  745. package/dist/icons/components/UiCompass.js.map +1 -0
  746. package/dist/icons/components/UiCurrencyDollar.cjs +15 -0
  747. package/dist/icons/components/UiCurrencyDollar.cjs.map +1 -0
  748. package/dist/icons/components/UiCurrencyDollar.d.ts +15 -0
  749. package/dist/icons/components/UiCurrencyDollar.d.ts.map +1 -0
  750. package/dist/icons/components/UiCurrencyDollar.js +15 -0
  751. package/dist/icons/components/UiCurrencyDollar.js.map +1 -0
  752. package/dist/icons/components/UiCursorClick.cjs +15 -0
  753. package/dist/icons/components/UiCursorClick.cjs.map +1 -0
  754. package/dist/icons/components/UiCursorClick.d.ts +15 -0
  755. package/dist/icons/components/UiCursorClick.d.ts.map +1 -0
  756. package/dist/icons/components/UiCursorClick.js +15 -0
  757. package/dist/icons/components/UiCursorClick.js.map +1 -0
  758. package/dist/icons/components/UiCursorText.cjs +15 -0
  759. package/dist/icons/components/UiCursorText.cjs.map +1 -0
  760. package/dist/icons/components/UiCursorText.d.ts +15 -0
  761. package/dist/icons/components/UiCursorText.d.ts.map +1 -0
  762. package/dist/icons/components/UiCursorText.js +15 -0
  763. package/dist/icons/components/UiCursorText.js.map +1 -0
  764. package/dist/icons/components/UiEllipsisBold.cjs +10 -0
  765. package/dist/icons/components/UiEllipsisBold.cjs.map +1 -0
  766. package/dist/icons/components/UiEllipsisBold.d.ts +9 -0
  767. package/dist/icons/components/UiEllipsisBold.d.ts.map +1 -0
  768. package/dist/icons/components/UiEllipsisBold.js +10 -0
  769. package/dist/icons/components/UiEllipsisBold.js.map +1 -0
  770. package/dist/icons/components/UiFastForwardCircle.cjs +15 -0
  771. package/dist/icons/components/UiFastForwardCircle.cjs.map +1 -0
  772. package/dist/icons/components/UiFastForwardCircle.d.ts +15 -0
  773. package/dist/icons/components/UiFastForwardCircle.d.ts.map +1 -0
  774. package/dist/icons/components/UiFastForwardCircle.js +15 -0
  775. package/dist/icons/components/UiFastForwardCircle.js.map +1 -0
  776. package/dist/icons/components/UiFilePlus.cjs +15 -0
  777. package/dist/icons/components/UiFilePlus.cjs.map +1 -0
  778. package/dist/icons/components/UiFilePlus.d.ts +15 -0
  779. package/dist/icons/components/UiFilePlus.d.ts.map +1 -0
  780. package/dist/icons/components/UiFilePlus.js +15 -0
  781. package/dist/icons/components/UiFilePlus.js.map +1 -0
  782. package/dist/icons/components/UiGavel.cjs +15 -0
  783. package/dist/icons/components/UiGavel.cjs.map +1 -0
  784. package/dist/icons/components/UiGavel.d.ts +15 -0
  785. package/dist/icons/components/UiGavel.d.ts.map +1 -0
  786. package/dist/icons/components/UiGavel.js +15 -0
  787. package/dist/icons/components/UiGavel.js.map +1 -0
  788. package/dist/icons/components/UiGearSix.cjs +15 -0
  789. package/dist/icons/components/UiGearSix.cjs.map +1 -0
  790. package/dist/icons/components/UiGearSix.d.ts +15 -0
  791. package/dist/icons/components/UiGearSix.d.ts.map +1 -0
  792. package/dist/icons/components/UiGearSix.js +15 -0
  793. package/dist/icons/components/UiGearSix.js.map +1 -0
  794. package/dist/icons/components/UiGitCommit.cjs +15 -0
  795. package/dist/icons/components/UiGitCommit.cjs.map +1 -0
  796. package/dist/icons/components/UiGitCommit.d.ts +15 -0
  797. package/dist/icons/components/UiGitCommit.d.ts.map +1 -0
  798. package/dist/icons/components/UiGitCommit.js +15 -0
  799. package/dist/icons/components/UiGitCommit.js.map +1 -0
  800. package/dist/icons/components/UiHandPalm.cjs +15 -0
  801. package/dist/icons/components/UiHandPalm.cjs.map +1 -0
  802. package/dist/icons/components/UiHandPalm.d.ts +15 -0
  803. package/dist/icons/components/UiHandPalm.d.ts.map +1 -0
  804. package/dist/icons/components/UiHandPalm.js +15 -0
  805. package/dist/icons/components/UiHandPalm.js.map +1 -0
  806. package/dist/icons/components/UiKeyboard.cjs +15 -0
  807. package/dist/icons/components/UiKeyboard.cjs.map +1 -0
  808. package/dist/icons/components/UiKeyboard.d.ts +15 -0
  809. package/dist/icons/components/UiKeyboard.d.ts.map +1 -0
  810. package/dist/icons/components/UiKeyboard.js +15 -0
  811. package/dist/icons/components/UiKeyboard.js.map +1 -0
  812. package/dist/icons/components/UiListChecks.cjs +15 -0
  813. package/dist/icons/components/UiListChecks.cjs.map +1 -0
  814. package/dist/icons/components/UiListChecks.d.ts +15 -0
  815. package/dist/icons/components/UiListChecks.d.ts.map +1 -0
  816. package/dist/icons/components/UiListChecks.js +15 -0
  817. package/dist/icons/components/UiListChecks.js.map +1 -0
  818. package/dist/icons/components/UiLogoAnthropic.cjs +10 -0
  819. package/dist/icons/components/UiLogoAnthropic.cjs.map +1 -0
  820. package/dist/icons/components/UiLogoAnthropic.d.ts +9 -0
  821. package/dist/icons/components/UiLogoAnthropic.d.ts.map +1 -0
  822. package/dist/icons/components/UiLogoAnthropic.js +10 -0
  823. package/dist/icons/components/UiLogoAnthropic.js.map +1 -0
  824. package/dist/icons/components/UiLogoClaude.cjs +10 -0
  825. package/dist/icons/components/UiLogoClaude.cjs.map +1 -0
  826. package/dist/icons/components/UiLogoClaude.d.ts +9 -0
  827. package/dist/icons/components/UiLogoClaude.d.ts.map +1 -0
  828. package/dist/icons/components/UiLogoClaude.js +10 -0
  829. package/dist/icons/components/UiLogoClaude.js.map +1 -0
  830. package/dist/icons/components/UiLogoDeepseek.cjs +10 -0
  831. package/dist/icons/components/UiLogoDeepseek.cjs.map +1 -0
  832. package/dist/icons/components/UiLogoDeepseek.d.ts +9 -0
  833. package/dist/icons/components/UiLogoDeepseek.d.ts.map +1 -0
  834. package/dist/icons/components/UiLogoDeepseek.js +10 -0
  835. package/dist/icons/components/UiLogoDeepseek.js.map +1 -0
  836. package/dist/icons/components/UiLogoGemini.cjs +10 -0
  837. package/dist/icons/components/UiLogoGemini.cjs.map +1 -0
  838. package/dist/icons/components/UiLogoGemini.d.ts +9 -0
  839. package/dist/icons/components/UiLogoGemini.d.ts.map +1 -0
  840. package/dist/icons/components/UiLogoGemini.js +10 -0
  841. package/dist/icons/components/UiLogoGemini.js.map +1 -0
  842. package/dist/icons/components/UiLogoGoogle.cjs +10 -0
  843. package/dist/icons/components/UiLogoGoogle.cjs.map +1 -0
  844. package/dist/icons/components/UiLogoGoogle.d.ts +9 -0
  845. package/dist/icons/components/UiLogoGoogle.d.ts.map +1 -0
  846. package/dist/icons/components/UiLogoGoogle.js +10 -0
  847. package/dist/icons/components/UiLogoGoogle.js.map +1 -0
  848. package/dist/icons/components/UiLogoHuggingface.cjs +10 -0
  849. package/dist/icons/components/UiLogoHuggingface.cjs.map +1 -0
  850. package/dist/icons/components/UiLogoHuggingface.d.ts +9 -0
  851. package/dist/icons/components/UiLogoHuggingface.d.ts.map +1 -0
  852. package/dist/icons/components/UiLogoHuggingface.js +10 -0
  853. package/dist/icons/components/UiLogoHuggingface.js.map +1 -0
  854. package/dist/icons/components/UiLogoMeta.cjs +10 -0
  855. package/dist/icons/components/UiLogoMeta.cjs.map +1 -0
  856. package/dist/icons/components/UiLogoMeta.d.ts +9 -0
  857. package/dist/icons/components/UiLogoMeta.d.ts.map +1 -0
  858. package/dist/icons/components/UiLogoMeta.js +10 -0
  859. package/dist/icons/components/UiLogoMeta.js.map +1 -0
  860. package/dist/icons/components/UiLogoMistral.cjs +10 -0
  861. package/dist/icons/components/UiLogoMistral.cjs.map +1 -0
  862. package/dist/icons/components/UiLogoMistral.d.ts +9 -0
  863. package/dist/icons/components/UiLogoMistral.d.ts.map +1 -0
  864. package/dist/icons/components/UiLogoMistral.js +10 -0
  865. package/dist/icons/components/UiLogoMistral.js.map +1 -0
  866. package/dist/icons/components/UiLogoOllama.cjs +10 -0
  867. package/dist/icons/components/UiLogoOllama.cjs.map +1 -0
  868. package/dist/icons/components/UiLogoOllama.d.ts +9 -0
  869. package/dist/icons/components/UiLogoOllama.d.ts.map +1 -0
  870. package/dist/icons/components/UiLogoOllama.js +10 -0
  871. package/dist/icons/components/UiLogoOllama.js.map +1 -0
  872. package/dist/icons/components/UiLogoOpenai.cjs +10 -0
  873. package/dist/icons/components/UiLogoOpenai.cjs.map +1 -0
  874. package/dist/icons/components/UiLogoOpenai.d.ts +9 -0
  875. package/dist/icons/components/UiLogoOpenai.d.ts.map +1 -0
  876. package/dist/icons/components/UiLogoOpenai.js +10 -0
  877. package/dist/icons/components/UiLogoOpenai.js.map +1 -0
  878. package/dist/icons/components/UiLogoPerplexity.cjs +10 -0
  879. package/dist/icons/components/UiLogoPerplexity.cjs.map +1 -0
  880. package/dist/icons/components/UiLogoPerplexity.d.ts +9 -0
  881. package/dist/icons/components/UiLogoPerplexity.d.ts.map +1 -0
  882. package/dist/icons/components/UiLogoPerplexity.js +10 -0
  883. package/dist/icons/components/UiLogoPerplexity.js.map +1 -0
  884. package/dist/icons/components/UiPalette.cjs +15 -0
  885. package/dist/icons/components/UiPalette.cjs.map +1 -0
  886. package/dist/icons/components/UiPalette.d.ts +15 -0
  887. package/dist/icons/components/UiPalette.d.ts.map +1 -0
  888. package/dist/icons/components/UiPalette.js +15 -0
  889. package/dist/icons/components/UiPalette.js.map +1 -0
  890. package/dist/icons/components/UiPauseCircle.cjs +15 -0
  891. package/dist/icons/components/UiPauseCircle.cjs.map +1 -0
  892. package/dist/icons/components/UiPauseCircle.d.ts +15 -0
  893. package/dist/icons/components/UiPauseCircle.d.ts.map +1 -0
  894. package/dist/icons/components/UiPauseCircle.js +15 -0
  895. package/dist/icons/components/UiPauseCircle.js.map +1 -0
  896. package/dist/icons/components/UiPencilSimpleLine.cjs +15 -0
  897. package/dist/icons/components/UiPencilSimpleLine.cjs.map +1 -0
  898. package/dist/icons/components/UiPencilSimpleLine.d.ts +15 -0
  899. package/dist/icons/components/UiPencilSimpleLine.d.ts.map +1 -0
  900. package/dist/icons/components/UiPencilSimpleLine.js +15 -0
  901. package/dist/icons/components/UiPencilSimpleLine.js.map +1 -0
  902. package/dist/icons/components/UiPlugsConnected.cjs +15 -0
  903. package/dist/icons/components/UiPlugsConnected.cjs.map +1 -0
  904. package/dist/icons/components/UiPlugsConnected.d.ts +15 -0
  905. package/dist/icons/components/UiPlugsConnected.d.ts.map +1 -0
  906. package/dist/icons/components/UiPlugsConnected.js +15 -0
  907. package/dist/icons/components/UiPlugsConnected.js.map +1 -0
  908. package/dist/icons/components/UiProhibit.cjs +15 -0
  909. package/dist/icons/components/UiProhibit.cjs.map +1 -0
  910. package/dist/icons/components/UiProhibit.d.ts +15 -0
  911. package/dist/icons/components/UiProhibit.d.ts.map +1 -0
  912. package/dist/icons/components/UiProhibit.js +15 -0
  913. package/dist/icons/components/UiProhibit.js.map +1 -0
  914. package/dist/icons/components/UiRepeat.cjs +15 -0
  915. package/dist/icons/components/UiRepeat.cjs.map +1 -0
  916. package/dist/icons/components/UiRepeat.d.ts +15 -0
  917. package/dist/icons/components/UiRepeat.d.ts.map +1 -0
  918. package/dist/icons/components/UiRepeat.js +15 -0
  919. package/dist/icons/components/UiRepeat.js.map +1 -0
  920. package/dist/icons/components/UiScan.cjs +15 -0
  921. package/dist/icons/components/UiScan.cjs.map +1 -0
  922. package/dist/icons/components/UiScan.d.ts +15 -0
  923. package/dist/icons/components/UiScan.d.ts.map +1 -0
  924. package/dist/icons/components/UiScan.js +15 -0
  925. package/dist/icons/components/UiScan.js.map +1 -0
  926. package/dist/icons/components/UiScroll.cjs +15 -0
  927. package/dist/icons/components/UiScroll.cjs.map +1 -0
  928. package/dist/icons/components/UiScroll.d.ts +15 -0
  929. package/dist/icons/components/UiScroll.d.ts.map +1 -0
  930. package/dist/icons/components/UiScroll.js +15 -0
  931. package/dist/icons/components/UiScroll.js.map +1 -0
  932. package/dist/icons/components/UiShieldSlash.cjs +15 -0
  933. package/dist/icons/components/UiShieldSlash.cjs.map +1 -0
  934. package/dist/icons/components/UiShieldSlash.d.ts +15 -0
  935. package/dist/icons/components/UiShieldSlash.d.ts.map +1 -0
  936. package/dist/icons/components/UiShieldSlash.js +15 -0
  937. package/dist/icons/components/UiShieldSlash.js.map +1 -0
  938. package/dist/icons/components/UiStack.cjs +19 -0
  939. package/dist/icons/components/UiStack.cjs.map +1 -0
  940. package/dist/icons/components/UiStack.d.ts +15 -0
  941. package/dist/icons/components/UiStack.d.ts.map +1 -0
  942. package/dist/icons/components/UiStack.js +19 -0
  943. package/dist/icons/components/UiStack.js.map +1 -0
  944. package/dist/icons/components/UiStrategy.cjs +15 -0
  945. package/dist/icons/components/UiStrategy.cjs.map +1 -0
  946. package/dist/icons/components/UiStrategy.d.ts +15 -0
  947. package/dist/icons/components/UiStrategy.d.ts.map +1 -0
  948. package/dist/icons/components/UiStrategy.js +15 -0
  949. package/dist/icons/components/UiStrategy.js.map +1 -0
  950. package/dist/icons/components/UiThermometer.cjs +15 -0
  951. package/dist/icons/components/UiThermometer.cjs.map +1 -0
  952. package/dist/icons/components/UiThermometer.d.ts +15 -0
  953. package/dist/icons/components/UiThermometer.d.ts.map +1 -0
  954. package/dist/icons/components/UiThermometer.js +15 -0
  955. package/dist/icons/components/UiThermometer.js.map +1 -0
  956. package/dist/icons/components/UiTimer.cjs +15 -0
  957. package/dist/icons/components/UiTimer.cjs.map +1 -0
  958. package/dist/icons/components/UiTimer.d.ts +15 -0
  959. package/dist/icons/components/UiTimer.d.ts.map +1 -0
  960. package/dist/icons/components/UiTimer.js +15 -0
  961. package/dist/icons/components/UiTimer.js.map +1 -0
  962. package/dist/icons/index.d.ts +84 -0
  963. package/dist/icons/index.d.ts.map +1 -1
  964. package/dist/icons.cjs +132 -0
  965. package/dist/icons.cjs.map +1 -1
  966. package/dist/icons.js +132 -0
  967. package/dist/icons.js.map +1 -1
  968. package/dist/index.cjs +186 -1
  969. package/dist/index.cjs.map +1 -1
  970. package/dist/index.js +190 -5
  971. package/dist/index.js.map +1 -1
  972. package/dist/layout/Workspace.cjs +191 -0
  973. package/dist/layout/Workspace.cjs.map +1 -0
  974. package/dist/layout/Workspace.d.ts +17 -0
  975. package/dist/layout/Workspace.d.ts.map +1 -0
  976. package/dist/layout/Workspace.js +191 -0
  977. package/dist/layout/Workspace.js.map +1 -0
  978. package/dist/layout/Workspace.model.cjs +142 -0
  979. package/dist/layout/Workspace.model.cjs.map +1 -0
  980. package/dist/layout/Workspace.model.d.ts +43 -0
  981. package/dist/layout/Workspace.model.d.ts.map +1 -0
  982. package/dist/layout/Workspace.model.js +142 -0
  983. package/dist/layout/Workspace.model.js.map +1 -0
  984. package/dist/layout/Workspace.regions.cjs +305 -0
  985. package/dist/layout/Workspace.regions.cjs.map +1 -0
  986. package/dist/layout/Workspace.regions.d.ts +17 -0
  987. package/dist/layout/Workspace.regions.d.ts.map +1 -0
  988. package/dist/layout/Workspace.regions.js +305 -0
  989. package/dist/layout/Workspace.regions.js.map +1 -0
  990. package/dist/lib/tokens.cjs +14 -0
  991. package/dist/lib/tokens.cjs.map +1 -0
  992. package/dist/lib/tokens.d.ts +5 -0
  993. package/dist/lib/tokens.d.ts.map +1 -0
  994. package/dist/lib/tokens.js +14 -0
  995. package/dist/lib/tokens.js.map +1 -0
  996. package/dist/monaco/MonacoEditor.cjs +69 -0
  997. package/dist/monaco/MonacoEditor.cjs.map +1 -0
  998. package/dist/monaco/MonacoEditor.d.ts +5 -0
  999. package/dist/monaco/MonacoEditor.d.ts.map +1 -0
  1000. package/dist/monaco/MonacoEditor.js +52 -0
  1001. package/dist/monaco/MonacoEditor.js.map +1 -0
  1002. package/dist/monaco/MonacoProvider.cjs +22 -0
  1003. package/dist/monaco/MonacoProvider.cjs.map +1 -0
  1004. package/dist/monaco/MonacoProvider.d.ts +3 -0
  1005. package/dist/monaco/MonacoProvider.d.ts.map +1 -0
  1006. package/dist/monaco/MonacoProvider.js +22 -0
  1007. package/dist/monaco/MonacoProvider.js.map +1 -0
  1008. package/dist/monaco/MonacoSchemaEditor.cjs +108 -0
  1009. package/dist/monaco/MonacoSchemaEditor.cjs.map +1 -0
  1010. package/dist/monaco/MonacoSchemaEditor.d.ts +4 -0
  1011. package/dist/monaco/MonacoSchemaEditor.d.ts.map +1 -0
  1012. package/dist/monaco/MonacoSchemaEditor.js +108 -0
  1013. package/dist/monaco/MonacoSchemaEditor.js.map +1 -0
  1014. package/dist/monaco/schema-normalizer.cjs +38 -0
  1015. package/dist/monaco/schema-normalizer.cjs.map +1 -0
  1016. package/dist/monaco/schema-normalizer.d.ts +7 -0
  1017. package/dist/monaco/schema-normalizer.d.ts.map +1 -0
  1018. package/dist/monaco/schema-normalizer.js +38 -0
  1019. package/dist/monaco/schema-normalizer.js.map +1 -0
  1020. package/dist/monaco/schema-registry.cjs +67 -0
  1021. package/dist/monaco/schema-registry.cjs.map +1 -0
  1022. package/dist/monaco/schema-registry.d.ts +3 -0
  1023. package/dist/monaco/schema-registry.d.ts.map +1 -0
  1024. package/dist/monaco/schema-registry.js +67 -0
  1025. package/dist/monaco/schema-registry.js.map +1 -0
  1026. package/dist/monaco/types.d.ts +31 -0
  1027. package/dist/monaco/types.d.ts.map +1 -0
  1028. package/dist/monaco/use-monaco-worker.cjs +10 -0
  1029. package/dist/monaco/use-monaco-worker.cjs.map +1 -0
  1030. package/dist/monaco/use-monaco-worker.d.ts +4 -0
  1031. package/dist/monaco/use-monaco-worker.d.ts.map +1 -0
  1032. package/dist/monaco/use-monaco-worker.js +10 -0
  1033. package/dist/monaco/use-monaco-worker.js.map +1 -0
  1034. package/dist/monaco-schema.cjs +5 -0
  1035. package/dist/monaco-schema.cjs.map +1 -0
  1036. package/dist/monaco-schema.d.ts +3 -0
  1037. package/dist/monaco-schema.d.ts.map +1 -0
  1038. package/dist/monaco-schema.js +5 -0
  1039. package/dist/monaco-schema.js.map +1 -0
  1040. package/dist/monaco.cjs +11 -0
  1041. package/dist/monaco.cjs.map +1 -0
  1042. package/dist/monaco.d.ts +6 -0
  1043. package/dist/monaco.d.ts.map +1 -0
  1044. package/dist/monaco.js +11 -0
  1045. package/dist/monaco.js.map +1 -0
  1046. package/dist/overlay/CellActions.cjs +183 -0
  1047. package/dist/overlay/CellActions.cjs.map +1 -0
  1048. package/dist/overlay/CellActions.d.ts +18 -0
  1049. package/dist/overlay/CellActions.d.ts.map +1 -0
  1050. package/dist/overlay/CellActions.js +183 -0
  1051. package/dist/overlay/CellActions.js.map +1 -0
  1052. package/dist/overlay/DropdownMenu.cjs +50 -59
  1053. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  1054. package/dist/overlay/DropdownMenu.d.ts +21 -2
  1055. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  1056. package/dist/overlay/DropdownMenu.js +38 -47
  1057. package/dist/overlay/DropdownMenu.js.map +1 -1
  1058. package/dist/overlay/DropdownMenuSubmenu.cjs +210 -0
  1059. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -0
  1060. package/dist/overlay/DropdownMenuSubmenu.d.ts +12 -0
  1061. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -0
  1062. package/dist/overlay/DropdownMenuSubmenu.js +210 -0
  1063. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -0
  1064. package/dist/overlay/Modal.cjs +14 -2
  1065. package/dist/overlay/Modal.cjs.map +1 -1
  1066. package/dist/overlay/Modal.d.ts +9 -2
  1067. package/dist/overlay/Modal.d.ts.map +1 -1
  1068. package/dist/overlay/Modal.js +14 -2
  1069. package/dist/overlay/Modal.js.map +1 -1
  1070. package/dist/overlay/dropdownMenuContext.cjs +16 -0
  1071. package/dist/overlay/dropdownMenuContext.cjs.map +1 -0
  1072. package/dist/overlay/dropdownMenuContext.d.ts +16 -0
  1073. package/dist/overlay/dropdownMenuContext.d.ts.map +1 -0
  1074. package/dist/overlay/dropdownMenuContext.js +16 -0
  1075. package/dist/overlay/dropdownMenuContext.js.map +1 -0
  1076. package/dist/rpc/CommandOutput.cjs +28 -9
  1077. package/dist/rpc/CommandOutput.cjs.map +1 -1
  1078. package/dist/rpc/CommandOutput.d.ts +4 -2
  1079. package/dist/rpc/CommandOutput.d.ts.map +1 -1
  1080. package/dist/rpc/CommandOutput.js +28 -9
  1081. package/dist/rpc/CommandOutput.js.map +1 -1
  1082. package/dist/rpc/EntityExplorerApp.cjs +8 -1
  1083. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  1084. package/dist/rpc/EntityExplorerApp.d.ts +9 -1
  1085. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  1086. package/dist/rpc/EntityExplorerApp.js +8 -1
  1087. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  1088. package/dist/rpc/OperationActionBar.cjs +63 -41
  1089. package/dist/rpc/OperationActionBar.cjs.map +1 -1
  1090. package/dist/rpc/OperationActionBar.d.ts +2 -1
  1091. package/dist/rpc/OperationActionBar.d.ts.map +1 -1
  1092. package/dist/rpc/OperationActionBar.js +63 -41
  1093. package/dist/rpc/OperationActionBar.js.map +1 -1
  1094. package/dist/rpc/OperationCatalog.cjs +111 -80
  1095. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  1096. package/dist/rpc/OperationCatalog.d.ts +2 -1
  1097. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  1098. package/dist/rpc/OperationCatalog.js +112 -81
  1099. package/dist/rpc/OperationCatalog.js.map +1 -1
  1100. package/dist/rpc/OperationCommandPage.cjs +2 -0
  1101. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  1102. package/dist/rpc/OperationCommandPage.d.ts +3 -2
  1103. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  1104. package/dist/rpc/OperationCommandPage.js +2 -0
  1105. package/dist/rpc/OperationCommandPage.js.map +1 -1
  1106. package/dist/rpc/OperationEntityContextPicker.cjs +448 -0
  1107. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -0
  1108. package/dist/rpc/OperationEntityContextPicker.d.ts +28 -0
  1109. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -0
  1110. package/dist/rpc/OperationEntityContextPicker.js +448 -0
  1111. package/dist/rpc/OperationEntityContextPicker.js.map +1 -0
  1112. package/dist/rpc/OperationEntityContextPicker.model.cjs +60 -0
  1113. package/dist/rpc/OperationEntityContextPicker.model.cjs.map +1 -0
  1114. package/dist/rpc/OperationEntityContextPicker.model.d.ts +7 -0
  1115. package/dist/rpc/OperationEntityContextPicker.model.d.ts.map +1 -0
  1116. package/dist/rpc/OperationEntityContextPicker.model.js +60 -0
  1117. package/dist/rpc/OperationEntityContextPicker.model.js.map +1 -0
  1118. package/dist/rpc/OperationEntityPage.cjs +47 -22
  1119. package/dist/rpc/OperationEntityPage.cjs.map +1 -1
  1120. package/dist/rpc/OperationEntityPage.d.ts +32 -2
  1121. package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
  1122. package/dist/rpc/OperationEntityPage.js +47 -22
  1123. package/dist/rpc/OperationEntityPage.js.map +1 -1
  1124. package/dist/rpc/OperationResultView.cjs +4 -2
  1125. package/dist/rpc/OperationResultView.cjs.map +1 -1
  1126. package/dist/rpc/OperationResultView.d.ts +3 -2
  1127. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  1128. package/dist/rpc/OperationResultView.js +4 -2
  1129. package/dist/rpc/OperationResultView.js.map +1 -1
  1130. package/dist/rpc/SchemaActionForm.cjs +151 -17
  1131. package/dist/rpc/SchemaActionForm.cjs.map +1 -1
  1132. package/dist/rpc/SchemaActionForm.d.ts +7 -1
  1133. package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
  1134. package/dist/rpc/SchemaActionForm.js +152 -18
  1135. package/dist/rpc/SchemaActionForm.js.map +1 -1
  1136. package/dist/rpc/types.cjs.map +1 -1
  1137. package/dist/rpc/types.d.ts +24 -0
  1138. package/dist/rpc/types.d.ts.map +1 -1
  1139. package/dist/rpc/types.js.map +1 -1
  1140. package/dist/rpc.cjs +6 -0
  1141. package/dist/rpc.cjs.map +1 -1
  1142. package/dist/rpc.d.ts +5 -3
  1143. package/dist/rpc.d.ts.map +1 -1
  1144. package/dist/rpc.js +6 -0
  1145. package/dist/rpc.js.map +1 -1
  1146. package/dist/styles.css +1 -1
  1147. package/dist/tailwind-preset.cjs +8 -0
  1148. package/dist/tailwind-preset.cjs.map +1 -1
  1149. package/dist/tailwind-preset.d.ts.map +1 -1
  1150. package/dist/tailwind-preset.js +8 -0
  1151. package/dist/tailwind-preset.js.map +1 -1
  1152. package/oxlint-plugins/README.md +82 -19
  1153. package/oxlint-plugins/clicky-ui-no-adhoc-overlay.js +5 -50
  1154. package/oxlint-plugins/clicky-ui-no-direct-z-index.js +134 -0
  1155. package/oxlint-plugins/clicky-ui.js +3 -0
  1156. package/package.json +26 -3
  1157. package/dist/data/chat/ContextUsage.cjs +0 -99
  1158. package/dist/data/chat/ContextUsage.cjs.map +0 -1
  1159. package/dist/data/chat/ContextUsage.d.ts +0 -19
  1160. package/dist/data/chat/ContextUsage.d.ts.map +0 -1
  1161. package/dist/data/chat/ContextUsage.js +0 -99
  1162. package/dist/data/chat/ContextUsage.js.map +0 -1
@@ -28,7 +28,8 @@ const SLOT_TRANSLATE = {
28
28
  function TristateSwitch({
29
29
  mode,
30
30
  onChange,
31
- ariaLabel
31
+ ariaLabel,
32
+ interactive = true
32
33
  }) {
33
34
  const slot = mode === "exclude" ? "exclude" : mode === "include" ? "include" : "neutral";
34
35
  const bg = slot === "exclude" ? "bg-red-500/80" : slot === "include" ? "bg-green-500/80" : "bg-muted";
@@ -45,7 +46,43 @@ function TristateSwitch({
45
46
  className: "relative z-10 h-full flex-1 cursor-pointer"
46
47
  }
47
48
  );
48
- return /* @__PURE__ */ jsxRuntime.jsxs(
49
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
50
+ region(mode === "exclude" ? "neutral" : "exclude", "exclude"),
51
+ region(nextTriStateMode(mode), "neutral"),
52
+ region(mode === "include" ? "neutral" : "include", "include"),
53
+ /* @__PURE__ */ jsxRuntime.jsx(
54
+ "span",
55
+ {
56
+ "aria-hidden": true,
57
+ className: utils.cn(
58
+ // The knob stays white in BOTH themes (standard switch look): on the
59
+ // dark-mode muted/red/green tracks white is the high-contrast choice,
60
+ // while bg-background would vanish against the track.
61
+ "pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150",
62
+ SLOT_TRANSLATE[slot]
63
+ ),
64
+ children: slot !== "neutral" && /* @__PURE__ */ jsxRuntime.jsx(
65
+ Icon.Icon,
66
+ {
67
+ icon: slot === "exclude" ? UiClose.UiClose : UiCheck.UiCheck,
68
+ className: utils.cn(
69
+ "text-[10px]",
70
+ slot === "exclude" && "text-red-600",
71
+ slot === "include" && "text-green-600"
72
+ )
73
+ }
74
+ )
75
+ }
76
+ )
77
+ ] });
78
+ const trackClasses = utils.cn(
79
+ "relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200",
80
+ bg
81
+ );
82
+ if (!interactive) {
83
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: trackClasses, children: content });
84
+ }
85
+ return /* @__PURE__ */ jsxRuntime.jsx(
49
86
  "button",
50
87
  {
51
88
  type: "button",
@@ -56,39 +93,8 @@ function TristateSwitch({
56
93
  event.stopPropagation();
57
94
  onChange(nextTriStateMode(mode));
58
95
  },
59
- className: utils.cn(
60
- "relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200",
61
- bg
62
- ),
63
- children: [
64
- region(mode === "exclude" ? "neutral" : "exclude", "exclude"),
65
- region(nextTriStateMode(mode), "neutral"),
66
- region(mode === "include" ? "neutral" : "include", "include"),
67
- /* @__PURE__ */ jsxRuntime.jsx(
68
- "span",
69
- {
70
- "aria-hidden": true,
71
- className: utils.cn(
72
- // The knob stays white in BOTH themes (standard switch look): on the
73
- // dark-mode muted/red/green tracks white is the high-contrast choice,
74
- // while bg-background would vanish against the track.
75
- "pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150",
76
- SLOT_TRANSLATE[slot]
77
- ),
78
- children: slot !== "neutral" && /* @__PURE__ */ jsxRuntime.jsx(
79
- Icon.Icon,
80
- {
81
- icon: slot === "exclude" ? UiClose.UiClose : UiCheck.UiCheck,
82
- className: utils.cn(
83
- "text-[10px]",
84
- slot === "exclude" && "text-red-600",
85
- slot === "include" && "text-green-600"
86
- )
87
- }
88
- )
89
- }
90
- )
91
- ]
96
+ className: trackClasses,
97
+ children: content
92
98
  }
93
99
  );
94
100
  }
@@ -102,6 +108,7 @@ function FilterPill({
102
108
  onClick,
103
109
  title,
104
110
  togglePosition = "left",
111
+ interactive = true,
105
112
  className
106
113
  }) {
107
114
  const triState = !!onModeChange;
@@ -125,6 +132,7 @@ function FilterPill({
125
132
  {
126
133
  mode,
127
134
  onChange: onModeChange,
135
+ interactive,
128
136
  ...title ? { ariaLabel: title } : {}
129
137
  }
130
138
  );
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPill.cjs","sources":["../../src/data/FilterPill.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { UiAdd, UiCheck, UiClose, UiRemove } from \"../icons\";\n\nexport type FilterMode = \"active\" | \"neutral\" | \"include\" | \"exclude\";\n\nexport type FilterPillProps = {\n /** Visual and semantic state for the pill. */\n mode?: FilterMode;\n /** Primary visible label. */\n label: ReactNode;\n /** Optional count badge rendered before the label. */\n count?: number;\n /** Iconify name or imported icon component. */\n icon?: string | StaticIconComponent;\n /** Classes for the count badge background. */\n badge?: string;\n /**\n * Tri-state handler. When provided the pill renders as a toggle with a left\n * minus (exclude) and right plus (include) region. Clicking a side toggles\n * that state against \"neutral\"; clicking the label cycles neutral → include\n * → exclude → neutral.\n */\n onModeChange?: (next: FilterMode) => void;\n /** Legacy single-click handler, used when onModeChange is not provided. */\n onClick?: () => void;\n /** Browser tooltip and accessible label for tri-state controls. */\n title?: string;\n /** Places the tri-state toggle before or after the label. */\n togglePosition?: \"left\" | \"right\";\n /** Classes applied to the pill root. */\n className?: string;\n};\n\nfunction bodyClasses(mode: FilterMode): string {\n switch (mode) {\n case \"active\":\n return \"bg-primary/10 border-primary/40 text-primary font-medium\";\n case \"include\":\n return \"bg-green-500/10 border-green-500/50 text-green-700 dark:text-green-400 font-medium\";\n case \"exclude\":\n return \"bg-red-500/10 border-red-500/50 text-red-700 dark:text-red-400 font-medium\";\n case \"neutral\":\n default:\n return \"border-border text-muted-foreground hover:bg-accent\";\n }\n}\n\ntype SlotMode = \"exclude\" | \"neutral\" | \"include\";\n\nconst SLOT_TRANSLATE: Record<SlotMode, string> = {\n exclude: \"translate-x-0\",\n neutral: \"translate-x-4\",\n include: \"translate-x-8\",\n};\n\nfunction TristateSwitch({\n mode,\n onChange,\n ariaLabel,\n}: {\n mode: FilterMode;\n onChange: (next: FilterMode) => void;\n ariaLabel?: string;\n}) {\n const slot: SlotMode =\n mode === \"exclude\" ? \"exclude\" : mode === \"include\" ? \"include\" : \"neutral\";\n const bg =\n slot === \"exclude\" ? \"bg-red-500/80\" : slot === \"include\" ? \"bg-green-500/80\" : \"bg-muted\";\n\n // The three regions are aria-hidden click targets layered over the toggle\n // track: clicking the left edge toggles exclude, the right edge toggles\n // include, and the middle rotates. They are NOT focusable buttons — the\n // whole switch is a single <button> so it exposes one accessible name and\n // does not pollute the accessible name of any FilterBar wrapper that hosts\n // it (e.g. the multi-filter option row, which is itself a role=\"button\").\n const region = (next: FilterMode, regionMode: SlotMode) => (\n <span\n aria-hidden\n data-tristate-region={regionMode}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onChange(next);\n }}\n className=\"relative z-10 h-full flex-1 cursor-pointer\"\n />\n );\n\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n title={ariaLabel}\n onClick={(event) => {\n // Keyboard activation (Enter/Space) lands here without a region —\n // cycle, matching the middle-region rotation.\n event.preventDefault();\n event.stopPropagation();\n onChange(nextTriStateMode(mode));\n }}\n className={cn(\n \"relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200\",\n bg,\n )}\n >\n {region(mode === \"exclude\" ? \"neutral\" : \"exclude\", \"exclude\")}\n {region(nextTriStateMode(mode), \"neutral\")}\n {region(mode === \"include\" ? \"neutral\" : \"include\", \"include\")}\n <span\n aria-hidden\n className={cn(\n // The knob stays white in BOTH themes (standard switch look): on the\n // dark-mode muted/red/green tracks white is the high-contrast choice,\n // while bg-background would vanish against the track.\n \"pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150\",\n SLOT_TRANSLATE[slot],\n )}\n >\n {slot !== \"neutral\" && (\n <Icon\n icon={slot === \"exclude\" ? UiClose : UiCheck}\n className={cn(\n \"text-[10px]\",\n slot === \"exclude\" && \"text-red-600\",\n slot === \"include\" && \"text-green-600\",\n )}\n />\n )}\n </span>\n </button>\n );\n}\n\nexport function FilterPill({\n mode = \"neutral\",\n label,\n count,\n icon,\n badge,\n onModeChange,\n onClick,\n title,\n togglePosition = \"left\",\n className,\n}: FilterPillProps) {\n const triState = !!onModeChange;\n const content = (\n <>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex items-center justify-center min-w-[16px] h-[16px] px-1 rounded-full text-[10px] font-bold text-white\",\n badge ?? \"bg-muted-foreground\",\n )}\n >\n {count}\n </span>\n )}\n {icon && (\n <Icon {...(typeof icon === \"string\" ? { name: icon } : { icon })} className=\"text-sm\" />\n )}\n <span className=\"truncate\">{label}</span>\n </>\n );\n\n if (triState) {\n const control = (\n <TristateSwitch\n mode={mode}\n onChange={onModeChange!}\n {...(title ? { ariaLabel: title } : {})}\n />\n );\n const labelContent = (\n <span className=\"inline-flex min-w-0 items-center gap-1.5 text-xs text-foreground\">\n {content}\n </span>\n );\n\n return (\n <span className={cn(\"inline-flex items-center gap-1.5 select-none\", className)} title={title}>\n {togglePosition === \"right\" ? (\n <>\n {labelContent}\n {control}\n </>\n ) : (\n <>\n {control}\n {labelContent}\n </>\n )}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={title}\n className={cn(\n \"inline-flex items-center gap-1.5 text-xs px-2 py-0.5 rounded-full border transition-colors\",\n bodyClasses(mode),\n className,\n )}\n >\n <LegacyMarker mode={mode} />\n {content}\n </button>\n );\n}\n\nfunction LegacyMarker({ mode }: { mode: FilterMode }) {\n if (mode === \"include\") return <Icon icon={UiAdd} className=\"text-xs\" />;\n if (mode === \"exclude\") return <Icon icon={UiRemove} className=\"text-xs\" />;\n if (mode === \"active\") return <span className=\"w-2 h-2 rounded-full bg-current\" />;\n return <span className=\"w-2 h-2 rounded-full bg-current opacity-30\" />;\n}\n\nfunction nextTriStateMode(mode: FilterMode): FilterMode {\n if (mode === \"include\") return \"exclude\";\n if (mode === \"exclude\") return \"neutral\";\n return \"include\";\n}\n\nexport type FilterPillGroupProps = {\n /** Filter pills or separators to lay out. */\n children: ReactNode;\n /** Classes applied to the wrapping row. */\n className?: string;\n};\n\nexport function FilterPillGroup({ children, className }: FilterPillGroupProps) {\n return <div className={cn(\"flex items-center gap-1.5 flex-wrap\", className)}>{children}</div>;\n}\n\nexport function FilterSeparator() {\n return (\n <span aria-hidden className=\"text-border mx-0.5\">\n |\n </span>\n );\n}\n"],"names":["jsx","jsxs","cn","Icon","UiClose","UiCheck","Fragment","UiAdd","UiRemove"],"mappings":"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"}
1
+ {"version":3,"file":"FilterPill.cjs","sources":["../../src/data/FilterPill.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { UiAdd, UiCheck, UiClose, UiRemove } from \"../icons\";\n\nexport type FilterMode = \"active\" | \"neutral\" | \"include\" | \"exclude\";\n\nexport type FilterPillProps = {\n /** Visual and semantic state for the pill. */\n mode?: FilterMode;\n /** Primary visible label. */\n label: ReactNode;\n /** Optional count badge rendered before the label. */\n count?: number;\n /** Iconify name or imported icon component. */\n icon?: string | StaticIconComponent;\n /** Classes for the count badge background. */\n badge?: string;\n /**\n * Tri-state handler. When provided the pill renders as a toggle with a left\n * minus (exclude) and right plus (include) region. Clicking a side toggles\n * that state against \"neutral\"; clicking the label cycles neutral → include\n * → exclude → neutral.\n */\n onModeChange?: (next: FilterMode) => void;\n /** Legacy single-click handler, used when onModeChange is not provided. */\n onClick?: () => void;\n /** Browser tooltip and accessible label for tri-state controls. */\n title?: string;\n /** Places the tri-state toggle before or after the label. */\n togglePosition?: \"left\" | \"right\";\n /**\n * When false the tri-state switch renders without button semantics (an\n * aria-hidden span, nothing focusable) for hosts that own focus and keyboard\n * themselves — e.g. a combobox listbox option, where a nested focusable\n * button would violate the option content model. The region click zones\n * remain active. Defaults to true.\n */\n interactive?: boolean;\n /** Classes applied to the pill root. */\n className?: string;\n};\n\nfunction bodyClasses(mode: FilterMode): string {\n switch (mode) {\n case \"active\":\n return \"bg-primary/10 border-primary/40 text-primary font-medium\";\n case \"include\":\n return \"bg-green-500/10 border-green-500/50 text-green-700 dark:text-green-400 font-medium\";\n case \"exclude\":\n return \"bg-red-500/10 border-red-500/50 text-red-700 dark:text-red-400 font-medium\";\n case \"neutral\":\n default:\n return \"border-border text-muted-foreground hover:bg-accent\";\n }\n}\n\ntype SlotMode = \"exclude\" | \"neutral\" | \"include\";\n\nconst SLOT_TRANSLATE: Record<SlotMode, string> = {\n exclude: \"translate-x-0\",\n neutral: \"translate-x-4\",\n include: \"translate-x-8\",\n};\n\nfunction TristateSwitch({\n mode,\n onChange,\n ariaLabel,\n interactive = true,\n}: {\n mode: FilterMode;\n onChange: (next: FilterMode) => void;\n ariaLabel?: string;\n interactive?: boolean;\n}) {\n const slot: SlotMode =\n mode === \"exclude\" ? \"exclude\" : mode === \"include\" ? \"include\" : \"neutral\";\n const bg =\n slot === \"exclude\" ? \"bg-red-500/80\" : slot === \"include\" ? \"bg-green-500/80\" : \"bg-muted\";\n\n // The three regions are aria-hidden click targets layered over the toggle\n // track: clicking the left edge toggles exclude, the right edge toggles\n // include, and the middle rotates. They are NOT focusable buttons — the\n // whole switch is a single <button> so it exposes one accessible name and\n // does not pollute the accessible name of any FilterBar wrapper that hosts\n // it (e.g. the multi-filter option row, which is itself a role=\"button\").\n const region = (next: FilterMode, regionMode: SlotMode) => (\n <span\n aria-hidden\n data-tristate-region={regionMode}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onChange(next);\n }}\n className=\"relative z-10 h-full flex-1 cursor-pointer\"\n />\n );\n\n const content = (\n <>\n {region(mode === \"exclude\" ? \"neutral\" : \"exclude\", \"exclude\")}\n {region(nextTriStateMode(mode), \"neutral\")}\n {region(mode === \"include\" ? \"neutral\" : \"include\", \"include\")}\n <span\n aria-hidden\n className={cn(\n // The knob stays white in BOTH themes (standard switch look): on the\n // dark-mode muted/red/green tracks white is the high-contrast choice,\n // while bg-background would vanish against the track.\n \"pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150\",\n SLOT_TRANSLATE[slot],\n )}\n >\n {slot !== \"neutral\" && (\n <Icon\n icon={slot === \"exclude\" ? UiClose : UiCheck}\n className={cn(\n \"text-[10px]\",\n slot === \"exclude\" && \"text-red-600\",\n slot === \"include\" && \"text-green-600\",\n )}\n />\n )}\n </span>\n </>\n );\n\n const trackClasses = cn(\n \"relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200\",\n bg,\n );\n\n // Non-interactive hosts (combobox listbox options) own focus and keyboard;\n // the switch must not add a nested focusable button inside role=\"option\".\n if (!interactive) {\n return (\n <span aria-hidden className={trackClasses}>\n {content}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n title={ariaLabel}\n onClick={(event) => {\n // Keyboard activation (Enter/Space) lands here without a region —\n // cycle, matching the middle-region rotation.\n event.preventDefault();\n event.stopPropagation();\n onChange(nextTriStateMode(mode));\n }}\n className={trackClasses}\n >\n {content}\n </button>\n );\n}\n\nexport function FilterPill({\n mode = \"neutral\",\n label,\n count,\n icon,\n badge,\n onModeChange,\n onClick,\n title,\n togglePosition = \"left\",\n interactive = true,\n className,\n}: FilterPillProps) {\n const triState = !!onModeChange;\n const content = (\n <>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex items-center justify-center min-w-[16px] h-[16px] px-1 rounded-full text-[10px] font-bold text-white\",\n badge ?? \"bg-muted-foreground\",\n )}\n >\n {count}\n </span>\n )}\n {icon && (\n <Icon {...(typeof icon === \"string\" ? { name: icon } : { icon })} className=\"text-sm\" />\n )}\n <span className=\"truncate\">{label}</span>\n </>\n );\n\n if (triState) {\n const control = (\n <TristateSwitch\n mode={mode}\n onChange={onModeChange!}\n interactive={interactive}\n {...(title ? { ariaLabel: title } : {})}\n />\n );\n const labelContent = (\n <span className=\"inline-flex min-w-0 items-center gap-1.5 text-xs text-foreground\">\n {content}\n </span>\n );\n\n return (\n <span className={cn(\"inline-flex items-center gap-1.5 select-none\", className)} title={title}>\n {togglePosition === \"right\" ? (\n <>\n {labelContent}\n {control}\n </>\n ) : (\n <>\n {control}\n {labelContent}\n </>\n )}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={title}\n className={cn(\n \"inline-flex items-center gap-1.5 text-xs px-2 py-0.5 rounded-full border transition-colors\",\n bodyClasses(mode),\n className,\n )}\n >\n <LegacyMarker mode={mode} />\n {content}\n </button>\n );\n}\n\nfunction LegacyMarker({ mode }: { mode: FilterMode }) {\n if (mode === \"include\") return <Icon icon={UiAdd} className=\"text-xs\" />;\n if (mode === \"exclude\") return <Icon icon={UiRemove} className=\"text-xs\" />;\n if (mode === \"active\") return <span className=\"w-2 h-2 rounded-full bg-current\" />;\n return <span className=\"w-2 h-2 rounded-full bg-current opacity-30\" />;\n}\n\nfunction nextTriStateMode(mode: FilterMode): FilterMode {\n if (mode === \"include\") return \"exclude\";\n if (mode === \"exclude\") return \"neutral\";\n return \"include\";\n}\n\nexport type FilterPillGroupProps = {\n /** Filter pills or separators to lay out. */\n children: ReactNode;\n /** Classes applied to the wrapping row. */\n className?: string;\n};\n\nexport function FilterPillGroup({ children, className }: FilterPillGroupProps) {\n return <div className={cn(\"flex items-center gap-1.5 flex-wrap\", className)}>{children}</div>;\n}\n\nexport function FilterSeparator() {\n return (\n <span aria-hidden className=\"text-border mx-0.5\">\n |\n </span>\n );\n}\n"],"names":["jsx","jsxs","Fragment","cn","Icon","UiClose","UiCheck","UiAdd","UiRemove"],"mappings":";;;;;;;;;AA2CA,SAAS,YAAY,MAA0B;AAC7C,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EAAA;AAEb;AAIA,MAAM,iBAA2C;AAAA,EAC/C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAKG;AACD,QAAM,OACJ,SAAS,YAAY,YAAY,SAAS,YAAY,YAAY;AACpE,QAAM,KACJ,SAAS,YAAY,kBAAkB,SAAS,YAAY,oBAAoB;AAQlF,QAAM,SAAS,CAAC,MAAkB,eAChCA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAW;AAAA,MACX,wBAAsB;AAAA,MACtB,SAAS,CAAC,UAAU;AAClB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,iBAAS,IAAI;AAAA,MACf;AAAA,MACA,WAAU;AAAA,IAAA;AAAA,EAAA;AAId,QAAM,UACJC,2BAAAA,KAAAC,WAAAA,UAAA,EACG,UAAA;AAAA,IAAA,OAAO,SAAS,YAAY,YAAY,WAAW,SAAS;AAAA,IAC5D,OAAO,iBAAiB,IAAI,GAAG,SAAS;AAAA,IACxC,OAAO,SAAS,YAAY,YAAY,WAAW,SAAS;AAAA,IAC7DF,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAW;AAAA,QACX,WAAWG,MAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAIT;AAAA,UACA,eAAe,IAAI;AAAA,QAAA;AAAA,QAGpB,mBAAS,aACRH,2BAAAA;AAAAA,UAACI,KAAAA;AAAAA,UAAA;AAAA,YACC,MAAM,SAAS,YAAYC,QAAAA,UAAUC,QAAAA;AAAAA,YACrC,WAAWH,MAAAA;AAAAA,cACT;AAAA,cACA,SAAS,aAAa;AAAA,cACtB,SAAS,aAAa;AAAA,YAAA;AAAA,UACxB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,GACF;AAGF,QAAM,eAAeA,MAAAA;AAAAA,IACnB;AAAA,IACA;AAAA,EAAA;AAKF,MAAI,CAAC,aAAa;AAChB,0CACG,QAAA,EAAK,eAAW,MAAC,WAAW,cAC1B,UAAA,SACH;AAAA,EAEJ;AAEA,SACEH,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,OAAO;AAAA,MACP,SAAS,CAAC,UAAU;AAGlB,cAAM,eAAA;AACN,cAAM,gBAAA;AACN,iBAAS,iBAAiB,IAAI,CAAC;AAAA,MACjC;AAAA,MACA,WAAW;AAAA,MAEV,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEO,SAAS,WAAW;AAAA,EACzB,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd;AACF,GAAoB;AAClB,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,UACJC,2BAAAA,KAAAC,WAAAA,UAAA,EACG,UAAA;AAAA,IAAA,UAAU,UACTF,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWG,MAAAA;AAAAA,UACT;AAAA,UACA,SAAS;AAAA,QAAA;AAAA,QAGV,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,QACCH,2BAAAA,IAACI,KAAAA,MAAA,EAAM,GAAI,OAAO,SAAS,WAAW,EAAE,MAAM,SAAS,EAAE,KAAA,GAAS,WAAU,UAAA,CAAU;AAAA,IAExFJ,2BAAAA,IAAC,QAAA,EAAK,WAAU,YAAY,UAAA,MAAA,CAAM;AAAA,EAAA,GACpC;AAGF,MAAI,UAAU;AACZ,UAAM,UACJA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACC,GAAI,QAAQ,EAAE,WAAW,UAAU,CAAA;AAAA,MAAC;AAAA,IAAA;AAGzC,UAAM,eACJA,2BAAAA,IAAC,QAAA,EAAK,WAAU,oEACb,UAAA,SACH;AAGF,WACEA,2BAAAA,IAAC,QAAA,EAAK,WAAWG,MAAAA,GAAG,gDAAgD,SAAS,GAAG,OAC7E,UAAA,mBAAmB,UAClBF,2BAAAA,KAAAC,WAAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MACA;AAAA,IAAA,EAAA,CACH,IAEAD,2BAAAA,KAAAC,WAAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MACA;AAAA,IAAA,EAAA,CACH,EAAA,CAEJ;AAAA,EAEJ;AAEA,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,WAAWE,MAAAA;AAAAA,QACT;AAAA,QACA,YAAY,IAAI;AAAA,QAChB;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAAH,+BAAC,gBAAa,MAAY;AAAA,QACzB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAAS,aAAa,EAAE,QAA8B;AACpD,MAAI,SAAS,UAAW,QAAOA,+BAACI,KAAAA,QAAK,MAAMG,MAAAA,OAAO,WAAU,WAAU;AACtE,MAAI,SAAS,UAAW,QAAOP,+BAACI,KAAAA,QAAK,MAAMI,SAAAA,UAAU,WAAU,WAAU;AACzE,MAAI,SAAS,SAAU,QAAOR,2BAAAA,IAAC,QAAA,EAAK,WAAU,mCAAkC;AAChF,SAAOA,2BAAAA,IAAC,QAAA,EAAK,WAAU,6CAAA,CAA6C;AACtE;AAEA,SAAS,iBAAiB,MAA8B;AACtD,MAAI,SAAS,UAAW,QAAO;AAC/B,MAAI,SAAS,UAAW,QAAO;AAC/B,SAAO;AACT;AASO,SAAS,gBAAgB,EAAE,UAAU,aAAmC;AAC7E,wCAAQ,OAAA,EAAI,WAAWG,MAAAA,GAAG,uCAAuC,SAAS,GAAI,UAAS;AACzF;AAEO,SAAS,kBAAkB;AAChC,wCACG,QAAA,EAAK,eAAW,MAAC,WAAU,sBAAqB,UAAA,KAEjD;AAEJ;;;;"}
@@ -25,10 +25,18 @@ export type FilterPillProps = {
25
25
  title?: string;
26
26
  /** Places the tri-state toggle before or after the label. */
27
27
  togglePosition?: "left" | "right";
28
+ /**
29
+ * When false the tri-state switch renders without button semantics (an
30
+ * aria-hidden span, nothing focusable) for hosts that own focus and keyboard
31
+ * themselves — e.g. a combobox listbox option, where a nested focusable
32
+ * button would violate the option content model. The region click zones
33
+ * remain active. Defaults to true.
34
+ */
35
+ interactive?: boolean;
28
36
  /** Classes applied to the pill root. */
29
37
  className?: string;
30
38
  };
31
- export declare function FilterPill({ mode, label, count, icon, badge, onModeChange, onClick, title, togglePosition, className, }: FilterPillProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function FilterPill({ mode, label, count, icon, badge, onModeChange, onClick, title, togglePosition, interactive, className, }: FilterPillProps): import("react/jsx-runtime").JSX.Element;
32
40
  export type FilterPillGroupProps = {
33
41
  /** Filter pills or separators to lay out. */
34
42
  children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPill.d.ts","sourceRoot":"","sources":["../../src/data/FilterPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAGxD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC5B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6BAA6B;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAsGF,wBAAgB,UAAU,CAAC,EACzB,IAAgB,EAChB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,OAAO,EACP,KAAK,EACL,cAAuB,EACvB,SAAS,GACV,EAAE,eAAe,2CAmEjB;AAeD,MAAM,MAAM,oBAAoB,GAAG;IACjC,6CAA6C;IAC7C,QAAQ,EAAE,SAAS,CAAC;IACpB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CAE5E;AAED,wBAAgB,eAAe,4CAM9B"}
1
+ {"version":3,"file":"FilterPill.d.ts","sourceRoot":"","sources":["../../src/data/FilterPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAGxD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC5B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6BAA6B;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0HF,wBAAgB,UAAU,CAAC,EACzB,IAAgB,EAChB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,OAAO,EACP,KAAK,EACL,cAAuB,EACvB,WAAkB,EAClB,SAAS,GACV,EAAE,eAAe,2CAoEjB;AAeD,MAAM,MAAM,oBAAoB,GAAG;IACjC,6CAA6C;IAC7C,QAAQ,EAAE,SAAS,CAAC;IACpB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CAE5E;AAED,wBAAgB,eAAe,4CAM9B"}
@@ -26,7 +26,8 @@ const SLOT_TRANSLATE = {
26
26
  function TristateSwitch({
27
27
  mode,
28
28
  onChange,
29
- ariaLabel
29
+ ariaLabel,
30
+ interactive = true
30
31
  }) {
31
32
  const slot = mode === "exclude" ? "exclude" : mode === "include" ? "include" : "neutral";
32
33
  const bg = slot === "exclude" ? "bg-red-500/80" : slot === "include" ? "bg-green-500/80" : "bg-muted";
@@ -43,7 +44,43 @@ function TristateSwitch({
43
44
  className: "relative z-10 h-full flex-1 cursor-pointer"
44
45
  }
45
46
  );
46
- return /* @__PURE__ */ jsxs(
47
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
48
+ region(mode === "exclude" ? "neutral" : "exclude", "exclude"),
49
+ region(nextTriStateMode(mode), "neutral"),
50
+ region(mode === "include" ? "neutral" : "include", "include"),
51
+ /* @__PURE__ */ jsx(
52
+ "span",
53
+ {
54
+ "aria-hidden": true,
55
+ className: cn(
56
+ // The knob stays white in BOTH themes (standard switch look): on the
57
+ // dark-mode muted/red/green tracks white is the high-contrast choice,
58
+ // while bg-background would vanish against the track.
59
+ "pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150",
60
+ SLOT_TRANSLATE[slot]
61
+ ),
62
+ children: slot !== "neutral" && /* @__PURE__ */ jsx(
63
+ Icon,
64
+ {
65
+ icon: slot === "exclude" ? UiClose : UiCheck,
66
+ className: cn(
67
+ "text-[10px]",
68
+ slot === "exclude" && "text-red-600",
69
+ slot === "include" && "text-green-600"
70
+ )
71
+ }
72
+ )
73
+ }
74
+ )
75
+ ] });
76
+ const trackClasses = cn(
77
+ "relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200",
78
+ bg
79
+ );
80
+ if (!interactive) {
81
+ return /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: trackClasses, children: content });
82
+ }
83
+ return /* @__PURE__ */ jsx(
47
84
  "button",
48
85
  {
49
86
  type: "button",
@@ -54,39 +91,8 @@ function TristateSwitch({
54
91
  event.stopPropagation();
55
92
  onChange(nextTriStateMode(mode));
56
93
  },
57
- className: cn(
58
- "relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200",
59
- bg
60
- ),
61
- children: [
62
- region(mode === "exclude" ? "neutral" : "exclude", "exclude"),
63
- region(nextTriStateMode(mode), "neutral"),
64
- region(mode === "include" ? "neutral" : "include", "include"),
65
- /* @__PURE__ */ jsx(
66
- "span",
67
- {
68
- "aria-hidden": true,
69
- className: cn(
70
- // The knob stays white in BOTH themes (standard switch look): on the
71
- // dark-mode muted/red/green tracks white is the high-contrast choice,
72
- // while bg-background would vanish against the track.
73
- "pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150",
74
- SLOT_TRANSLATE[slot]
75
- ),
76
- children: slot !== "neutral" && /* @__PURE__ */ jsx(
77
- Icon,
78
- {
79
- icon: slot === "exclude" ? UiClose : UiCheck,
80
- className: cn(
81
- "text-[10px]",
82
- slot === "exclude" && "text-red-600",
83
- slot === "include" && "text-green-600"
84
- )
85
- }
86
- )
87
- }
88
- )
89
- ]
94
+ className: trackClasses,
95
+ children: content
90
96
  }
91
97
  );
92
98
  }
@@ -100,6 +106,7 @@ function FilterPill({
100
106
  onClick,
101
107
  title,
102
108
  togglePosition = "left",
109
+ interactive = true,
103
110
  className
104
111
  }) {
105
112
  const triState = !!onModeChange;
@@ -123,6 +130,7 @@ function FilterPill({
123
130
  {
124
131
  mode,
125
132
  onChange: onModeChange,
133
+ interactive,
126
134
  ...title ? { ariaLabel: title } : {}
127
135
  }
128
136
  );
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPill.js","sources":["../../src/data/FilterPill.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { UiAdd, UiCheck, UiClose, UiRemove } from \"../icons\";\n\nexport type FilterMode = \"active\" | \"neutral\" | \"include\" | \"exclude\";\n\nexport type FilterPillProps = {\n /** Visual and semantic state for the pill. */\n mode?: FilterMode;\n /** Primary visible label. */\n label: ReactNode;\n /** Optional count badge rendered before the label. */\n count?: number;\n /** Iconify name or imported icon component. */\n icon?: string | StaticIconComponent;\n /** Classes for the count badge background. */\n badge?: string;\n /**\n * Tri-state handler. When provided the pill renders as a toggle with a left\n * minus (exclude) and right plus (include) region. Clicking a side toggles\n * that state against \"neutral\"; clicking the label cycles neutral → include\n * → exclude → neutral.\n */\n onModeChange?: (next: FilterMode) => void;\n /** Legacy single-click handler, used when onModeChange is not provided. */\n onClick?: () => void;\n /** Browser tooltip and accessible label for tri-state controls. */\n title?: string;\n /** Places the tri-state toggle before or after the label. */\n togglePosition?: \"left\" | \"right\";\n /** Classes applied to the pill root. */\n className?: string;\n};\n\nfunction bodyClasses(mode: FilterMode): string {\n switch (mode) {\n case \"active\":\n return \"bg-primary/10 border-primary/40 text-primary font-medium\";\n case \"include\":\n return \"bg-green-500/10 border-green-500/50 text-green-700 dark:text-green-400 font-medium\";\n case \"exclude\":\n return \"bg-red-500/10 border-red-500/50 text-red-700 dark:text-red-400 font-medium\";\n case \"neutral\":\n default:\n return \"border-border text-muted-foreground hover:bg-accent\";\n }\n}\n\ntype SlotMode = \"exclude\" | \"neutral\" | \"include\";\n\nconst SLOT_TRANSLATE: Record<SlotMode, string> = {\n exclude: \"translate-x-0\",\n neutral: \"translate-x-4\",\n include: \"translate-x-8\",\n};\n\nfunction TristateSwitch({\n mode,\n onChange,\n ariaLabel,\n}: {\n mode: FilterMode;\n onChange: (next: FilterMode) => void;\n ariaLabel?: string;\n}) {\n const slot: SlotMode =\n mode === \"exclude\" ? \"exclude\" : mode === \"include\" ? \"include\" : \"neutral\";\n const bg =\n slot === \"exclude\" ? \"bg-red-500/80\" : slot === \"include\" ? \"bg-green-500/80\" : \"bg-muted\";\n\n // The three regions are aria-hidden click targets layered over the toggle\n // track: clicking the left edge toggles exclude, the right edge toggles\n // include, and the middle rotates. They are NOT focusable buttons — the\n // whole switch is a single <button> so it exposes one accessible name and\n // does not pollute the accessible name of any FilterBar wrapper that hosts\n // it (e.g. the multi-filter option row, which is itself a role=\"button\").\n const region = (next: FilterMode, regionMode: SlotMode) => (\n <span\n aria-hidden\n data-tristate-region={regionMode}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onChange(next);\n }}\n className=\"relative z-10 h-full flex-1 cursor-pointer\"\n />\n );\n\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n title={ariaLabel}\n onClick={(event) => {\n // Keyboard activation (Enter/Space) lands here without a region —\n // cycle, matching the middle-region rotation.\n event.preventDefault();\n event.stopPropagation();\n onChange(nextTriStateMode(mode));\n }}\n className={cn(\n \"relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200\",\n bg,\n )}\n >\n {region(mode === \"exclude\" ? \"neutral\" : \"exclude\", \"exclude\")}\n {region(nextTriStateMode(mode), \"neutral\")}\n {region(mode === \"include\" ? \"neutral\" : \"include\", \"include\")}\n <span\n aria-hidden\n className={cn(\n // The knob stays white in BOTH themes (standard switch look): on the\n // dark-mode muted/red/green tracks white is the high-contrast choice,\n // while bg-background would vanish against the track.\n \"pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150\",\n SLOT_TRANSLATE[slot],\n )}\n >\n {slot !== \"neutral\" && (\n <Icon\n icon={slot === \"exclude\" ? UiClose : UiCheck}\n className={cn(\n \"text-[10px]\",\n slot === \"exclude\" && \"text-red-600\",\n slot === \"include\" && \"text-green-600\",\n )}\n />\n )}\n </span>\n </button>\n );\n}\n\nexport function FilterPill({\n mode = \"neutral\",\n label,\n count,\n icon,\n badge,\n onModeChange,\n onClick,\n title,\n togglePosition = \"left\",\n className,\n}: FilterPillProps) {\n const triState = !!onModeChange;\n const content = (\n <>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex items-center justify-center min-w-[16px] h-[16px] px-1 rounded-full text-[10px] font-bold text-white\",\n badge ?? \"bg-muted-foreground\",\n )}\n >\n {count}\n </span>\n )}\n {icon && (\n <Icon {...(typeof icon === \"string\" ? { name: icon } : { icon })} className=\"text-sm\" />\n )}\n <span className=\"truncate\">{label}</span>\n </>\n );\n\n if (triState) {\n const control = (\n <TristateSwitch\n mode={mode}\n onChange={onModeChange!}\n {...(title ? { ariaLabel: title } : {})}\n />\n );\n const labelContent = (\n <span className=\"inline-flex min-w-0 items-center gap-1.5 text-xs text-foreground\">\n {content}\n </span>\n );\n\n return (\n <span className={cn(\"inline-flex items-center gap-1.5 select-none\", className)} title={title}>\n {togglePosition === \"right\" ? (\n <>\n {labelContent}\n {control}\n </>\n ) : (\n <>\n {control}\n {labelContent}\n </>\n )}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={title}\n className={cn(\n \"inline-flex items-center gap-1.5 text-xs px-2 py-0.5 rounded-full border transition-colors\",\n bodyClasses(mode),\n className,\n )}\n >\n <LegacyMarker mode={mode} />\n {content}\n </button>\n );\n}\n\nfunction LegacyMarker({ mode }: { mode: FilterMode }) {\n if (mode === \"include\") return <Icon icon={UiAdd} className=\"text-xs\" />;\n if (mode === \"exclude\") return <Icon icon={UiRemove} className=\"text-xs\" />;\n if (mode === \"active\") return <span className=\"w-2 h-2 rounded-full bg-current\" />;\n return <span className=\"w-2 h-2 rounded-full bg-current opacity-30\" />;\n}\n\nfunction nextTriStateMode(mode: FilterMode): FilterMode {\n if (mode === \"include\") return \"exclude\";\n if (mode === \"exclude\") return \"neutral\";\n return \"include\";\n}\n\nexport type FilterPillGroupProps = {\n /** Filter pills or separators to lay out. */\n children: ReactNode;\n /** Classes applied to the wrapping row. */\n className?: string;\n};\n\nexport function FilterPillGroup({ children, className }: FilterPillGroupProps) {\n return <div className={cn(\"flex items-center gap-1.5 flex-wrap\", className)}>{children}</div>;\n}\n\nexport function FilterSeparator() {\n return (\n <span aria-hidden className=\"text-border mx-0.5\">\n |\n </span>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FilterPill.js","sources":["../../src/data/FilterPill.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { UiAdd, UiCheck, UiClose, UiRemove } from \"../icons\";\n\nexport type FilterMode = \"active\" | \"neutral\" | \"include\" | \"exclude\";\n\nexport type FilterPillProps = {\n /** Visual and semantic state for the pill. */\n mode?: FilterMode;\n /** Primary visible label. */\n label: ReactNode;\n /** Optional count badge rendered before the label. */\n count?: number;\n /** Iconify name or imported icon component. */\n icon?: string | StaticIconComponent;\n /** Classes for the count badge background. */\n badge?: string;\n /**\n * Tri-state handler. When provided the pill renders as a toggle with a left\n * minus (exclude) and right plus (include) region. Clicking a side toggles\n * that state against \"neutral\"; clicking the label cycles neutral → include\n * → exclude → neutral.\n */\n onModeChange?: (next: FilterMode) => void;\n /** Legacy single-click handler, used when onModeChange is not provided. */\n onClick?: () => void;\n /** Browser tooltip and accessible label for tri-state controls. */\n title?: string;\n /** Places the tri-state toggle before or after the label. */\n togglePosition?: \"left\" | \"right\";\n /**\n * When false the tri-state switch renders without button semantics (an\n * aria-hidden span, nothing focusable) for hosts that own focus and keyboard\n * themselves — e.g. a combobox listbox option, where a nested focusable\n * button would violate the option content model. The region click zones\n * remain active. Defaults to true.\n */\n interactive?: boolean;\n /** Classes applied to the pill root. */\n className?: string;\n};\n\nfunction bodyClasses(mode: FilterMode): string {\n switch (mode) {\n case \"active\":\n return \"bg-primary/10 border-primary/40 text-primary font-medium\";\n case \"include\":\n return \"bg-green-500/10 border-green-500/50 text-green-700 dark:text-green-400 font-medium\";\n case \"exclude\":\n return \"bg-red-500/10 border-red-500/50 text-red-700 dark:text-red-400 font-medium\";\n case \"neutral\":\n default:\n return \"border-border text-muted-foreground hover:bg-accent\";\n }\n}\n\ntype SlotMode = \"exclude\" | \"neutral\" | \"include\";\n\nconst SLOT_TRANSLATE: Record<SlotMode, string> = {\n exclude: \"translate-x-0\",\n neutral: \"translate-x-4\",\n include: \"translate-x-8\",\n};\n\nfunction TristateSwitch({\n mode,\n onChange,\n ariaLabel,\n interactive = true,\n}: {\n mode: FilterMode;\n onChange: (next: FilterMode) => void;\n ariaLabel?: string;\n interactive?: boolean;\n}) {\n const slot: SlotMode =\n mode === \"exclude\" ? \"exclude\" : mode === \"include\" ? \"include\" : \"neutral\";\n const bg =\n slot === \"exclude\" ? \"bg-red-500/80\" : slot === \"include\" ? \"bg-green-500/80\" : \"bg-muted\";\n\n // The three regions are aria-hidden click targets layered over the toggle\n // track: clicking the left edge toggles exclude, the right edge toggles\n // include, and the middle rotates. They are NOT focusable buttons — the\n // whole switch is a single <button> so it exposes one accessible name and\n // does not pollute the accessible name of any FilterBar wrapper that hosts\n // it (e.g. the multi-filter option row, which is itself a role=\"button\").\n const region = (next: FilterMode, regionMode: SlotMode) => (\n <span\n aria-hidden\n data-tristate-region={regionMode}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onChange(next);\n }}\n className=\"relative z-10 h-full flex-1 cursor-pointer\"\n />\n );\n\n const content = (\n <>\n {region(mode === \"exclude\" ? \"neutral\" : \"exclude\", \"exclude\")}\n {region(nextTriStateMode(mode), \"neutral\")}\n {region(mode === \"include\" ? \"neutral\" : \"include\", \"include\")}\n <span\n aria-hidden\n className={cn(\n // The knob stays white in BOTH themes (standard switch look): on the\n // dark-mode muted/red/green tracks white is the high-contrast choice,\n // while bg-background would vanish against the track.\n \"pointer-events-none absolute left-0.5 top-0.5 z-20 flex size-4 items-center justify-center rounded-full bg-white shadow-sm transition-transform duration-150\",\n SLOT_TRANSLATE[slot],\n )}\n >\n {slot !== \"neutral\" && (\n <Icon\n icon={slot === \"exclude\" ? UiClose : UiCheck}\n className={cn(\n \"text-[10px]\",\n slot === \"exclude\" && \"text-red-600\",\n slot === \"include\" && \"text-green-600\",\n )}\n />\n )}\n </span>\n </>\n );\n\n const trackClasses = cn(\n \"relative inline-flex h-5 w-[52px] shrink-0 overflow-hidden rounded-full transition-colors duration-200\",\n bg,\n );\n\n // Non-interactive hosts (combobox listbox options) own focus and keyboard;\n // the switch must not add a nested focusable button inside role=\"option\".\n if (!interactive) {\n return (\n <span aria-hidden className={trackClasses}>\n {content}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n title={ariaLabel}\n onClick={(event) => {\n // Keyboard activation (Enter/Space) lands here without a region —\n // cycle, matching the middle-region rotation.\n event.preventDefault();\n event.stopPropagation();\n onChange(nextTriStateMode(mode));\n }}\n className={trackClasses}\n >\n {content}\n </button>\n );\n}\n\nexport function FilterPill({\n mode = \"neutral\",\n label,\n count,\n icon,\n badge,\n onModeChange,\n onClick,\n title,\n togglePosition = \"left\",\n interactive = true,\n className,\n}: FilterPillProps) {\n const triState = !!onModeChange;\n const content = (\n <>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex items-center justify-center min-w-[16px] h-[16px] px-1 rounded-full text-[10px] font-bold text-white\",\n badge ?? \"bg-muted-foreground\",\n )}\n >\n {count}\n </span>\n )}\n {icon && (\n <Icon {...(typeof icon === \"string\" ? { name: icon } : { icon })} className=\"text-sm\" />\n )}\n <span className=\"truncate\">{label}</span>\n </>\n );\n\n if (triState) {\n const control = (\n <TristateSwitch\n mode={mode}\n onChange={onModeChange!}\n interactive={interactive}\n {...(title ? { ariaLabel: title } : {})}\n />\n );\n const labelContent = (\n <span className=\"inline-flex min-w-0 items-center gap-1.5 text-xs text-foreground\">\n {content}\n </span>\n );\n\n return (\n <span className={cn(\"inline-flex items-center gap-1.5 select-none\", className)} title={title}>\n {togglePosition === \"right\" ? (\n <>\n {labelContent}\n {control}\n </>\n ) : (\n <>\n {control}\n {labelContent}\n </>\n )}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={title}\n className={cn(\n \"inline-flex items-center gap-1.5 text-xs px-2 py-0.5 rounded-full border transition-colors\",\n bodyClasses(mode),\n className,\n )}\n >\n <LegacyMarker mode={mode} />\n {content}\n </button>\n );\n}\n\nfunction LegacyMarker({ mode }: { mode: FilterMode }) {\n if (mode === \"include\") return <Icon icon={UiAdd} className=\"text-xs\" />;\n if (mode === \"exclude\") return <Icon icon={UiRemove} className=\"text-xs\" />;\n if (mode === \"active\") return <span className=\"w-2 h-2 rounded-full bg-current\" />;\n return <span className=\"w-2 h-2 rounded-full bg-current opacity-30\" />;\n}\n\nfunction nextTriStateMode(mode: FilterMode): FilterMode {\n if (mode === \"include\") return \"exclude\";\n if (mode === \"exclude\") return \"neutral\";\n return \"include\";\n}\n\nexport type FilterPillGroupProps = {\n /** Filter pills or separators to lay out. */\n children: ReactNode;\n /** Classes applied to the wrapping row. */\n className?: string;\n};\n\nexport function FilterPillGroup({ children, className }: FilterPillGroupProps) {\n return <div className={cn(\"flex items-center gap-1.5 flex-wrap\", className)}>{children}</div>;\n}\n\nexport function FilterSeparator() {\n return (\n <span aria-hidden className=\"text-border mx-0.5\">\n |\n </span>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const JsonSchemaForm = require("../../components/JsonSchemaForm.cjs");
6
+ const Badge = require("../Badge.cjs");
7
+ const fixtureBlocks = require("./fixture-blocks.cjs");
8
+ const RawFenceEditor = require("./RawFenceEditor.cjs");
9
+ function FenceForm({
10
+ info,
11
+ body,
12
+ schema,
13
+ parseAsYaml,
14
+ known,
15
+ readOnly,
16
+ onChangeBody
17
+ }) {
18
+ const parsed = react.useMemo(
19
+ () => parseAsYaml ? fixtureBlocks.parseFixtureYaml(body) : void 0,
20
+ [body, parseAsYaml]
21
+ );
22
+ const raw = react.useMemo(
23
+ () => !parseAsYaml ? parseRawFenceValue(body) : void 0,
24
+ [body, parseAsYaml]
25
+ );
26
+ const formValue = parseAsYaml ? (parsed == null ? void 0 : parsed.ok) === true ? parsed.value : void 0 : raw == null ? void 0 : raw.value;
27
+ const canRenderForm = schema != null && formValue != null;
28
+ if (!canRenderForm) {
29
+ return /* @__PURE__ */ jsxRuntime.jsx(NestedPanel, { title: "Source", aside: sourceBadge(parseAsYaml, schema, parsed, known), children: /* @__PURE__ */ jsxRuntime.jsx(
30
+ RawFenceEditor.RawFenceEditor,
31
+ {
32
+ info,
33
+ body,
34
+ helper: (parsed == null ? void 0 : parsed.ok) === false ? parsed.error : void 0,
35
+ readOnly,
36
+ onChange: onChangeBody
37
+ }
38
+ ) });
39
+ }
40
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col border-t border-border", children: [
41
+ /* @__PURE__ */ jsxRuntime.jsx(NestedPanel, { title: "Structured options", children: /* @__PURE__ */ jsxRuntime.jsx(
42
+ JsonSchemaForm.JsonSchemaForm,
43
+ {
44
+ schema,
45
+ value: formValue,
46
+ onChange: (next) => onChangeBody(
47
+ parseAsYaml ? fixtureBlocks.stringifyFixtureYaml(next) : stringifyRawFenceValue(next)
48
+ ),
49
+ readOnly,
50
+ size: "md",
51
+ showPreferencesMenu: false,
52
+ persistPreferences: false,
53
+ layout: {
54
+ mode: "inline",
55
+ labelMaxWidth: "12rem",
56
+ valueMaxWidth: "min(100%, 34rem)"
57
+ }
58
+ }
59
+ ) }),
60
+ /* @__PURE__ */ jsxRuntime.jsx(NestedPanel, { title: "Source", children: /* @__PURE__ */ jsxRuntime.jsx(
61
+ RawFenceEditor.RawFenceEditor,
62
+ {
63
+ info,
64
+ body,
65
+ readOnly,
66
+ onChange: onChangeBody
67
+ }
68
+ ) })
69
+ ] });
70
+ }
71
+ function parseRawFenceValue(body) {
72
+ const parsed = fixtureBlocks.parseFixtureYaml(body);
73
+ if (parsed.ok && isRecord(parsed.value) && typeof parsed.value.content === "string") {
74
+ return { value: parsed.value };
75
+ }
76
+ return { value: { content: body } };
77
+ }
78
+ function stringifyRawFenceValue(value) {
79
+ const content = typeof value.content === "string" ? value.content : "";
80
+ const compact = {};
81
+ for (const [key, field] of Object.entries(value)) {
82
+ if (key === "content") continue;
83
+ if (isEmptyValue(field)) continue;
84
+ compact[key] = field;
85
+ }
86
+ if (Object.keys(compact).length === 0) {
87
+ return content;
88
+ }
89
+ return fixtureBlocks.stringifyFixtureYaml({ content, ...compact });
90
+ }
91
+ function isEmptyValue(value) {
92
+ if (value == null || value === "") return true;
93
+ if (Array.isArray(value)) return value.length === 0;
94
+ if (isRecord(value)) return Object.keys(value).length === 0;
95
+ return false;
96
+ }
97
+ function isRecord(value) {
98
+ return typeof value === "object" && value != null && !Array.isArray(value);
99
+ }
100
+ function sourceBadge(parseAsYaml, schema, parsed, known) {
101
+ if ((parsed == null ? void 0 : parsed.ok) === false) {
102
+ return /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "status", status: "error", size: "xs", clickToCopy: false, children: "YAML error" });
103
+ }
104
+ if (parseAsYaml && schema == null && !known) {
105
+ return /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "status", status: "warning", size: "xs", clickToCopy: false, children: "Unknown fence" });
106
+ }
107
+ return void 0;
108
+ }
109
+ function NestedPanel({
110
+ title,
111
+ aside,
112
+ children
113
+ }) {
114
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "border-b border-border last:border-b-0", children: [
115
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-9 items-center justify-between gap-3 bg-muted/30 px-4 py-2", children: [
116
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-semibold uppercase tracking-normal text-muted-foreground", children: title }),
117
+ aside
118
+ ] }),
119
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 p-4", children })
120
+ ] });
121
+ }
122
+ exports.FenceForm = FenceForm;
123
+ //# sourceMappingURL=FenceForm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FenceForm.cjs","sources":["../../../src/data/FixtureEditor/FenceForm.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { JsonSchemaForm } from \"../../components/JsonSchemaForm\";\nimport type { JsonSchemaObject } from \"../../components/json-schema-form-types\";\nimport { Badge } from \"../Badge\";\nimport type { FixtureEditorSize } from \"./types\";\nimport {\n parseFixtureYaml,\n stringifyFixtureYaml,\n type ParsedFixtureYaml,\n} from \"./fixture-blocks\";\nimport { RawFenceEditor } from \"./RawFenceEditor\";\n\nexport type FenceFormProps = {\n info: string;\n body: string;\n schema: JsonSchemaObject | undefined;\n parseAsYaml: boolean;\n known: boolean;\n readOnly: boolean;\n size: FixtureEditorSize;\n onChangeBody: (body: string) => void;\n};\n\nexport function FenceForm({\n info,\n body,\n schema,\n parseAsYaml,\n known,\n readOnly,\n onChangeBody,\n}: FenceFormProps) {\n const parsed = useMemo<ParsedFixtureYaml | undefined>(\n () => (parseAsYaml ? parseFixtureYaml(body) : undefined),\n [body, parseAsYaml],\n );\n const raw = useMemo(\n () => (!parseAsYaml ? parseRawFenceValue(body) : undefined),\n [body, parseAsYaml],\n );\n const formValue = parseAsYaml\n ? parsed?.ok === true\n ? parsed.value\n : undefined\n : raw?.value;\n const canRenderForm = schema != null && formValue != null;\n\n if (!canRenderForm) {\n return (\n <NestedPanel title=\"Source\" aside={sourceBadge(parseAsYaml, schema, parsed, known)}>\n <RawFenceEditor\n info={info}\n body={body}\n helper={parsed?.ok === false ? parsed.error : undefined}\n readOnly={readOnly}\n onChange={onChangeBody}\n />\n </NestedPanel>\n );\n }\n\n return (\n <div className=\"flex flex-col border-t border-border\">\n <NestedPanel title=\"Structured options\">\n <JsonSchemaForm\n schema={schema}\n value={formValue}\n onChange={(next) =>\n onChangeBody(\n parseAsYaml\n ? stringifyFixtureYaml(next)\n : stringifyRawFenceValue(next),\n )\n }\n readOnly={readOnly}\n size=\"md\"\n showPreferencesMenu={false}\n persistPreferences={false}\n layout={{\n mode: \"inline\",\n labelMaxWidth: \"12rem\",\n valueMaxWidth: \"min(100%, 34rem)\",\n }}\n />\n </NestedPanel>\n <NestedPanel title=\"Source\">\n <RawFenceEditor\n info={info}\n body={body}\n readOnly={readOnly}\n onChange={onChangeBody}\n />\n </NestedPanel>\n </div>\n );\n}\n\nfunction parseRawFenceValue(body: string): { value: Record<string, unknown> } {\n const parsed = parseFixtureYaml(body);\n if (\n parsed.ok &&\n isRecord(parsed.value) &&\n typeof parsed.value.content === \"string\"\n ) {\n return { value: parsed.value };\n }\n return { value: { content: body } };\n}\n\nfunction stringifyRawFenceValue(value: Record<string, unknown>): string {\n const content = typeof value.content === \"string\" ? value.content : \"\";\n const compact: Record<string, unknown> = {};\n for (const [key, field] of Object.entries(value)) {\n if (key === \"content\") continue;\n if (isEmptyValue(field)) continue;\n compact[key] = field;\n }\n if (Object.keys(compact).length === 0) {\n return content;\n }\n return stringifyFixtureYaml({ content, ...compact });\n}\n\nfunction isEmptyValue(value: unknown): boolean {\n if (value == null || value === \"\") return true;\n if (Array.isArray(value)) return value.length === 0;\n if (isRecord(value)) return Object.keys(value).length === 0;\n return false;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\n\nfunction sourceBadge(\n parseAsYaml: boolean,\n schema: JsonSchemaObject | undefined,\n parsed: ParsedFixtureYaml | undefined,\n known: boolean,\n) {\n if (parsed?.ok === false) {\n return (\n <Badge variant=\"status\" status=\"error\" size=\"xs\" clickToCopy={false}>\n YAML error\n </Badge>\n );\n }\n\n if (parseAsYaml && schema == null && !known) {\n return (\n <Badge variant=\"status\" status=\"warning\" size=\"xs\" clickToCopy={false}>\n Unknown fence\n </Badge>\n );\n }\n\n return undefined;\n}\n\nfunction NestedPanel({\n title,\n aside,\n children,\n}: {\n title: string;\n aside?: ReactNode;\n children: ReactNode;\n}) {\n return (\n <section className=\"border-b border-border last:border-b-0\">\n <div className=\"flex min-h-9 items-center justify-between gap-3 bg-muted/30 px-4 py-2\">\n <h4 className=\"text-xs font-semibold uppercase tracking-normal text-muted-foreground\">\n {title}\n </h4>\n {aside}\n </div>\n <div className=\"min-w-0 p-4\">{children}</div>\n </section>\n );\n}\n"],"names":["useMemo","parseFixtureYaml","jsx","RawFenceEditor","jsxs","JsonSchemaForm","stringifyFixtureYaml","Badge"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { JsonSchemaObject } from '../../components/json-schema-form-types';
2
+ import { FixtureEditorSize } from './types';
3
+ export type FenceFormProps = {
4
+ info: string;
5
+ body: string;
6
+ schema: JsonSchemaObject | undefined;
7
+ parseAsYaml: boolean;
8
+ known: boolean;
9
+ readOnly: boolean;
10
+ size: FixtureEditorSize;
11
+ onChangeBody: (body: string) => void;
12
+ };
13
+ export declare function FenceForm({ info, body, schema, parseAsYaml, known, readOnly, onChangeBody, }: FenceFormProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=FenceForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FenceForm.d.ts","sourceRoot":"","sources":["../../../src/data/FixtureEditor/FenceForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQjD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,WAAW,EACX,KAAK,EACL,QAAQ,EACR,YAAY,GACb,EAAE,cAAc,2CAgEhB"}