@workflow/web-shared 5.0.0-beta.3 → 5.0.0-beta.30

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 (402) hide show
  1. package/README.md +2 -10
  2. package/dist/components/error-boundary.js +1 -1
  3. package/dist/components/event-list-view.d.ts +46 -1
  4. package/dist/components/event-list-view.d.ts.map +1 -1
  5. package/dist/components/event-list-view.js +228 -90
  6. package/dist/components/hook-actions.js +1 -1
  7. package/dist/components/index.d.ts +6 -2
  8. package/dist/components/index.d.ts.map +1 -1
  9. package/dist/components/index.js +5 -2
  10. package/dist/components/new-trace-viewer/components/copy-button.js +3 -3
  11. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts +34 -0
  12. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  13. package/dist/components/new-trace-viewer/components/detail-panel-width.js +67 -0
  14. package/dist/components/new-trace-viewer/components/detail-panel.d.ts +14 -0
  15. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +1 -0
  16. package/dist/components/new-trace-viewer/components/detail-panel.js +122 -0
  17. package/dist/components/new-trace-viewer/components/draggable-border.d.ts +31 -0
  18. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +1 -0
  19. package/dist/components/new-trace-viewer/components/draggable-border.js +140 -0
  20. package/dist/components/new-trace-viewer/components/event-list.d.ts +4 -2
  21. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
  22. package/dist/components/new-trace-viewer/components/event-list.js +22 -13
  23. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
  24. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  25. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  26. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
  27. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  28. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  29. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
  30. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  31. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
  32. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
  33. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  34. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  35. package/dist/components/new-trace-viewer/components/minimap.d.ts +14 -0
  36. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +1 -0
  37. package/dist/components/new-trace-viewer/components/minimap.js +337 -0
  38. package/dist/components/new-trace-viewer/components/pane-constants.d.ts +14 -0
  39. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +1 -0
  40. package/dist/components/new-trace-viewer/components/pane-constants.js +16 -0
  41. package/dist/components/new-trace-viewer/components/span-markers.d.ts +46 -0
  42. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +1 -0
  43. package/dist/components/new-trace-viewer/components/span-markers.js +85 -0
  44. package/dist/components/new-trace-viewer/components/split-pane.d.ts +3 -7
  45. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -1
  46. package/dist/components/new-trace-viewer/components/split-pane.js +25 -84
  47. package/dist/components/new-trace-viewer/components/timeline.d.ts +19 -15
  48. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
  49. package/dist/components/new-trace-viewer/components/timeline.js +229 -111
  50. package/dist/components/new-trace-viewer/components/timeline.module.css +46 -0
  51. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts +5 -0
  52. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  53. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +55 -0
  54. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  55. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
  56. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  57. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +26 -0
  58. package/dist/components/new-trace-viewer/components/use-element-width.d.ts +8 -0
  59. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +1 -0
  60. package/dist/components/new-trace-viewer/components/use-element-width.js +25 -0
  61. package/dist/components/new-trace-viewer/components/use-row-window.d.ts +34 -0
  62. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
  63. package/dist/components/new-trace-viewer/components/use-row-window.js +107 -0
  64. package/dist/components/new-trace-viewer/context.d.ts +3 -1
  65. package/dist/components/new-trace-viewer/context.d.ts.map +1 -1
  66. package/dist/components/new-trace-viewer/context.js +9 -10
  67. package/dist/components/new-trace-viewer/icons.js +3 -3
  68. package/dist/components/new-trace-viewer/search.d.ts +19 -0
  69. package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
  70. package/dist/components/new-trace-viewer/search.js +134 -0
  71. package/dist/components/new-trace-viewer/trace-viewer.d.ts +6 -3
  72. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
  73. package/dist/components/new-trace-viewer/trace-viewer.js +167 -162
  74. package/dist/components/new-trace-viewer/types.d.ts +2 -0
  75. package/dist/components/new-trace-viewer/types.d.ts.map +1 -1
  76. package/dist/components/new-trace-viewer/types.js +2 -2
  77. package/dist/components/new-trace-viewer/utils.d.ts +48 -13
  78. package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
  79. package/dist/components/new-trace-viewer/utils.js +135 -107
  80. package/dist/components/run-trace-view.d.ts +5 -7
  81. package/dist/components/run-trace-view.d.ts.map +1 -1
  82. package/dist/components/run-trace-view.js +3 -3
  83. package/dist/components/sidebar/attribute-panel.d.ts +4 -1
  84. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  85. package/dist/components/sidebar/attribute-panel.js +133 -113
  86. package/dist/components/sidebar/attributes-block.d.ts +40 -0
  87. package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
  88. package/dist/components/sidebar/attributes-block.js +140 -0
  89. package/dist/components/sidebar/conversation-view.js +1 -1
  90. package/dist/components/sidebar/copyable-data-block.d.ts +2 -0
  91. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  92. package/dist/components/sidebar/copyable-data-block.js +17 -16
  93. package/dist/components/sidebar/entity-detail-panel.d.ts +11 -11
  94. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  95. package/dist/components/sidebar/entity-detail-panel.js +35 -69
  96. package/dist/components/sidebar/events-list.d.ts +6 -2
  97. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  98. package/dist/components/sidebar/events-list.js +76 -62
  99. package/dist/components/sidebar/resolve-hook-modal.js +1 -1
  100. package/dist/components/sidebar/sidebar-data-context.d.ts +10 -7
  101. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
  102. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  103. package/dist/components/sidebar/span-detail-merge.d.ts +31 -0
  104. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
  105. package/dist/components/sidebar/span-detail-merge.js +92 -0
  106. package/dist/components/sidebar/use-selected-span-detail.d.ts +16 -0
  107. package/dist/components/sidebar/use-selected-span-detail.d.ts.map +1 -0
  108. package/dist/components/sidebar/use-selected-span-detail.js +93 -0
  109. package/dist/components/stream-viewer.js +1 -1
  110. package/dist/components/trace-viewer/components/map.d.ts +2 -2
  111. package/dist/components/trace-viewer/components/map.d.ts.map +1 -1
  112. package/dist/components/trace-viewer/components/map.js +1 -1
  113. package/dist/components/trace-viewer/components/markers.js +1 -1
  114. package/dist/components/trace-viewer/components/node.d.ts +7 -7
  115. package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
  116. package/dist/components/trace-viewer/components/node.js +2 -1
  117. package/dist/components/trace-viewer/components/search-input.js +1 -1
  118. package/dist/components/trace-viewer/components/search.js +1 -1
  119. package/dist/components/trace-viewer/components/span-content.js +1 -1
  120. package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
  121. package/dist/components/trace-viewer/components/span-segments.js +1 -1
  122. package/dist/components/trace-viewer/components/span-strategies.js +1 -1
  123. package/dist/components/trace-viewer/components/ui.js +1 -1
  124. package/dist/components/trace-viewer/components/zoom-button.js +1 -1
  125. package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
  126. package/dist/components/trace-viewer/context.js +1 -1
  127. package/dist/components/trace-viewer/index.js +1 -1
  128. package/dist/components/trace-viewer/trace-viewer.js +1 -1
  129. package/dist/components/trace-viewer/trace-viewer.module.css +4 -4
  130. package/dist/components/trace-viewer/types.js +1 -1
  131. package/dist/components/trace-viewer/util/constants.js +1 -1
  132. package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
  133. package/dist/components/trace-viewer/util/timing.d.ts +3 -3
  134. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  135. package/dist/components/trace-viewer/util/timing.js +8 -11
  136. package/dist/components/trace-viewer/util/tree.js +1 -1
  137. package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
  138. package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
  139. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
  140. package/dist/components/trace-viewer/worker.js +1 -1
  141. package/dist/components/trace-viewer-new.d.ts +5 -1
  142. package/dist/components/trace-viewer-new.d.ts.map +1 -1
  143. package/dist/components/trace-viewer-new.js +8 -10
  144. package/dist/components/ui/alert.js +2 -2
  145. package/dist/components/ui/button.d.ts +10 -0
  146. package/dist/components/ui/button.d.ts.map +1 -0
  147. package/dist/components/ui/button.js +46 -0
  148. package/dist/components/ui/card.js +2 -2
  149. package/dist/components/ui/collapsible.d.ts +46 -0
  150. package/dist/components/ui/collapsible.d.ts.map +1 -0
  151. package/dist/components/ui/collapsible.js +66 -0
  152. package/dist/components/ui/context-card.d.ts +47 -0
  153. package/dist/components/ui/context-card.d.ts.map +1 -0
  154. package/dist/components/ui/context-card.js +471 -0
  155. package/dist/components/ui/data-inspector.d.ts +7 -6
  156. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  157. package/dist/components/ui/data-inspector.js +232 -99
  158. package/dist/components/ui/data-inspector.styles.d.ts +29 -0
  159. package/dist/components/ui/data-inspector.styles.d.ts.map +1 -0
  160. package/dist/components/ui/data-inspector.styles.js +95 -0
  161. package/dist/components/ui/decrypt-button.js +1 -1
  162. package/dist/components/ui/error-card.js +2 -2
  163. package/dist/components/ui/error-stack-block.d.ts +17 -10
  164. package/dist/components/ui/error-stack-block.d.ts.map +1 -1
  165. package/dist/components/ui/error-stack-block.js +49 -30
  166. package/dist/components/ui/icon-button.d.ts +19 -0
  167. package/dist/components/ui/icon-button.d.ts.map +1 -0
  168. package/dist/components/ui/icon-button.js +29 -0
  169. package/dist/components/ui/kbd.d.ts +10 -0
  170. package/dist/components/ui/kbd.d.ts.map +1 -0
  171. package/dist/components/ui/kbd.js +25 -0
  172. package/dist/components/ui/load-more-button.js +1 -1
  173. package/dist/components/ui/menu-dropdown.js +1 -1
  174. package/dist/components/ui/skeleton.js +2 -2
  175. package/dist/components/ui/spinner.js +1 -1
  176. package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
  177. package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
  178. package/dist/components/ui/timestamp-tooltip.js +80 -132
  179. package/dist/components/ui/tooltip.d.ts +10 -0
  180. package/dist/components/ui/tooltip.d.ts.map +1 -0
  181. package/dist/components/ui/tooltip.js +12 -0
  182. package/dist/components/workflow-trace-view.d.ts +7 -8
  183. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  184. package/dist/components/workflow-trace-view.js +11 -16
  185. package/dist/components/workflow-traces/event-colors.d.ts +2 -1
  186. package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
  187. package/dist/components/workflow-traces/event-colors.js +15 -7
  188. package/dist/components/workflow-traces/trace-colors.d.ts.map +1 -1
  189. package/dist/components/workflow-traces/trace-colors.js +3 -4
  190. package/dist/components/workflow-traces/trace-span-construction.d.ts +7 -4
  191. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  192. package/dist/components/workflow-traces/trace-span-construction.js +87 -33
  193. package/dist/components/workflow-traces/trace-time-utils.js +1 -1
  194. package/dist/hooks/use-dark-mode.js +1 -1
  195. package/dist/hooks/use-intersection-observer.d.ts +17 -0
  196. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  197. package/dist/hooks/use-intersection-observer.js +29 -0
  198. package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
  199. package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
  200. package/dist/hooks/use-load-more-on-scroll.js +28 -0
  201. package/dist/hooks/use-reduced-motion.d.ts +10 -0
  202. package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
  203. package/dist/hooks/use-reduced-motion.js +29 -0
  204. package/dist/index.d.ts +3 -2
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +4 -3
  207. package/dist/lib/cn.d.ts +10 -0
  208. package/dist/lib/cn.d.ts.map +1 -0
  209. package/dist/lib/cn.js +83 -0
  210. package/dist/lib/event-analysis.d.ts +1 -1
  211. package/dist/lib/event-analysis.d.ts.map +1 -1
  212. package/dist/lib/event-analysis.js +3 -2
  213. package/dist/lib/event-materialization.d.ts +1 -1
  214. package/dist/lib/event-materialization.d.ts.map +1 -1
  215. package/dist/lib/event-materialization.js +29 -21
  216. package/dist/lib/exact-event-search-id.d.ts +25 -0
  217. package/dist/lib/exact-event-search-id.d.ts.map +1 -0
  218. package/dist/lib/exact-event-search-id.js +39 -0
  219. package/dist/lib/hydration.d.ts +17 -2
  220. package/dist/lib/hydration.d.ts.map +1 -1
  221. package/dist/lib/hydration.js +185 -22
  222. package/dist/lib/stream-display.js +1 -1
  223. package/dist/lib/toast.js +1 -1
  224. package/dist/lib/trace-builder.d.ts +16 -4
  225. package/dist/lib/trace-builder.d.ts.map +1 -1
  226. package/dist/lib/trace-builder.js +34 -15
  227. package/dist/lib/utils.d.ts +23 -9
  228. package/dist/lib/utils.d.ts.map +1 -1
  229. package/dist/lib/utils.js +73 -33
  230. package/dist/lib/zstd-browser-decoder.d.ts +7 -0
  231. package/dist/lib/zstd-browser-decoder.d.ts.map +1 -0
  232. package/dist/lib/zstd-browser-decoder.js +41 -0
  233. package/dist/styles.css +14 -0
  234. package/package.json +10 -7
  235. package/src/components/event-list-view.tsx +375 -116
  236. package/src/components/index.ts +12 -5
  237. package/src/components/new-trace-viewer/components/copy-button.tsx +2 -2
  238. package/src/components/new-trace-viewer/components/detail-panel-width.test.ts +123 -0
  239. package/src/components/new-trace-viewer/components/detail-panel-width.ts +76 -0
  240. package/src/components/new-trace-viewer/components/detail-panel.tsx +273 -0
  241. package/src/components/new-trace-viewer/components/draggable-border.tsx +216 -0
  242. package/src/components/new-trace-viewer/components/event-list.tsx +57 -32
  243. package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
  244. package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
  245. package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
  246. package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
  247. package/src/components/new-trace-viewer/components/minimap.tsx +559 -0
  248. package/src/components/new-trace-viewer/components/pane-constants.ts +19 -0
  249. package/src/components/new-trace-viewer/components/span-markers.tsx +173 -0
  250. package/src/components/new-trace-viewer/components/split-pane.tsx +80 -135
  251. package/src/components/new-trace-viewer/components/timeline.module.css +46 -0
  252. package/src/components/new-trace-viewer/components/timeline.tsx +603 -239
  253. package/src/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  254. package/src/components/new-trace-viewer/components/trace-shortcut-helper.tsx +116 -0
  255. package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +114 -0
  256. package/src/components/new-trace-viewer/components/use-element-width.ts +29 -0
  257. package/src/components/new-trace-viewer/components/use-row-window.ts +140 -0
  258. package/src/components/new-trace-viewer/context.tsx +13 -14
  259. package/src/components/new-trace-viewer/icons.tsx +2 -2
  260. package/src/components/new-trace-viewer/search.ts +178 -0
  261. package/src/components/new-trace-viewer/trace-viewer.tsx +336 -293
  262. package/src/components/new-trace-viewer/types.ts +2 -0
  263. package/src/components/new-trace-viewer/utils.test.ts +247 -0
  264. package/src/components/new-trace-viewer/utils.ts +203 -134
  265. package/src/components/run-trace-view.tsx +10 -14
  266. package/src/components/sidebar/attribute-panel.tsx +276 -275
  267. package/src/components/sidebar/attributes-block.tsx +326 -0
  268. package/src/components/sidebar/copyable-data-block.tsx +50 -28
  269. package/src/components/sidebar/entity-detail-panel.tsx +89 -123
  270. package/src/components/sidebar/events-list.tsx +196 -178
  271. package/src/components/sidebar/sidebar-data-context.tsx +11 -11
  272. package/src/components/sidebar/span-detail-merge.ts +134 -0
  273. package/src/components/sidebar/use-selected-span-detail.ts +146 -0
  274. package/src/components/trace-viewer/components/node.tsx +3 -2
  275. package/src/components/trace-viewer/trace-viewer.module.css +4 -4
  276. package/src/components/trace-viewer/util/timing.ts +7 -11
  277. package/src/components/trace-viewer-new.tsx +21 -15
  278. package/src/components/ui/alert.tsx +1 -1
  279. package/src/components/ui/button.tsx +68 -0
  280. package/src/components/ui/card.tsx +1 -1
  281. package/src/components/ui/collapsible.tsx +219 -0
  282. package/src/components/ui/context-card.tsx +784 -0
  283. package/src/components/ui/data-inspector.styles.ts +96 -0
  284. package/src/components/ui/data-inspector.tsx +501 -204
  285. package/src/components/ui/error-card.tsx +1 -1
  286. package/src/components/ui/error-stack-block.tsx +84 -55
  287. package/src/components/ui/icon-button.tsx +53 -0
  288. package/src/components/ui/kbd.tsx +43 -0
  289. package/src/components/ui/skeleton.tsx +1 -1
  290. package/src/components/ui/timestamp-tooltip.tsx +132 -194
  291. package/src/components/ui/tooltip.tsx +47 -0
  292. package/src/components/workflow-trace-view.tsx +31 -36
  293. package/src/components/workflow-traces/event-colors.ts +15 -11
  294. package/src/components/workflow-traces/trace-colors.ts +6 -6
  295. package/src/components/workflow-traces/trace-span-construction.test.ts +85 -0
  296. package/src/components/workflow-traces/trace-span-construction.ts +118 -35
  297. package/src/hooks/use-intersection-observer.ts +57 -0
  298. package/src/hooks/use-load-more-on-scroll.ts +49 -0
  299. package/src/hooks/use-reduced-motion.ts +34 -0
  300. package/src/index.ts +9 -0
  301. package/src/lib/cn.ts +93 -0
  302. package/src/lib/event-analysis.ts +6 -4
  303. package/src/lib/event-materialization.ts +35 -21
  304. package/src/lib/exact-event-search-id.ts +67 -0
  305. package/src/lib/hydration.ts +203 -29
  306. package/src/lib/trace-builder.ts +44 -19
  307. package/src/lib/utils.test.ts +33 -0
  308. package/src/lib/utils.ts +82 -35
  309. package/src/lib/zstd-browser-decoder.ts +42 -0
  310. package/src/styles.css +14 -0
  311. package/dist/components/error-boundary.js.map +0 -1
  312. package/dist/components/event-list-view.js.map +0 -1
  313. package/dist/components/hook-actions.js.map +0 -1
  314. package/dist/components/index.js.map +0 -1
  315. package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
  316. package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
  317. package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
  318. package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
  319. package/dist/components/new-trace-viewer/context.js.map +0 -1
  320. package/dist/components/new-trace-viewer/detail-panel.d.ts +0 -10
  321. package/dist/components/new-trace-viewer/detail-panel.d.ts.map +0 -1
  322. package/dist/components/new-trace-viewer/detail-panel.js +0 -11
  323. package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
  324. package/dist/components/new-trace-viewer/icons.js.map +0 -1
  325. package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
  326. package/dist/components/new-trace-viewer/types.js.map +0 -1
  327. package/dist/components/new-trace-viewer/util/constants.d.ts +0 -1
  328. package/dist/components/new-trace-viewer/util/constants.d.ts.map +0 -1
  329. package/dist/components/new-trace-viewer/util/constants.js +0 -2
  330. package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
  331. package/dist/components/new-trace-viewer/utils.js.map +0 -1
  332. package/dist/components/run-trace-view.js.map +0 -1
  333. package/dist/components/sidebar/attribute-panel.js.map +0 -1
  334. package/dist/components/sidebar/conversation-view.js.map +0 -1
  335. package/dist/components/sidebar/copyable-data-block.js.map +0 -1
  336. package/dist/components/sidebar/detail-card.d.ts +0 -14
  337. package/dist/components/sidebar/detail-card.d.ts.map +0 -1
  338. package/dist/components/sidebar/detail-card.js +0 -20
  339. package/dist/components/sidebar/detail-card.js.map +0 -1
  340. package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
  341. package/dist/components/sidebar/events-list.js.map +0 -1
  342. package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
  343. package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
  344. package/dist/components/stream-viewer.js.map +0 -1
  345. package/dist/components/trace-viewer/components/map.js.map +0 -1
  346. package/dist/components/trace-viewer/components/markers.js.map +0 -1
  347. package/dist/components/trace-viewer/components/node.js.map +0 -1
  348. package/dist/components/trace-viewer/components/search-input.js.map +0 -1
  349. package/dist/components/trace-viewer/components/search.js.map +0 -1
  350. package/dist/components/trace-viewer/components/span-content.js.map +0 -1
  351. package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
  352. package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
  353. package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
  354. package/dist/components/trace-viewer/components/ui.js.map +0 -1
  355. package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
  356. package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
  357. package/dist/components/trace-viewer/context.js.map +0 -1
  358. package/dist/components/trace-viewer/index.js.map +0 -1
  359. package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
  360. package/dist/components/trace-viewer/types.js.map +0 -1
  361. package/dist/components/trace-viewer/util/constants.js.map +0 -1
  362. package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
  363. package/dist/components/trace-viewer/util/timing.js.map +0 -1
  364. package/dist/components/trace-viewer/util/tree.js.map +0 -1
  365. package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
  366. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
  367. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
  368. package/dist/components/trace-viewer/worker.js.map +0 -1
  369. package/dist/components/trace-viewer-new.js.map +0 -1
  370. package/dist/components/ui/alert.js.map +0 -1
  371. package/dist/components/ui/card.js.map +0 -1
  372. package/dist/components/ui/data-inspector.js.map +0 -1
  373. package/dist/components/ui/decrypt-button.js.map +0 -1
  374. package/dist/components/ui/error-card.js.map +0 -1
  375. package/dist/components/ui/error-stack-block.js.map +0 -1
  376. package/dist/components/ui/inspector-theme.d.ts +0 -95
  377. package/dist/components/ui/inspector-theme.d.ts.map +0 -1
  378. package/dist/components/ui/inspector-theme.js +0 -82
  379. package/dist/components/ui/inspector-theme.js.map +0 -1
  380. package/dist/components/ui/load-more-button.js.map +0 -1
  381. package/dist/components/ui/menu-dropdown.js.map +0 -1
  382. package/dist/components/ui/skeleton.js.map +0 -1
  383. package/dist/components/ui/spinner.js.map +0 -1
  384. package/dist/components/ui/timestamp-tooltip.js.map +0 -1
  385. package/dist/components/workflow-trace-view.js.map +0 -1
  386. package/dist/components/workflow-traces/event-colors.js.map +0 -1
  387. package/dist/components/workflow-traces/trace-colors.js.map +0 -1
  388. package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
  389. package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
  390. package/dist/hooks/use-dark-mode.js.map +0 -1
  391. package/dist/index.js.map +0 -1
  392. package/dist/lib/event-analysis.js.map +0 -1
  393. package/dist/lib/event-materialization.js.map +0 -1
  394. package/dist/lib/hydration.js.map +0 -1
  395. package/dist/lib/stream-display.js.map +0 -1
  396. package/dist/lib/toast.js.map +0 -1
  397. package/dist/lib/trace-builder.js.map +0 -1
  398. package/dist/lib/utils.js.map +0 -1
  399. package/src/components/new-trace-viewer/detail-panel.tsx +0 -57
  400. package/src/components/new-trace-viewer/util/constants.ts +0 -0
  401. package/src/components/sidebar/detail-card.tsx +0 -65
  402. package/src/components/ui/inspector-theme.ts +0 -110
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Class names and styles for the data inspector tree.
3
+ *
4
+ * Kept out of the component module for readability. The CSS is injected via a
5
+ * React 19 hoistable `<style>` (see DataInspector), so it stays bundler-agnostic
6
+ * for every consumer. Colors use theme-aware `--ds-*` tokens that adapt to
7
+ * light/dark automatically, so no per-theme overrides are needed.
8
+ */
9
+ export const CLS = {
10
+ container: 'wf-json-view',
11
+ child: 'wf-json-child',
12
+ childFields: 'wf-json-child-fields',
13
+ label: 'wf-json-label',
14
+ clickableLabel: 'wf-json-clickable-label',
15
+ punctuation: 'wf-json-punctuation',
16
+ className: 'wf-json-classname',
17
+ expandIcon: 'wf-json-expand-icon',
18
+ collapseIcon: 'wf-json-collapse-icon',
19
+ collapsedContent: 'wf-json-collapsed-content',
20
+ string: 'wf-json-string',
21
+ number: 'wf-json-number',
22
+ boolean: 'wf-json-boolean',
23
+ null: 'wf-json-null',
24
+ undefined: 'wf-json-undefined',
25
+ date: 'wf-json-date',
26
+ regexp: 'wf-json-regexp',
27
+ };
28
+ export const JSON_VIEW_STYLES = `
29
+ .${CLS.container} {
30
+ display: inline;
31
+ font-family: var(--font-mono);
32
+ font-size: 13px;
33
+ line-height: 20px;
34
+ margin: 0;
35
+ padding: 0;
36
+ background: transparent;
37
+ color: var(--ds-gray-1000);
38
+ white-space: pre-wrap;
39
+ word-wrap: break-word;
40
+ }
41
+ .${CLS.container} > .${CLS.child} > ul { padding-left: 0ch; }
42
+ .${CLS.container} > .${CLS.child} { padding-left: 1.5ch; }
43
+ .${CLS.child} { display: block; margin: 0; padding: 0 0 0 2ch; }
44
+ .${CLS.child}:hover:not(:has(.${CLS.child}:hover)):not(:has(.${CLS.child} ~ .${CLS.child})) {
45
+ background-color: var(--ds-gray-alpha-100);
46
+ border-radius: 4px;
47
+ }
48
+ .${CLS.childFields} { margin: 0; padding: 0; list-style: none; }
49
+ .${CLS.label}, .${CLS.clickableLabel} {
50
+ color: var(--ds-pink-900);
51
+ font-weight: 400;
52
+ margin-right: 1ch;
53
+ }
54
+ .${CLS.clickableLabel} { cursor: pointer; }
55
+ .${CLS.punctuation} { color: var(--ds-gray-1000); }
56
+ .${CLS.className} { font-style: italic; color: var(--ds-gray-900); margin-right: 1ch; }
57
+ .${CLS.string} { color: var(--ds-green-900); }
58
+ .${CLS.number} { color: var(--ds-blue-900); }
59
+ .${CLS.boolean} { color: var(--ds-amber-900); }
60
+ .${CLS.null}, .${CLS.undefined} { color: var(--ds-gray-900); }
61
+ .${CLS.date} { color: var(--ds-pink-900); }
62
+ .${CLS.regexp} { color: var(--ds-purple-900); }
63
+ .${CLS.container} > .${CLS.child} > .${CLS.expandIcon},
64
+ .${CLS.container} > .${CLS.child} > .${CLS.collapseIcon} { margin-left: -1.5ch; }
65
+ .${CLS.expandIcon}, .${CLS.collapseIcon} {
66
+ appearance: none;
67
+ background: none;
68
+ border: 0;
69
+ padding: 0;
70
+ font: inherit;
71
+ vertical-align: baseline;
72
+ cursor: pointer;
73
+ display: inline-block;
74
+ margin-right: 0ch;
75
+ margin-left: -1.5ch;
76
+ color: var(--ds-gray-500);
77
+ user-select: none;
78
+ outline: none;
79
+ }
80
+ .${CLS.expandIcon}::after {
81
+ content: '\\25B8';
82
+ margin-right: 0.5ch;
83
+ transform: translateY(-0.5px);
84
+ display: block;
85
+ }
86
+ .${CLS.collapseIcon}::after { content: '\\25BE'; margin-right: 0.5ch; }
87
+ .${CLS.expandIcon}:hover, .${CLS.collapseIcon}:hover,
88
+ .${CLS.child}:has(> .${CLS.clickableLabel}:hover) > .${CLS.expandIcon},
89
+ .${CLS.child}:has(> .${CLS.clickableLabel}:hover) > .${CLS.collapseIcon} {
90
+ color: var(--ds-gray-1000);
91
+ }
92
+ .${CLS.collapsedContent} { color: var(--ds-gray-900); }
93
+ .${CLS.collapsedContent}::after { content: '...'; }
94
+ `;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbnNwZWN0b3Iuc3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkvZGF0YS1pbnNwZWN0b3Iuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUc7SUFDakIsU0FBUyxFQUFFLGNBQWM7SUFDekIsS0FBSyxFQUFFLGVBQWU7SUFDdEIsV0FBVyxFQUFFLHNCQUFzQjtJQUNuQyxLQUFLLEVBQUUsZUFBZTtJQUN0QixjQUFjLEVBQUUseUJBQXlCO0lBQ3pDLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsU0FBUyxFQUFFLG1CQUFtQjtJQUM5QixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLFlBQVksRUFBRSx1QkFBdUI7SUFDckMsZ0JBQWdCLEVBQUUsMkJBQTJCO0lBQzdDLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEIsTUFBTSxFQUFFLGdCQUFnQjtJQUN4QixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLElBQUksRUFBRSxjQUFjO0lBQ3BCLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsSUFBSSxFQUFFLGNBQWM7SUFDcEIsTUFBTSxFQUFFLGdCQUFnQjtDQUNoQixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7R0FDN0IsR0FBRyxDQUFDLFNBQVM7Ozs7Ozs7Ozs7OztHQVliLEdBQUcsQ0FBQyxTQUFTLE9BQU8sR0FBRyxDQUFDLEtBQUs7R0FDN0IsR0FBRyxDQUFDLFNBQVMsT0FBTyxHQUFHLENBQUMsS0FBSztHQUM3QixHQUFHLENBQUMsS0FBSztHQUNULEdBQUcsQ0FBQyxLQUFLLG9CQUFvQixHQUFHLENBQUMsS0FBSyxzQkFBc0IsR0FBRyxDQUFDLEtBQUssT0FBTyxHQUFHLENBQUMsS0FBSzs7OztHQUlyRixHQUFHLENBQUMsV0FBVztHQUNmLEdBQUcsQ0FBQyxLQUFLLE1BQU0sR0FBRyxDQUFDLGNBQWM7Ozs7O0dBS2pDLEdBQUcsQ0FBQyxjQUFjO0dBQ2xCLEdBQUcsQ0FBQyxXQUFXO0dBQ2YsR0FBRyxDQUFDLFNBQVM7R0FDYixHQUFHLENBQUMsTUFBTTtHQUNWLEdBQUcsQ0FBQyxNQUFNO0dBQ1YsR0FBRyxDQUFDLE9BQU87R0FDWCxHQUFHLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxTQUFTO0dBQzNCLEdBQUcsQ0FBQyxJQUFJO0dBQ1IsR0FBRyxDQUFDLE1BQU07R0FDVixHQUFHLENBQUMsU0FBUyxPQUFPLEdBQUcsQ0FBQyxLQUFLLE9BQU8sR0FBRyxDQUFDLFVBQVU7R0FDbEQsR0FBRyxDQUFDLFNBQVMsT0FBTyxHQUFHLENBQUMsS0FBSyxPQUFPLEdBQUcsQ0FBQyxZQUFZO0dBQ3BELEdBQUcsQ0FBQyxVQUFVLE1BQU0sR0FBRyxDQUFDLFlBQVk7Ozs7Ozs7Ozs7Ozs7OztHQWVwQyxHQUFHLENBQUMsVUFBVTs7Ozs7O0dBTWQsR0FBRyxDQUFDLFlBQVk7R0FDaEIsR0FBRyxDQUFDLFVBQVUsWUFBWSxHQUFHLENBQUMsWUFBWTtHQUMxQyxHQUFHLENBQUMsS0FBSyxXQUFXLEdBQUcsQ0FBQyxjQUFjLGNBQWMsR0FBRyxDQUFDLFVBQVU7R0FDbEUsR0FBRyxDQUFDLEtBQUssV0FBVyxHQUFHLENBQUMsY0FBYyxjQUFjLEdBQUcsQ0FBQyxZQUFZOzs7R0FHcEUsR0FBRyxDQUFDLGdCQUFnQjtHQUNwQixHQUFHLENBQUMsZ0JBQWdCO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsYXNzIG5hbWVzIGFuZCBzdHlsZXMgZm9yIHRoZSBkYXRhIGluc3BlY3RvciB0cmVlLlxuICpcbiAqIEtlcHQgb3V0IG9mIHRoZSBjb21wb25lbnQgbW9kdWxlIGZvciByZWFkYWJpbGl0eS4gVGhlIENTUyBpcyBpbmplY3RlZCB2aWEgYVxuICogUmVhY3QgMTkgaG9pc3RhYmxlIGA8c3R5bGU+YCAoc2VlIERhdGFJbnNwZWN0b3IpLCBzbyBpdCBzdGF5cyBidW5kbGVyLWFnbm9zdGljXG4gKiBmb3IgZXZlcnkgY29uc3VtZXIuIENvbG9ycyB1c2UgdGhlbWUtYXdhcmUgYC0tZHMtKmAgdG9rZW5zIHRoYXQgYWRhcHQgdG9cbiAqIGxpZ2h0L2RhcmsgYXV0b21hdGljYWxseSwgc28gbm8gcGVyLXRoZW1lIG92ZXJyaWRlcyBhcmUgbmVlZGVkLlxuICovXG5cbmV4cG9ydCBjb25zdCBDTFMgPSB7XG4gIGNvbnRhaW5lcjogJ3dmLWpzb24tdmlldycsXG4gIGNoaWxkOiAnd2YtanNvbi1jaGlsZCcsXG4gIGNoaWxkRmllbGRzOiAnd2YtanNvbi1jaGlsZC1maWVsZHMnLFxuICBsYWJlbDogJ3dmLWpzb24tbGFiZWwnLFxuICBjbGlja2FibGVMYWJlbDogJ3dmLWpzb24tY2xpY2thYmxlLWxhYmVsJyxcbiAgcHVuY3R1YXRpb246ICd3Zi1qc29uLXB1bmN0dWF0aW9uJyxcbiAgY2xhc3NOYW1lOiAnd2YtanNvbi1jbGFzc25hbWUnLFxuICBleHBhbmRJY29uOiAnd2YtanNvbi1leHBhbmQtaWNvbicsXG4gIGNvbGxhcHNlSWNvbjogJ3dmLWpzb24tY29sbGFwc2UtaWNvbicsXG4gIGNvbGxhcHNlZENvbnRlbnQ6ICd3Zi1qc29uLWNvbGxhcHNlZC1jb250ZW50JyxcbiAgc3RyaW5nOiAnd2YtanNvbi1zdHJpbmcnLFxuICBudW1iZXI6ICd3Zi1qc29uLW51bWJlcicsXG4gIGJvb2xlYW46ICd3Zi1qc29uLWJvb2xlYW4nLFxuICBudWxsOiAnd2YtanNvbi1udWxsJyxcbiAgdW5kZWZpbmVkOiAnd2YtanNvbi11bmRlZmluZWQnLFxuICBkYXRlOiAnd2YtanNvbi1kYXRlJyxcbiAgcmVnZXhwOiAnd2YtanNvbi1yZWdleHAnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEpTT05fVklFV19TVFlMRVMgPSBgXG4uJHtDTFMuY29udGFpbmVyfSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ubyk7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS1kcy1ncmF5LTEwMDApO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cbi4ke0NMUy5jb250YWluZXJ9ID4gLiR7Q0xTLmNoaWxkfSA+IHVsIHsgcGFkZGluZy1sZWZ0OiAwY2g7IH1cbi4ke0NMUy5jb250YWluZXJ9ID4gLiR7Q0xTLmNoaWxkfSB7IHBhZGRpbmctbGVmdDogMS41Y2g7IH1cbi4ke0NMUy5jaGlsZH0geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIDAgMCAyY2g7IH1cbi4ke0NMUy5jaGlsZH06aG92ZXI6bm90KDpoYXMoLiR7Q0xTLmNoaWxkfTpob3ZlcikpOm5vdCg6aGFzKC4ke0NMUy5jaGlsZH0gfiAuJHtDTFMuY2hpbGR9KSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kcy1ncmF5LWFscGhhLTEwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi4ke0NMUy5jaGlsZEZpZWxkc30geyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGxpc3Qtc3R5bGU6IG5vbmU7IH1cbi4ke0NMUy5sYWJlbH0sIC4ke0NMUy5jbGlja2FibGVMYWJlbH0ge1xuICBjb2xvcjogdmFyKC0tZHMtcGluay05MDApO1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW4tcmlnaHQ6IDFjaDtcbn1cbi4ke0NMUy5jbGlja2FibGVMYWJlbH0geyBjdXJzb3I6IHBvaW50ZXI7IH1cbi4ke0NMUy5wdW5jdHVhdGlvbn0geyBjb2xvcjogdmFyKC0tZHMtZ3JheS0xMDAwKTsgfVxuLiR7Q0xTLmNsYXNzTmFtZX0geyBmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS1kcy1ncmF5LTkwMCk7IG1hcmdpbi1yaWdodDogMWNoOyB9XG4uJHtDTFMuc3RyaW5nfSB7IGNvbG9yOiB2YXIoLS1kcy1ncmVlbi05MDApOyB9XG4uJHtDTFMubnVtYmVyfSB7IGNvbG9yOiB2YXIoLS1kcy1ibHVlLTkwMCk7IH1cbi4ke0NMUy5ib29sZWFufSB7IGNvbG9yOiB2YXIoLS1kcy1hbWJlci05MDApOyB9XG4uJHtDTFMubnVsbH0sIC4ke0NMUy51bmRlZmluZWR9IHsgY29sb3I6IHZhcigtLWRzLWdyYXktOTAwKTsgfVxuLiR7Q0xTLmRhdGV9IHsgY29sb3I6IHZhcigtLWRzLXBpbmstOTAwKTsgfVxuLiR7Q0xTLnJlZ2V4cH0geyBjb2xvcjogdmFyKC0tZHMtcHVycGxlLTkwMCk7IH1cbi4ke0NMUy5jb250YWluZXJ9ID4gLiR7Q0xTLmNoaWxkfSA+IC4ke0NMUy5leHBhbmRJY29ufSxcbi4ke0NMUy5jb250YWluZXJ9ID4gLiR7Q0xTLmNoaWxkfSA+IC4ke0NMUy5jb2xsYXBzZUljb259IHsgbWFyZ2luLWxlZnQ6IC0xLjVjaDsgfVxuLiR7Q0xTLmV4cGFuZEljb259LCAuJHtDTFMuY29sbGFwc2VJY29ufSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgZm9udDogaW5oZXJpdDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiAwY2g7XG4gIG1hcmdpbi1sZWZ0OiAtMS41Y2g7XG4gIGNvbG9yOiB2YXIoLS1kcy1ncmF5LTUwMCk7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBvdXRsaW5lOiBub25lO1xufVxuLiR7Q0xTLmV4cGFuZEljb259OjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXFxcMjVCOCc7XG4gIG1hcmdpbi1yaWdodDogMC41Y2g7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cHgpO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi4ke0NMUy5jb2xsYXBzZUljb259OjphZnRlciB7IGNvbnRlbnQ6ICdcXFxcMjVCRSc7IG1hcmdpbi1yaWdodDogMC41Y2g7IH1cbi4ke0NMUy5leHBhbmRJY29ufTpob3ZlciwgLiR7Q0xTLmNvbGxhcHNlSWNvbn06aG92ZXIsXG4uJHtDTFMuY2hpbGR9Omhhcyg+IC4ke0NMUy5jbGlja2FibGVMYWJlbH06aG92ZXIpID4gLiR7Q0xTLmV4cGFuZEljb259LFxuLiR7Q0xTLmNoaWxkfTpoYXMoPiAuJHtDTFMuY2xpY2thYmxlTGFiZWx9OmhvdmVyKSA+IC4ke0NMUy5jb2xsYXBzZUljb259IHtcbiAgY29sb3I6IHZhcigtLWRzLWdyYXktMTAwMCk7XG59XG4uJHtDTFMuY29sbGFwc2VkQ29udGVudH0geyBjb2xvcjogdmFyKC0tZHMtZ3JheS05MDApOyB9XG4uJHtDTFMuY29sbGFwc2VkQ29udGVudH06OmFmdGVyIHsgY29udGVudDogJy4uLic7IH1cbmA7XG4iXX0=
@@ -9,4 +9,4 @@ const STYLES = `.wf-decrypt-btn{appearance:none;-webkit-appearance:none;border:n
9
9
  export function DecryptButton({ decrypted = false, loading = false, onClick, }) {
10
10
  return (_jsxs(_Fragment, { children: [_jsx("style", { dangerouslySetInnerHTML: { __html: STYLES } }), _jsxs("button", { type: "button", onClick: decrypted ? undefined : onClick, disabled: decrypted || loading, className: `wf-decrypt-btn ${decrypted ? 'wf-decrypt-done' : 'wf-decrypt-idle'}`, children: [loading ? (_jsx(Spinner, { size: 14 })) : decrypted ? (_jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), _jsx("path", { d: "M7 11V7a5 5 0 0 1 9.9-1" })] })) : (_jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), _jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] })), loading ? 'Decrypting…' : decrypted ? 'Decrypted' : 'Decrypt'] })] }));
11
11
  }
12
- //# sourceMappingURL=decrypt-button.js.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy91aS9kZWNyeXB0LWJ1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsTUFBTSxNQUFNLEdBQUcsMmxCQUEybEIsQ0FBQztBQVczbUI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxFQUM1QixTQUFTLEdBQUcsS0FBSyxFQUNqQixPQUFPLEdBQUcsS0FBSyxFQUNmLE9BQU8sR0FDWTtJQUNuQixPQUFPLENBQ0wsOEJBQ0UsZ0JBQU8sdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUksRUFDdEQsa0JBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFDeEMsUUFBUSxFQUFFLFNBQVMsSUFBSSxPQUFPLEVBQzlCLFNBQVMsRUFBRSxrQkFBa0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsYUFFL0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNULEtBQUMsT0FBTyxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksQ0FDdEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUNkLGVBQ0UsS0FBSyxFQUFFLEVBQUUsRUFDVCxNQUFNLEVBQUUsRUFBRSxFQUNWLE9BQU8sRUFBQyxXQUFXLEVBQ25CLElBQUksRUFBQyxNQUFNLEVBQ1gsTUFBTSxFQUFDLGNBQWMsRUFDckIsV0FBVyxFQUFFLENBQUMsRUFDZCxhQUFhLEVBQUMsT0FBTyxFQUNyQixjQUFjLEVBQUMsT0FBTyxhQUV0QixlQUFNLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxHQUFHLEVBQzFELGVBQU0sQ0FBQyxFQUFDLHlCQUF5QixHQUFHLElBQ2hDLENBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FDRixlQUNFLEtBQUssRUFBRSxFQUFFLEVBQ1QsTUFBTSxFQUFFLEVBQUUsRUFDVixPQUFPLEVBQUMsV0FBVyxFQUNuQixJQUFJLEVBQUMsTUFBTSxFQUNYLE1BQU0sRUFBQyxjQUFjLEVBQ3JCLFdBQVcsRUFBRSxDQUFDLEVBQ2QsYUFBYSxFQUFDLE9BQU8sRUFDckIsY0FBYyxFQUFDLE9BQU8sYUFFdEIsZUFBTSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsR0FBRyxFQUMxRCxlQUFNLENBQUMsRUFBQywwQkFBMEIsR0FBRyxJQUNqQyxDQUNQLEVBQ0EsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQ3ZELElBQ1IsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4vc3Bpbm5lcic7XG5cbmNvbnN0IFNUWUxFUyA9IGAud2YtZGVjcnlwdC1idG57YXBwZWFyYW5jZTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JvcmRlcjpub25lO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0OjQwcHg7cGFkZGluZzowIDEycHg7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjIwcHg7Y3Vyc29yOnBvaW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2dhcDo2cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDE1MG1zfS53Zi1kZWNyeXB0LWlkbGV7Y29sb3I6dmFyKC0tZHMtZ3JheS0xMDAwKTtiYWNrZ3JvdW5kOnZhcigtLWRzLWJhY2tncm91bmQtMTAwKTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1kcy1ncmF5LTQwMCl9LndmLWRlY3J5cHQtaWRsZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRzLWdyYXktYWxwaGEtMjAwKX0ud2YtZGVjcnlwdC1kb25le2NvbG9yOnZhcigtLWRzLWdyZWVuLTkwMCk7YmFja2dyb3VuZDp2YXIoLS1kcy1ncmVlbi0xMDApO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWRzLWdyZWVuLTQwMCk7Y3Vyc29yOmRlZmF1bHR9YDtcblxuaW50ZXJmYWNlIERlY3J5cHRCdXR0b25Qcm9wcyB7XG4gIC8qKiBXaGV0aGVyIGFuIGVuY3J5cHRpb24ga2V5IGhhcyBiZWVuIG9idGFpbmVkIChkZWNyeXB0aW9uIGlzIGFjdGl2ZSkuICovXG4gIGRlY3J5cHRlZD86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBrZXkgaXMgY3VycmVudGx5IGJlaW5nIGZldGNoZWQuICovXG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRvIGluaXRpYXRlIGRlY3J5cHRpb24uICovXG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIERlY3J5cHQvRGVjcnlwdGVkIGJ1dHRvbiB1c2luZyBHZWlzdCBzZWNvbmRhcnkgc3R5bGUuXG4gKiBUaHJlZSBzdGF0ZXM6IGlkbGUgKHNlY29uZGFyeSBncmF5KSwgZGVjcnlwdGluZyAoc3Bpbm5lciksIGRlY3J5cHRlZCAoZ3JlZW4gc3VjY2VzcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEZWNyeXB0QnV0dG9uKHtcbiAgZGVjcnlwdGVkID0gZmFsc2UsXG4gIGxvYWRpbmcgPSBmYWxzZSxcbiAgb25DbGljayxcbn06IERlY3J5cHRCdXR0b25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c3R5bGUgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBTVFlMRVMgfX0gLz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG9uQ2xpY2s9e2RlY3J5cHRlZCA/IHVuZGVmaW5lZCA6IG9uQ2xpY2t9XG4gICAgICAgIGRpc2FibGVkPXtkZWNyeXB0ZWQgfHwgbG9hZGluZ31cbiAgICAgICAgY2xhc3NOYW1lPXtgd2YtZGVjcnlwdC1idG4gJHtkZWNyeXB0ZWQgPyAnd2YtZGVjcnlwdC1kb25lJyA6ICd3Zi1kZWNyeXB0LWlkbGUnfWB9XG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgIDxTcGlubmVyIHNpemU9ezE0fSAvPlxuICAgICAgICApIDogZGVjcnlwdGVkID8gKFxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIHdpZHRoPXsxNH1cbiAgICAgICAgICAgIGhlaWdodD17MTR9XG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIxMVwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMVwiIHJ4PVwiMlwiIHJ5PVwiMlwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTFWN2E1IDUgMCAwIDEgOS45LTFcIiAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIHdpZHRoPXsxNH1cbiAgICAgICAgICAgIGhlaWdodD17MTR9XG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIxMVwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMVwiIHJ4PVwiMlwiIHJ5PVwiMlwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0XCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgKX1cbiAgICAgICAge2xvYWRpbmcgPyAnRGVjcnlwdGluZ+KApicgOiBkZWNyeXB0ZWQgPyAnRGVjcnlwdGVkJyA6ICdEZWNyeXB0J31cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuIl19
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { AlertCircle, ChevronDown } from 'lucide-react';
4
4
  import { useState } from 'react';
5
- import { cn } from '../../lib/utils';
5
+ import { cn } from '../../lib/cn';
6
6
  /**
7
7
  * A collapsible error card that shows a title with an error icon,
8
8
  * and expands to reveal details when clicked.
@@ -14,4 +14,4 @@ export function ErrorCard({ title, className, details = 'Unknown error', }) {
14
14
  color: 'var(--ds-red-900)',
15
15
  }, children: details }) }))] }) }));
16
16
  }
17
- //# sourceMappingURL=error-card.js.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3VpL2Vycm9yLWNhcmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFXbEM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxFQUN4QixLQUFLLEVBQ0wsU0FBUyxFQUNULE9BQU8sR0FBRyxlQUFlLEdBQ1Y7SUFDZixNQUFNLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwRCxPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUMsNEJBQTRCLFlBQ3pDLGVBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCx1REFBdUQsRUFDdkQsU0FBUyxDQUNWLEVBQ0QsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGFBRTFDLGtCQUNFLElBQUksRUFBQyxRQUFRLEVBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUN6QyxTQUFTLEVBQUMsc0ZBQXNGLEVBQ2hHLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxhQUVyQyxlQUFLLFNBQVMsRUFBQyx5QkFBeUIsYUFDdEMsS0FBQyxXQUFXLElBQUMsU0FBUyxFQUFDLGtCQUFrQixHQUFHLEVBQzVDLGVBQU0sU0FBUyxFQUFDLHFCQUFxQixZQUFFLEtBQUssR0FBUSxJQUNoRCxFQUNOLGVBQUssU0FBUyxFQUFDLHNDQUFzQyxhQUNuRCxlQUFNLFNBQVMsRUFBQyxTQUFTLHNDQUE2QixFQUN0RCxLQUFDLFdBQVcsSUFDVixTQUFTLEVBQUUsRUFBRSxDQUNYLDJDQUEyQyxFQUMzQyxVQUFVLElBQUksWUFBWSxDQUMzQixHQUNELElBQ0UsSUFDQyxFQUVSLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FDeEIsY0FDRSxTQUFTLEVBQUMsV0FBVyxFQUNyQixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUUsWUFFbkQsY0FDRSxTQUFTLEVBQUMscUZBQXFGLEVBQy9GLEtBQUssRUFBRTs0QkFDTCxVQUFVLEVBQUUsbUJBQW1COzRCQUMvQixLQUFLLEVBQUUsbUJBQW1CO3lCQUMzQixZQUVBLE9BQU8sR0FDSixHQUNGLENBQ1AsSUFDRyxHQUNGLENBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IEFsZXJ0Q2lyY2xlLCBDaGV2cm9uRG93biB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vbGliL2NuJztcblxuaW50ZXJmYWNlIEVycm9yQ2FyZFByb3BzIHtcbiAgLyoqIFRpdGxlIHNob3duIGluIHRoZSBoZWFkZXIgKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqIEVycm9yIG1lc3NhZ2Ugb3IgZGV0YWlscyB0byBzaG93IHdoZW4gZXhwYW5kZWQgKi9cbiAgZGV0YWlscz86IHN0cmluZztcbiAgLyoqIEFkZGl0aW9uYWwgY2xhc3MgbmFtZXMgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29sbGFwc2libGUgZXJyb3IgY2FyZCB0aGF0IHNob3dzIGEgdGl0bGUgd2l0aCBhbiBlcnJvciBpY29uLFxuICogYW5kIGV4cGFuZHMgdG8gcmV2ZWFsIGRldGFpbHMgd2hlbiBjbGlja2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JDYXJkKHtcbiAgdGl0bGUsXG4gIGNsYXNzTmFtZSxcbiAgZGV0YWlscyA9ICdVbmtub3duIGVycm9yJyxcbn06IEVycm9yQ2FyZFByb3BzKSB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGxcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAncm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC00MDAgdy1mdWxsIG1heC13LVs4MDBweF0nLFxuICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICApfVxuICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kOiAndmFyKC0tZHMtcmVkLTEwMCknIH19XG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtNCBweS0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiB0ZXh0LWxlZnQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtcmVkLTkwMCknIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8QWxlcnRDaXJjbGUgY2xhc3NOYW1lPVwiaC00IHctNCBzaHJpbmstMFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXNtXCI+e3RpdGxlfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgb3BhY2l0eS03MFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiPkNsaWNrIHRvIHNob3cgZGV0YWlsczwvc3Bhbj5cbiAgICAgICAgICAgIDxDaGV2cm9uRG93blxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdoLTQgdy00IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCcsXG4gICAgICAgICAgICAgICAgaXNFeHBhbmRlZCAmJiAncm90YXRlLTE4MCdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIHtpc0V4cGFuZGVkICYmIGRldGFpbHMgJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTQgcGItM1wiXG4gICAgICAgICAgICBzdHlsZT17eyBib3JkZXJUb3A6ICcxcHggc29saWQgdmFyKC0tZHMtcmVkLTQwMCknIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHByZVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtdC0zIHAtMyByb3VuZGVkLW1kIHRleHQteHMgZm9udC1tb25vIHdoaXRlc3BhY2UtcHJlLXdyYXAgYnJlYWstd29yZHMgb3ZlcmZsb3ctYXV0b1wiXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWRzLXJlZC0yMDApJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLXJlZC05MDApJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2RldGFpbHN9XG4gICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
@@ -1,18 +1,25 @@
1
+ export type StructuredErrorRecord = Record<string, unknown> & {
2
+ message?: string;
3
+ stack?: string;
4
+ };
5
+ /**
6
+ * Check whether `value` looks like a structured error object we can render
7
+ * with the error block. Some persisted workflow errors only include a
8
+ * `message`, while runtime errors usually also include `stack`.
9
+ */
10
+ export declare function isStructuredError(value: unknown): value is StructuredErrorRecord;
1
11
  /**
2
- * Check whether `value` looks like a structured error object with a `stack`
3
- * field that we can render as pre-formatted text.
12
+ * Narrower guard kept for callers that specifically need a stack trace.
4
13
  */
5
- export declare function isStructuredErrorWithStack(value: unknown): value is Record<string, unknown> & {
14
+ export declare function isStructuredErrorWithStack(value: unknown): value is StructuredErrorRecord & {
6
15
  stack: string;
7
16
  };
8
17
  /**
9
- * Renders an error with a `stack` field as a visually distinct error block.
10
- * Shows the error message with an alert icon at the top, separated from
11
- * the stack trace below.
18
+ * Renders a structured error as a visually distinct error block. Shows the
19
+ * error message with an alert icon at the top, separated from the stack trace
20
+ * or full message below.
12
21
  */
13
- export declare function ErrorStackBlock({ value, }: {
14
- value: Record<string, unknown> & {
15
- stack: string;
16
- };
22
+ export declare function ErrorStackBlock({ value }: {
23
+ value: StructuredErrorRecord;
17
24
  }): import("react/jsx-runtime").JSX.Element;
18
25
  //# sourceMappingURL=error-stack-block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-stack-block.d.ts","sourceRoot":"","sources":["../../../src/components/ui/error-stack-block.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAOtD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD,2CA6DA"}
1
+ {"version":3,"file":"error-stack-block.d.ts","sourceRoot":"","sources":["../../../src/components/ui/error-stack-block.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAOhC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAKpD;AAiBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,qBAAqB,CAAA;CAAE,2CA6D1E"}
@@ -1,49 +1,68 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { AlertCircle, Copy } from 'lucide-react';
4
- import { useToast } from '../../lib/toast';
3
+ import { AlertCircle } from 'lucide-react';
4
+ import { CopyButton } from '../new-trace-viewer/components/copy-button';
5
5
  /**
6
- * Check whether `value` looks like a structured error object with a `stack`
7
- * field that we can render as pre-formatted text.
6
+ * Check whether `value` looks like a structured error object we can render
7
+ * with the error block. Some persisted workflow errors only include a
8
+ * `message`, while runtime errors usually also include `stack`.
8
9
  */
9
- export function isStructuredErrorWithStack(value) {
10
+ export function isStructuredError(value) {
10
11
  return (value != null &&
11
12
  typeof value === 'object' &&
12
- 'stack' in value &&
13
+ (typeof value.message === 'string' ||
14
+ typeof value.stack === 'string'));
15
+ }
16
+ /**
17
+ * Narrower guard kept for callers that specifically need a stack trace.
18
+ */
19
+ export function isStructuredErrorWithStack(value) {
20
+ return (isStructuredError(value) &&
13
21
  typeof value.stack === 'string');
14
22
  }
15
23
  /**
16
- * Renders an error with a `stack` field as a visually distinct error block.
17
- * Shows the error message with an alert icon at the top, separated from
18
- * the stack trace below.
24
+ * Pull a short, single-line title out of an error message.
25
+ *
26
+ * Workflow's structured error messages are multi-line — the first line is
27
+ * the headline (`Failed to serialize step return value`) and the rest are
28
+ * `╰▶ hint:` / `╰▶ docs:` framed details. The full message belongs in the
29
+ * body of the error block; the title should just be the headline so the
30
+ * card stays scannable.
19
31
  */
20
- export function ErrorStackBlock({ value, }) {
21
- const toast = useToast();
22
- const stack = value.stack;
32
+ function deriveTitle(message) {
33
+ const firstLine = message.split('\n').find((line) => line.trim().length > 0) ?? message;
34
+ return firstLine.trim();
35
+ }
36
+ /**
37
+ * Renders a structured error as a visually distinct error block. Shows the
38
+ * error message with an alert icon at the top, separated from the stack trace
39
+ * or full message below.
40
+ */
41
+ export function ErrorStackBlock({ value }) {
42
+ const stack = typeof value.stack === 'string' ? value.stack : undefined;
23
43
  const message = typeof value.message === 'string' ? value.message : undefined;
24
- const copyText = message ? `${message}\n\n${stack}` : stack;
44
+ const body = stack ?? message ?? '';
45
+ // V8's `Error.stack` already starts with `Name: message`; message-only
46
+ // errors use the message as the body so long single-line failures remain
47
+ // readable even when the header truncates.
48
+ const title = message ? deriveTitle(message) : deriveTitle(body);
49
+ const copyText = message && stack && !stack.includes(message)
50
+ ? `${message}\n\n${stack}`
51
+ : body;
25
52
  return (_jsxs("div", { className: "relative overflow-hidden rounded-md border", style: {
26
53
  borderColor: 'var(--ds-red-400)',
27
54
  background: 'var(--ds-red-100)',
28
- }, children: [_jsx("button", { type: "button", "aria-label": "Copy error", title: "Copy", className: "!absolute !right-2 !top-2 !flex !h-6 !w-6 !items-center !justify-center !rounded-md !border transition-transform transition-colors duration-100 hover:!bg-[var(--ds-red-200)] active:!scale-95", style: {
29
- borderColor: 'var(--ds-red-400)',
30
- background: 'var(--ds-red-100)',
31
- color: 'var(--ds-red-900)',
32
- }, onClick: () => {
33
- navigator.clipboard
34
- .writeText(copyText)
35
- .then(() => {
36
- toast.success('Copied to clipboard');
37
- })
38
- .catch(() => {
39
- toast.error('Failed to copy');
40
- });
41
- }, children: _jsx(Copy, { size: 12 }) }), message && (_jsxs("div", { className: "flex items-start gap-2 px-3 py-2.5 pr-10", style: {
55
+ }, children: [_jsx(CopyButton, { copyText: copyText, ariaLabel: "Copy error", className: "absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-md border border-red-400 bg-red-100 p-0 text-red-900 transition-transform transition-colors duration-100 hover:bg-red-200 active:scale-95" }), title && (_jsxs("div", { className: "flex items-center gap-2 px-3 py-2.5 pr-10", style: {
42
56
  color: 'var(--ds-red-900)',
43
57
  borderBottom: '1px solid var(--ds-red-400)',
44
- }, children: [_jsx(AlertCircle, { className: "h-4 w-4 shrink-0", style: { marginTop: 1 } }), _jsx("p", { className: "text-xs font-semibold m-0 break-words", children: message })] })), _jsx("pre", { className: "px-3 py-2.5 text-xs font-mono whitespace-pre-wrap break-words overflow-auto m-0", style: {
58
+ }, children: [_jsx(AlertCircle, { className: "h-4 w-4 shrink-0" }), _jsx("p", { className: "text-xs font-semibold m-0 truncate",
59
+ // The full message or stack is in the body below; the header just
60
+ // shows the first line, single-line, with overflow
61
+ // ellipsised so a long title doesn't push the copy button or
62
+ // wrap into the framed hint/docs lines.
63
+ title: message, children: title })] })), body && (_jsx("pre", { className: "px-3 py-2.5 text-xs font-mono whitespace-pre-wrap break-words overflow-auto m-0", style: {
45
64
  color: 'var(--ds-red-900)',
46
65
  background: 'var(--ds-red-200)',
47
- }, children: stack })] }));
66
+ }, children: body }))] }));
48
67
  }
49
- //# sourceMappingURL=error-stack-block.js.map
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3Itc3RhY2stYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy91aS9lcnJvci1zdGFjay1ibG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBT3hFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLEtBQWM7SUFFZCxPQUFPLENBQ0wsS0FBSyxJQUFJLElBQUk7UUFDYixPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLENBQUMsT0FBUSxLQUFpQyxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQzdELE9BQVEsS0FBaUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQ2hFLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLEtBQWM7SUFFZCxPQUFPLENBQ0wsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ3hCLE9BQVEsS0FBK0IsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUMzRCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxXQUFXLENBQUMsT0FBZTtJQUNsQyxNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUM7SUFDeEUsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFvQztJQUN6RSxNQUFNLEtBQUssR0FBRyxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDeEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ3BDLHVFQUF1RTtJQUN2RSx5RUFBeUU7SUFDekUsMkNBQTJDO0lBQzNDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsTUFBTSxRQUFRLEdBQ1osT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sT0FBTyxLQUFLLEVBQUU7UUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVYLE9BQU8sQ0FDTCxlQUNFLFNBQVMsRUFBQyw0Q0FBNEMsRUFDdEQsS0FBSyxFQUFFO1lBQ0wsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxVQUFVLEVBQUUsbUJBQW1CO1NBQ2hDLGFBRUQsS0FBQyxVQUFVLElBQ1QsUUFBUSxFQUFFLFFBQVEsRUFDbEIsU0FBUyxFQUFDLFlBQVksRUFDdEIsU0FBUyxFQUFDLG1OQUFtTixHQUM3TixFQUVELEtBQUssSUFBSSxDQUNSLGVBQ0UsU0FBUyxFQUFDLDJDQUEyQyxFQUNyRCxLQUFLLEVBQUU7b0JBQ0wsS0FBSyxFQUFFLG1CQUFtQjtvQkFDMUIsWUFBWSxFQUFFLDZCQUE2QjtpQkFDNUMsYUFFRCxLQUFDLFdBQVcsSUFBQyxTQUFTLEVBQUMsa0JBQWtCLEdBQUcsRUFDNUMsWUFDRSxTQUFTLEVBQUMsb0NBQW9DO3dCQUM5QyxrRUFBa0U7d0JBQ2xFLG1EQUFtRDt3QkFDbkQsNkRBQTZEO3dCQUM3RCx3Q0FBd0M7d0JBQ3hDLEtBQUssRUFBRSxPQUFPLFlBRWIsS0FBSyxHQUNKLElBQ0EsQ0FDUCxFQUNBLElBQUksSUFBSSxDQUNQLGNBQ0UsU0FBUyxFQUFDLGlGQUFpRixFQUMzRixLQUFLLEVBQUU7b0JBQ0wsS0FBSyxFQUFFLG1CQUFtQjtvQkFDMUIsVUFBVSxFQUFFLG1CQUFtQjtpQkFDaEMsWUFFQSxJQUFJLEdBQ0QsQ0FDUCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IEFsZXJ0Q2lyY2xlIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IENvcHlCdXR0b24gfSBmcm9tICcuLi9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvY29weS1idXR0b24nO1xuXG5leHBvcnQgdHlwZSBTdHJ1Y3R1cmVkRXJyb3JSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIHtcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYHZhbHVlYCBsb29rcyBsaWtlIGEgc3RydWN0dXJlZCBlcnJvciBvYmplY3Qgd2UgY2FuIHJlbmRlclxuICogd2l0aCB0aGUgZXJyb3IgYmxvY2suIFNvbWUgcGVyc2lzdGVkIHdvcmtmbG93IGVycm9ycyBvbmx5IGluY2x1ZGUgYVxuICogYG1lc3NhZ2VgLCB3aGlsZSBydW50aW1lIGVycm9ycyB1c3VhbGx5IGFsc28gaW5jbHVkZSBgc3RhY2tgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJ1Y3R1cmVkRXJyb3IoXG4gIHZhbHVlOiB1bmtub3duXG4pOiB2YWx1ZSBpcyBTdHJ1Y3R1cmVkRXJyb3JSZWNvcmQge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9IG51bGwgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgKHR5cGVvZiAodmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLm1lc3NhZ2UgPT09ICdzdHJpbmcnIHx8XG4gICAgICB0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5zdGFjayA9PT0gJ3N0cmluZycpXG4gICk7XG59XG5cbi8qKlxuICogTmFycm93ZXIgZ3VhcmQga2VwdCBmb3IgY2FsbGVycyB0aGF0IHNwZWNpZmljYWxseSBuZWVkIGEgc3RhY2sgdHJhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cnVjdHVyZWRFcnJvcldpdGhTdGFjayhcbiAgdmFsdWU6IHVua25vd25cbik6IHZhbHVlIGlzIFN0cnVjdHVyZWRFcnJvclJlY29yZCAmIHsgc3RhY2s6IHN0cmluZyB9IHtcbiAgcmV0dXJuIChcbiAgICBpc1N0cnVjdHVyZWRFcnJvcih2YWx1ZSkgJiZcbiAgICB0eXBlb2YgKHZhbHVlIGFzIFN0cnVjdHVyZWRFcnJvclJlY29yZCkuc3RhY2sgPT09ICdzdHJpbmcnXG4gICk7XG59XG5cbi8qKlxuICogUHVsbCBhIHNob3J0LCBzaW5nbGUtbGluZSB0aXRsZSBvdXQgb2YgYW4gZXJyb3IgbWVzc2FnZS5cbiAqXG4gKiBXb3JrZmxvdydzIHN0cnVjdHVyZWQgZXJyb3IgbWVzc2FnZXMgYXJlIG11bHRpLWxpbmUg4oCUIHRoZSBmaXJzdCBsaW5lIGlzXG4gKiB0aGUgaGVhZGxpbmUgKGBGYWlsZWQgdG8gc2VyaWFsaXplIHN0ZXAgcmV0dXJuIHZhbHVlYCkgYW5kIHRoZSByZXN0IGFyZVxuICogYOKVsOKWtiBoaW50OmAgLyBg4pWw4pa2IGRvY3M6YCBmcmFtZWQgZGV0YWlscy4gVGhlIGZ1bGwgbWVzc2FnZSBiZWxvbmdzIGluIHRoZVxuICogYm9keSBvZiB0aGUgZXJyb3IgYmxvY2s7IHRoZSB0aXRsZSBzaG91bGQganVzdCBiZSB0aGUgaGVhZGxpbmUgc28gdGhlXG4gKiBjYXJkIHN0YXlzIHNjYW5uYWJsZS5cbiAqL1xuZnVuY3Rpb24gZGVyaXZlVGl0bGUobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZmlyc3RMaW5lID1cbiAgICBtZXNzYWdlLnNwbGl0KCdcXG4nKS5maW5kKChsaW5lKSA9PiBsaW5lLnRyaW0oKS5sZW5ndGggPiAwKSA/PyBtZXNzYWdlO1xuICByZXR1cm4gZmlyc3RMaW5lLnRyaW0oKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgc3RydWN0dXJlZCBlcnJvciBhcyBhIHZpc3VhbGx5IGRpc3RpbmN0IGVycm9yIGJsb2NrLiBTaG93cyB0aGVcbiAqIGVycm9yIG1lc3NhZ2Ugd2l0aCBhbiBhbGVydCBpY29uIGF0IHRoZSB0b3AsIHNlcGFyYXRlZCBmcm9tIHRoZSBzdGFjayB0cmFjZVxuICogb3IgZnVsbCBtZXNzYWdlIGJlbG93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JTdGFja0Jsb2NrKHsgdmFsdWUgfTogeyB2YWx1ZTogU3RydWN0dXJlZEVycm9yUmVjb3JkIH0pIHtcbiAgY29uc3Qgc3RhY2sgPSB0eXBlb2YgdmFsdWUuc3RhY2sgPT09ICdzdHJpbmcnID8gdmFsdWUuc3RhY2sgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgdmFsdWUubWVzc2FnZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS5tZXNzYWdlIDogdW5kZWZpbmVkO1xuICBjb25zdCBib2R5ID0gc3RhY2sgPz8gbWVzc2FnZSA/PyAnJztcbiAgLy8gVjgncyBgRXJyb3Iuc3RhY2tgIGFscmVhZHkgc3RhcnRzIHdpdGggYE5hbWU6IG1lc3NhZ2VgOyBtZXNzYWdlLW9ubHlcbiAgLy8gZXJyb3JzIHVzZSB0aGUgbWVzc2FnZSBhcyB0aGUgYm9keSBzbyBsb25nIHNpbmdsZS1saW5lIGZhaWx1cmVzIHJlbWFpblxuICAvLyByZWFkYWJsZSBldmVuIHdoZW4gdGhlIGhlYWRlciB0cnVuY2F0ZXMuXG4gIGNvbnN0IHRpdGxlID0gbWVzc2FnZSA/IGRlcml2ZVRpdGxlKG1lc3NhZ2UpIDogZGVyaXZlVGl0bGUoYm9keSk7XG4gIGNvbnN0IGNvcHlUZXh0ID1cbiAgICBtZXNzYWdlICYmIHN0YWNrICYmICFzdGFjay5pbmNsdWRlcyhtZXNzYWdlKVxuICAgICAgPyBgJHttZXNzYWdlfVxcblxcbiR7c3RhY2t9YFxuICAgICAgOiBib2R5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtcmVkLTQwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tZHMtcmVkLTEwMCknLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8Q29weUJ1dHRvblxuICAgICAgICBjb3B5VGV4dD17Y29weVRleHR9XG4gICAgICAgIGFyaWFMYWJlbD1cIkNvcHkgZXJyb3JcIlxuICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0yIHRvcC0yIGZsZXggaC02IHctNiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXJlZC00MDAgYmctcmVkLTEwMCBwLTAgdGV4dC1yZWQtOTAwIHRyYW5zaXRpb24tdHJhbnNmb3JtIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTEwMCBob3ZlcjpiZy1yZWQtMjAwIGFjdGl2ZTpzY2FsZS05NVwiXG4gICAgICAvPlxuXG4gICAgICB7dGl0bGUgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMyBweS0yLjUgcHItMTBcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLXJlZC05MDApJyxcbiAgICAgICAgICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCB2YXIoLS1kcy1yZWQtNDAwKScsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBbGVydENpcmNsZSBjbGFzc05hbWU9XCJoLTQgdy00IHNocmluay0wXCIgLz5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIG0tMCB0cnVuY2F0ZVwiXG4gICAgICAgICAgICAvLyBUaGUgZnVsbCBtZXNzYWdlIG9yIHN0YWNrIGlzIGluIHRoZSBib2R5IGJlbG93OyB0aGUgaGVhZGVyIGp1c3RcbiAgICAgICAgICAgIC8vIHNob3dzIHRoZSBmaXJzdCBsaW5lLCBzaW5nbGUtbGluZSwgd2l0aCBvdmVyZmxvd1xuICAgICAgICAgICAgLy8gZWxsaXBzaXNlZCBzbyBhIGxvbmcgdGl0bGUgZG9lc24ndCBwdXNoIHRoZSBjb3B5IGJ1dHRvbiBvclxuICAgICAgICAgICAgLy8gd3JhcCBpbnRvIHRoZSBmcmFtZWQgaGludC9kb2NzIGxpbmVzLlxuICAgICAgICAgICAgdGl0bGU9e21lc3NhZ2V9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2JvZHkgJiYgKFxuICAgICAgICA8cHJlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHgtMyBweS0yLjUgdGV4dC14cyBmb250LW1vbm8gd2hpdGVzcGFjZS1wcmUtd3JhcCBicmVhay13b3JkcyBvdmVyZmxvdy1hdXRvIG0tMFwiXG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tZHMtcmVkLTkwMCknLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWRzLXJlZC0yMDApJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JvZHl9XG4gICAgICAgIDwvcHJlPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const iconButtonVariants: (props?: ({
4
+ variant?: "muted" | "tertiary" | null | undefined;
5
+ size?: "small" | "tiny" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type IconButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> & VariantProps<typeof iconButtonVariants> & {
8
+ 'aria-label': string;
9
+ type?: 'button' | 'submit' | 'reset';
10
+ };
11
+ export declare const IconButton: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type"> & VariantProps<(props?: ({
12
+ variant?: "muted" | "tertiary" | null | undefined;
13
+ size?: "small" | "tiny" | null | undefined;
14
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
15
+ 'aria-label': string;
16
+ type?: "button" | "submit" | "reset";
17
+ } & React.RefAttributes<HTMLButtonElement>>;
18
+ export { iconButtonVariants };
19
+ //# sourceMappingURL=icon-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/icon-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,kBAAkB;;;8EAyBvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,MAAM,CACP,GACC,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC,CAAC;AAEJ,eAAO,MAAM,UAAU;;;;kBAJL,MAAM;WACb,QAAQ,GAAG,QAAQ,GAAG,OAAO;2CAYvC,CAAC;AAGF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from 'class-variance-authority';
3
+ import * as React from 'react';
4
+ import { cn } from '../../lib/cn';
5
+ const iconButtonVariants = cva([
6
+ 'm-0 inline-flex shrink-0 appearance-none items-center justify-center border-0 bg-transparent p-0 align-baseline font-inherit no-underline [background:none] [-webkit-appearance:none] [-webkit-tap-highlight-color:transparent]',
7
+ 'transition-colors duration-150 ease-in-out',
8
+ 'enabled:cursor-pointer disabled:cursor-not-allowed disabled:opacity-40',
9
+ 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] focus-visible:outline-offset-2',
10
+ ], {
11
+ variants: {
12
+ variant: {
13
+ tertiary: 'text-gray-900 enabled:hover:bg-gray-alpha-200 enabled:hover:text-gray-1000 enabled:active:bg-gray-alpha-200 focus-visible:text-gray-1000',
14
+ muted: 'text-gray-900 enabled:hover:bg-gray-alpha-200 enabled:hover:text-gray-1000 enabled:active:bg-gray-alpha-200 focus-visible:text-gray-1000',
15
+ },
16
+ size: {
17
+ tiny: 'h-6 w-6 rounded-[4px] [&_svg]:h-4 [&_svg]:w-4',
18
+ small: 'h-8 w-8 rounded-md [&_svg]:h-4 [&_svg]:w-4',
19
+ },
20
+ },
21
+ defaultVariants: {
22
+ variant: 'tertiary',
23
+ size: 'tiny',
24
+ },
25
+ });
26
+ export const IconButton = React.forwardRef(({ className, variant, size, type = 'button', ...props }, ref) => (_jsx("button", { ref: ref, type: type, className: cn(iconButtonVariants({ variant, size, className })), ...props })));
27
+ IconButton.displayName = 'IconButton';
28
+ export { iconButtonVariants };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy91aS9pY29uLWJ1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FDNUI7SUFDRSxpT0FBaU87SUFDak8sNENBQTRDO0lBQzVDLHdFQUF3RTtJQUN4RSw0SEFBNEg7Q0FDN0gsRUFDRDtJQUNFLFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRTtZQUNQLFFBQVEsRUFDTiwwSUFBMEk7WUFDNUksS0FBSyxFQUNILDBJQUEwSTtTQUM3STtRQUNELElBQUksRUFBRTtZQUNKLElBQUksRUFBRSwrQ0FBK0M7WUFDckQsS0FBSyxFQUFFLDRDQUE0QztTQUNwRDtLQUNGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFLFVBQVU7UUFDbkIsSUFBSSxFQUFFLE1BQU07S0FDYjtDQUNGLENBQ0YsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUN4QyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDaEUsaUJBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FDM0QsS0FBSyxHQUNULENBQ0gsQ0FDRixDQUFDO0FBQ0YsVUFBVSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFFdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vbGliL2NuJztcblxuY29uc3QgaWNvbkJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBbXG4gICAgJ20tMCBpbmxpbmUtZmxleCBzaHJpbmstMCBhcHBlYXJhbmNlLW5vbmUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHAtMCBhbGlnbi1iYXNlbGluZSBmb250LWluaGVyaXQgbm8tdW5kZXJsaW5lIFtiYWNrZ3JvdW5kOm5vbmVdIFstd2Via2l0LWFwcGVhcmFuY2U6bm9uZV0gWy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudF0nLFxuICAgICd0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQnLFxuICAgICdlbmFibGVkOmN1cnNvci1wb2ludGVyIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTQwJyxcbiAgICAnZm9jdXMtdmlzaWJsZTpvdXRsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1bdmFyKC0tZHMtZm9jdXMtY29sb3IpXSBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTInLFxuICBdLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgdGVydGlhcnk6XG4gICAgICAgICAgJ3RleHQtZ3JheS05MDAgZW5hYmxlZDpob3ZlcjpiZy1ncmF5LWFscGhhLTIwMCBlbmFibGVkOmhvdmVyOnRleHQtZ3JheS0xMDAwIGVuYWJsZWQ6YWN0aXZlOmJnLWdyYXktYWxwaGEtMjAwIGZvY3VzLXZpc2libGU6dGV4dC1ncmF5LTEwMDAnLFxuICAgICAgICBtdXRlZDpcbiAgICAgICAgICAndGV4dC1ncmF5LTkwMCBlbmFibGVkOmhvdmVyOmJnLWdyYXktYWxwaGEtMjAwIGVuYWJsZWQ6aG92ZXI6dGV4dC1ncmF5LTEwMDAgZW5hYmxlZDphY3RpdmU6YmctZ3JheS1hbHBoYS0yMDAgZm9jdXMtdmlzaWJsZTp0ZXh0LWdyYXktMTAwMCcsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICB0aW55OiAnaC02IHctNiByb3VuZGVkLVs0cHhdIFsmX3N2Z106aC00IFsmX3N2Z106dy00JyxcbiAgICAgICAgc21hbGw6ICdoLTggdy04IHJvdW5kZWQtbWQgWyZfc3ZnXTpoLTQgWyZfc3ZnXTp3LTQnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogJ3RlcnRpYXJ5JyxcbiAgICAgIHNpemU6ICd0aW55JyxcbiAgICB9LFxuICB9XG4pO1xuXG5leHBvcnQgdHlwZSBJY29uQnV0dG9uUHJvcHMgPSBPbWl0PFxuICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICd0eXBlJ1xuPiAmXG4gIFZhcmlhbnRQcm9wczx0eXBlb2YgaWNvbkJ1dHRvblZhcmlhbnRzPiAmIHtcbiAgICAnYXJpYS1sYWJlbCc6IHN0cmluZztcbiAgICB0eXBlPzogJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCc7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBJY29uQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgSWNvbkJ1dHRvblByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB2YXJpYW50LCBzaXplLCB0eXBlID0gJ2J1dHRvbicsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxidXR0b25cbiAgICAgIHJlZj17cmVmfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIGNsYXNzTmFtZT17Y24oaWNvbkJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG4pO1xuSWNvbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdJY29uQnV0dG9uJztcblxuZXhwb3J0IHsgaWNvbkJ1dHRvblZhcmlhbnRzIH07XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import type { ComponentProps, ReactNode } from 'react';
3
+ declare const kbdVariants: (props?: ({
4
+ variant?: "outline" | "subtle" | null | undefined;
5
+ size?: "search" | "default" | "compact" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ type KbdProps = ComponentProps<'kbd'> & VariantProps<typeof kbdVariants>;
8
+ export declare function Kbd({ children, className, variant, size, ...props }: KbdProps): ReactNode;
9
+ export { kbdVariants };
10
+ //# sourceMappingURL=kbd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../../src/components/ui/kbd.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,QAAA,MAAM,WAAW;;;8EAoBhB,CAAC;AAEF,KAAK,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzE,wBAAgB,GAAG,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,QAAQ,GAAG,SAAS,CAMtB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from 'class-variance-authority';
3
+ import { cn } from '../../lib/cn';
4
+ const kbdVariants = cva('inline-flex items-center justify-center rounded px-1 text-center font-sans', {
5
+ variants: {
6
+ variant: {
7
+ subtle: 'bg-background-100/20',
8
+ outline: 'border border-gray-alpha-400 bg-background-100 font-medium text-gray-900',
9
+ },
10
+ size: {
11
+ default: 'h-5 min-w-5 text-xs leading-none',
12
+ compact: 'h-4 min-h-4 min-w-4 text-[11px] leading-none',
13
+ search: 'h-5 min-h-5 min-w-5 text-[13px] leading-[1.7em]',
14
+ },
15
+ },
16
+ defaultVariants: {
17
+ variant: 'subtle',
18
+ size: 'default',
19
+ },
20
+ });
21
+ export function Kbd({ children, className, variant, size, ...props }) {
22
+ return (_jsx("kbd", { className: cn(kbdVariants({ variant, size, className })), ...props, children: children }));
23
+ }
24
+ export { kbdVariants };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkva2JkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWxDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FDckIsNEVBQTRFLEVBQzVFO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsTUFBTSxFQUFFLHNCQUFzQjtZQUM5QixPQUFPLEVBQ0wsMEVBQTBFO1NBQzdFO1FBQ0QsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLGtDQUFrQztZQUMzQyxPQUFPLEVBQUUsOENBQThDO1lBQ3ZELE1BQU0sRUFBRSxpREFBaUQ7U0FDMUQ7S0FDRjtJQUNELGVBQWUsRUFBRTtRQUNmLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FDRixDQUFDO0FBSUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUNsQixRQUFRLEVBQ1IsU0FBUyxFQUNULE9BQU8sRUFDUCxJQUFJLEVBQ0osR0FBRyxLQUFLLEVBQ0M7SUFDVCxPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFNLEtBQUssWUFDckUsUUFBUSxHQUNMLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHJvcHMsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vbGliL2NuJztcblxuY29uc3Qga2JkVmFyaWFudHMgPSBjdmEoXG4gICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBweC0xIHRleHQtY2VudGVyIGZvbnQtc2FucycsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBzdWJ0bGU6ICdiZy1iYWNrZ3JvdW5kLTEwMC8yMCcsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgJ2JvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgYmctYmFja2dyb3VuZC0xMDAgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCcsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OiAnaC01IG1pbi13LTUgdGV4dC14cyBsZWFkaW5nLW5vbmUnLFxuICAgICAgICBjb21wYWN0OiAnaC00IG1pbi1oLTQgbWluLXctNCB0ZXh0LVsxMXB4XSBsZWFkaW5nLW5vbmUnLFxuICAgICAgICBzZWFyY2g6ICdoLTUgbWluLWgtNSBtaW4tdy01IHRleHQtWzEzcHhdIGxlYWRpbmctWzEuN2VtXScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiAnc3VidGxlJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB9LFxuICB9XG4pO1xuXG50eXBlIEtiZFByb3BzID0gQ29tcG9uZW50UHJvcHM8J2tiZCc+ICYgVmFyaWFudFByb3BzPHR5cGVvZiBrYmRWYXJpYW50cz47XG5cbmV4cG9ydCBmdW5jdGlvbiBLYmQoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICB2YXJpYW50LFxuICBzaXplLFxuICAuLi5wcm9wc1xufTogS2JkUHJvcHMpOiBSZWFjdE5vZGUge1xuICByZXR1cm4gKFxuICAgIDxrYmQgY2xhc3NOYW1lPXtjbihrYmRWYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9IHsuLi5wcm9wc30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9rYmQ+XG4gICk7XG59XG5cbmV4cG9ydCB7IGtiZFZhcmlhbnRzIH07XG4iXX0=
@@ -9,4 +9,4 @@ const STYLES = `.wf-load-more{appearance:none;-webkit-appearance:none;border:non
9
9
  export function LoadMoreButton({ loading = false, onClick, label = 'Load more', loadingLabel = 'Loading...', }) {
10
10
  return (_jsxs(_Fragment, { children: [_jsx("style", { dangerouslySetInnerHTML: { __html: STYLES } }), _jsxs("button", { type: "button", onClick: onClick, disabled: loading, className: "wf-load-more", children: [loading && _jsx(Spinner, { size: 14 }), loading ? loadingLabel : label] })] }));
11
11
  }
12
- //# sourceMappingURL=load-more-button.js.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1tb3JlLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3VpL2xvYWQtbW9yZS1idXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE1BQU0sTUFBTSxHQUFHLHFqQkFBcWpCLENBQUM7QUFTcmtCOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsRUFDN0IsT0FBTyxHQUFHLEtBQUssRUFDZixPQUFPLEVBQ1AsS0FBSyxHQUFHLFdBQVcsRUFDbkIsWUFBWSxHQUFHLFlBQVksR0FDUDtJQUNwQixPQUFPLENBQ0wsOEJBQ0UsZ0JBQU8sdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUksRUFDdEQsa0JBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUUsT0FBTyxFQUNoQixRQUFRLEVBQUUsT0FBTyxFQUNqQixTQUFTLEVBQUMsY0FBYyxhQUV2QixPQUFPLElBQUksS0FBQyxPQUFPLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxFQUNoQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUN4QixJQUNSLENBQ0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuL3NwaW5uZXInO1xuXG5jb25zdCBTVFlMRVMgPSBgLndmLWxvYWQtbW9yZXthcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOm5vbmU7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6MzJweDtwYWRkaW5nOjAgMTJweDtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjp2YXIoLS1kcy1ncmF5LTEwMDApO2JhY2tncm91bmQ6dmFyKC0tZHMtYmFja2dyb3VuZC0xMDApO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWRzLWdyYXktNDAwKTtjdXJzb3I6cG9pbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Z2FwOjZweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgMTUwbXN9LndmLWxvYWQtbW9yZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRzLWdyYXktYWxwaGEtMjAwKX0ud2YtbG9hZC1tb3JlOmRpc2FibGVke29wYWNpdHk6LjY7Y3Vyc29yOmRlZmF1bHR9LndmLWxvYWQtbW9yZTpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRzLWJhY2tncm91bmQtMTAwKX1gO1xuXG5pbnRlcmZhY2UgTG9hZE1vcmVCdXR0b25Qcm9wcyB7XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGxvYWRpbmdMYWJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFwiTG9hZCBtb3JlXCIgYnV0dG9uIG1hdGNoaW5nIEdlaXN0J3MgQnV0dG9uIHR5cGU9XCJzZWNvbmRhcnlcIiBzaXplPVwic21hbGxcIlxuICogd2l0aCBhIHNwaW5uZXIgcHJlZml4IHdoZW4gbG9hZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExvYWRNb3JlQnV0dG9uKHtcbiAgbG9hZGluZyA9IGZhbHNlLFxuICBvbkNsaWNrLFxuICBsYWJlbCA9ICdMb2FkIG1vcmUnLFxuICBsb2FkaW5nTGFiZWwgPSAnTG9hZGluZy4uLicsXG59OiBMb2FkTW9yZUJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzdHlsZSBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IFNUWUxFUyB9fSAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgZGlzYWJsZWQ9e2xvYWRpbmd9XG4gICAgICAgIGNsYXNzTmFtZT1cIndmLWxvYWQtbW9yZVwiXG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nICYmIDxTcGlubmVyIHNpemU9ezE0fSAvPn1cbiAgICAgICAge2xvYWRpbmcgPyBsb2FkaW5nTGFiZWwgOiBsYWJlbH1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuIl19
@@ -43,4 +43,4 @@ export function MenuDropdown({ options, value, onChange, }) {
43
43
  setOpen(false);
44
44
  }, children: option.label }, option.value))) }))] }));
