@workflow/web-shared 5.0.0-beta.2 → 5.0.0-beta.21

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 (321) hide show
  1. package/dist/components/error-boundary.js +1 -1
  2. package/dist/components/event-list-view.d.ts +16 -1
  3. package/dist/components/event-list-view.d.ts.map +1 -1
  4. package/dist/components/event-list-view.js +196 -85
  5. package/dist/components/hook-actions.js +1 -1
  6. package/dist/components/index.d.ts +4 -0
  7. package/dist/components/index.d.ts.map +1 -1
  8. package/dist/components/index.js +5 -1
  9. package/dist/components/new-trace-viewer/components/copy-button.d.ts +9 -0
  10. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +1 -0
  11. package/dist/components/new-trace-viewer/components/copy-button.js +27 -0
  12. package/dist/components/new-trace-viewer/components/event-list.d.ts +10 -0
  13. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -0
  14. package/dist/components/new-trace-viewer/components/event-list.js +46 -0
  15. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
  16. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  17. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  18. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
  19. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  20. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  21. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
  22. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  23. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
  24. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
  25. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  26. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  27. package/dist/components/new-trace-viewer/components/span-markers.d.ts +46 -0
  28. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +1 -0
  29. package/dist/components/new-trace-viewer/components/span-markers.js +85 -0
  30. package/dist/components/new-trace-viewer/components/split-pane.d.ts +15 -0
  31. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -0
  32. package/dist/components/new-trace-viewer/components/split-pane.js +105 -0
  33. package/dist/components/new-trace-viewer/components/timeline.d.ts +36 -0
  34. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -0
  35. package/dist/components/new-trace-viewer/components/timeline.js +254 -0
  36. package/dist/components/new-trace-viewer/components/timeline.module.css +46 -0
  37. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
  38. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  39. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +19 -0
  40. package/dist/components/new-trace-viewer/components/use-row-window.d.ts +34 -0
  41. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
  42. package/dist/components/new-trace-viewer/components/use-row-window.js +107 -0
  43. package/dist/components/new-trace-viewer/context.d.ts +15 -0
  44. package/dist/components/new-trace-viewer/context.d.ts.map +1 -0
  45. package/dist/components/new-trace-viewer/context.js +47 -0
  46. package/dist/components/new-trace-viewer/icons.d.ts +6 -0
  47. package/dist/components/new-trace-viewer/icons.d.ts.map +1 -0
  48. package/dist/components/new-trace-viewer/icons.js +15 -0
  49. package/dist/components/new-trace-viewer/search.d.ts +19 -0
  50. package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
  51. package/dist/components/new-trace-viewer/search.js +134 -0
  52. package/dist/components/new-trace-viewer/trace-viewer.d.ts +11 -0
  53. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -0
  54. package/dist/components/new-trace-viewer/trace-viewer.js +462 -0
  55. package/dist/components/new-trace-viewer/types.d.ts +3 -0
  56. package/dist/components/new-trace-viewer/types.d.ts.map +1 -0
  57. package/dist/components/new-trace-viewer/types.js +2 -0
  58. package/dist/components/new-trace-viewer/utils.d.ts +61 -0
  59. package/dist/components/new-trace-viewer/utils.d.ts.map +1 -0
  60. package/dist/components/new-trace-viewer/utils.js +345 -0
  61. package/dist/components/run-trace-view.js +1 -1
  62. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  63. package/dist/components/sidebar/attribute-panel.js +129 -102
  64. package/dist/components/sidebar/attributes-block.d.ts +28 -0
  65. package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
  66. package/dist/components/sidebar/attributes-block.js +81 -0
  67. package/dist/components/sidebar/conversation-view.js +1 -1
  68. package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
  69. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  70. package/dist/components/sidebar/copyable-data-block.js +16 -15
  71. package/dist/components/sidebar/detail-card.d.ts +5 -6
  72. package/dist/components/sidebar/detail-card.d.ts.map +1 -1
  73. package/dist/components/sidebar/detail-card.js +32 -16
  74. package/dist/components/sidebar/entity-detail-panel.d.ts +1 -3
  75. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  76. package/dist/components/sidebar/entity-detail-panel.js +17 -35
  77. package/dist/components/sidebar/events-list.d.ts +3 -1
  78. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  79. package/dist/components/sidebar/events-list.js +36 -22
  80. package/dist/components/sidebar/resolve-hook-modal.js +1 -1
  81. package/dist/components/sidebar/sidebar-data-context.d.ts +29 -0
  82. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -0
  83. package/dist/components/sidebar/sidebar-data-context.js +19 -0
  84. package/dist/components/sidebar/span-detail-merge.d.ts +16 -0
  85. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
  86. package/dist/components/sidebar/span-detail-merge.js +53 -0
  87. package/dist/components/stream-viewer.d.ts +1 -1
  88. package/dist/components/stream-viewer.d.ts.map +1 -1
  89. package/dist/components/stream-viewer.js +3 -27
  90. package/dist/components/trace-viewer/components/map.js +1 -1
  91. package/dist/components/trace-viewer/components/markers.js +1 -1
  92. package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
  93. package/dist/components/trace-viewer/components/node.js +2 -1
  94. package/dist/components/trace-viewer/components/search-input.js +1 -1
  95. package/dist/components/trace-viewer/components/search.js +1 -1
  96. package/dist/components/trace-viewer/components/span-content.js +1 -1
  97. package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
  98. package/dist/components/trace-viewer/components/span-segments.js +1 -1
  99. package/dist/components/trace-viewer/components/span-strategies.js +1 -1
  100. package/dist/components/trace-viewer/components/ui.js +1 -1
  101. package/dist/components/trace-viewer/components/zoom-button.js +1 -1
  102. package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
  103. package/dist/components/trace-viewer/context.js +1 -1
  104. package/dist/components/trace-viewer/index.js +1 -1
  105. package/dist/components/trace-viewer/trace-viewer.js +1 -1
  106. package/dist/components/trace-viewer/trace-viewer.module.css +4 -4
  107. package/dist/components/trace-viewer/types.js +1 -1
  108. package/dist/components/trace-viewer/util/constants.js +1 -1
  109. package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
  110. package/dist/components/trace-viewer/util/timing.d.ts +3 -3
  111. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  112. package/dist/components/trace-viewer/util/timing.js +8 -11
  113. package/dist/components/trace-viewer/util/tree.js +1 -1
  114. package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
  115. package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
  116. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
  117. package/dist/components/trace-viewer/worker.js +1 -1
  118. package/dist/components/trace-viewer-new.d.ts +14 -0
  119. package/dist/components/trace-viewer-new.d.ts.map +1 -0
  120. package/dist/components/trace-viewer-new.js +21 -0
  121. package/dist/components/ui/alert.js +1 -1
  122. package/dist/components/ui/button.d.ts +10 -0
  123. package/dist/components/ui/button.d.ts.map +1 -0
  124. package/dist/components/ui/button.js +46 -0
  125. package/dist/components/ui/card.js +1 -1
  126. package/dist/components/ui/context-card.d.ts +47 -0
  127. package/dist/components/ui/context-card.d.ts.map +1 -0
  128. package/dist/components/ui/context-card.js +471 -0
  129. package/dist/components/ui/data-inspector.d.ts +22 -0
  130. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  131. package/dist/components/ui/data-inspector.js +103 -13
  132. package/dist/components/ui/decrypt-button.js +1 -1
  133. package/dist/components/ui/error-card.js +1 -1
  134. package/dist/components/ui/error-stack-block.d.ts +17 -10
  135. package/dist/components/ui/error-stack-block.d.ts.map +1 -1
  136. package/dist/components/ui/error-stack-block.js +49 -30
  137. package/dist/components/ui/icon-button.d.ts +19 -0
  138. package/dist/components/ui/icon-button.d.ts.map +1 -0
  139. package/dist/components/ui/icon-button.js +29 -0
  140. package/dist/components/ui/inspector-theme.d.ts +9 -10
  141. package/dist/components/ui/inspector-theme.d.ts.map +1 -1
  142. package/dist/components/ui/inspector-theme.js +39 -72
  143. package/dist/components/ui/kbd.d.ts +6 -0
  144. package/dist/components/ui/kbd.d.ts.map +1 -0
  145. package/dist/components/ui/kbd.js +6 -0
  146. package/dist/components/ui/load-more-button.js +1 -1
  147. package/dist/components/ui/menu-dropdown.js +1 -1
  148. package/dist/components/ui/skeleton.js +1 -1
  149. package/dist/components/ui/spinner.js +1 -1
  150. package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
  151. package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
  152. package/dist/components/ui/timestamp-tooltip.js +80 -132
  153. package/dist/components/ui/tooltip.d.ts +10 -0
  154. package/dist/components/ui/tooltip.d.ts.map +1 -0
  155. package/dist/components/ui/tooltip.js +12 -0
  156. package/dist/components/workflow-trace-view.d.ts +1 -3
  157. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  158. package/dist/components/workflow-trace-view.js +11 -13
  159. package/dist/components/workflow-traces/event-colors.d.ts +1 -0
  160. package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
  161. package/dist/components/workflow-traces/event-colors.js +12 -1
  162. package/dist/components/workflow-traces/trace-colors.js +1 -1
  163. package/dist/components/workflow-traces/trace-span-construction.d.ts +2 -2
  164. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  165. package/dist/components/workflow-traces/trace-span-construction.js +19 -5
  166. package/dist/components/workflow-traces/trace-time-utils.js +1 -1
  167. package/dist/hooks/use-dark-mode.js +1 -1
  168. package/dist/hooks/use-intersection-observer.d.ts +17 -0
  169. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  170. package/dist/hooks/use-intersection-observer.js +29 -0
  171. package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
  172. package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
  173. package/dist/hooks/use-load-more-on-scroll.js +28 -0
  174. package/dist/hooks/use-reduced-motion.d.ts +10 -0
  175. package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
  176. package/dist/hooks/use-reduced-motion.js +29 -0
  177. package/dist/index.d.ts +3 -1
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +3 -2
  180. package/dist/lib/event-analysis.js +1 -1
  181. package/dist/lib/event-materialization.js +1 -1
  182. package/dist/lib/exact-event-search-id.d.ts +25 -0
  183. package/dist/lib/exact-event-search-id.d.ts.map +1 -0
  184. package/dist/lib/exact-event-search-id.js +39 -0
  185. package/dist/lib/hydration.d.ts +6 -0
  186. package/dist/lib/hydration.d.ts.map +1 -1
  187. package/dist/lib/hydration.js +154 -2
  188. package/dist/lib/stream-display.d.ts +18 -0
  189. package/dist/lib/stream-display.d.ts.map +1 -0
  190. package/dist/lib/stream-display.js +30 -0
  191. package/dist/lib/toast.js +1 -1
  192. package/dist/lib/trace-builder.d.ts +15 -0
  193. package/dist/lib/trace-builder.d.ts.map +1 -1
  194. package/dist/lib/trace-builder.js +29 -3
  195. package/dist/lib/utils.d.ts +20 -9
  196. package/dist/lib/utils.d.ts.map +1 -1
  197. package/dist/lib/utils.js +74 -31
  198. package/dist/lib/zstd-browser-decoder.d.ts +7 -0
  199. package/dist/lib/zstd-browser-decoder.d.ts.map +1 -0
  200. package/dist/lib/zstd-browser-decoder.js +41 -0
  201. package/dist/styles.css +484 -1
  202. package/package.json +10 -5
  203. package/src/components/event-list-view.tsx +279 -104
  204. package/src/components/index.ts +7 -0
  205. package/src/components/new-trace-viewer/components/copy-button.tsx +68 -0
  206. package/src/components/new-trace-viewer/components/event-list.tsx +136 -0
  207. package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
  208. package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
  209. package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
  210. package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
  211. package/src/components/new-trace-viewer/components/span-markers.tsx +173 -0
  212. package/src/components/new-trace-viewer/components/split-pane.tsx +198 -0
  213. package/src/components/new-trace-viewer/components/timeline.module.css +46 -0
  214. package/src/components/new-trace-viewer/components/timeline.tsx +744 -0
  215. package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +94 -0
  216. package/src/components/new-trace-viewer/components/use-row-window.ts +140 -0
  217. package/src/components/new-trace-viewer/context.tsx +90 -0
  218. package/src/components/new-trace-viewer/icons.tsx +79 -0
  219. package/src/components/new-trace-viewer/search.ts +178 -0
  220. package/src/components/new-trace-viewer/trace-viewer.tsx +843 -0
  221. package/src/components/new-trace-viewer/types.ts +2 -0
  222. package/src/components/new-trace-viewer/utils.test.ts +182 -0
  223. package/src/components/new-trace-viewer/utils.ts +519 -0
  224. package/src/components/sidebar/attribute-panel.tsx +194 -240
  225. package/src/components/sidebar/attributes-block.tsx +173 -0
  226. package/src/components/sidebar/copyable-data-block.tsx +49 -27
  227. package/src/components/sidebar/detail-card.tsx +119 -59
  228. package/src/components/sidebar/entity-detail-panel.tsx +55 -111
  229. package/src/components/sidebar/events-list.tsx +85 -96
  230. package/src/components/sidebar/sidebar-data-context.tsx +62 -0
  231. package/src/components/sidebar/span-detail-merge.ts +65 -0
  232. package/src/components/stream-viewer.tsx +18 -40
  233. package/src/components/trace-viewer/components/node.tsx +3 -2
  234. package/src/components/trace-viewer/trace-viewer.module.css +4 -4
  235. package/src/components/trace-viewer/util/timing.ts +7 -11
  236. package/src/components/trace-viewer-new.tsx +55 -0
  237. package/src/components/ui/button.tsx +68 -0
  238. package/src/components/ui/context-card.tsx +784 -0
  239. package/src/components/ui/data-inspector.tsx +244 -22
  240. package/src/components/ui/error-stack-block.tsx +84 -55
  241. package/src/components/ui/icon-button.tsx +53 -0
  242. package/src/components/ui/inspector-theme.ts +39 -81
  243. package/src/components/ui/kbd.tsx +21 -0
  244. package/src/components/ui/timestamp-tooltip.tsx +132 -194
  245. package/src/components/ui/tooltip.tsx +47 -0
  246. package/src/components/workflow-trace-view.tsx +19 -15
  247. package/src/components/workflow-traces/event-colors.ts +12 -0
  248. package/src/components/workflow-traces/trace-span-construction.ts +24 -5
  249. package/src/hooks/use-intersection-observer.ts +57 -0
  250. package/src/hooks/use-load-more-on-scroll.ts +49 -0
  251. package/src/hooks/use-reduced-motion.ts +34 -0
  252. package/src/index.ts +9 -0
  253. package/src/lib/exact-event-search-id.ts +67 -0
  254. package/src/lib/hydration.ts +166 -1
  255. package/src/lib/stream-display.ts +48 -0
  256. package/src/lib/trace-builder.ts +34 -2
  257. package/src/lib/utils.ts +83 -31
  258. package/src/lib/zstd-browser-decoder.ts +42 -0
  259. package/src/styles.css +484 -1
  260. package/dist/components/error-boundary.js.map +0 -1
  261. package/dist/components/event-list-view.js.map +0 -1
  262. package/dist/components/hook-actions.js.map +0 -1
  263. package/dist/components/index.js.map +0 -1
  264. package/dist/components/run-trace-view.js.map +0 -1
  265. package/dist/components/sidebar/attribute-panel.js.map +0 -1
  266. package/dist/components/sidebar/conversation-view.js.map +0 -1
  267. package/dist/components/sidebar/copyable-data-block.js.map +0 -1
  268. package/dist/components/sidebar/detail-card.js.map +0 -1
  269. package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
  270. package/dist/components/sidebar/events-list.js.map +0 -1
  271. package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
  272. package/dist/components/stream-viewer.js.map +0 -1
  273. package/dist/components/trace-viewer/components/map.js.map +0 -1
  274. package/dist/components/trace-viewer/components/markers.js.map +0 -1
  275. package/dist/components/trace-viewer/components/node.js.map +0 -1
  276. package/dist/components/trace-viewer/components/search-input.js.map +0 -1
  277. package/dist/components/trace-viewer/components/search.js.map +0 -1
  278. package/dist/components/trace-viewer/components/span-content.js.map +0 -1
  279. package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
  280. package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
  281. package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
  282. package/dist/components/trace-viewer/components/ui.js.map +0 -1
  283. package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
  284. package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
  285. package/dist/components/trace-viewer/context.js.map +0 -1
  286. package/dist/components/trace-viewer/index.js.map +0 -1
  287. package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
  288. package/dist/components/trace-viewer/types.js.map +0 -1
  289. package/dist/components/trace-viewer/util/constants.js.map +0 -1
  290. package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
  291. package/dist/components/trace-viewer/util/timing.js.map +0 -1
  292. package/dist/components/trace-viewer/util/tree.js.map +0 -1
  293. package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
  294. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
  295. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
  296. package/dist/components/trace-viewer/worker.js.map +0 -1
  297. package/dist/components/ui/alert.js.map +0 -1
  298. package/dist/components/ui/card.js.map +0 -1
  299. package/dist/components/ui/data-inspector.js.map +0 -1
  300. package/dist/components/ui/decrypt-button.js.map +0 -1
  301. package/dist/components/ui/error-card.js.map +0 -1
  302. package/dist/components/ui/error-stack-block.js.map +0 -1
  303. package/dist/components/ui/inspector-theme.js.map +0 -1
  304. package/dist/components/ui/load-more-button.js.map +0 -1
  305. package/dist/components/ui/menu-dropdown.js.map +0 -1
  306. package/dist/components/ui/skeleton.js.map +0 -1
  307. package/dist/components/ui/spinner.js.map +0 -1
  308. package/dist/components/ui/timestamp-tooltip.js.map +0 -1
  309. package/dist/components/workflow-trace-view.js.map +0 -1
  310. package/dist/components/workflow-traces/event-colors.js.map +0 -1
  311. package/dist/components/workflow-traces/trace-colors.js.map +0 -1
  312. package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
  313. package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
  314. package/dist/hooks/use-dark-mode.js.map +0 -1
  315. package/dist/index.js.map +0 -1
  316. package/dist/lib/event-analysis.js.map +0 -1
  317. package/dist/lib/event-materialization.js.map +0 -1
  318. package/dist/lib/hydration.js.map +0 -1
  319. package/dist/lib/toast.js.map +0 -1
  320. package/dist/lib/trace-builder.js.map +0 -1
  321. package/dist/lib/utils.js.map +0 -1
