@flanksource/clicky-ui 0.1.0 → 0.2.2

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 (378) hide show
  1. package/README.md +29 -2
  2. package/dist/api-explorer.d.ts +5 -0
  3. package/dist/api-explorer.d.ts.map +1 -0
  4. package/dist/api-explorer.js +25 -0
  5. package/dist/api-explorer.js.map +1 -0
  6. package/dist/clicky.d.ts +2 -0
  7. package/dist/clicky.d.ts.map +1 -0
  8. package/dist/clicky.js +5 -0
  9. package/dist/clicky.js.map +1 -0
  10. package/dist/components/DatePicker.d.ts +18 -0
  11. package/dist/components/DatePicker.d.ts.map +1 -0
  12. package/dist/components/DatePicker.js +63 -0
  13. package/dist/components/DatePicker.js.map +1 -0
  14. package/dist/components/DateTimePicker.d.ts +18 -0
  15. package/dist/components/DateTimePicker.d.ts.map +1 -0
  16. package/dist/components/DateTimePicker.js +84 -0
  17. package/dist/components/DateTimePicker.js.map +1 -0
  18. package/dist/components/FilterBar.d.ts +180 -0
  19. package/dist/components/FilterBar.d.ts.map +1 -0
  20. package/dist/components/FilterBar.js +1685 -0
  21. package/dist/components/FilterBar.js.map +1 -0
  22. package/dist/components/MultiSelect.d.ts +19 -0
  23. package/dist/components/MultiSelect.d.ts.map +1 -0
  24. package/dist/components/MultiSelect.js +143 -0
  25. package/dist/components/MultiSelect.js.map +1 -0
  26. package/dist/components/RangeSlider.d.ts +16 -0
  27. package/dist/components/RangeSlider.d.ts.map +1 -0
  28. package/dist/components/RangeSlider.js +92 -0
  29. package/dist/components/RangeSlider.js.map +1 -0
  30. package/dist/components/button.d.ts +21 -0
  31. package/dist/components/button.d.ts.map +1 -0
  32. package/dist/components/button.js +126 -0
  33. package/dist/components/button.js.map +1 -0
  34. package/dist/components/density-switcher.d.ts +7 -0
  35. package/dist/components/density-switcher.d.ts.map +1 -0
  36. package/dist/components/density-switcher.js +32 -0
  37. package/dist/components/density-switcher.js.map +1 -0
  38. package/dist/components/icon-menu-picker.d.ts +23 -0
  39. package/dist/components/icon-menu-picker.d.ts.map +1 -0
  40. package/dist/components/icon-menu-picker.js +192 -0
  41. package/dist/components/icon-menu-picker.js.map +1 -0
  42. package/dist/components/select.d.ts +15 -0
  43. package/dist/components/select.d.ts.map +1 -0
  44. package/dist/components/select.js +39 -0
  45. package/dist/components/select.js.map +1 -0
  46. package/dist/components/theme-switcher.d.ts +7 -0
  47. package/dist/components/theme-switcher.d.ts.map +1 -0
  48. package/dist/components/theme-switcher.js +42 -0
  49. package/dist/components/theme-switcher.js.map +1 -0
  50. package/dist/components.d.ts +15 -0
  51. package/dist/components.d.ts.map +1 -0
  52. package/dist/components.js +33 -0
  53. package/dist/components.js.map +1 -0
  54. package/dist/data/AnsiHtml.d.ts +7 -0
  55. package/dist/data/AnsiHtml.d.ts.map +1 -0
  56. package/dist/data/AnsiHtml.js +71 -0
  57. package/dist/data/AnsiHtml.js.map +1 -0
  58. package/dist/data/Avatar.d.ts +32 -0
  59. package/dist/data/Avatar.d.ts.map +1 -0
  60. package/dist/data/Avatar.js +201 -0
  61. package/dist/data/Avatar.js.map +1 -0
  62. package/dist/data/AvatarBadge.d.ts +26 -0
  63. package/dist/data/AvatarBadge.d.ts.map +1 -0
  64. package/dist/data/AvatarBadge.js +104 -0
  65. package/dist/data/AvatarBadge.js.map +1 -0
  66. package/dist/data/Badge.d.ts +44 -0
  67. package/dist/data/Badge.d.ts.map +1 -0
  68. package/dist/data/Badge.js +667 -0
  69. package/dist/data/Badge.js.map +1 -0
  70. package/dist/data/Clicky.d.ts +147 -0
  71. package/dist/data/Clicky.d.ts.map +1 -0
  72. package/dist/data/Clicky.fixtures.d.ts +3 -0
  73. package/dist/data/Clicky.fixtures.d.ts.map +1 -0
  74. package/dist/data/Clicky.js +1960 -0
  75. package/dist/data/Clicky.js.map +1 -0
  76. package/dist/data/DataTable.d.ts +95 -0
  77. package/dist/data/DataTable.d.ts.map +1 -0
  78. package/dist/data/DataTable.js +1464 -0
  79. package/dist/data/DataTable.js.map +1 -0
  80. package/dist/data/FilterPill.d.ts +29 -0
  81. package/dist/data/FilterPill.d.ts.map +1 -0
  82. package/dist/data/FilterPill.js +153 -0
  83. package/dist/data/FilterPill.js.map +1 -0
  84. package/dist/data/Gauge.d.ts +15 -0
  85. package/dist/data/Gauge.d.ts.map +1 -0
  86. package/dist/data/Gauge.js +63 -0
  87. package/dist/data/Gauge.js.map +1 -0
  88. package/dist/data/Icon.d.ts +53 -0
  89. package/dist/data/Icon.d.ts.map +1 -0
  90. package/dist/data/Icon.js +115 -0
  91. package/dist/data/Icon.js.map +1 -0
  92. package/dist/data/JsonView.d.ts +8 -0
  93. package/dist/data/JsonView.d.ts.map +1 -0
  94. package/dist/data/JsonView.js +74 -0
  95. package/dist/data/JsonView.js.map +1 -0
  96. package/dist/data/KeyValueList.d.ts +17 -0
  97. package/dist/data/KeyValueList.d.ts.map +1 -0
  98. package/dist/data/KeyValueList.js +33 -0
  99. package/dist/data/KeyValueList.js.map +1 -0
  100. package/dist/data/LogViewer.d.ts +10 -0
  101. package/dist/data/LogViewer.d.ts.map +1 -0
  102. package/dist/data/LogViewer.js +46 -0
  103. package/dist/data/LogViewer.js.map +1 -0
  104. package/dist/data/LogsTable.d.ts +27 -0
  105. package/dist/data/LogsTable.d.ts.map +1 -0
  106. package/dist/data/LogsTable.js +580 -0
  107. package/dist/data/LogsTable.js.map +1 -0
  108. package/dist/data/Markdown.d.ts +6 -0
  109. package/dist/data/Markdown.d.ts.map +1 -0
  110. package/dist/data/Markdown.js +59 -0
  111. package/dist/data/Markdown.js.map +1 -0
  112. package/dist/data/MatrixTable.d.ts +22 -0
  113. package/dist/data/MatrixTable.d.ts.map +1 -0
  114. package/dist/data/MatrixTable.js +164 -0
  115. package/dist/data/MatrixTable.js.map +1 -0
  116. package/dist/data/MethodBadge.d.ts +6 -0
  117. package/dist/data/MethodBadge.d.ts.map +1 -0
  118. package/dist/data/MethodBadge.js +18 -0
  119. package/dist/data/MethodBadge.js.map +1 -0
  120. package/dist/data/ProgressBar.d.ts +13 -0
  121. package/dist/data/ProgressBar.d.ts.map +1 -0
  122. package/dist/data/ProgressBar.js +34 -0
  123. package/dist/data/ProgressBar.js.map +1 -0
  124. package/dist/data/SortableHeader.d.ts +12 -0
  125. package/dist/data/SortableHeader.d.ts.map +1 -0
  126. package/dist/data/SortableHeader.js +33 -0
  127. package/dist/data/SortableHeader.js.map +1 -0
  128. package/dist/data/TabButton.d.ts +12 -0
  129. package/dist/data/TabButton.d.ts.map +1 -0
  130. package/dist/data/TabButton.js +45 -0
  131. package/dist/data/TabButton.js.map +1 -0
  132. package/dist/data/Tree.d.ts +35 -0
  133. package/dist/data/Tree.d.ts.map +1 -0
  134. package/dist/data/Tree.js +236 -0
  135. package/dist/data/Tree.js.map +1 -0
  136. package/dist/data/TreeGroupHeader.d.ts +11 -0
  137. package/dist/data/TreeGroupHeader.d.ts.map +1 -0
  138. package/dist/data/TreeGroupHeader.js +41 -0
  139. package/dist/data/TreeGroupHeader.js.map +1 -0
  140. package/dist/data/TreeNode.d.ts +43 -0
  141. package/dist/data/TreeNode.d.ts.map +1 -0
  142. package/dist/data/TreeNode.js +100 -0
  143. package/dist/data/TreeNode.js.map +1 -0
  144. package/dist/data/cells/StatusDot.d.ts +11 -0
  145. package/dist/data/cells/StatusDot.d.ts.map +1 -0
  146. package/dist/data/cells/StatusDot.js +38 -0
  147. package/dist/data/cells/StatusDot.js.map +1 -0
  148. package/dist/data/cells/TagList.d.ts +59 -0
  149. package/dist/data/cells/TagList.d.ts.map +1 -0
  150. package/dist/data/cells/TagList.js +257 -0
  151. package/dist/data/cells/TagList.js.map +1 -0
  152. package/dist/data/cells/Timestamp.d.ts +46 -0
  153. package/dist/data/cells/Timestamp.d.ts.map +1 -0
  154. package/dist/data/cells/Timestamp.js +146 -0
  155. package/dist/data/cells/Timestamp.js.map +1 -0
  156. package/dist/data/cells/status-mapping.d.ts +8 -0
  157. package/dist/data/cells/status-mapping.d.ts.map +1 -0
  158. package/dist/data/cells/status-mapping.js +44 -0
  159. package/dist/data/cells/status-mapping.js.map +1 -0
  160. package/dist/data/code-highlight.d.ts +12 -0
  161. package/dist/data/code-highlight.d.ts.map +1 -0
  162. package/dist/data/code-highlight.js +28 -0
  163. package/dist/data/code-highlight.js.map +1 -0
  164. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +9 -0
  165. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -0
  166. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +445 -0
  167. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -0
  168. package/dist/data/diagnostics/DiagnosticsTree.d.ts +9 -0
  169. package/dist/data/diagnostics/DiagnosticsTree.d.ts.map +1 -0
  170. package/dist/data/diagnostics/DiagnosticsTree.js +78 -0
  171. package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -0
  172. package/dist/data/diagnostics/ErrorDetails.d.ts +20 -0
  173. package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -0
  174. package/dist/data/diagnostics/ErrorDetails.js +157 -0
  175. package/dist/data/diagnostics/ErrorDetails.js.map +1 -0
  176. package/dist/data/diagnostics/GoroutineCard.d.ts +10 -0
  177. package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -0
  178. package/dist/data/diagnostics/GoroutineCard.js +75 -0
  179. package/dist/data/diagnostics/GoroutineCard.js.map +1 -0
  180. package/dist/data/diagnostics/JvmStackTrace.d.ts +11 -0
  181. package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -0
  182. package/dist/data/diagnostics/JvmStackTrace.js +26 -0
  183. package/dist/data/diagnostics/JvmStackTrace.js.map +1 -0
  184. package/dist/data/diagnostics/RenderedStackTrace.d.ts +18 -0
  185. package/dist/data/diagnostics/RenderedStackTrace.d.ts.map +1 -0
  186. package/dist/data/diagnostics/RenderedStackTrace.js +235 -0
  187. package/dist/data/diagnostics/RenderedStackTrace.js.map +1 -0
  188. package/dist/data/diagnostics/ThreadCard.d.ts +10 -0
  189. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -0
  190. package/dist/data/diagnostics/ThreadCard.js +78 -0
  191. package/dist/data/diagnostics/ThreadCard.js.map +1 -0
  192. package/dist/data/diagnostics/error-diagnostics.d.ts +26 -0
  193. package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -0
  194. package/dist/data/diagnostics/error-diagnostics.js +108 -0
  195. package/dist/data/diagnostics/error-diagnostics.js.map +1 -0
  196. package/dist/data/diagnostics/fixtures.d.ts +3 -0
  197. package/dist/data/diagnostics/fixtures.d.ts.map +1 -0
  198. package/dist/data/diagnostics/jvm-stacktrace.d.ts +34 -0
  199. package/dist/data/diagnostics/jvm-stacktrace.d.ts.map +1 -0
  200. package/dist/data/diagnostics/jvm-stacktrace.js +190 -0
  201. package/dist/data/diagnostics/jvm-stacktrace.js.map +1 -0
  202. package/dist/data/diagnostics/stacktrace-parse.d.ts +11 -0
  203. package/dist/data/diagnostics/stacktrace-parse.d.ts.map +1 -0
  204. package/dist/data/diagnostics/stacktrace-parse.js +87 -0
  205. package/dist/data/diagnostics/stacktrace-parse.js.map +1 -0
  206. package/dist/data/diagnostics/stacktrace.d.ts +38 -0
  207. package/dist/data/diagnostics/stacktrace.d.ts.map +1 -0
  208. package/dist/data/diagnostics/stacktrace.js +119 -0
  209. package/dist/data/diagnostics/stacktrace.js.map +1 -0
  210. package/dist/data/diagnostics/types.d.ts +30 -0
  211. package/dist/data/diagnostics/types.d.ts.map +1 -0
  212. package/dist/data/diagnostics/utils.d.ts +8 -0
  213. package/dist/data/diagnostics/utils.d.ts.map +1 -0
  214. package/dist/data/diagnostics/utils.js +59 -0
  215. package/dist/data/diagnostics/utils.js.map +1 -0
  216. package/dist/data/har/HarPanel.d.ts +9 -0
  217. package/dist/data/har/HarPanel.d.ts.map +1 -0
  218. package/dist/data/har/HarPanel.js +175 -0
  219. package/dist/data/har/HarPanel.js.map +1 -0
  220. package/dist/data/har/fixtures.d.ts +3 -0
  221. package/dist/data/har/fixtures.d.ts.map +1 -0
  222. package/dist/data/har/types.d.ts +47 -0
  223. package/dist/data/har/types.d.ts.map +1 -0
  224. package/dist/data.d.ts +39 -0
  225. package/dist/data.d.ts.map +1 -0
  226. package/dist/data.js +109 -0
  227. package/dist/data.js.map +1 -0
  228. package/dist/hooks/use-density.d.ts +22 -0
  229. package/dist/hooks/use-density.d.ts.map +1 -0
  230. package/dist/hooks/use-density.js +54 -0
  231. package/dist/hooks/use-density.js.map +1 -0
  232. package/dist/hooks/use-history-route.d.ts +6 -0
  233. package/dist/hooks/use-history-route.d.ts.map +1 -0
  234. package/dist/hooks/use-history-route.js +31 -0
  235. package/dist/hooks/use-history-route.js.map +1 -0
  236. package/dist/hooks/use-sort.d.ts +17 -0
  237. package/dist/hooks/use-sort.d.ts.map +1 -0
  238. package/dist/hooks/use-sort.js +42 -0
  239. package/dist/hooks/use-sort.js.map +1 -0
  240. package/dist/hooks/use-theme.d.ts +17 -0
  241. package/dist/hooks/use-theme.d.ts.map +1 -0
  242. package/dist/hooks/use-theme.js +68 -0
  243. package/dist/hooks/use-theme.js.map +1 -0
  244. package/dist/hooks.d.ts +5 -0
  245. package/dist/hooks.d.ts.map +1 -0
  246. package/dist/hooks.js +14 -0
  247. package/dist/hooks.js.map +1 -0
  248. package/dist/index.d.ts +7 -0
  249. package/dist/index.d.ts.map +1 -0
  250. package/dist/index.js +195 -0
  251. package/dist/index.js.map +1 -0
  252. package/dist/layout/Section.d.ts +23 -0
  253. package/dist/layout/Section.d.ts.map +1 -0
  254. package/dist/layout/Section.js +73 -0
  255. package/dist/layout/Section.js.map +1 -0
  256. package/dist/layout/SplitPane.d.ts +13 -0
  257. package/dist/layout/SplitPane.d.ts.map +1 -0
  258. package/dist/layout/SplitPane.js +72 -0
  259. package/dist/layout/SplitPane.js.map +1 -0
  260. package/dist/lib/palette.d.ts +4 -0
  261. package/dist/lib/palette.d.ts.map +1 -0
  262. package/dist/lib/palette.js +35 -0
  263. package/dist/lib/palette.js.map +1 -0
  264. package/dist/lib/size.d.ts +6 -0
  265. package/dist/lib/size.d.ts.map +1 -0
  266. package/dist/lib/size.js +14 -0
  267. package/dist/lib/size.js.map +1 -0
  268. package/dist/lib/utils.d.ts +3 -0
  269. package/dist/lib/utils.d.ts.map +1 -0
  270. package/dist/lib/utils.js +9 -0
  271. package/dist/lib/utils.js.map +1 -0
  272. package/dist/overlay/HoverCard.d.ts +13 -0
  273. package/dist/overlay/HoverCard.d.ts.map +1 -0
  274. package/dist/overlay/HoverCard.js +170 -0
  275. package/dist/overlay/HoverCard.js.map +1 -0
  276. package/dist/overlay/Modal.d.ts +17 -0
  277. package/dist/overlay/Modal.d.ts.map +1 -0
  278. package/dist/overlay/Modal.js +91 -0
  279. package/dist/overlay/Modal.js.map +1 -0
  280. package/dist/rpc/AcceptPicker.d.ts +52 -0
  281. package/dist/rpc/AcceptPicker.d.ts.map +1 -0
  282. package/dist/rpc/AcceptPicker.js +126 -0
  283. package/dist/rpc/AcceptPicker.js.map +1 -0
  284. package/dist/rpc/ApiExplorer.d.ts +11 -0
  285. package/dist/rpc/ApiExplorer.d.ts.map +1 -0
  286. package/dist/rpc/ApiExplorer.js +37 -0
  287. package/dist/rpc/ApiExplorer.js.map +1 -0
  288. package/dist/rpc/CommandForm.d.ts +15 -0
  289. package/dist/rpc/CommandForm.d.ts.map +1 -0
  290. package/dist/rpc/CommandForm.js +356 -0
  291. package/dist/rpc/CommandForm.js.map +1 -0
  292. package/dist/rpc/CommandOutput.d.ts +11 -0
  293. package/dist/rpc/CommandOutput.d.ts.map +1 -0
  294. package/dist/rpc/CommandOutput.js +195 -0
  295. package/dist/rpc/CommandOutput.js.map +1 -0
  296. package/dist/rpc/EndpointList.d.ts +18 -0
  297. package/dist/rpc/EndpointList.d.ts.map +1 -0
  298. package/dist/rpc/EndpointList.js +56 -0
  299. package/dist/rpc/EndpointList.js.map +1 -0
  300. package/dist/rpc/EntityExplorerApp.d.ts +15 -0
  301. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -0
  302. package/dist/rpc/EntityExplorerApp.js +282 -0
  303. package/dist/rpc/EntityExplorerApp.js.map +1 -0
  304. package/dist/rpc/ExecutionResult.d.ts +14 -0
  305. package/dist/rpc/ExecutionResult.d.ts.map +1 -0
  306. package/dist/rpc/ExecutionResult.js +51 -0
  307. package/dist/rpc/ExecutionResult.js.map +1 -0
  308. package/dist/rpc/FilterForm.d.ts +22 -0
  309. package/dist/rpc/FilterForm.d.ts.map +1 -0
  310. package/dist/rpc/FilterForm.js +392 -0
  311. package/dist/rpc/FilterForm.js.map +1 -0
  312. package/dist/rpc/InlineError.d.ts +7 -0
  313. package/dist/rpc/InlineError.d.ts.map +1 -0
  314. package/dist/rpc/InlineError.js +54 -0
  315. package/dist/rpc/InlineError.js.map +1 -0
  316. package/dist/rpc/OperationActionDialog.d.ts +12 -0
  317. package/dist/rpc/OperationActionDialog.d.ts.map +1 -0
  318. package/dist/rpc/OperationActionDialog.js +105 -0
  319. package/dist/rpc/OperationActionDialog.js.map +1 -0
  320. package/dist/rpc/OperationCatalog.d.ts +21 -0
  321. package/dist/rpc/OperationCatalog.d.ts.map +1 -0
  322. package/dist/rpc/OperationCatalog.js +339 -0
  323. package/dist/rpc/OperationCatalog.js.map +1 -0
  324. package/dist/rpc/OperationCommandPage.d.ts +22 -0
  325. package/dist/rpc/OperationCommandPage.d.ts.map +1 -0
  326. package/dist/rpc/OperationCommandPage.js +484 -0
  327. package/dist/rpc/OperationCommandPage.js.map +1 -0
  328. package/dist/rpc/OperationEntityPage.d.ts +23 -0
  329. package/dist/rpc/OperationEntityPage.d.ts.map +1 -0
  330. package/dist/rpc/OperationEntityPage.js +218 -0
  331. package/dist/rpc/OperationEntityPage.js.map +1 -0
  332. package/dist/rpc/classify.d.ts +8 -0
  333. package/dist/rpc/classify.d.ts.map +1 -0
  334. package/dist/rpc/classify.js +76 -0
  335. package/dist/rpc/classify.js.map +1 -0
  336. package/dist/rpc/clickyMetadata.d.ts +12 -0
  337. package/dist/rpc/clickyMetadata.d.ts.map +1 -0
  338. package/dist/rpc/clickyMetadata.js +71 -0
  339. package/dist/rpc/clickyMetadata.js.map +1 -0
  340. package/dist/rpc/formMetadata.d.ts +27 -0
  341. package/dist/rpc/formMetadata.d.ts.map +1 -0
  342. package/dist/rpc/formMetadata.js +250 -0
  343. package/dist/rpc/formMetadata.js.map +1 -0
  344. package/dist/rpc/types.d.ts +109 -0
  345. package/dist/rpc/types.d.ts.map +1 -0
  346. package/dist/rpc/types.js +8 -0
  347. package/dist/rpc/types.js.map +1 -0
  348. package/dist/rpc/useOperations.d.ts +346 -0
  349. package/dist/rpc/useOperations.d.ts.map +1 -0
  350. package/dist/rpc/useOperations.js +31 -0
  351. package/dist/rpc/useOperations.js.map +1 -0
  352. package/dist/rpc.d.ts +14 -0
  353. package/dist/rpc.d.ts.map +1 -0
  354. package/dist/rpc.js +37 -0
  355. package/dist/rpc.js.map +1 -0
  356. package/dist/styles.css +2 -0
  357. package/dist/styles.d.ts +1 -0
  358. package/dist/styles.d.ts.map +1 -0
  359. package/dist/styles.js +2 -0
  360. package/dist/styles.js.map +1 -0
  361. package/dist/tailwind-preset.d.ts +4 -0
  362. package/dist/tailwind-preset.d.ts.map +1 -0
  363. package/dist/tailwind-preset.js +69 -0
  364. package/dist/tailwind-preset.js.map +1 -0
  365. package/dist/utils.d.ts +4 -0
  366. package/dist/utils.d.ts.map +1 -0
  367. package/dist/utils.js +12 -0
  368. package/dist/utils.js.map +1 -0
  369. package/package.json +83 -40
  370. package/dist/index.d.mts +0 -834
  371. package/dist/index.d.mts.map +0 -1
  372. package/dist/index.mjs +0 -2918
  373. package/dist/index.mjs.map +0 -1
  374. package/dist/tailwind-preset.d.mts +0 -7
  375. package/dist/tailwind-preset.d.mts.map +0 -1
  376. package/dist/tailwind-preset.mjs +0 -64
  377. package/dist/tailwind-preset.mjs.map +0 -1
  378. package/src/styles/tokens.css +0 -78
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/data/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,OAAO,CAAC;AAG1D,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAK1D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7F,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAYF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,qBAAqB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAI9D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAErF;AA6DD,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,SAAS,EACT,KAAK,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,KAAK,EACL,KAAe,EACf,IAAI,EACJ,IAAgB,GACjB,EAAE,SAAS,2CA2CX"}
@@ -0,0 +1,115 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { iconLoaded, Icon as Icon$1 } from "@iconify/react";
3
+ import { cn } from "../lib/utils.js";
4
+ import { resolveSize } from "../lib/size.js";
5
+ import { useDensityValue } from "../hooks/use-density.js";
6
+ const TONE_CLASSES = {
7
+ emerald: "text-emerald-700 ring-emerald-200/80",
8
+ amber: "text-amber-700 ring-amber-200/80",
9
+ rose: "text-rose-700 ring-rose-200/80",
10
+ slate: "text-slate-700 ring-slate-200/80",
11
+ sky: "text-sky-700 ring-sky-200/80",
12
+ violet: "text-violet-700 ring-violet-200/80",
13
+ neutral: "text-foreground ring-border"
14
+ };
15
+ let fallbackIcon = null;
16
+ function setFallbackIconProvider(component) {
17
+ fallbackIcon = component;
18
+ }
19
+ function renderGlyph(name, glyphWidth, glyphHeight, rotate, flip, inline, glyphClassName, title) {
20
+ if (iconLoaded(name)) {
21
+ return /* @__PURE__ */ jsx(
22
+ Icon$1,
23
+ {
24
+ icon: name,
25
+ ...glyphClassName ? { className: glyphClassName } : {},
26
+ ...glyphWidth != null ? { width: glyphWidth } : {},
27
+ ...glyphHeight != null ? { height: glyphHeight } : {},
28
+ ...typeof rotate === "number" ? { rotate } : {},
29
+ ...flip != null ? { flip } : {},
30
+ ...inline != null ? { inline } : {},
31
+ ...title ? { title } : {}
32
+ }
33
+ );
34
+ }
35
+ if (fallbackIcon) {
36
+ const Fallback = fallbackIcon;
37
+ const glyphSize = typeof glyphWidth === "number" ? glyphWidth : glyphHeight;
38
+ return /* @__PURE__ */ jsx(
39
+ Fallback,
40
+ {
41
+ name,
42
+ ...glyphClassName ? { className: glyphClassName } : {},
43
+ ...glyphSize != null ? { size: glyphSize } : {},
44
+ ...title ? { alt: title } : {}
45
+ }
46
+ );
47
+ }
48
+ const iconifyProps = {
49
+ icon: name,
50
+ className: glyphClassName,
51
+ "aria-hidden": title ? void 0 : true
52
+ };
53
+ if (glyphWidth != null) iconifyProps.width = glyphWidth;
54
+ if (glyphHeight != null) iconifyProps.height = glyphHeight;
55
+ if (rotate != null) iconifyProps.rotate = rotate;
56
+ if (flip != null) iconifyProps.flip = flip;
57
+ if (inline != null) iconifyProps.inline = inline;
58
+ if (title != null) iconifyProps.title = title;
59
+ return /* @__PURE__ */ jsx("iconify-icon", { ...iconifyProps });
60
+ }
61
+ function Icon({
62
+ name,
63
+ className,
64
+ width,
65
+ height,
66
+ rotate,
67
+ flip,
68
+ inline,
69
+ title,
70
+ style = "plain",
71
+ size,
72
+ tone = "neutral"
73
+ }) {
74
+ const density = useDensityValue();
75
+ const pxSize = size != null ? resolveSize(size, density) : void 0;
76
+ const glyphSize = pxSize != null ? Math.max(8, Math.round(pxSize * 0.5)) : void 0;
77
+ const resolvedWidth = width ?? (style === "badge" ? glyphSize : pxSize);
78
+ const resolvedHeight = height ?? (style === "badge" ? glyphSize : pxSize);
79
+ const glyphClassName = cn("shrink-0", style === "plain" ? className : void 0);
80
+ const glyphTitle = style === "plain" ? title : void 0;
81
+ const icon = renderGlyph(
82
+ name,
83
+ resolvedWidth,
84
+ resolvedHeight,
85
+ rotate,
86
+ flip,
87
+ inline,
88
+ glyphClassName,
89
+ glyphTitle
90
+ );
91
+ if (style === "plain") {
92
+ return icon;
93
+ }
94
+ const badgeStyle = pxSize != null ? { width: pxSize, height: pxSize } : void 0;
95
+ return /* @__PURE__ */ jsx(
96
+ "span",
97
+ {
98
+ title,
99
+ "aria-label": title,
100
+ role: title ? "img" : void 0,
101
+ className: cn(
102
+ "inline-flex items-center justify-center rounded-full bg-white shadow-sm ring-1 ring-inset",
103
+ TONE_CLASSES[tone],
104
+ className
105
+ ),
106
+ style: badgeStyle,
107
+ children: icon
108
+ }
109
+ );
110
+ }
111
+ export {
112
+ Icon,
113
+ setFallbackIconProvider
114
+ };
115
+ //# sourceMappingURL=Icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.js","sources":["../../src/data/Icon.tsx"],"sourcesContent":["import type { CSSProperties, ComponentType } from \"react\";\nimport { Icon as IconifyReactIcon, iconLoaded } from \"@iconify/react\";\nimport { cn } from \"../lib/utils\";\nimport { resolveSize, type SizeToken } from \"../lib/size\";\nimport { useDensityValue } from \"../hooks/use-density\";\n// Type augmentation (no runtime side-effects) — include via tsconfig.\n// @see ./iconify-icon.d.ts\n\nexport type IconStyle = \"plain\" | \"badge\";\n\nexport type IconTone = \"emerald\" | \"amber\" | \"rose\" | \"slate\" | \"sky\" | \"violet\" | \"neutral\";\n\nexport type IconProps = {\n name: string;\n className?: string;\n width?: string | number;\n height?: string | number;\n rotate?: string | number;\n flip?: string;\n inline?: boolean;\n title?: string;\n /**\n * Presentation style. `plain` (default) renders the icon inline.\n * `badge` wraps the icon in a circular chip (white background, ring, shadow)\n * sized by `size` — use in stage/approval cells so the chip scales with a\n * neighbouring avatar.\n */\n style?: IconStyle;\n /**\n * Named size token (xxs..xxl). Drives the badge diameter and glyph. The\n * glyph is always ~50% of the badge diameter so it scales consistently\n * across sizes. For `style=\"plain\"` it sets width/height when neither is\n * provided.\n */\n size?: SizeToken;\n /** Semantic color for `style=\"badge\"`. Ignored for plain icons. */\n tone?: IconTone;\n};\n\nconst TONE_CLASSES: Record<IconTone, string> = {\n emerald: \"text-emerald-700 ring-emerald-200/80\",\n amber: \"text-amber-700 ring-amber-200/80\",\n rose: \"text-rose-700 ring-rose-200/80\",\n slate: \"text-slate-700 ring-slate-200/80\",\n sky: \"text-sky-700 ring-sky-200/80\",\n violet: \"text-violet-700 ring-violet-200/80\",\n neutral: \"text-foreground ring-border\",\n};\n\n/**\n * Optional secondary icon provider. Consumers can plug in a component\n * (e.g. `Icon` from `@flanksource/icons/icon`) to supply glyphs that the\n * iconify registry doesn't know about (brand logos, k8s resource icons,\n * etc.). Clicky-ui never imports the package directly so consumers that\n * don't need it avoid the dependency entirely.\n */\nexport type FallbackIconProps = {\n name?: string;\n className?: string;\n size?: string | number;\n alt?: string;\n};\n\ntype FallbackIconComponent = ComponentType<FallbackIconProps>;\n\nlet fallbackIcon: FallbackIconComponent | null = null;\n\n/**\n * Register a secondary glyph provider. Pass the flanksource Icon (or any\n * compatible component) to resolve names that `@iconify/react` hasn't\n * loaded. Call this once at app bootstrap.\n */\nexport function setFallbackIconProvider(component: FallbackIconComponent | null): void {\n fallbackIcon = component;\n}\n\nfunction renderGlyph(\n name: string,\n glyphWidth: number | string | undefined,\n glyphHeight: number | string | undefined,\n rotate: string | number | undefined,\n flip: string | undefined,\n inline: boolean | undefined,\n glyphClassName: string | undefined,\n title: string | undefined,\n): JSX.Element {\n // 1. @iconify/react — build-time lookup via consumer-registered collections.\n // Only used when the icon is already in the registry so we never trigger\n // a network fetch during SSR.\n if (iconLoaded(name)) {\n return (\n <IconifyReactIcon\n icon={name}\n {...(glyphClassName ? { className: glyphClassName } : {})}\n {...(glyphWidth != null ? { width: glyphWidth } : {})}\n {...(glyphHeight != null ? { height: glyphHeight } : {})}\n {...(typeof rotate === \"number\" ? { rotate } : {})}\n {...(flip != null ? { flip } : {})}\n {...(inline != null ? { inline } : {})}\n {...(title ? { title } : {})}\n />\n );\n }\n\n // 2. Consumer-supplied fallback (e.g. @flanksource/icons/icon) — for\n // brand/platform glyphs not carried by iconify collections.\n if (fallbackIcon) {\n const Fallback = fallbackIcon;\n const glyphSize = typeof glyphWidth === \"number\" ? glyphWidth : glyphHeight;\n return (\n <Fallback\n name={name}\n {...(glyphClassName ? { className: glyphClassName } : {})}\n {...(glyphSize != null ? { size: glyphSize } : {})}\n {...(title ? { alt: title } : {})}\n />\n );\n }\n\n // 3. <iconify-icon> web component — runtime fallback. Requires the script\n // to be loaded on the host page.\n const iconifyProps: Record<string, unknown> = {\n icon: name,\n className: glyphClassName,\n \"aria-hidden\": title ? undefined : true,\n };\n if (glyphWidth != null) iconifyProps.width = glyphWidth;\n if (glyphHeight != null) iconifyProps.height = glyphHeight;\n if (rotate != null) iconifyProps.rotate = rotate;\n if (flip != null) iconifyProps.flip = flip;\n if (inline != null) iconifyProps.inline = inline;\n if (title != null) iconifyProps.title = title;\n return <iconify-icon {...iconifyProps} />;\n}\n\nexport function Icon({\n name,\n className,\n width,\n height,\n rotate,\n flip,\n inline,\n title,\n style = \"plain\",\n size,\n tone = \"neutral\",\n}: IconProps) {\n const density = useDensityValue();\n const pxSize = size != null ? resolveSize(size, density) : undefined;\n const glyphSize = pxSize != null ? Math.max(8, Math.round(pxSize * 0.5)) : undefined;\n const resolvedWidth = width ?? (style === \"badge\" ? glyphSize : pxSize);\n const resolvedHeight = height ?? (style === \"badge\" ? glyphSize : pxSize);\n\n const glyphClassName = cn(\"shrink-0\", style === \"plain\" ? className : undefined);\n const glyphTitle = style === \"plain\" ? title : undefined;\n\n const icon = renderGlyph(\n name,\n resolvedWidth,\n resolvedHeight,\n rotate,\n flip,\n inline,\n glyphClassName,\n glyphTitle,\n );\n\n if (style === \"plain\") {\n return icon;\n }\n\n const badgeStyle: CSSProperties | undefined =\n pxSize != null ? { width: pxSize, height: pxSize } : undefined;\n\n return (\n <span\n title={title}\n aria-label={title}\n role={title ? \"img\" : undefined}\n className={cn(\n \"inline-flex items-center justify-center rounded-full bg-white shadow-sm ring-1 ring-inset\",\n TONE_CLASSES[tone],\n className,\n )}\n style={badgeStyle}\n >\n {icon}\n </span>\n );\n}\n"],"names":["IconifyReactIcon"],"mappings":";;;;;AAuCA,MAAM,eAAyC;AAAA,EAC7C,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AACX;AAkBA,IAAI,eAA6C;AAO1C,SAAS,wBAAwB,WAA+C;AACrF,iBAAe;AACjB;AAEA,SAAS,YACP,MACA,YACA,aACA,QACA,MACA,QACA,gBACA,OACa;AAIb,MAAI,WAAW,IAAI,GAAG;AACpB,WACE;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACL,GAAI,iBAAiB,EAAE,WAAW,eAAA,IAAmB,CAAA;AAAA,QACrD,GAAI,cAAc,OAAO,EAAE,OAAO,WAAA,IAAe,CAAA;AAAA,QACjD,GAAI,eAAe,OAAO,EAAE,QAAQ,YAAA,IAAgB,CAAA;AAAA,QACpD,GAAI,OAAO,WAAW,WAAW,EAAE,OAAA,IAAW,CAAA;AAAA,QAC9C,GAAI,QAAQ,OAAO,EAAE,KAAA,IAAS,CAAA;AAAA,QAC9B,GAAI,UAAU,OAAO,EAAE,OAAA,IAAW,CAAA;AAAA,QAClC,GAAI,QAAQ,EAAE,UAAU,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAGhC;AAIA,MAAI,cAAc;AAChB,UAAM,WAAW;AACjB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa;AAChE,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACC,GAAI,iBAAiB,EAAE,WAAW,eAAA,IAAmB,CAAA;AAAA,QACrD,GAAI,aAAa,OAAO,EAAE,MAAM,UAAA,IAAc,CAAA;AAAA,QAC9C,GAAI,QAAQ,EAAE,KAAK,UAAU,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAGrC;AAIA,QAAM,eAAwC;AAAA,IAC5C,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe,QAAQ,SAAY;AAAA,EAAA;AAErC,MAAI,cAAc,KAAM,cAAa,QAAQ;AAC7C,MAAI,eAAe,KAAM,cAAa,SAAS;AAC/C,MAAI,UAAU,KAAM,cAAa,SAAS;AAC1C,MAAI,QAAQ,KAAM,cAAa,OAAO;AACtC,MAAI,UAAU,KAAM,cAAa,SAAS;AAC1C,MAAI,SAAS,KAAM,cAAa,QAAQ;AACxC,SAAO,oBAAC,gBAAA,EAAc,GAAG,aAAA,CAAc;AACzC;AAEO,SAAS,KAAK;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AACT,GAAc;AACZ,QAAM,UAAU,gBAAA;AAChB,QAAM,SAAS,QAAQ,OAAO,YAAY,MAAM,OAAO,IAAI;AAC3D,QAAM,YAAY,UAAU,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,GAAG,CAAC,IAAI;AAC3E,QAAM,gBAAgB,UAAU,UAAU,UAAU,YAAY;AAChE,QAAM,iBAAiB,WAAW,UAAU,UAAU,YAAY;AAElE,QAAM,iBAAiB,GAAG,YAAY,UAAU,UAAU,YAAY,MAAS;AAC/E,QAAM,aAAa,UAAU,UAAU,QAAQ;AAE/C,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,MAAI,UAAU,SAAS;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,aACJ,UAAU,OAAO,EAAE,OAAO,QAAQ,QAAQ,WAAW;AAEvD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,cAAY;AAAA,MACZ,MAAM,QAAQ,QAAQ;AAAA,MACtB,WAAW;AAAA,QACT;AAAA,QACA,aAAa,IAAI;AAAA,QACjB;AAAA,MAAA;AAAA,MAEF,OAAO;AAAA,MAEN,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,8 @@
1
+ export type JsonViewProps = {
2
+ data: unknown;
3
+ name?: string;
4
+ depth?: number;
5
+ defaultOpenDepth?: number;
6
+ };
7
+ export declare function JsonView({ data, name, depth, defaultOpenDepth }: JsonViewProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=JsonView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonView.d.ts","sourceRoot":"","sources":["../../src/data/JsonView.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAS,EAAE,gBAAoB,EAAE,EAAE,aAAa,2CA6EtF"}
@@ -0,0 +1,74 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ function JsonView({ data, name, depth = 0, defaultOpenDepth = 2 }) {
4
+ const [open, setOpen] = useState(depth < defaultOpenDepth);
5
+ if (data === null || data === void 0) {
6
+ return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground italic", children: "null" });
7
+ }
8
+ if (typeof data === "string") {
9
+ return /* @__PURE__ */ jsxs("span", { className: "text-green-700 dark:text-green-400", children: [
10
+ '"',
11
+ data,
12
+ '"'
13
+ ] });
14
+ }
15
+ if (typeof data === "number" || typeof data === "boolean") {
16
+ return /* @__PURE__ */ jsx("span", { className: "text-blue-700 dark:text-blue-400", children: String(data) });
17
+ }
18
+ if (typeof data !== "object") {
19
+ return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: String(data) });
20
+ }
21
+ const isArray = Array.isArray(data);
22
+ const entries = isArray ? data.map((v, i) => [i, v]) : Object.entries(data);
23
+ const [openB, closeB] = isArray ? ["[", "]"] : ["{", "}"];
24
+ if (entries.length === 0) {
25
+ return /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
26
+ openB,
27
+ closeB
28
+ ] });
29
+ }
30
+ return /* @__PURE__ */ jsxs("div", { className: "text-sm font-mono", style: { paddingLeft: depth > 0 ? "12px" : "0" }, children: [
31
+ /* @__PURE__ */ jsxs(
32
+ "span",
33
+ {
34
+ className: "cursor-pointer hover:bg-accent rounded px-0.5 select-none",
35
+ onClick: () => setOpen(!open),
36
+ children: [
37
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs mr-1", children: open ? "▼" : "▶" }),
38
+ name && /* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400", children: name }),
39
+ name && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: ": " }),
40
+ !open && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
41
+ openB,
42
+ " ",
43
+ entries.length,
44
+ " ",
45
+ isArray ? "items" : "keys",
46
+ " ",
47
+ closeB
48
+ ] }),
49
+ open && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: openB })
50
+ ]
51
+ }
52
+ ),
53
+ open && /* @__PURE__ */ jsxs(Fragment, { children: [
54
+ entries.map(([key, val]) => /* @__PURE__ */ jsx("div", { className: "pl-3 border-l border-border ml-1", children: typeof val === "object" && val !== null ? /* @__PURE__ */ jsx(
55
+ JsonView,
56
+ {
57
+ data: val,
58
+ name: String(key),
59
+ depth: depth + 1,
60
+ defaultOpenDepth
61
+ }
62
+ ) : /* @__PURE__ */ jsxs("div", { children: [
63
+ /* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400", children: isArray ? "" : String(key) }),
64
+ !isArray && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: ": " }),
65
+ /* @__PURE__ */ jsx(JsonView, { data: val, depth: depth + 1, defaultOpenDepth })
66
+ ] }) }, key)),
67
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: closeB })
68
+ ] })
69
+ ] });
70
+ }
71
+ export {
72
+ JsonView
73
+ };
74
+ //# sourceMappingURL=JsonView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonView.js","sources":["../../src/data/JsonView.tsx"],"sourcesContent":["import { useState } from \"react\";\n\nexport type JsonViewProps = {\n data: unknown;\n name?: string;\n depth?: number;\n defaultOpenDepth?: number;\n};\n\nexport function JsonView({ data, name, depth = 0, defaultOpenDepth = 2 }: JsonViewProps) {\n const [open, setOpen] = useState(depth < defaultOpenDepth);\n\n if (data === null || data === undefined) {\n return <span className=\"text-muted-foreground italic\">null</span>;\n }\n\n if (typeof data === \"string\") {\n return <span className=\"text-green-700 dark:text-green-400\">\"{data}\"</span>;\n }\n\n if (typeof data === \"number\" || typeof data === \"boolean\") {\n return <span className=\"text-blue-700 dark:text-blue-400\">{String(data)}</span>;\n }\n\n if (typeof data !== \"object\") {\n return <span className=\"text-muted-foreground\">{String(data)}</span>;\n }\n\n const isArray = Array.isArray(data);\n const entries: Array<[string | number, unknown]> = isArray\n ? (data as unknown[]).map((v, i) => [i, v])\n : Object.entries(data as Record<string, unknown>);\n const [openB, closeB] = isArray ? [\"[\", \"]\"] : [\"{\", \"}\"];\n\n if (entries.length === 0) {\n return (\n <span className=\"text-muted-foreground\">\n {openB}\n {closeB}\n </span>\n );\n }\n\n return (\n <div className=\"text-sm font-mono\" style={{ paddingLeft: depth > 0 ? \"12px\" : \"0\" }}>\n <span\n className=\"cursor-pointer hover:bg-accent rounded px-0.5 select-none\"\n onClick={() => setOpen(!open)}\n >\n <span className=\"text-muted-foreground text-xs mr-1\">{open ? \"▼\" : \"▶\"}</span>\n {name && <span className=\"text-purple-600 dark:text-purple-400\">{name}</span>}\n {name && <span className=\"text-muted-foreground\">: </span>}\n {!open && (\n <span className=\"text-muted-foreground\">\n {openB} {entries.length} {isArray ? \"items\" : \"keys\"} {closeB}\n </span>\n )}\n {open && <span className=\"text-muted-foreground\">{openB}</span>}\n </span>\n {open && (\n <>\n {entries.map(([key, val]) => (\n <div key={key} className=\"pl-3 border-l border-border ml-1\">\n {typeof val === \"object\" && val !== null ? (\n <JsonView\n data={val}\n name={String(key)}\n depth={depth + 1}\n defaultOpenDepth={defaultOpenDepth}\n />\n ) : (\n <div>\n <span className=\"text-purple-600 dark:text-purple-400\">\n {isArray ? \"\" : String(key)}\n </span>\n {!isArray && <span className=\"text-muted-foreground\">: </span>}\n <JsonView data={val} depth={depth + 1} defaultOpenDepth={defaultOpenDepth} />\n </div>\n )}\n </div>\n ))}\n <span className=\"text-muted-foreground\">{closeB}</span>\n </>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;AASO,SAAS,SAAS,EAAE,MAAM,MAAM,QAAQ,GAAG,mBAAmB,KAAoB;AACvF,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,QAAQ,gBAAgB;AAEzD,MAAI,SAAS,QAAQ,SAAS,QAAW;AACvC,WAAO,oBAAC,QAAA,EAAK,WAAU,gCAA+B,UAAA,QAAI;AAAA,EAC5D;AAEA,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,qBAAC,QAAA,EAAK,WAAU,sCAAqC,UAAA;AAAA,MAAA;AAAA,MAAE;AAAA,MAAK;AAAA,IAAA,GAAC;AAAA,EACtE;AAEA,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,WAAW;AACzD,+BAAQ,QAAA,EAAK,WAAU,oCAAoC,UAAA,OAAO,IAAI,GAAE;AAAA,EAC1E;AAEA,MAAI,OAAO,SAAS,UAAU;AAC5B,+BAAQ,QAAA,EAAK,WAAU,yBAAyB,UAAA,OAAO,IAAI,GAAE;AAAA,EAC/D;AAEA,QAAM,UAAU,MAAM,QAAQ,IAAI;AAClC,QAAM,UAA6C,UAC9C,KAAmB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IACxC,OAAO,QAAQ,IAA+B;AAClD,QAAM,CAAC,OAAO,MAAM,IAAI,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;AAExD,MAAI,QAAQ,WAAW,GAAG;AACxB,WACE,qBAAC,QAAA,EAAK,WAAU,yBACb,UAAA;AAAA,MAAA;AAAA,MACA;AAAA,IAAA,GACH;AAAA,EAEJ;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,qBAAoB,OAAO,EAAE,aAAa,QAAQ,IAAI,SAAS,IAAA,GAC5E,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM,QAAQ,CAAC,IAAI;AAAA,QAE5B,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,sCAAsC,UAAA,OAAO,MAAM,KAAI;AAAA,UACtE,QAAQ,oBAAC,QAAA,EAAK,WAAU,wCAAwC,UAAA,MAAK;AAAA,UACrE,QAAQ,oBAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,MAAE;AAAA,UAClD,CAAC,QACA,qBAAC,QAAA,EAAK,WAAU,yBACb,UAAA;AAAA,YAAA;AAAA,YAAM;AAAA,YAAE,QAAQ;AAAA,YAAO;AAAA,YAAE,UAAU,UAAU;AAAA,YAAO;AAAA,YAAE;AAAA,UAAA,GACzD;AAAA,UAED,QAAQ,oBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,MAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEzD,QACC,qBAAA,UAAA,EACG,UAAA;AAAA,MAAA,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,MACrB,oBAAC,OAAA,EAAc,WAAU,oCACtB,UAAA,OAAO,QAAQ,YAAY,QAAQ,OAClC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,MAAM,OAAO,GAAG;AAAA,UAChB,OAAO,QAAQ;AAAA,UACf;AAAA,QAAA;AAAA,MAAA,yBAGD,OAAA,EACC,UAAA;AAAA,QAAA,oBAAC,UAAK,WAAU,wCACb,oBAAU,KAAK,OAAO,GAAG,GAC5B;AAAA,QACC,CAAC,WAAW,oBAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,MAAE;AAAA,4BACtD,UAAA,EAAS,MAAM,KAAK,OAAO,QAAQ,GAAG,iBAAA,CAAoC;AAAA,MAAA,GAC7E,EAAA,GAfM,GAiBV,CACD;AAAA,MACD,oBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,OAAA,CAAO;AAAA,IAAA,EAAA,CAClD;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ export type KeyValueListItem = {
3
+ key: string;
4
+ label: ReactNode;
5
+ value: ReactNode;
6
+ hidden?: boolean;
7
+ };
8
+ export type KeyValueListProps = {
9
+ items: KeyValueListItem[];
10
+ className?: string;
11
+ rowClassName?: string;
12
+ labelClassName?: string;
13
+ valueClassName?: string;
14
+ emptyMessage?: ReactNode;
15
+ };
16
+ export declare function KeyValueList({ items, className, rowClassName, labelClassName, valueClassName, emptyMessage, }: KeyValueListProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=KeyValueList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyValueList.d.ts","sourceRoot":"","sources":["../../src/data/KeyValueList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAA2B,GAC5B,EAAE,iBAAiB,2CAyBnB"}
@@ -0,0 +1,33 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils.js";
3
+ function KeyValueList({
4
+ items,
5
+ className,
6
+ rowClassName,
7
+ labelClassName,
8
+ valueClassName,
9
+ emptyMessage = "No details"
10
+ }) {
11
+ const visible = items.filter((item) => !item.hidden);
12
+ if (visible.length === 0) {
13
+ return /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: emptyMessage });
14
+ }
15
+ return /* @__PURE__ */ jsx("dl", { className: cn("divide-y divide-border rounded-md border border-border", className), children: visible.map((item) => /* @__PURE__ */ jsxs(
16
+ "div",
17
+ {
18
+ className: cn(
19
+ "grid grid-cols-[minmax(7rem,12rem)_minmax(0,1fr)] gap-density-3 px-density-3 py-density-2",
20
+ rowClassName
21
+ ),
22
+ children: [
23
+ /* @__PURE__ */ jsx("dt", { className: cn("text-xs font-medium text-muted-foreground", labelClassName), children: item.label }),
24
+ /* @__PURE__ */ jsx("dd", { className: cn("min-w-0 text-sm text-foreground", valueClassName), children: item.value })
25
+ ]
26
+ },
27
+ item.key
28
+ )) });
29
+ }
30
+ export {
31
+ KeyValueList
32
+ };
33
+ //# sourceMappingURL=KeyValueList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyValueList.js","sources":["../../src/data/KeyValueList.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport type KeyValueListItem = {\n key: string;\n label: ReactNode;\n value: ReactNode;\n hidden?: boolean;\n};\n\nexport type KeyValueListProps = {\n items: KeyValueListItem[];\n className?: string;\n rowClassName?: string;\n labelClassName?: string;\n valueClassName?: string;\n emptyMessage?: ReactNode;\n};\n\nexport function KeyValueList({\n items,\n className,\n rowClassName,\n labelClassName,\n valueClassName,\n emptyMessage = \"No details\",\n}: KeyValueListProps) {\n const visible = items.filter((item) => !item.hidden);\n\n if (visible.length === 0) {\n return <div className=\"text-sm text-muted-foreground\">{emptyMessage}</div>;\n }\n\n return (\n <dl className={cn(\"divide-y divide-border rounded-md border border-border\", className)}>\n {visible.map((item) => (\n <div\n key={item.key}\n className={cn(\n \"grid grid-cols-[minmax(7rem,12rem)_minmax(0,1fr)] gap-density-3 px-density-3 py-density-2\",\n rowClassName,\n )}\n >\n <dt className={cn(\"text-xs font-medium text-muted-foreground\", labelClassName)}>\n {item.label}\n </dt>\n <dd className={cn(\"min-w-0 text-sm text-foreground\", valueClassName)}>{item.value}</dd>\n </div>\n ))}\n </dl>\n );\n}\n"],"names":[],"mappings":";;AAmBO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,GAAsB;AACpB,QAAM,UAAU,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,MAAM;AAEnD,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,oBAAC,OAAA,EAAI,WAAU,iCAAiC,UAAA,cAAa;AAAA,EACtE;AAEA,SACE,oBAAC,MAAA,EAAG,WAAW,GAAG,0DAA0D,SAAS,GAClF,UAAA,QAAQ,IAAI,CAAC,SACZ;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,oBAAC,QAAG,WAAW,GAAG,6CAA6C,cAAc,GAC1E,eAAK,OACR;AAAA,QACA,oBAAC,QAAG,WAAW,GAAG,mCAAmC,cAAc,GAAI,eAAK,MAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAT7E,KAAK;AAAA,EAAA,CAWb,GACH;AAEJ;"}
@@ -0,0 +1,10 @@
1
+ export type LogViewerProps = {
2
+ logs: string;
3
+ collapsedLines?: number;
4
+ maxExpandedVh?: number;
5
+ bgClass?: string;
6
+ borderClass?: string;
7
+ className?: string;
8
+ };
9
+ export declare function LogViewer({ logs, collapsedLines, maxExpandedVh, bgClass, borderClass, className, }: LogViewerProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=LogViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogViewer.d.ts","sourceRoot":"","sources":["../../src/data/LogViewer.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,cAAkB,EAClB,aAAkB,EAClB,OAAoB,EACpB,WAA6B,EAC7B,SAAS,GACV,EAAE,cAAc,2CAiChB"}
@@ -0,0 +1,46 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useMemo } from "react";
3
+ import { cn } from "../lib/utils.js";
4
+ function LogViewer({
5
+ logs,
6
+ collapsedLines = 5,
7
+ maxExpandedVh = 70,
8
+ bgClass = "bg-muted",
9
+ borderClass = "border-border",
10
+ className
11
+ }) {
12
+ const [expanded, setExpanded] = useState(false);
13
+ const lines = useMemo(() => logs.split("\n"), [logs]);
14
+ const hasMore = lines.length > collapsedLines;
15
+ const maxHeight = expanded ? `${maxExpandedVh}vh` : `${collapsedLines * 1.4}em`;
16
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), children: [
17
+ /* @__PURE__ */ jsx(
18
+ "pre",
19
+ {
20
+ className: cn(
21
+ "mt-0.5 text-[11px] text-muted-foreground rounded p-1.5 whitespace-pre-wrap overflow-y-auto border transition-all duration-200",
22
+ bgClass,
23
+ borderClass
24
+ ),
25
+ style: { maxHeight },
26
+ children: expanded ? logs : lines.slice(0, collapsedLines).join("\n")
27
+ }
28
+ ),
29
+ hasMore && /* @__PURE__ */ jsx(
30
+ "button",
31
+ {
32
+ type: "button",
33
+ className: cn(
34
+ "text-[10px] mt-0.5",
35
+ expanded ? "text-muted-foreground" : "text-primary hover:opacity-80"
36
+ ),
37
+ onClick: () => setExpanded((e) => !e),
38
+ children: expanded ? `▲ Collapse (${lines.length} lines)` : `▼ Show more (${lines.length} lines)`
39
+ }
40
+ )
41
+ ] });
42
+ }
43
+ export {
44
+ LogViewer
45
+ };
46
+ //# sourceMappingURL=LogViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogViewer.js","sources":["../../src/data/LogViewer.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport type LogViewerProps = {\n logs: string;\n collapsedLines?: number;\n maxExpandedVh?: number;\n bgClass?: string;\n borderClass?: string;\n className?: string;\n};\n\nexport function LogViewer({\n logs,\n collapsedLines = 5,\n maxExpandedVh = 70,\n bgClass = \"bg-muted\",\n borderClass = \"border-border\",\n className,\n}: LogViewerProps) {\n const [expanded, setExpanded] = useState(false);\n const lines = useMemo(() => logs.split(\"\\n\"), [logs]);\n const hasMore = lines.length > collapsedLines;\n\n const maxHeight = expanded ? `${maxExpandedVh}vh` : `${collapsedLines * 1.4}em`;\n\n return (\n <div className={cn(\"relative\", className)}>\n <pre\n className={cn(\n \"mt-0.5 text-[11px] text-muted-foreground rounded p-1.5 whitespace-pre-wrap overflow-y-auto border transition-all duration-200\",\n bgClass,\n borderClass,\n )}\n style={{ maxHeight }}\n >\n {expanded ? logs : lines.slice(0, collapsedLines).join(\"\\n\")}\n </pre>\n {hasMore && (\n <button\n type=\"button\"\n className={cn(\n \"text-[10px] mt-0.5\",\n expanded ? \"text-muted-foreground\" : \"text-primary hover:opacity-80\",\n )}\n onClick={() => setExpanded((e) => !e)}\n >\n {expanded ? `▲ Collapse (${lines.length} lines)` : `▼ Show more (${lines.length} lines)`}\n </button>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,cAAc;AAAA,EACd;AACF,GAAmB;AACjB,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,QAAQ,QAAQ,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AACpD,QAAM,UAAU,MAAM,SAAS;AAE/B,QAAM,YAAY,WAAW,GAAG,aAAa,OAAO,GAAG,iBAAiB,GAAG;AAE3E,8BACG,OAAA,EAAI,WAAW,GAAG,YAAY,SAAS,GACtC,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,OAAO,EAAE,UAAA;AAAA,QAER,UAAA,WAAW,OAAO,MAAM,MAAM,GAAG,cAAc,EAAE,KAAK,IAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAE5D,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA,WAAW,0BAA0B;AAAA,QAAA;AAAA,QAEvC,SAAS,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAAA,QAEnC,qBAAW,eAAe,MAAM,MAAM,YAAY,gBAAgB,MAAM,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACjF,GAEJ;AAEJ;"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { DataTableColumn, DataTableProps } from './DataTable';
3
+ export type LogsTableInput = string | Record<string, unknown>;
4
+ export type LogsTableRow = {
5
+ id: string;
6
+ timestamp: string;
7
+ level: string;
8
+ pod: string;
9
+ logger: string;
10
+ thread: string;
11
+ message: string;
12
+ tags: string[];
13
+ line: string;
14
+ parsedLine?: unknown;
15
+ raw: unknown;
16
+ };
17
+ export type LogsTableProps = Omit<DataTableProps<LogsTableRow>, "data" | "columns" | "density" | "defaultDensity"> & {
18
+ logs: string | LogsTableInput[];
19
+ columns?: DataTableColumn<LogsTableRow>[];
20
+ dark?: boolean;
21
+ showRawDetails?: boolean;
22
+ showFullscreenControl?: boolean;
23
+ fullscreenTitle?: ReactNode;
24
+ };
25
+ export declare function LogsTable({ logs, columns, dark, showRawDetails, className, autoFilter, defaultSort, getRowId, renderExpandedRow, showDensityControl, showFullscreenControl, fullscreenTitle, ...tableProps }: LogsTableProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[];
27
+ //# sourceMappingURL=LogsTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogsTable.d.ts","sourceRoot":"","sources":["../../src/data/LogsTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1D,OAAO,EAAa,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,cAAc,CAAC,YAAY,CAAC,EAC5B,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAClD,GAAG;IACF,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AA8CF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,IAAW,EACX,cAAqB,EACrB,SAAS,EACT,UAAiB,EACjB,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,kBAA0B,EAC1B,qBAA4B,EAC5B,eAAwB,EACxB,GAAG,UAAU,EACd,EAAE,cAAc,2CAuDhB;AA8CD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAGtF"}