45
45
  }
46
- //# sourceMappingURL=menu-dropdown.js.map
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kcm9wZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3VpL21lbnUtZHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFcEQsTUFBTSxNQUFNLEdBQUcscXZCQUFxdkIsQ0FBQztBQWFyd0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBNEIsRUFDdEQsT0FBTyxFQUNQLEtBQUssRUFDTCxRQUFRLEdBQ2E7SUFDckIsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEtBQUssR0FDVCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUUzRSxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ2xCLFNBQVMsa0JBQWtCLENBQUMsQ0FBYTtZQUN2QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBYyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBQ0QsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFWCxPQUFPLENBQ0wsZUFBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxhQUMzRCxnQkFBTyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBSSxFQUV0RCxrQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLFNBQVMsRUFBQyxhQUFhLEVBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFFN0IseUJBQU8sS0FBSyxHQUFRLEVBQ3BCLGNBQ0UsS0FBSyxFQUFFLEVBQUUsRUFDVCxNQUFNLEVBQUUsRUFBRSxFQUNWLE9BQU8sRUFBQyxXQUFXLEVBQ25CLElBQUksRUFBQyxNQUFNLEVBQ1gsS0FBSyxFQUFFOzRCQUNMLFVBQVUsRUFBRSxFQUFFOzRCQUNkLFdBQVcsRUFBRSxDQUFDLENBQUM7NEJBQ2YsS0FBSyxFQUFFLG9CQUFvQjt5QkFDNUIsWUFFRCxlQUNFLENBQUMsRUFBQyxxQkFBcUIsRUFDdkIsTUFBTSxFQUFDLGNBQWMsRUFDckIsV0FBVyxFQUFDLEtBQUssRUFDakIsYUFBYSxFQUFDLE9BQU8sRUFDckIsY0FBYyxFQUFDLE9BQU8sR0FDdEIsR0FDRSxJQUNDLEVBRVIsSUFBSSxJQUFJLENBQ1AsY0FDRSxLQUFLLEVBQUU7b0JBQ0wsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLEtBQUssRUFBRSxDQUFDO29CQUNSLEdBQUcsRUFBRSxNQUFNO29CQUNYLFNBQVMsRUFBRSxDQUFDO29CQUNaLFFBQVEsRUFBRSxHQUFHO29CQUNiLE9BQU8sRUFBRSxDQUFDO29CQUNWLFlBQVksRUFBRSxFQUFFO29CQUNoQixVQUFVLEVBQUUsMEJBQTBCO29CQUN0QyxTQUFTLEVBQUUsZ0RBQWdEO29CQUMzRCxNQUFNLEVBQUUsSUFBSTtpQkFDYixFQUNELElBQUksRUFBQyxNQUFNLFlBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FDdkIsaUJBRUUsSUFBSSxFQUFDLFFBQVEsRUFDYixJQUFJLEVBQUMsVUFBVSxFQUNmLFNBQVMsRUFBQyxjQUFjLEVBQ3hCLEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztxQkFDL0MsRUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFO3dCQUNaLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDakIsQ0FBQyxZQUVBLE1BQU0sQ0FBQyxLQUFLLElBWlIsTUFBTSxDQUFDLEtBQUssQ0FhVixDQUNWLENBQUMsR0FDRSxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBTVFlMRVMgPSBgLndmLW1lbnUtYnRue2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6bm9uZTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2hlaWdodDo0MHB4O3BhZGRpbmc6MCAxMnB4O2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOnZhcigtLWRzLWdyYXktMTAwMCk7YmFja2dyb3VuZDp2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0tZHMtZ3JheS00MDApO2N1cnNvcjpwb2ludGVyO3doaXRlLXNwYWNlOm5vd3JhcDt0cmFuc2l0aW9uOmJhY2tncm91bmQgMTUwbXN9LndmLW1lbnUtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHMtZ3JheS1hbHBoYS0yMDApfS53Zi1tZW51LWl0ZW17YXBwZWFyYW5jZTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JvcmRlcjpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTtoZWlnaHQ6NDBweDtwYWRkaW5nOjAgOHB4O2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWRzLWdyYXktMTAwMCk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgMTUwbXN9LndmLW1lbnUtaXRlbTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRzLWdyYXktYWxwaGEtMTAwKX1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVEcm9wZG93bk9wdGlvbjxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiB7XG4gIHZhbHVlOiBUO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWVudURyb3Bkb3duUHJvcHM8VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4ge1xuICBvcHRpb25zOiBNZW51RHJvcGRvd25PcHRpb248VD5bXTtcbiAgdmFsdWU6IFQ7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IFQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQSBkcm9wZG93biBtZW51IHRoYXQgbWF0Y2hlcyBHZWlzdCdzIE1lbnVCdXR0b24gKHNlY29uZGFyeSkgKyBNZW51IHN0eWxpbmcuXG4gKiBVc2VzIENTUyBjbGFzc2VzIHdpdGggcHJvcGVyIDpob3ZlciBzcGVjaWZpY2l0eSAobm8gaW5saW5lIGJhY2tncm91bmQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWVudURyb3Bkb3duPFQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHtcbiAgb3B0aW9ucyxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxufTogTWVudURyb3Bkb3duUHJvcHM8VD4pIHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBsYWJlbCA9XG4gICAgb3B0aW9ucy5maW5kKChvKSA9PiBvLnZhbHVlID09PSB2YWx1ZSk/LmxhYmVsID8/IG9wdGlvbnNbMF0/LmxhYmVsID8/ICcnO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFvcGVuKSByZXR1cm47XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2tPdXRzaWRlKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGlmIChyZWYuY3VycmVudCAmJiAhcmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gIH0sIFtvcGVuXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBzdHlsZT17eyBwb3NpdGlvbjogJ3JlbGF0aXZlJywgZmxleFNocmluazogMCB9fT5cbiAgICAgIDxzdHlsZSBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IFNUWUxFUyB9fSAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9XCJ3Zi1tZW51LWJ0blwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE9wZW4oIW9wZW4pfVxuICAgICAgPlxuICAgICAgICA8c3Bhbj57bGFiZWx9PC9zcGFuPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgd2lkdGg9ezE2fVxuICAgICAgICAgIGhlaWdodD17MTZ9XG4gICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBtYXJnaW5MZWZ0OiAxNixcbiAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAtNCxcbiAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS05MDApJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNC41IDZMOCA5LjVMMTEuNSA2XCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD1cIjEuNVwiXG4gICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAge29wZW4gJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICB0b3A6ICcxMDAlJyxcbiAgICAgICAgICAgIG1hcmdpblRvcDogNCxcbiAgICAgICAgICAgIG1pbldpZHRoOiAxNDAsXG4gICAgICAgICAgICBwYWRkaW5nOiA0LFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMixcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCknLFxuICAgICAgICAgICAgYm94U2hhZG93OiAndmFyKC0tZHMtc2hhZG93LW1lbnUsIHZhcigtLWRzLXNoYWRvdy1tZWRpdW0pKScsXG4gICAgICAgICAgICB6SW5kZXg6IDIwMDEsXG4gICAgICAgICAgfX1cbiAgICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgID5cbiAgICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIndmLW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogb3B0aW9uLnZhbHVlID09PSB2YWx1ZSA/IDUwMCA6IDQwMCxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from '../../lib/utils';
2
+ import { cn } from '../../lib/cn';
3
3
  function Skeleton({ className, style, ...props }) {
4
4
  return (_jsx("div", { ...props, className: cn('rounded-md', className), style: { backgroundColor: 'var(--ds-gray-200)', ...style } }));
5
5
  }