package/src/styles.css CHANGED
@@ -12,6 +12,9 @@
12
12
  * import '@workflow/web-shared/styles.css';
13
13
  */
14
14
 
15
+ @custom-variant dark-theme (&:where(.dark-theme, .dark-theme *, .dark, .dark *, [data-theme="dark"], [data-theme="dark"] *));
16
+ @custom-variant light-theme (&:where(.light-theme, .light-theme *, .light, .light *));
17
+
15
18
  :root {
16
19
  /* Background */
17
20
  --ds-background-100: hsl(0, 0%, 100%);
@@ -36,6 +39,9 @@
36
39
  --ds-gray-alpha-700: hsla(0, 0%, 0%, 0.44);
37
40
  --ds-gray-alpha-1000: hsla(0, 0%, 0%, 0.91);
38
41
 
42
+ /* Focus */
43
+ --ds-focus-color: var(--ds-blue-700);
44
+
39
45
  /* Blue */
40
46
  --ds-blue-100: hsl(212, 100%, 97%);
41
47
  --ds-blue-200: hsl(210, 100%, 96%);
@@ -100,12 +106,15 @@
100
106
 
101
107
  /* Shadows */
102
108
  --ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.04);
109
+ --ds-shadow-tooltip:
110
+ 0 0 0 1px rgba(0, 0, 0, 0.08), 0px 1px 1px rgba(0, 0, 0, 0.02),
111
+ 0px 4px 8px rgba(0, 0, 0, 0.04), 0 0 0 1px var(--ds-background-200);
103
112
  }
