@flanksource/clicky-ui 0.1.0 → 0.2.1

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 +22 -0
  39. package/dist/components/icon-menu-picker.d.ts.map +1 -0
  40. package/dist/components/icon-menu-picker.js +181 -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 +14 -0
  51. package/dist/components.d.ts.map +1 -0
  52. package/dist/components.js +31 -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 +193 -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,667 @@
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { Children, isValidElement } from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/utils.js";
5
+ import { Icon } from "./Icon.js";
6
+ const badgeVariants = cva(
7
+ "inline-flex items-center gap-1 rounded-full border border-transparent font-medium whitespace-nowrap align-middle",
8
+ {
9
+ variants: {
10
+ tone: {
11
+ neutral: "",
12
+ success: "",
13
+ danger: "",
14
+ warning: "",
15
+ info: ""
16
+ },
17
+ variant: {
18
+ soft: "",
19
+ solid: "",
20
+ outline: "bg-transparent"
21
+ },
22
+ size: {
23
+ xxs: "min-h-4 px-1.5 py-0.5 text-[9px] leading-none",
24
+ xs: "min-h-[18px] px-1.5 py-0.5 text-[10px] leading-none",
25
+ sm: "h-4 px-1.5 py-0 text-[10px] leading-none",
26
+ md: "px-2 py-0.5 text-xs",
27
+ lg: "px-2.5 py-1 text-sm"
28
+ }
29
+ },
30
+ compoundVariants: [
31
+ { tone: "neutral", variant: "soft", class: "bg-muted text-foreground" },
32
+ { tone: "neutral", variant: "solid", class: "bg-foreground text-background" },
33
+ { tone: "neutral", variant: "outline", class: "border-border text-foreground" },
34
+ {
35
+ tone: "success",
36
+ variant: "soft",
37
+ class: "bg-green-100 text-green-800 dark:bg-green-500/20 dark:text-green-300"
38
+ },
39
+ { tone: "success", variant: "solid", class: "bg-green-500 text-white" },
40
+ {
41
+ tone: "success",
42
+ variant: "outline",
43
+ class: "border-green-500 text-green-700 dark:text-green-400"
44
+ },
45
+ {
46
+ tone: "danger",
47
+ variant: "soft",
48
+ class: "bg-red-100 text-red-800 dark:bg-red-500/20 dark:text-red-300"
49
+ },
50
+ { tone: "danger", variant: "solid", class: "bg-red-500 text-white" },
51
+ {
52
+ tone: "danger",
53
+ variant: "outline",
54
+ class: "border-red-500 text-red-700 dark:text-red-400"
55
+ },
56
+ {
57
+ tone: "warning",
58
+ variant: "soft",
59
+ class: "bg-yellow-100 text-yellow-800 dark:bg-yellow-500/20 dark:text-yellow-300"
60
+ },
61
+ { tone: "warning", variant: "solid", class: "bg-yellow-400 text-yellow-950" },
62
+ {
63
+ tone: "warning",
64
+ variant: "outline",
65
+ class: "border-yellow-500 text-yellow-700 dark:text-yellow-400"
66
+ },
67
+ {
68
+ tone: "info",
69
+ variant: "soft",
70
+ class: "bg-blue-100 text-blue-800 dark:bg-blue-500/20 dark:text-blue-300"
71
+ },
72
+ { tone: "info", variant: "solid", class: "bg-blue-500 text-white" },
73
+ {
74
+ tone: "info",
75
+ variant: "outline",
76
+ class: "border-blue-500 text-blue-700 dark:text-blue-400"
77
+ }
78
+ ],
79
+ defaultVariants: {
80
+ tone: "neutral",
81
+ variant: "soft",
82
+ size: "md"
83
+ }
84
+ }
85
+ );
86
+ const LEGACY_VARIANTS = /* @__PURE__ */ new Set(["soft", "solid", "outline"]);
87
+ const RICH_VARIANTS = /* @__PURE__ */ new Set([
88
+ "status",
89
+ "metric",
90
+ "custom",
91
+ "outlined",
92
+ "label"
93
+ ]);
94
+ const RICH_SIZE_CLASSES = {
95
+ xxs: {
96
+ frame: "min-h-4",
97
+ segment: "px-1.5 py-0.5",
98
+ text: "text-[10px] leading-4",
99
+ icon: "h-3 w-3",
100
+ gap: "gap-1"
101
+ },
102
+ xs: {
103
+ frame: "min-h-[18px]",
104
+ segment: "px-2 py-0.5",
105
+ text: "text-[11px] leading-4",
106
+ icon: "h-3.5 w-3.5",
107
+ gap: "gap-1"
108
+ },
109
+ sm: {
110
+ frame: "min-h-5",
111
+ segment: "px-2 py-0.5",
112
+ text: "text-xs leading-4",
113
+ icon: "h-3.5 w-3.5",
114
+ gap: "gap-1.5"
115
+ },
116
+ md: {
117
+ frame: "min-h-6",
118
+ segment: "px-2.5 py-1",
119
+ text: "text-sm leading-4",
120
+ icon: "h-4 w-4",
121
+ gap: "gap-1.5"
122
+ },
123
+ lg: {
124
+ frame: "min-h-7",
125
+ segment: "px-3 py-1.5",
126
+ text: "text-base leading-5",
127
+ icon: "h-5 w-5",
128
+ gap: "gap-2"
129
+ }
130
+ };
131
+ const STATUS_STYLES = {
132
+ success: {
133
+ soft: "bg-emerald-500/12 text-emerald-700 border-emerald-200",
134
+ outlined: "bg-background text-emerald-700 border-emerald-300"
135
+ },
136
+ error: {
137
+ soft: "bg-rose-500/12 text-rose-700 border-rose-200",
138
+ outlined: "bg-background text-rose-700 border-rose-300"
139
+ },
140
+ warning: {
141
+ soft: "bg-amber-400/15 text-amber-800 border-amber-200",
142
+ outlined: "bg-background text-amber-800 border-amber-300"
143
+ },
144
+ info: {
145
+ soft: "bg-sky-500/12 text-sky-700 border-sky-200",
146
+ outlined: "bg-background text-sky-700 border-sky-300"
147
+ }
148
+ };
149
+ function isLegacyVariant(variant) {
150
+ return variant != null && LEGACY_VARIANTS.has(variant);
151
+ }
152
+ function isCssColor(value) {
153
+ return value != null && /^(#|rgb|hsl|oklch|var\(|color\()/i.test(value);
154
+ }
155
+ function toneToStatus(tone) {
156
+ switch (tone) {
157
+ case "success":
158
+ return "success";
159
+ case "danger":
160
+ return "error";
161
+ case "warning":
162
+ return "warning";
163
+ case "info":
164
+ return "info";
165
+ default:
166
+ return void 0;
167
+ }
168
+ }
169
+ function getShapeClasses(shape) {
170
+ switch (shape) {
171
+ case "rounded":
172
+ return "rounded-md";
173
+ case "square":
174
+ return "rounded-sm";
175
+ default:
176
+ return "rounded-full";
177
+ }
178
+ }
179
+ function isRichVariant(variant) {
180
+ return variant != null && RICH_VARIANTS.has(variant);
181
+ }
182
+ function applyColorValue(value, property, style, classes) {
183
+ if (value == null) return;
184
+ if (isCssColor(value)) {
185
+ style[property] = value;
186
+ return;
187
+ }
188
+ classes.push(value);
189
+ }
190
+ function normalizeMaxWidth(maxWidth) {
191
+ if (maxWidth == null) return void 0;
192
+ if (typeof maxWidth === "number") {
193
+ return `${Math.max(1, Math.floor(maxWidth))}ch`;
194
+ }
195
+ return maxWidth;
196
+ }
197
+ function deriveCharacterBudget(maxWidth, fallback = 24) {
198
+ if (typeof maxWidth === "number" && Number.isFinite(maxWidth) && maxWidth > 0) {
199
+ return Math.max(4, Math.floor(maxWidth));
200
+ }
201
+ if (typeof maxWidth === "string") {
202
+ const trimmed = maxWidth.trim();
203
+ const chMatch = trimmed.match(/^(\d+(?:\.\d+)?)ch$/i);
204
+ if (chMatch) return Math.max(4, Math.floor(Number(chMatch[1])));
205
+ const numericMatch = trimmed.match(/^(\d+(?:\.\d+)?)$/);
206
+ if (numericMatch) return Math.max(4, Math.floor(Number(numericMatch[1])));
207
+ }
208
+ return fallback;
209
+ }
210
+ function shouldExposeFullTextTitle({
211
+ maxWidth,
212
+ truncate,
213
+ wrap
214
+ }) {
215
+ return maxWidth != null || truncate != null || wrap;
216
+ }
217
+ function toPlainText(node) {
218
+ if (node == null || typeof node === "boolean") return null;
219
+ if (typeof node === "string" || typeof node === "number") return String(node);
220
+ if (Array.isArray(node)) {
221
+ const pieces = Children.toArray(node).map(toPlainText);
222
+ return pieces.every((piece) => piece != null) ? pieces.join("") : null;
223
+ }
224
+ if (isValidElement(node)) {
225
+ return toPlainText(node.props.children);
226
+ }
227
+ return null;
228
+ }
229
+ function truncateSuffix(text, budget) {
230
+ if (text.length <= budget) return text;
231
+ if (budget <= 1) return "…";
232
+ return `${text.slice(0, budget - 1)}…`;
233
+ }
234
+ function truncatePrefix(text, budget) {
235
+ if (text.length <= budget) return text;
236
+ if (budget <= 1) return "…";
237
+ return `…${text.slice(-(budget - 1))}`;
238
+ }
239
+ function truncateMiddle(text, budget) {
240
+ if (text.length <= budget) return text;
241
+ if (budget <= 3) return truncateSuffix(text, budget);
242
+ const available = budget - 1;
243
+ const head = Math.max(1, Math.ceil(available / 2));
244
+ const tail = Math.max(1, available - head);
245
+ return `${text.slice(0, head)}…${text.slice(-tail)}`;
246
+ }
247
+ function truncateSegmentStart(text, budget) {
248
+ if (text.length <= budget) return text;
249
+ if (budget <= 2) return truncateSuffix(text, budget);
250
+ return `${text.slice(0, budget - 1)}…`;
251
+ }
252
+ function truncateSegmentEnd(text, budget) {
253
+ if (text.length <= budget) return text;
254
+ if (budget <= 2) return truncatePrefix(text, budget);
255
+ return `…${text.slice(-(budget - 1))}`;
256
+ }
257
+ function summarizeMiddlePathSegment(segment) {
258
+ if (segment == null || segment.length === 0) return "…";
259
+ if (segment.length <= 2) return `${segment}…`;
260
+ return `${segment[0]}…`;
261
+ }
262
+ function compressStructuredText(head, middle, tail, budget, separator) {
263
+ const pieces = [head];
264
+ if (middle) pieces.push(middle);
265
+ pieces.push(tail);
266
+ const preferred = pieces.join(separator);
267
+ if (preferred.length <= budget) return preferred;
268
+ const separatorCount = pieces.length - 1;
269
+ const reserved = separator.length * separatorCount + (middle ? middle.length : 0);
270
+ const available = Math.max(4, budget - reserved);
271
+ const headBudget = Math.max(3, Math.min(head.length, Math.floor(available * 0.4)));
272
+ const tailBudget = Math.max(4, available - headBudget);
273
+ const compactHead = truncateSegmentStart(head, headBudget);
274
+ const compactTail = truncateSegmentEnd(tail, tailBudget);
275
+ const compactPieces = [compactHead];
276
+ if (middle) compactPieces.push(middle);
277
+ compactPieces.push(compactTail);
278
+ const compact = compactPieces.join(separator);
279
+ return compact.length <= budget ? compact : truncateMiddle(preferred, budget);
280
+ }
281
+ function getStructuredBudget(budget) {
282
+ return Math.max(budget, 32);
283
+ }
284
+ function truncatePath(text, budget) {
285
+ const smartBudget = getStructuredBudget(budget);
286
+ const hasLeadingSlash = text.startsWith("/");
287
+ const segments = text.split("/").filter(Boolean);
288
+ if (segments.length < 2) return truncateMiddle(text, smartBudget);
289
+ const head = `${hasLeadingSlash ? "/" : ""}${segments[0]}`;
290
+ const tail = segments[segments.length - 1] ?? text;
291
+ const middle = segments.length > 2 ? summarizeMiddlePathSegment(segments.slice(1, -1).join("/")) : void 0;
292
+ return compressStructuredText(head, middle, tail, smartBudget, "/");
293
+ }
294
+ function truncateUrl(text, budget) {
295
+ const smartBudget = getStructuredBudget(budget);
296
+ try {
297
+ const url = new URL(text);
298
+ const host = url.host;
299
+ const pathSegments = url.pathname.split("/").filter(Boolean);
300
+ if (pathSegments.length === 0) {
301
+ if (host.length <= smartBudget) return host;
302
+ return truncateMiddle(`${host}${url.search}${url.hash}`, smartBudget);
303
+ }
304
+ if (pathSegments.length === 1) {
305
+ const singlePath = `${host}/${pathSegments[0] ?? host}`;
306
+ if (singlePath.length <= smartBudget) return singlePath;
307
+ const hostOnly = `${host}/…`;
308
+ return hostOnly.length <= smartBudget ? hostOnly : truncateMiddle(singlePath, smartBudget);
309
+ }
310
+ const tail = pathSegments[pathSegments.length - 1] ?? host;
311
+ const firstSegment = pathSegments[0] ?? "";
312
+ const summarizedMiddle = pathSegments.length > 2 ? summarizeMiddlePathSegment(pathSegments.slice(1, -1).join("/")) : void 0;
313
+ const candidates = [
314
+ [host, firstSegment, summarizedMiddle, tail].filter(Boolean).join("/"),
315
+ `${host}/…/${tail}`,
316
+ `${host}/…`
317
+ ];
318
+ const candidate = candidates.find((entry) => entry.length <= smartBudget);
319
+ return candidate ?? truncateMiddle(`${host}/${tail}`, smartBudget);
320
+ } catch {
321
+ return truncateMiddle(text, smartBudget);
322
+ }
323
+ }
324
+ function isLikelyUrl(text) {
325
+ return /^[a-z][a-z\d+\-.]*:\/\//i.test(text) || text.startsWith("//");
326
+ }
327
+ function isLikelyImage(text) {
328
+ if (/\s/.test(text) || isLikelyUrl(text) || text.startsWith("/")) return false;
329
+ if (!text.includes("/")) return false;
330
+ const tail = text.slice(text.lastIndexOf("/") + 1);
331
+ return tail.includes(":") || tail.includes("@sha256:");
332
+ }
333
+ function splitImageTail(segment) {
334
+ const digestIndex = segment.indexOf("@sha256:");
335
+ if (digestIndex >= 0) {
336
+ return {
337
+ name: segment.slice(0, digestIndex),
338
+ suffix: segment.slice(digestIndex)
339
+ };
340
+ }
341
+ const tagIndex = segment.lastIndexOf(":");
342
+ if (tagIndex > 0) {
343
+ return {
344
+ name: segment.slice(0, tagIndex),
345
+ suffix: segment.slice(tagIndex)
346
+ };
347
+ }
348
+ return { name: segment, suffix: "" };
349
+ }
350
+ function truncateImage(text, budget) {
351
+ const smartBudget = getStructuredBudget(budget);
352
+ const segments = text.split("/").filter(Boolean);
353
+ if (segments.length < 2) return truncateMiddle(text, smartBudget);
354
+ const tailSegment = segments[segments.length - 1] ?? text;
355
+ const tailParts = splitImageTail(tailSegment);
356
+ const tailNameOnly = `…${tailParts.name}`;
357
+ if (tailNameOnly.length <= smartBudget) return tailNameOnly;
358
+ if (segments.length === 2) {
359
+ return compressStructuredText(
360
+ segments[0] ?? text,
361
+ void 0,
362
+ tailParts.name || tailSegment,
363
+ smartBudget,
364
+ "/"
365
+ );
366
+ }
367
+ const head = `${segments[0]}/${segments[1] ?? ""}`.replace(/\/$/, "");
368
+ const tail = tailParts.suffix.length > 0 && smartBudget >= tailSegment.length ? tailSegment : tailParts.name || tailSegment;
369
+ const middle = segments.length > 3 ? summarizeMiddlePathSegment(segments.slice(2, -1).join("/")) : segments.length === 3 ? "…" : void 0;
370
+ return compressStructuredText(head, middle, tail, smartBudget, "/");
371
+ }
372
+ function truncateArn(text, budget) {
373
+ const smartBudget = getStructuredBudget(budget);
374
+ const parts = text.split(":");
375
+ if (parts.length < 6) return truncateMiddle(text, smartBudget);
376
+ const service = parts[2] ?? parts[1] ?? "arn";
377
+ const resource = parts.slice(5).join(":");
378
+ const resourceSegments = resource.split(/[/:]/).filter(Boolean);
379
+ const resourceType = resourceSegments.length > 1 ? resourceSegments[0] : void 0;
380
+ const resourceName = resourceSegments[resourceSegments.length - 1] ?? resource;
381
+ const resourceNameTail = resourceName.includes("-") && resourceName.split("-").length > 2 ? resourceName.split("-").slice(-2).join("-") : resourceName;
382
+ const typedTail = resourceType != null && resourceType !== resourceNameTail ? `${resourceType}/${resourceNameTail}` : resourceNameTail;
383
+ const preferred = `${service}:…${typedTail}`;
384
+ if (preferred.length <= smartBudget) return preferred;
385
+ const separatorBudget = 2;
386
+ const resourceBudget = Math.max(
387
+ 4,
388
+ Math.min(resourceNameTail.length, smartBudget - separatorBudget - 2)
389
+ );
390
+ const serviceBudget = Math.max(2, smartBudget - resourceBudget - separatorBudget);
391
+ return `${truncateSegmentStart(service, serviceBudget)}:…${truncateMiddle(resourceNameTail, resourceBudget)}`;
392
+ }
393
+ function detectTruncateStyle(text) {
394
+ if (text.startsWith("arn:")) return "arn";
395
+ if (isLikelyUrl(text)) return "url";
396
+ if (isLikelyImage(text)) return "image";
397
+ if (text.includes("/")) return "path";
398
+ return "suffix";
399
+ }
400
+ function truncateText(text, truncate, maxWidth) {
401
+ const budget = deriveCharacterBudget(maxWidth);
402
+ const mode = truncate === "auto" ? detectTruncateStyle(text) : truncate;
403
+ switch (mode) {
404
+ case "prefix":
405
+ return truncatePrefix(text, budget);
406
+ case "suffix":
407
+ return truncateSuffix(text, budget);
408
+ case "arn":
409
+ return truncateArn(text, budget);
410
+ case "image":
411
+ return truncateImage(text, budget);
412
+ case "path":
413
+ return truncatePath(text, budget);
414
+ case "url":
415
+ return truncateUrl(text, budget);
416
+ default:
417
+ return truncateSuffix(text, budget);
418
+ }
419
+ }
420
+ function resolveDisplayNode(node, truncate, maxWidth, alwaysTitle = false) {
421
+ const fullText = toPlainText(node);
422
+ if (fullText == null || truncate == null) {
423
+ return {
424
+ content: node,
425
+ fullText,
426
+ title: alwaysTitle ? fullText ?? void 0 : void 0
427
+ };
428
+ }
429
+ const content = truncateText(fullText, truncate, maxWidth);
430
+ return {
431
+ content,
432
+ fullText,
433
+ title: alwaysTitle || content !== fullText ? fullText : void 0
434
+ };
435
+ }
436
+ function copyTextToClipboard(text) {
437
+ var _a;
438
+ const clipboard = (_a = globalThis.navigator) == null ? void 0 : _a.clipboard;
439
+ if ((clipboard == null ? void 0 : clipboard.writeText) == null) return;
440
+ void clipboard.writeText(text).catch(() => void 0);
441
+ }
442
+ function renderRoot({
443
+ href,
444
+ target,
445
+ rel,
446
+ className,
447
+ style,
448
+ content,
449
+ canCopy,
450
+ copyText
451
+ }) {
452
+ if (href != null) {
453
+ return /* @__PURE__ */ jsx(
454
+ "a",
455
+ {
456
+ href,
457
+ target,
458
+ rel: rel ?? (target === "_blank" ? "noopener noreferrer" : void 0),
459
+ className,
460
+ style,
461
+ children: content
462
+ }
463
+ );
464
+ }
465
+ if (canCopy && copyText != null) {
466
+ return /* @__PURE__ */ jsx(
467
+ "button",
468
+ {
469
+ type: "button",
470
+ className,
471
+ style,
472
+ onClick: () => copyTextToClipboard(copyText),
473
+ children: content
474
+ }
475
+ );
476
+ }
477
+ return /* @__PURE__ */ jsx("span", { className, style, children: content });
478
+ }
479
+ function Badge({
480
+ tone,
481
+ variant,
482
+ size = "md",
483
+ icon,
484
+ count,
485
+ children,
486
+ className,
487
+ status,
488
+ label,
489
+ value,
490
+ color,
491
+ textColor,
492
+ borderColor,
493
+ shape,
494
+ href,
495
+ target = "_self",
496
+ rel,
497
+ wrap = false,
498
+ maxWidth,
499
+ truncate,
500
+ clickToCopy,
501
+ labelClassName,
502
+ valueClassName
503
+ }) {
504
+ const richSignals = label != null || value != null || status != null || shape != null || href != null || wrap === true || color != null || textColor != null || borderColor != null || labelClassName != null || valueClassName != null;
505
+ const resolvedVariant = variant ?? (richSignals ? "metric" : "soft");
506
+ const normalizedMaxWidth = normalizeMaxWidth(maxWidth);
507
+ const shouldWrapText = wrap && truncate == null;
508
+ const showFullTextTitle = shouldExposeFullTextTitle({ maxWidth, truncate, wrap });
509
+ const textBehaviorClasses = shouldWrapText ? "min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]" : normalizedMaxWidth != null || truncate != null ? "min-w-0 overflow-hidden text-ellipsis whitespace-nowrap" : "whitespace-nowrap";
510
+ if (isLegacyVariant(resolvedVariant)) {
511
+ const legacyStyle = {};
512
+ if (normalizedMaxWidth != null) {
513
+ legacyStyle.maxWidth = normalizedMaxWidth;
514
+ }
515
+ const legacyChildren = resolveDisplayNode(children, truncate, maxWidth, showFullTextTitle);
516
+ const legacyCopyText = legacyChildren.fullText ?? (count !== void 0 ? String(count) : void 0);
517
+ const canCopy2 = href == null && (clickToCopy ?? true) && legacyCopyText != null;
518
+ return renderRoot({
519
+ href,
520
+ target,
521
+ rel,
522
+ canCopy: canCopy2,
523
+ copyText: legacyCopyText,
524
+ className: cn(
525
+ badgeVariants({ tone, variant: resolvedVariant, size }),
526
+ (normalizedMaxWidth != null || shouldWrapText || truncate != null) && "min-w-0 max-w-full",
527
+ shouldWrapText && "whitespace-normal",
528
+ canCopy2 && "cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",
529
+ className
530
+ ),
531
+ style: legacyStyle,
532
+ content: /* @__PURE__ */ jsxs(Fragment, { children: [
533
+ icon && /* @__PURE__ */ jsx(Icon, { name: icon, className: "text-[1em]" }),
534
+ count !== void 0 && /* @__PURE__ */ jsx("span", { children: count }),
535
+ children != null && /* @__PURE__ */ jsx("span", { className: textBehaviorClasses, title: legacyChildren.title, children: legacyChildren.content })
536
+ ] })
537
+ });
538
+ }
539
+ if (!isRichVariant(resolvedVariant)) {
540
+ return null;
541
+ }
542
+ const semanticStatus = status ?? toneToStatus(tone) ?? "info";
543
+ const sizeClasses = RICH_SIZE_CLASSES[size];
544
+ const richLabel = label ?? children;
545
+ const richValue = value ?? (richLabel == null && count !== void 0 ? count : void 0);
546
+ const resolvedLabel = richValue == null ? resolveDisplayNode(richLabel, truncate, maxWidth, showFullTextTitle) : {
547
+ content: richLabel,
548
+ fullText: toPlainText(richLabel),
549
+ title: showFullTextTitle ? toPlainText(richLabel) ?? void 0 : void 0
550
+ };
551
+ const resolvedValue = richValue != null ? resolveDisplayNode(richValue, truncate, maxWidth, showFullTextTitle) : { content: richValue, fullText: void 0, title: void 0 };
552
+ const copyText = resolvedValue.fullText ?? resolvedLabel.fullText ?? (count !== void 0 ? String(count) : void 0);
553
+ const canCopy = href == null && (clickToCopy ?? true) && copyText != null;
554
+ const shapeClass = getShapeClasses(shape ?? "pill");
555
+ const wrapperStyle = {};
556
+ const wrapperClasses = [
557
+ "inline-flex align-middle items-stretch border font-medium shadow-none",
558
+ sizeClasses.frame,
559
+ sizeClasses.text,
560
+ normalizedMaxWidth != null || shouldWrapText || truncate != null ? "min-w-0 max-w-full" : "",
561
+ shapeClass,
562
+ shouldWrapText ? "whitespace-normal" : "whitespace-nowrap",
563
+ href ? "transition-opacity hover:opacity-80" : "",
564
+ canCopy ? "cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1" : ""
565
+ ];
566
+ if (normalizedMaxWidth != null) {
567
+ wrapperStyle.maxWidth = normalizedMaxWidth;
568
+ }
569
+ if (resolvedVariant === "status") {
570
+ wrapperClasses.push(STATUS_STYLES[semanticStatus].soft);
571
+ } else if (resolvedVariant === "metric") {
572
+ wrapperClasses.push("bg-muted/60 text-foreground border-border");
573
+ } else if (resolvedVariant === "outlined") {
574
+ if (status != null || toneToStatus(tone) != null) {
575
+ wrapperClasses.push(STATUS_STYLES[semanticStatus].outlined);
576
+ } else {
577
+ wrapperClasses.push("bg-background text-foreground border-border");
578
+ }
579
+ } else if (resolvedVariant === "custom") {
580
+ wrapperClasses.push("border-transparent bg-accent text-accent-foreground");
581
+ } else {
582
+ wrapperClasses.push("border-border bg-background text-foreground");
583
+ }
584
+ if (resolvedVariant === "custom" || resolvedVariant === "outlined" && status == null && toneToStatus(tone) == null) {
585
+ applyColorValue(color, "backgroundColor", wrapperStyle, wrapperClasses);
586
+ applyColorValue(textColor, "color", wrapperStyle, wrapperClasses);
587
+ applyColorValue(borderColor, "borderColor", wrapperStyle, wrapperClasses);
588
+ }
589
+ if (resolvedVariant !== "label" && borderColor != null && status == null && toneToStatus(tone) == null) {
590
+ applyColorValue(borderColor, "borderColor", wrapperStyle, wrapperClasses);
591
+ }
592
+ const iconEl = icon ? /* @__PURE__ */ jsx(Icon, { name: icon, className: cn("shrink-0", sizeClasses.icon) }) : null;
593
+ if (resolvedVariant === "label") {
594
+ const labelClasses2 = [
595
+ "inline-flex items-center self-stretch",
596
+ richValue != null ? "shrink-0" : "min-w-0",
597
+ sizeClasses.segment,
598
+ sizeClasses.gap,
599
+ richValue != null ? "border-r border-border/70" : ""
600
+ ];
601
+ const valueClasses2 = [
602
+ "inline-flex min-w-0 items-center self-stretch text-foreground",
603
+ richLabel != null || iconEl != null ? "flex-1" : "",
604
+ sizeClasses.segment
605
+ ];
606
+ const labelStyle = {};
607
+ if (richLabel != null || iconEl != null) {
608
+ labelClasses2.push("bg-secondary text-secondary-foreground");
609
+ applyColorValue(color, "backgroundColor", labelStyle, labelClasses2);
610
+ applyColorValue(textColor, "color", labelStyle, labelClasses2);
611
+ }
612
+ applyColorValue(borderColor, "borderColor", wrapperStyle, wrapperClasses);
613
+ return renderRoot({
614
+ href,
615
+ target,
616
+ rel,
617
+ canCopy,
618
+ copyText,
619
+ className: cn(wrapperClasses, className),
620
+ style: wrapperStyle,
621
+ content: /* @__PURE__ */ jsxs(Fragment, { children: [
622
+ (richLabel != null || iconEl != null) && /* @__PURE__ */ jsxs("span", { className: cn(labelClasses2, labelClassName), style: labelStyle, children: [
623
+ iconEl,
624
+ richLabel != null && /* @__PURE__ */ jsx("span", { className: textBehaviorClasses, title: resolvedLabel.title, children: resolvedLabel.content })
625
+ ] }),
626
+ richValue != null && /* @__PURE__ */ jsx("span", { className: cn(valueClasses2, valueClassName), children: /* @__PURE__ */ jsx("span", { className: textBehaviorClasses, title: resolvedValue.title, children: resolvedValue.content }) })
627
+ ] })
628
+ });
629
+ }
630
+ const labelClasses = [
631
+ "inline-flex items-center",
632
+ richValue != null ? "shrink-0" : "min-w-0",
633
+ sizeClasses.segment,
634
+ sizeClasses.gap,
635
+ richValue != null ? "border-r border-current/10" : ""
636
+ ];
637
+ const valueClasses = [
638
+ "inline-flex min-w-0 items-center font-semibold",
639
+ richLabel != null || iconEl != null ? "flex-1" : "",
640
+ sizeClasses.segment
641
+ ];
642
+ if (resolvedVariant === "metric") {
643
+ labelClasses.push("text-muted-foreground");
644
+ valueClasses.push("text-foreground");
645
+ }
646
+ return renderRoot({
647
+ href,
648
+ target,
649
+ rel,
650
+ canCopy,
651
+ copyText,
652
+ className: cn(wrapperClasses, className),
653
+ style: wrapperStyle,
654
+ content: /* @__PURE__ */ jsxs(Fragment, { children: [
655
+ (richLabel != null || iconEl != null) && /* @__PURE__ */ jsxs("span", { className: cn(labelClasses, labelClassName), children: [
656
+ iconEl,
657
+ richLabel != null && /* @__PURE__ */ jsx("span", { className: textBehaviorClasses, title: resolvedLabel.title, children: resolvedLabel.content })
658
+ ] }),
659
+ richValue != null && /* @__PURE__ */ jsx("span", { className: cn(valueClasses, valueClassName), children: /* @__PURE__ */ jsx("span", { className: textBehaviorClasses, title: resolvedValue.title, children: resolvedValue.content }) })
660
+ ] })
661
+ });
662
+ }
663
+ export {
664
+ Badge,
665
+ badgeVariants
666
+ };
667
+ //# sourceMappingURL=Badge.js.map