6
6
  export { Skeleton };
7
- //# sourceMappingURL=skeleton.js.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy91aS9za2VsZXRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEMsU0FBUyxRQUFRLENBQUMsRUFDaEIsU0FBUyxFQUNULEtBQUssRUFDTCxHQUFHLEtBQUssRUFDNkI7SUFDckMsT0FBTyxDQUNMLGlCQUNNLEtBQUssRUFDVCxTQUFTLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsRUFDdEMsS0FBSyxFQUFFLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQzFELENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi9jbic7XG5cbmZ1bmN0aW9uIFNrZWxldG9uKHtcbiAgY2xhc3NOYW1lLFxuICBzdHlsZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oJ3JvdW5kZWQtbWQnLCBjbGFzc05hbWUpfVxuICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0yMDApJywgLi4uc3R5bGUgfX1cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIl19
@@ -54,4 +54,4 @@ export function Spinner({ size = 14, color, }) {
54
54
  animationDelay: `${delay}ms`,
55
55
  } }, delay)))] }));
56
56
  }
57
- //# sourceMappingURL=spinner.js.map
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3VpL3NwaW5uZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLFNBQVMsR0FBRyw0REFBNEQsQ0FBQztBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEVBQ3RCLElBQUksR0FBRyxFQUFFLEVBQ1QsS0FBSyxHQUlOO0lBQ0MsTUFBTSxNQUFNLEdBQ1YsSUFBSSxJQUFJLEVBQUU7UUFDUixDQUFDLENBQUM7WUFDRSxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLEVBQUUsR0FBRztTQUNYO1FBQ0gsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ1YsQ0FBQyxDQUFDO2dCQUNFLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDakUsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLEdBQUc7YUFDWDtZQUNILENBQUMsQ0FBQztnQkFDRSxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxNQUFNLEVBQUU7b0JBQ04sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHO29CQUM1RCxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNSO2dCQUNELFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLElBQUksR0FBRyxJQUFJO2FBQ25CLENBQUM7SUFFVixPQUFPLENBQ0wsZ0JBQ0UsS0FBSyxFQUFFO1lBQ0wsT0FBTyxFQUFFLGFBQWE7WUFDdEIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsSUFBSTtTQUNiLGFBRUQsZ0JBQU8sdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUksRUFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUMvQixlQUVFLEtBQUssRUFBRTtvQkFDTCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsR0FBRyxFQUFFLEtBQUs7b0JBQ1YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQ3BCLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDN0IsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDO29CQUM1QixZQUFZLEVBQUUsQ0FBQztvQkFDZixlQUFlLEVBQUUsS0FBSyxJQUFJLG9CQUFvQjtvQkFDOUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixJQUFJLEdBQUcsSUFBSSxLQUFLO29CQUN2RSxTQUFTLEVBQUUsbUJBQW1CLE1BQU0sQ0FBQyxRQUFRLG9CQUFvQjtvQkFDakUsY0FBYyxFQUFFLEdBQUcsS0FBSyxJQUFJO2lCQUM3QixJQWRJLEtBQUssQ0FlVixDQUNILENBQUMsSUFDRyxDQUNSLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS0VZRlJBTUVTID0gYEBrZXlmcmFtZXMgd2Ytc3Bpbm5lci1mYWRlezAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6LjE1fX1gO1xuXG4vKipcbiAqIFNwaW5uZXIgbWF0Y2hpbmcgR2Vpc3QncyBtdWx0aS1saW5lIGZhZGUgc3Bpbm5lci5cbiAqIEF0IHNpemUg4omkMTI6IDggbGluZXMsIOKJpDE2OiAxMCBsaW5lcywgZWxzZTogMTIgbGluZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTcGlubmVyKHtcbiAgc2l6ZSA9IDE0LFxuICBjb2xvcixcbn06IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgY29sb3I/OiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IGNvbmZpZyA9XG4gICAgc2l6ZSA8PSAxMlxuICAgICAgPyB7XG4gICAgICAgICAgY291bnQ6IDgsXG4gICAgICAgICAgYW5nbGU6IDQ1LFxuICAgICAgICAgIGRlbGF5czogWy04NzUsIC03NTAsIC02MjUsIC01MDAsIC0zNzUsIC0yNTAsIC0xMjUsIDBdLFxuICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxuICAgICAgICAgIGxpbmVXOiAzLFxuICAgICAgICAgIGxpbmVIOiAxLjUsXG4gICAgICAgIH1cbiAgICAgIDogc2l6ZSA8PSAxNlxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGNvdW50OiAxMCxcbiAgICAgICAgICAgIGFuZ2xlOiAzNixcbiAgICAgICAgICAgIGRlbGF5czogWy05MDAsIC04MDAsIC03MDAsIC02MDAsIC01MDAsIC00MDAsIC0zMDAsIC0yMDAsIC0xMDAsIDBdLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMDAsXG4gICAgICAgICAgICBsaW5lVzogNCxcbiAgICAgICAgICAgIGxpbmVIOiAxLjUsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGNvdW50OiAxMixcbiAgICAgICAgICAgIGFuZ2xlOiAzMCxcbiAgICAgICAgICAgIGRlbGF5czogW1xuICAgICAgICAgICAgICAtMTEwMCwgLTEwMDAsIC05MDAsIC04MDAsIC03MDAsIC02MDAsIC01MDAsIC00MDAsIC0zMDAsIC0yMDAsXG4gICAgICAgICAgICAgIC0xMDAsIDAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZHVyYXRpb246IDEyMDAsXG4gICAgICAgICAgICBsaW5lVzogc2l6ZSAqIDAuMjQsXG4gICAgICAgICAgICBsaW5lSDogc2l6ZSAqIDAuMDgsXG4gICAgICAgICAgfTtcblxuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBzdHlsZT17e1xuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgd2lkdGg6IHNpemUsXG4gICAgICAgIGhlaWdodDogc2l6ZSxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPHN0eWxlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogS0VZRlJBTUVTIH19IC8+XG4gICAgICB7Y29uZmlnLmRlbGF5cy5tYXAoKGRlbGF5LCBpKSA9PiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAga2V5PXtkZWxheX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBsZWZ0OiAnNTAlJyxcbiAgICAgICAgICAgIHRvcDogJzUwJScsXG4gICAgICAgICAgICB3aWR0aDogY29uZmlnLmxpbmVXLFxuICAgICAgICAgICAgaGVpZ2h0OiBjb25maWcubGluZUgsXG4gICAgICAgICAgICBtYXJnaW5MZWZ0OiAtY29uZmlnLmxpbmVXIC8gMixcbiAgICAgICAgICAgIG1hcmdpblRvcDogLWNvbmZpZy5saW5lSCAvIDIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IDEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yID8/ICd2YXIoLS1kcy1ncmF5LTcwMCknLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBgcm90YXRlKCR7aSAqIGNvbmZpZy5hbmdsZX1kZWcpIHRyYW5zbGF0ZSgke3NpemUgKiAwLjM2fXB4KWAsXG4gICAgICAgICAgICBhbmltYXRpb246IGB3Zi1zcGlubmVyLWZhZGUgJHtjb25maWcuZHVyYXRpb259bXMgbGluZWFyIGluZmluaXRlYCxcbiAgICAgICAgICAgIGFuaW1hdGlvbkRlbGF5OiBgJHtkZWxheX1tc2AsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cbiJdfQ==
@@ -1,6 +1,39 @@
1
1
  import type { ReactNode } from 'react';