104
113
 
105
114
  /* Dark theme defaults */
106
115
  .dark-theme,
107
116
  .dark,
108
- [data-theme='dark'] {
117
+ [data-theme="dark"] {
109
118
  --ds-background-100: hsl(0, 0%, 7%);
110
119
  --ds-background-200: hsl(0, 0%, 10%);
111
120
 
@@ -126,6 +135,8 @@
126
135
  --ds-gray-alpha-700: rgba(255, 255, 255, 0.45);
127
136
  --ds-gray-alpha-1000: rgba(255, 255, 255, 0.92);
128
137
 
138
+ --ds-focus-color: var(--ds-blue-900);
139
+
129
140
  --ds-blue-100: hsl(216, 50%, 12%);
130
141
  --ds-blue-200: hsl(214, 59%, 15%);
131
142
  --ds-blue-300: hsl(213, 71%, 20%);
@@ -182,5 +193,477 @@
182
193
  --ds-pink-900: hsl(336, 80%, 70%);
183
194
 
184
195
  --ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.3);
196
+ --ds-shadow-tooltip:
197
+ 0 0 0 1px rgba(255, 255, 255, 0.145), 0px 1px 1px rgba(0, 0, 0, 0.02),
198
+ 0px 4px 8px rgba(0, 0, 0, 0.04), 0 0 0 1px var(--ds-background-200);
199
+ }
200
+
201
+ @theme inline {
202
+ /* Deactivating namespaces. When you do this, all of the default utilities that use that namespace (like bg-red-500) will be removed, and only your custom values (like bg-custom) will be available. https://tailwindcss.com/docs/theme#overriding-the-default-theme */
203
+ /* --color-*: initial; @sev:revert */
204
+ --breakpoint-*: initial;
205
+
206
+ --spacing: 0.25rem;
207
+
208
+ /* Pixel Fonts */
209
+ --font-pixel-square: var(--font-geist-pixel-square);
210
+ --font-pixel-circle: var(--font-geist-pixel-circle);
211
+ --font-pixel-line: var(--font-geist-pixel-line);
212
+ --font-pixel-grid: var(--font-geist-pixel-grid);
213
+ --font-pixel-triangle: var(--font-geist-pixel-triangle);
214
+
215
+ --radius-xs: 0.125rem; /* Previously xs: 2px */
216
+ --radius-sm: 0.25rem; /* Previously sm: 4px */
217
+ --radius-md: 0.375rem; /* Previously DEFAULT: 6px */
218
+ --radius-lg: 0.5rem; /* Previously md: 8px */
219
+ --radius-xl: 0.75rem; /* Previously lg: 12px */
220
+ --radius-2xl: 1rem;
221
+
222
+ /* Override Tailwind default shadows with Geist's DS shadows */
223
+ --shadow-border: var(--ds-shadow-border);
224
+
225
+ --shadow-2xs: var(--ds-shadow-2xs);
226
+ --shadow-xs: var(--ds-shadow-xs);
227
+ --shadow-sm: var(--ds-shadow-small);
228
+ --shadow-md: var(--ds-shadow-medium);
229
+ --shadow-lg: var(--ds-shadow-large);
230
+ --shadow-xl: var(--ds-shadow-xl);
231
+ --shadow-2xl: var(--ds-shadow-2xl);
232
+
233
+ /* Geist Breakpoints */
234
+ --breakpoint-sm: 401px;
235
+ --breakpoint-md: 601px;
236
+ --breakpoint-lg: 961px;
237
+ --breakpoint-xl: 1200px;
238
+ --breakpoint-2xl: 1400px;
239
+
240
+ --color-geist-cyan: var(--geist-cyan);
241
+ --color-geist-warning: var(--geist-warning);
242
+ --color-geist-error: var(--geist-error);
243
+
244
+ --color-black: var(--ds-black);
245
+ --color-white: var(--ds-white);
246
+
247
+ --color-background-100: var(--ds-background-100);
248
+ --color-background-200: var(--ds-background-200);
249
+
250
+ --color-gray-100: var(--ds-gray-100);
251
+ --color-gray-200: var(--ds-gray-200);
252
+ --color-gray-300: var(--ds-gray-300);
253
+ --color-gray-400: var(--ds-gray-400);
254
+ --color-gray-500: var(--ds-gray-500);
255
+ --color-gray-600: var(--ds-gray-600);
256
+ --color-gray-700: var(--ds-gray-700);
257
+ --color-gray-800: var(--ds-gray-800);
258
+ --color-gray-900: var(--ds-gray-900);
259
+ --color-gray-1000: var(--ds-gray-1000);
260
+
261
+ --color-gray-alpha-100: var(--ds-gray-alpha-100);
262
+ --color-gray-alpha-200: var(--ds-gray-alpha-200);
263
+ --color-gray-alpha-300: var(--ds-gray-alpha-300);
264
+ --color-gray-alpha-400: var(--ds-gray-alpha-400);
265
+ --color-gray-alpha-500: var(--ds-gray-alpha-500);
266
+ --color-gray-alpha-600: var(--ds-gray-alpha-600);
267
+ --color-gray-alpha-700: var(--ds-gray-alpha-700);
268
+ --color-gray-alpha-800: var(--ds-gray-alpha-800);
269
+ --color-gray-alpha-900: var(--ds-gray-alpha-900);
270
+ --color-gray-alpha-1000: var(--ds-gray-alpha-1000);
271
+
272
+ --color-blue-100: var(--ds-blue-100);
273
+ --color-blue-200: var(--ds-blue-200);
274
+ --color-blue-300: var(--ds-blue-300);
275
+ --color-blue-400: var(--ds-blue-400);
276
+ --color-blue-500: var(--ds-blue-500);
277
+ --color-blue-600: var(--ds-blue-600);
278
+ --color-blue-700: var(--ds-blue-700);
279
+ --color-blue-800: var(--ds-blue-800);
280
+ --color-blue-900: var(--ds-blue-900);
281
+ --color-blue-1000: var(--ds-blue-1000);
282
+
283
+ --color-red-100: var(--ds-red-100);
284
+ --color-red-200: var(--ds-red-200);
285
+ --color-red-300: var(--ds-red-300);
286
+ --color-red-400: var(--ds-red-400);
287
+ --color-red-500: var(--ds-red-500);
288
+ --color-red-600: var(--ds-red-600);
289
+ --color-red-700: var(--ds-red-700);
290
+ --color-red-800: var(--ds-red-800);
291
+ --color-red-900: var(--ds-red-900);
292
+ --color-red-1000: var(--ds-red-1000);
293
+
294
+ --color-amber-100: var(--ds-amber-100);
295
+ --color-amber-200: var(--ds-amber-200);
296
+ --color-amber-300: var(--ds-amber-300);
297
+ --color-amber-400: var(--ds-amber-400);
298
+ --color-amber-500: var(--ds-amber-500);
299
+ --color-amber-600: var(--ds-amber-600);
300
+ --color-amber-700: var(--ds-amber-700);
301
+ --color-amber-800: var(--ds-amber-800);
302
+ --color-amber-900: var(--ds-amber-900);
303
+ --color-amber-1000: var(--ds-amber-1000);
304
+
305
+ --color-green-100: var(--ds-green-100);
306
+ --color-green-200: var(--ds-green-200);
307
+ --color-green-300: var(--ds-green-300);
308
+ --color-green-400: var(--ds-green-400);
309
+ --color-green-500: var(--ds-green-500);
310
+ --color-green-600: var(--ds-green-600);
311
+ --color-green-700: var(--ds-green-700);
312
+ --color-green-800: var(--ds-green-800);
313
+ --color-green-900: var(--ds-green-900);
314
+ --color-green-1000: var(--ds-green-1000);
315
+
316
+ --color-teal-100: var(--ds-teal-100);
317
+ --color-teal-200: var(--ds-teal-200);
318
+ --color-teal-300: var(--ds-teal-300);
319
+ --color-teal-400: var(--ds-teal-400);
320
+ --color-teal-500: var(--ds-teal-500);
321
+ --color-teal-600: var(--ds-teal-600);
322
+ --color-teal-700: var(--ds-teal-700);
323
+ --color-teal-800: var(--ds-teal-800);
324
+ --color-teal-900: var(--ds-teal-900);
325
+ --color-teal-1000: var(--ds-teal-1000);
326
+
327
+ --color-purple-100: var(--ds-purple-100);
328
+ --color-purple-200: var(--ds-purple-200);
329
+ --color-purple-300: var(--ds-purple-300);
330
+ --color-purple-400: var(--ds-purple-400);
331
+ --color-purple-500: var(--ds-purple-500);
332
+ --color-purple-600: var(--ds-purple-600);
333
+ --color-purple-700: var(--ds-purple-700);
334
+ --color-purple-800: var(--ds-purple-800);
335
+ --color-purple-900: var(--ds-purple-900);
336
+ --color-purple-1000: var(--ds-purple-1000);
337
+
338
+ --color-pink-100: var(--ds-pink-100);
339
+ --color-pink-200: var(--ds-pink-200);
340
+ --color-pink-300: var(--ds-pink-300);
341
+ --color-pink-400: var(--ds-pink-400);
342
+ --color-pink-500: var(--ds-pink-500);
343
+ --color-pink-600: var(--ds-pink-600);
344
+ --color-pink-700: var(--ds-pink-700);
345
+ --color-pink-800: var(--ds-pink-800);
346
+ --color-pink-900: var(--ds-pink-900);
347
+ --color-pink-1000: var(--ds-pink-1000);
348
+ }
349
+
350
+ /* tempory utility remove once front is fully migrated to geistcn */
351
+ @utility geist-sr-only {
352
+ @apply sr-only;
353
+ }
354
+
355
+ @utility clearable-input {
356
+ --duration: 561.04ms;
357
+ --timing: linear(
358
+ 0 0%,
359
+ 0.00484 1%,
360
+ 0.018323 2%,
361
+ 0.039014 3%,
362
+ 0.065627 4%,
363
+ 0.097013 5%,
364
+ 0.132156 6%,
365
+ 0.170155 7.000000000000001%,
366
+ 0.210219 8%,
367
+ 0.251659 9%,
368
+ 0.293875 10%,
369
+ 0.336353 11%,
370
+ 0.378653 12%,
371
+ 0.420402 13%,
372
+ 0.461292 14.000000000000002%,
373
+ 0.501066 15%,
374
+ 0.53952 16%,
375
+ 0.57649 17%,
376
+ 0.611853 18%,
377
+ 0.645519 19%,
378
+ 0.677428 20%,
379
+ 0.707546 21%,
380
+ 0.735859 22%,
381
+ 0.762374 23%,
382
+ 0.787113 24%,
383
+ 0.810113 25%,
384
+ 0.83142 26%,
385
+ 0.851089 27%,
386
+ 0.869183 28.000000000000004%,
387
+ 0.88577 28.999999999999996%,
388
+ 0.900923 30%,
389
+ 0.914714 31%,
390
+ 0.927222 32%,
391
+ 0.938521 33%,
392
+ 0.948689 34%,
393
+ 0.957801 35%,
394
+ 0.965931 36%,
395
+ 0.973151 37%,
396
+ 0.979531 38%,
397
+ 0.985137 39%,
398
+ 0.990035 40%,
399
+ 0.994286 41%,
400
+ 0.997947 42%,
401
+ 1.001072 43%,
402
+ 1.003715 44%,
403
+ 1.005922 45%,
404
+ 1.00774 46%,
405
+ 1.009209 47%,
406
+ 1.010369 48%,
407
+ 1.011256 49%,
408
+ 1.011902 50%,
409
+ 1.012339 51%,
410
+ 1.012593 52%,
411
+ 1.01269 53%,
412
+ 1.012653 54%,
413
+ 1.012502 55.00000000000001%,
414
+ 1.012256 56.00000000000001%,
415
+ 1.011932 56.99999999999999%,
416
+ 1.011545 57.99999999999999%,
417
+ 1.011107 59%,
418
+ 1.010631 60%,
419
+ 1.010127 61%,
420
+ 1.009604 62%,
421
+ 1.00907 63%,
422
+ 1.008531 64%,
423
+ 1.007993 65%,
424
+ 1.007461 66%,
425
+ 1.00694 67%,
426
+ 1.006432 68%,
427
+ 1.00594 69%,
428
+ 1.005467 70%,
429
+ 1.005014 71%,
430
+ 1.004582 72%,
431
+ 1.004173 73%,
432
+ 1.003786 74%,
433
+ 1.003422 75%,
434
+ 1.003081 76%,
435
+ 1.002763 77%,
436
+ 1.002466 78%,
437
+ 1.002192 79%,
438
+ 1.001938 80%,
439
+ 1.001705 81%,
440
+ 1.00149 82%,
441
+ 1.001294 83%,
442
+ 1.001116 84%,
443
+ 1.000954 85%,
444
+ 1.000808 86%,
445
+ 1.000676 87%,
446
+ 1.000558 88%,
447
+ 1.000452 89%,
448
+ 1.000358 90%,
449
+ 1.000275 91%,
450
+ 1.000202 92%,
451
+ 1.000138 93%,
452
+ 1.000083 94%
453
+ );
454
+ }
455
+
456
+ @utility webkit-search-reset {
457
+ &::-webkit-search-decoration,
458
+ &::-webkit-search-cancel-button,
459
+ &::-webkit-search-results-button,
460
+ &::-webkit-search-results-decoration {
461
+ -webkit-appearance: none;
462
+ }
463
+ }
464
+
465
+ @utility animation-delay-* {
466
+ animation-delay: --value(--animation-delay-*);
467
+ animation-delay: calc(--value(integer) * 1ms);
468
+ animation-delay: --value([*]);
469
+ }
470
+
471
+ @utility -animation-delay-* {
472
+ animation-delay: calc(--value(--animation-delay-*) * -1);
473
+ animation-delay: calc(--value(integer) * -1ms);
474
+ animation-delay: calc(--value([*]) * -1);
475
+ }
476
+
477
+ @utility no-scrollbar {
478
+ scrollbar-width: none;
479
+ -webkit-overflow-scrolling: touch;
480
+ &::-webkit-scrollbar {
481
+ display: none;
482
+ }
483
+ }
484
+
485
+ /* Material */
486
+
487
+ @utility material-base {
488
+ @apply bg-background-100 rounded-[6px];
489
+ box-shadow: var(--ds-shadow-border);
490
+ }
491
+
492
+ @utility material-small {
493
+ @apply bg-background-100 rounded-[6px];
494
+ box-shadow: var(--ds-shadow-border-small);
495
+ }
496
+
497
+ @utility material-medium {
498
+ @apply bg-background-100 rounded-[12px];
499
+ box-shadow: var(--ds-shadow-border-medium);
500
+ }
501
+
502
+ @utility material-large {
503
+ @apply bg-background-100 rounded-[12px];
504
+ box-shadow: var(--ds-shadow-border-large);
505
+ }
506
+
507
+ @utility material-tooltip {
508
+ @apply bg-background-100 rounded-[6px];
509
+ box-shadow: var(--ds-shadow-tooltip);
510
+ }
511
+
512
+ @utility material-menu {
513
+ @apply bg-background-100 rounded-[12px];
514
+ box-shadow: var(--ds-shadow-menu);
515
+ }
516
+
517
+ @utility material-modal {
518
+ @apply bg-background-100 rounded-[12px];
519
+ box-shadow: var(--ds-shadow-modal);
520
+ }
521
+
522
+ @utility material-fullscreen {
523
+ @apply bg-background-100 rounded-[16px];
524
+ box-shadow: var(--ds-shadow-fullscreen);
185
525
  }
186
526
 
527
+ /* Typography Heading */
528
+
529
+ @utility text-heading-72 {
530
+ @apply font-sans font-semibold text-[72px] leading-[72px] tracking-[-4.32px];
531
+ }
532
+
533
+ @utility text-heading-64 {
534
+ @apply font-sans font-semibold text-[64px] leading-[64px] tracking-[-3.84px];
535
+ }
536
+
537
+ @utility text-heading-56 {
538
+ @apply font-sans font-semibold text-[56px] leading-[56px] tracking-[-3.36px];
539
+ }
540
+
541
+ @utility text-heading-48 {
542
+ @apply font-sans font-semibold text-[48px] leading-[56px] tracking-[-2.88px];
543
+ }
544
+
545
+ @utility text-heading-40 {
546
+ @apply font-sans font-semibold text-[40px] leading-[48px] tracking-[-2.4px];
547
+ }
548
+
549
+ @utility text-heading-32 {
550
+ @apply font-sans font-semibold [&>strong]:font-medium [&>strong]:text-gray-900 text-[32px] leading-[40px] tracking-[-1.28px];
551
+ }
552
+
553
+ @utility text-heading-24 {
554
+ @apply font-sans font-semibold [&>strong]:font-medium [&>strong]:text-gray-900 text-[24px] leading-[32px] tracking-[-0.96px];
555
+ }
556
+
557
+ @utility text-heading-20 {
558
+ @apply font-sans font-semibold [&>strong]:font-medium [&>strong]:text-gray-900 text-[20px] leading-[26px] tracking-[-0.4px];
559
+ }
560
+
561
+ @utility text-heading-16 {
562
+ @apply font-sans font-semibold [&>strong]:font-medium [&>strong]:text-gray-900 text-[16px] leading-[24px] tracking-[-0.32px];
563
+ }
564
+
565
+ @utility text-heading-14 {
566
+ @apply font-sans font-semibold text-[14px] leading-[20px] tracking-[-0.28px];
567
+ }
568
+
569
+ /* Typography Button */
570
+
571
+ @utility text-button-16 {
572
+ @apply font-sans font-medium text-[16px] leading-[20px];
573
+ }
574
+
575
+ @utility text-button-14 {
576
+ @apply font-sans font-medium text-[14px] leading-[20px];
577
+ }
578
+
579
+ @utility text-button-12 {
580
+ @apply font-sans font-medium text-[12px] leading-[16px];
581
+ }
582
+
583
+ /* Typography Label */
584
+
585
+ @utility text-label-20 {
586
+ @apply font-sans font-normal text-[20px] leading-[32px];
587
+ }
588
+
589
+ @utility text-label-18 {
590
+ @apply font-sans font-normal text-[18px] leading-[20px];
591
+ }
592
+
593
+ @utility text-label-16 {
594
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[16px] leading-[20px];
595
+ }
596
+
597
+ @utility text-label-14 {
598
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[14px] leading-[20px];
599
+ }
600
+
601
+ @utility text-label-14-mono {
602
+ @apply font-mono font-normal text-[14px] leading-[20px];
603
+ }
604
+
605
+ @utility text-label-13 {
606
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[13px] leading-[16px];
607
+ }
608
+
609
+ @utility text-label-13-mono {
610
+ @apply font-mono font-normal text-[13px] leading-[20px];
611
+ }
612
+
613
+ @utility text-label-12 {
614
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[12px] leading-[16px];
615
+ }
616
+
617
+ @utility text-label-12-mono {
618
+ @apply font-mono font-normal text-[12px] leading-[16px];
619
+ }
620
+
621
+ /* Typography Copy */
622
+
623
+ @utility text-copy-24 {
624
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[24px] leading-[36px];
625
+ }
626
+
627
+ @utility text-copy-20 {
628
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[20px] leading-[36px];
629
+ }
630
+
631
+ @utility text-copy-18 {
632
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[18px] leading-[28px];
633
+ }
634
+
635
+ @utility text-copy-16 {
636
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[16px] leading-[24px];
637
+ }
638
+
639
+ @utility text-copy-14 {
640
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[14px] leading-[20px];
641
+ }
642
+
643
+ @utility text-copy-14-mono {
644
+ @apply font-mono font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[14px] leading-[20px];
645
+ }
646
+
647
+ @utility text-copy-13 {
648
+ @apply font-sans font-normal [&>strong]:font-medium [&>strong]:text-gray-1000 text-[13px] leading-[18px];
649
+ }
650
+
651
+ @utility text-copy-13-mono {
652
+ @apply font-mono font-normal text-[13px] leading-[18px];
653
+ }
654
+
655
+ @utility container {
656
+ @apply px-6 mx-auto w-full;
657
+ max-width: calc(1200px + 48px);
658
+ }
659
+
660
+ @keyframes tooltip-enter {
661
+ from {
662
+ opacity: 0;
663
+ transform: scale(0.96);
664
+ }
665
+ to {
666
+ opacity: 1;
667
+ transform: scale(1);
668
+ }
669
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-boundary.js","sourceRoot":"","sources":["../../src/components/error-boundary.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiB5C,MAAM,OAAO,aAAc,SAAQ,SAGlC;IACC,YAAY,KAAyB;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAc;QAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,KAAc,EAAE,SAAkB;QAClD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC7B,CAAC;YAED,mBAAmB;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACxE,MAAM,YAAY,GAAG,GAAG,EAAE,KAAK;gBAC7B,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,KAAK,EAAE;gBAClC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC;YAEtC,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,mBAAmB,EAC9C,OAAO,EAAE,YAAY,GACrB,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF","sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport { Component } from 'react';\nimport { ErrorCard } from './ui/error-card';\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n /** Optional fallback UI to render on error. When omitted, a default ErrorCard is shown. */\n fallback?: ReactNode;\n /** Optional title for the default error card (used when no fallback is provided) */\n title?: string;\n /** Optional callback when an error is caught */\n onCatch?: (error: unknown, retry: () => void) => void;\n}\n\nexport interface ErrorBoundaryState {\n hasError: boolean;\n error: unknown;\n}\n\nexport class ErrorBoundary extends Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: unknown): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n retry(): void {\n this.setState({ hasError: false, error: null });\n }\n\n componentDidCatch(error: unknown, errorInfo: unknown): void {\n if (process.env.NODE_ENV === 'development') {\n console.error(error, errorInfo);\n }\n this.props.onCatch?.(error, () => this.retry());\n }\n\n render(): ReactNode {\n if (this.state.hasError) {\n if (this.props.fallback) {\n return this.props.fallback;\n }\n\n // Default error UI\n const err = this.state.error instanceof Error ? this.state.error : null;\n const errorDetails = err?.stack\n ? `${err.message}\\n\\n${err.stack}`\n : (err?.message ?? 'Unknown error');\n\n return (\n <ErrorCard\n title={this.props.title || 'An error occurred'}\n details={errorDetails}\n />\n );\n }\n\n return this.props.children;\n }\n}\n"]}