2
- export declare function TimestampTooltip({ date, children, }: {
2
+ import { type ContextCardTriggerProps } from './context-card';
3
+ /**
4
+ * Detailed relative time string that auto-updates every second
5
+ * (e.g. "2 hours, 15 minutes, 30 seconds ago"). Used inside the hover card.
6
+ */
7
+ export declare function useTimeAgo(date: number): string;
8
+ /**
9
+ * Short relative time string that auto-updates every minute
10
+ * (e.g. "3 days ago", "5 hours ago"). Returns an empty string if `date` is
11
+ * nullish.
12
+ */
13
+ export declare function useShortTimeAgo(date: number | null | undefined): string;
14
+ type RelativeTimeCardProps = Omit<ContextCardTriggerProps, 'content' | 'children'> & {
15
+ /** Timestamp in milliseconds to display as a relative time. */
16
+ date?: number | null;
17
+ /** Custom content to render instead of the default relative time text. */
18
+ children?: ReactNode;
19
+ };
20
+ /**
21
+ * Relative time label that reveals a context card with detailed UTC and local
22
+ * timestamps on hover. Renders a default short relative time label (e.g.
23
+ * "3 days ago") when `children` is omitted; renders just the children without
24
+ * the hover card when `date` is nullish.
25
+ */
26
+ export declare function RelativeTimeCard({ date, children: _children, ...props }: RelativeTimeCardProps): ReactNode;
27
+ /**
28
+ * Wraps an already-formatted timestamp display with a relative-time hover
29
+ * card. Self-mounts a {@link ContextCardProvider} when one isn't already
30
+ * present so it works anywhere, but shares a provider (enabling the animated
31
+ * card morph between adjacent timestamps) when rendered inside one.
32
+ */
33
+ export declare function TimestampTooltip({ date, children, side, }: {
3
34
  date: number | Date | string | null | undefined;
4
35
  children: ReactNode;
36
+ side?: ContextCardTriggerProps['side'];
5
37
  }): ReactNode;
38
+ export {};
6
39
  //# sourceMappingURL=timestamp-tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp-tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/ui/timestamp-tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiQvC,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CA4DZ"}
1
+ {"version":3,"file":"timestamp-tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/ui/timestamp-tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAoCxB;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB/C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAgCvE;AAsFD,KAAK,qBAAqB,GAAG,IAAI,CAC/B,uBAAuB,EACvB,SAAS,GAAG,UAAU,CACvB,GAAG;IACF,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,EAAE,SAAS,EACnB,GAAG,KAAK,EACT,EAAE,qBAAqB,GAAG,SAAS,CAcnC;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,EACR,IAAY,GACb,EAAE;IACD,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;CACxC,GAAG,SAAS,CAmBZ"}