@vllnt/ui 0.3.0-canary.0572c35 → 0.3.0-canary.ce98eca

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 (328) hide show
  1. package/dist/components/accordion/accordion.js +2 -8
  2. package/dist/components/activity-heatmap/activity-heatmap.js +22 -29
  3. package/dist/components/activity-log/activity-log.js +52 -53
  4. package/dist/components/agent-activity/agent-activity.js +139 -125
  5. package/dist/components/ai-artifact/ai-artifact.js +115 -76
  6. package/dist/components/ai-chat-input/ai-chat-input.js +59 -61
  7. package/dist/components/ai-message-bubble/ai-message-bubble.js +63 -65
  8. package/dist/components/ai-sidebar/ai-sidebar.js +77 -55
  9. package/dist/components/ai-source-citation/ai-source-citation.js +38 -32
  10. package/dist/components/ai-streaming-text/ai-streaming-text.js +33 -35
  11. package/dist/components/ai-tool-call-display/ai-tool-call-display.js +58 -60
  12. package/dist/components/alert/alert.js +20 -7
  13. package/dist/components/alert-dialog/alert-dialog.js +36 -13
  14. package/dist/components/alert-pulse/alert-pulse.js +69 -69
  15. package/dist/components/anchor-port/anchor-port.js +26 -28
  16. package/dist/components/animated-beam/animated-beam.js +157 -0
  17. package/dist/components/animated-beam/index.js +4 -0
  18. package/dist/components/animated-grid-pattern/animated-grid-pattern.js +81 -0
  19. package/dist/components/animated-grid-pattern/index.js +6 -0
  20. package/dist/components/animated-list/animated-list.js +28 -0
  21. package/dist/components/animated-list/index.js +4 -0
  22. package/dist/components/animated-tabs/animated-tabs.js +98 -0
  23. package/dist/components/animated-tabs/index.js +6 -0
  24. package/dist/components/animated-testimonials/animated-testimonials.js +97 -0
  25. package/dist/components/animated-testimonials/index.js +6 -0
  26. package/dist/components/animated-text/animated-text.js +66 -67
  27. package/dist/components/animated-tooltip/animated-tooltip.js +58 -0
  28. package/dist/components/animated-tooltip/index.js +6 -0
  29. package/dist/components/auto-reload/auto-reload.js +109 -105
  30. package/dist/components/avatar/avatar.js +18 -7
  31. package/dist/components/avatar-group/avatar-group.js +35 -30
  32. package/dist/components/banner/banner.js +80 -77
  33. package/dist/components/bento-grid/bento-grid.js +46 -0
  34. package/dist/components/bento-grid/index.js +8 -0
  35. package/dist/components/blur-reveal/blur-reveal.js +83 -0
  36. package/dist/components/blur-reveal/index.js +4 -0
  37. package/dist/components/border-beam/border-beam.js +43 -45
  38. package/dist/components/bottom-activity-strip/bottom-activity-strip.js +5 -5
  39. package/dist/components/bottom-bar/bottom-bar.js +22 -18
  40. package/dist/components/button/button.js +18 -14
  41. package/dist/components/button-group/button-group.js +37 -0
  42. package/dist/components/button-group/index.js +8 -0
  43. package/dist/components/candlestick-chart/candlestick-chart.js +52 -54
  44. package/dist/components/canvas-shell/canvas-shell.js +5 -3
  45. package/dist/components/canvas-view/canvas-view.js +72 -74
  46. package/dist/components/card/card.js +35 -12
  47. package/dist/components/card-flip/card-flip.js +67 -0
  48. package/dist/components/card-flip/index.js +4 -0
  49. package/dist/components/carousel/carousel.js +78 -60
  50. package/dist/components/chain-of-thought/chain-of-thought.js +13 -12
  51. package/dist/components/chart/area-chart.js +66 -67
  52. package/dist/components/chart/bar-chart.js +68 -70
  53. package/dist/components/chart/line-chart.js +69 -70
  54. package/dist/components/chat-dock-section/chat-dock-section.js +43 -45
  55. package/dist/components/checkbox/checkbox.js +6 -3
  56. package/dist/components/checkbox-group/checkbox-group.js +98 -0
  57. package/dist/components/checkbox-group/index.js +8 -0
  58. package/dist/components/choropleth-map/choropleth-map.js +90 -82
  59. package/dist/components/chronological-timeline/chronological-timeline.js +75 -72
  60. package/dist/components/civilization-card/civilization-card.js +59 -56
  61. package/dist/components/code-block/code-block.js +4 -7
  62. package/dist/components/code-playground/code-playground.js +4 -8
  63. package/dist/components/color-picker/color-picker.js +133 -0
  64. package/dist/components/color-picker/index.js +4 -0
  65. package/dist/components/combobox/combobox.js +57 -58
  66. package/dist/components/command/command.js +42 -15
  67. package/dist/components/comment-pin/comment-pin.js +58 -60
  68. package/dist/components/connector-edge/connector-edge.js +59 -54
  69. package/dist/components/context-lens/context-lens.js +74 -73
  70. package/dist/components/context-menu/context-menu.js +55 -17
  71. package/dist/components/contribution-graph/contribution-graph.js +118 -0
  72. package/dist/components/contribution-graph/index.js +6 -0
  73. package/dist/components/conversation-thread/conversation-thread.js +89 -65
  74. package/dist/components/cookie-consent/cookie-consent.js +114 -115
  75. package/dist/components/copy-button/copy-button.js +100 -103
  76. package/dist/components/countdown-timer/countdown-timer.js +47 -75
  77. package/dist/components/credit-badge/credit-badge.js +26 -22
  78. package/dist/components/curriculum/curriculum.js +2 -2
  79. package/dist/components/cursor/cursor.js +52 -0
  80. package/dist/components/cursor/index.js +4 -0
  81. package/dist/components/data-list/data-list.js +54 -40
  82. package/dist/components/date-field/date-field.js +42 -0
  83. package/dist/components/date-field/index.js +4 -0
  84. package/dist/components/date-picker/date-picker.js +49 -50
  85. package/dist/components/date-range-picker/date-range-picker.js +73 -0
  86. package/dist/components/date-range-picker/index.js +6 -0
  87. package/dist/components/dialog/dialog.js +25 -9
  88. package/dist/components/dock/dock.js +109 -0
  89. package/dist/components/dock/index.js +5 -0
  90. package/dist/components/document-sibling-nav/document-sibling-nav.js +10 -5
  91. package/dist/components/dot-pattern/dot-pattern.js +36 -0
  92. package/dist/components/dot-pattern/index.js +4 -0
  93. package/dist/components/drawer/drawer.js +25 -9
  94. package/dist/components/dropdown-menu/dropdown-menu.js +56 -17
  95. package/dist/components/edge-label/edge-label.js +17 -15
  96. package/dist/components/empty-state/empty-state.js +27 -31
  97. package/dist/components/era-comparison/era-comparison.js +96 -83
  98. package/dist/components/expandable-cards/expandable-cards.js +61 -0
  99. package/dist/components/expandable-cards/index.js +6 -0
  100. package/dist/components/field/field.js +137 -0
  101. package/dist/components/field/index.js +16 -0
  102. package/dist/components/fieldset/fieldset.js +49 -0
  103. package/dist/components/fieldset/index.js +10 -0
  104. package/dist/components/file-upload/file-upload.js +4 -3
  105. package/dist/components/floating-navbar/floating-navbar.js +67 -0
  106. package/dist/components/floating-navbar/index.js +4 -0
  107. package/dist/components/floating-toolbar/floating-toolbar.js +49 -51
  108. package/dist/components/flow-diagram/flow-fullscreen.js +3 -13
  109. package/dist/components/flow-diagram/use-flow-diagram.js +7 -18
  110. package/dist/components/follow-mode/follow-mode.js +67 -69
  111. package/dist/components/form/form.js +131 -112
  112. package/dist/components/gantt-chart/gantt-chart.js +49 -51
  113. package/dist/components/gauge-chart/gauge-chart.js +132 -0
  114. package/dist/components/gauge-chart/index.js +4 -0
  115. package/dist/components/geography-quiz-map/geography-quiz-map.js +88 -78
  116. package/dist/components/glass-card/glass-card.js +25 -0
  117. package/dist/components/glass-card/index.js +4 -0
  118. package/dist/components/glass-panel/glass-panel.js +16 -14
  119. package/dist/components/glass-progress/glass-progress.js +39 -0
  120. package/dist/components/glass-progress/index.js +4 -0
  121. package/dist/components/globe-3d/globe-3d.js +70 -66
  122. package/dist/components/grid/grid.js +100 -0
  123. package/dist/components/grid/index.js +4 -0
  124. package/dist/components/group-hull/group-hull.js +27 -22
  125. package/dist/components/handoff-beacon/handoff-beacon.js +55 -57
  126. package/dist/components/heat-map-overlay/heat-map-overlay.js +55 -55
  127. package/dist/components/heat-overlay/heat-overlay.js +49 -48
  128. package/dist/components/historic-timeline/historic-timeline.js +57 -59
  129. package/dist/components/historical-figure-card/historical-figure-card.js +5 -3
  130. package/dist/components/hover-card/hover-card.js +8 -3
  131. package/dist/components/index.js +263 -0
  132. package/dist/components/infinite-plane/infinite-plane.js +34 -36
  133. package/dist/components/input/input.js +19 -17
  134. package/dist/components/input-group/index.js +14 -0
  135. package/dist/components/input-group/input-group.js +73 -0
  136. package/dist/components/input-otp/input-otp.js +25 -8
  137. package/dist/components/interactive-timeline/interactive-timeline.js +38 -15
  138. package/dist/components/item/index.js +18 -0
  139. package/dist/components/item/item.js +118 -0
  140. package/dist/components/jarvis-dock/jarvis-dock.js +40 -42
  141. package/dist/components/kbd/kbd.js +31 -42
  142. package/dist/components/keyboard-shortcuts-help/keyboard-shortcuts-help.js +7 -18
  143. package/dist/components/knowledge-check/knowledge-check.js +50 -58
  144. package/dist/components/label/label.js +6 -3
  145. package/dist/components/left-rail/left-rail.js +22 -18
  146. package/dist/components/link/index.js +5 -0
  147. package/dist/components/link/link.js +53 -0
  148. package/dist/components/liquid-glass/index.js +4 -0
  149. package/dist/components/liquid-glass/liquid-glass.js +39 -0
  150. package/dist/components/list-box/index.js +8 -0
  151. package/dist/components/list-box/list-box.js +130 -0
  152. package/dist/components/live-cursor/live-cursor.js +49 -51
  153. package/dist/components/live-feed/live-feed.js +51 -76
  154. package/dist/components/magnetic/index.js +4 -0
  155. package/dist/components/magnetic/magnetic.js +63 -0
  156. package/dist/components/magnetic-button/index.js +4 -0
  157. package/dist/components/magnetic-button/magnetic-button.js +64 -0
  158. package/dist/components/map-2d/map-2d.js +120 -101
  159. package/dist/components/map-timeline/map-timeline.js +188 -170
  160. package/dist/components/market-treemap/market-treemap.js +10 -6
  161. package/dist/components/marquee/marquee.js +64 -65
  162. package/dist/components/menubar/menubar.js +82 -35
  163. package/dist/components/meteors/index.js +4 -0
  164. package/dist/components/meteors/meteors.js +62 -0
  165. package/dist/components/meter/index.js +5 -0
  166. package/dist/components/meter/meter.js +76 -0
  167. package/dist/components/metric-cluster/metric-cluster.js +47 -49
  168. package/dist/components/metric-gauge/metric-gauge.js +42 -44
  169. package/dist/components/mini-map-panel/mini-map-panel.js +71 -66
  170. package/dist/components/model-comparison/model-comparison.js +76 -67
  171. package/dist/components/multi-select/multi-select.js +100 -102
  172. package/dist/components/multi-select-lasso/multi-select-lasso.js +5 -5
  173. package/dist/components/native-select/index.js +4 -0
  174. package/dist/components/native-select/native-select.js +28 -0
  175. package/dist/components/navigation-menu/navigation-menu.js +38 -13
  176. package/dist/components/newsletter-signup/newsletter-signup.js +5 -3
  177. package/dist/components/number-input/number-input.js +4 -3
  178. package/dist/components/number-ticker/number-ticker.js +50 -51
  179. package/dist/components/object-card/object-card.js +40 -42
  180. package/dist/components/object-handle/object-handle.js +33 -30
  181. package/dist/components/object-inspector/object-inspector.js +40 -42
  182. package/dist/components/order-book/order-book.js +59 -54
  183. package/dist/components/overview-board/overview-board.js +91 -87
  184. package/dist/components/panel/index.js +16 -0
  185. package/dist/components/panel/panel.js +95 -0
  186. package/dist/components/parallel-timeline/parallel-timeline.js +54 -56
  187. package/dist/components/particles/index.js +4 -0
  188. package/dist/components/particles/particles.js +52 -0
  189. package/dist/components/password-input/password-input.js +35 -36
  190. package/dist/components/phone-input/index.js +6 -0
  191. package/dist/components/phone-input/phone-input.js +63 -0
  192. package/dist/components/pie-chart/index.js +4 -0
  193. package/dist/components/pie-chart/pie-chart.js +130 -0
  194. package/dist/components/plan-badge/plan-badge.js +28 -24
  195. package/dist/components/playback-ghost/playback-ghost.js +46 -48
  196. package/dist/components/policy-delivery-panel/policy-delivery-panel.js +5 -5
  197. package/dist/components/popover/popover.js +8 -3
  198. package/dist/components/presence-stack/presence-stack.js +39 -41
  199. package/dist/components/presence-sync-indicator/presence-sync-indicator.js +5 -5
  200. package/dist/components/pricing-table/pricing-table.js +71 -70
  201. package/dist/components/primary-source-viewer/primary-source-viewer.js +90 -41
  202. package/dist/components/progress-tracker/progress-tracker.js +1 -1
  203. package/dist/components/progressive-blur/index.js +6 -0
  204. package/dist/components/progressive-blur/progressive-blur.js +48 -0
  205. package/dist/components/prompt-input/prompt-input.js +68 -69
  206. package/dist/components/prompt-templates/prompt-templates.js +36 -36
  207. package/dist/components/property-section/property-section.js +28 -30
  208. package/dist/components/qr-code/index.js +4 -0
  209. package/dist/components/qr-code/qr-code.js +49 -0
  210. package/dist/components/radar-chart/index.js +6 -0
  211. package/dist/components/radar-chart/radar-chart.js +180 -0
  212. package/dist/components/radio-group/radio-group.js +12 -5
  213. package/dist/components/range-calendar/index.js +4 -0
  214. package/dist/components/range-calendar/range-calendar.js +35 -0
  215. package/dist/components/reasoning/reasoning.js +54 -48
  216. package/dist/components/relationship-inspector/relationship-inspector.js +5 -5
  217. package/dist/components/reveal-text/index.js +6 -0
  218. package/dist/components/reveal-text/reveal-text.js +93 -0
  219. package/dist/components/right-dock/right-dock.js +26 -21
  220. package/dist/components/role-badge/role-badge.js +22 -19
  221. package/dist/components/route-map/route-map.js +5 -3
  222. package/dist/components/routing-assignment-panel/routing-assignment-panel.js +5 -5
  223. package/dist/components/run-timeline/run-timeline.js +57 -59
  224. package/dist/components/runtime-overview-panel/runtime-overview-panel.js +5 -5
  225. package/dist/components/sankey-chart/index.js +6 -0
  226. package/dist/components/sankey-chart/sankey-chart.js +255 -0
  227. package/dist/components/scope-selector/scope-selector.js +39 -40
  228. package/dist/components/scramble-text/index.js +4 -0
  229. package/dist/components/scramble-text/scramble-text.js +76 -0
  230. package/dist/components/scroll-area/scroll-area.js +14 -5
  231. package/dist/components/scroll-progress/index.js +4 -0
  232. package/dist/components/scroll-progress/scroll-progress.js +50 -0
  233. package/dist/components/search-bar/search-bar.js +5 -2
  234. package/dist/components/search-field/index.js +4 -0
  235. package/dist/components/search-field/search-field.js +67 -0
  236. package/dist/components/segmented-control/segmented-control.js +14 -5
  237. package/dist/components/select/select.js +46 -15
  238. package/dist/components/selection-halo/selection-halo.js +53 -62
  239. package/dist/components/selection-presence/selection-presence.js +5 -5
  240. package/dist/components/separator/separator.js +19 -16
  241. package/dist/components/share-dialog/share-dialog.js +6 -8
  242. package/dist/components/sheet/sheet.js +26 -9
  243. package/dist/components/shimmer-button/index.js +4 -0
  244. package/dist/components/shimmer-button/shimmer-button.js +41 -0
  245. package/dist/components/shimmer-text/index.js +4 -0
  246. package/dist/components/shimmer-text/shimmer-text.js +40 -0
  247. package/dist/components/shine-border/index.js +4 -0
  248. package/dist/components/shine-border/shine-border.js +38 -0
  249. package/dist/components/shiny-button/index.js +4 -0
  250. package/dist/components/shiny-button/shiny-button.js +39 -0
  251. package/dist/components/sidebar-provider/sidebar-provider.js +2 -7
  252. package/dist/components/slider/slider.js +6 -3
  253. package/dist/components/slideshow/slideshow.js +28 -29
  254. package/dist/components/snap-guides/snap-guides.js +35 -35
  255. package/dist/components/sparkles/index.js +4 -0
  256. package/dist/components/sparkles/sparkles.js +51 -0
  257. package/dist/components/sparkline-grid/sparkline-grid.js +6 -7
  258. package/dist/components/spinner/unicode-spinner.js +57 -56
  259. package/dist/components/spinning-text/index.js +4 -0
  260. package/dist/components/spinning-text/spinning-text.js +58 -0
  261. package/dist/components/spotlight-card/index.js +4 -0
  262. package/dist/components/spotlight-card/spotlight-card.js +53 -0
  263. package/dist/components/stat-card/stat-card.js +37 -39
  264. package/dist/components/state-badge-overlay/state-badge-overlay.js +5 -5
  265. package/dist/components/status-board/status-board.js +20 -22
  266. package/dist/components/status-indicator/status-indicator.js +38 -40
  267. package/dist/components/sticky-metric/sticky-metric.js +58 -60
  268. package/dist/components/story-map/story-map.js +66 -60
  269. package/dist/components/subscription-card/subscription-card.js +68 -70
  270. package/dist/components/switch/switch.js +6 -3
  271. package/dist/components/table/table.js +47 -16
  272. package/dist/components/table-of-contents-panel/table-of-contents-panel.js +7 -18
  273. package/dist/components/tabs/tabs.js +2 -2
  274. package/dist/components/tag-group/index.js +8 -0
  275. package/dist/components/tag-group/tag-group.js +127 -0
  276. package/dist/components/tags-input/tags-input.js +59 -60
  277. package/dist/components/terminal/terminal.js +7 -15
  278. package/dist/components/text-animate/index.js +6 -0
  279. package/dist/components/text-animate/text-animate.js +129 -0
  280. package/dist/components/text-field/index.js +4 -0
  281. package/dist/components/text-field/text-field.js +59 -0
  282. package/dist/components/text-reveal/index.js +4 -0
  283. package/dist/components/text-reveal/text-reveal.js +90 -0
  284. package/dist/components/text-shimmer/index.js +4 -0
  285. package/dist/components/text-shimmer/text-shimmer.js +33 -0
  286. package/dist/components/textarea/textarea.js +17 -16
  287. package/dist/components/thinking-block/thinking-block.js +1 -1
  288. package/dist/components/thread-bubble/thread-bubble.js +51 -53
  289. package/dist/components/threshold-ring/threshold-ring.js +76 -78
  290. package/dist/components/ticker-tape/ticker-tape.js +47 -46
  291. package/dist/components/tilt-card/index.js +4 -0
  292. package/dist/components/tilt-card/tilt-card.js +70 -0
  293. package/dist/components/time-field/index.js +4 -0
  294. package/dist/components/time-field/time-field.js +42 -0
  295. package/dist/components/time-picker/index.js +4 -0
  296. package/dist/components/time-picker/time-picker.js +113 -0
  297. package/dist/components/timeline/timeline.js +70 -66
  298. package/dist/components/timeline-scrubber/timeline-scrubber.js +5 -3
  299. package/dist/components/tldr-section/tldr-section.js +9 -6
  300. package/dist/components/toast/toast.js +32 -11
  301. package/dist/components/toggle/toggle.js +8 -3
  302. package/dist/components/toggle-group/toggle-group.js +20 -6
  303. package/dist/components/toolbar/index.js +8 -0
  304. package/dist/components/toolbar/toolbar.js +87 -0
  305. package/dist/components/tooltip/tooltip.js +7 -3
  306. package/dist/components/top-bar/top-bar.js +30 -24
  307. package/dist/components/transaction-list/transaction-list.js +53 -47
  308. package/dist/components/tree-view/tree-view.js +72 -76
  309. package/dist/components/typewriter/index.js +4 -0
  310. package/dist/components/typewriter/typewriter.js +71 -0
  311. package/dist/components/typography/index.js +26 -0
  312. package/dist/components/typography/typography.js +173 -0
  313. package/dist/components/usage-breakdown/usage-breakdown.js +37 -38
  314. package/dist/components/viewport-bookmarks/viewport-bookmarks.js +5 -5
  315. package/dist/components/wallet-card/wallet-card.js +56 -58
  316. package/dist/components/watchlist/watchlist.js +47 -52
  317. package/dist/components/workspace-switcher/workspace-switcher.js +58 -52
  318. package/dist/components/world-breadcrumbs/world-breadcrumbs.js +43 -45
  319. package/dist/components/world-clock-bar/world-clock-bar.js +34 -61
  320. package/dist/components/zoom-hud/zoom-hud.js +56 -51
  321. package/dist/index.d.ts +6053 -3967
  322. package/dist/index.js +9 -0
  323. package/dist/lib/format.js +14 -0
  324. package/dist/lib/use-body-scroll-lock.js +30 -0
  325. package/dist/lib/use-escape-key.js +24 -0
  326. package/dist/lib/use-live-date.js +26 -0
  327. package/package.json +6 -4
  328. package/styles.css +57 -0
@@ -1,16 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import {
4
- createContext,
5
- useCallback,
6
- useContext,
7
- useMemo,
8
- useState
9
- } from "react";
3
+ import { createContext, use, useCallback, useMemo, useState } from "react";
10
4
  import { cn } from "../../lib/utils";
11
5
  const AccordionContext = createContext(null);
12
6
  function useAccordionContext() {
13
- const context = useContext(AccordionContext);
7
+ const context = use(AccordionContext);
14
8
  if (!context) {
15
9
  throw new Error("AccordionItem must be used within an Accordion");
16
10
  }
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import * as React from "react";
2
+ import { normalizeDate } from "../../lib/format";
3
3
  import { cn } from "../../lib/utils";
4
4
  const WEEKDAY_LABELS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
5
5
  const VISIBLE_DAY_LABELS = /* @__PURE__ */ new Set(["Mon", "Wed", "Fri"]);
@@ -10,12 +10,6 @@ const LEVEL_CLASS_NAMES = [
10
10
  "bg-emerald-500/65",
11
11
  "bg-emerald-500"
12
12
  ];
13
- function normalizeDate(input) {
14
- if (input instanceof Date) {
15
- return new Date(input.getTime());
16
- }
17
- return new Date(input);
18
- }
19
13
  function toUtcDate(date) {
20
14
  return new Date(
21
15
  Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())
@@ -143,28 +137,27 @@ function HeatmapGrid({
143
137
  ] })
144
138
  ] });
145
139
  }
146
- const ActivityHeatmap = React.forwardRef(
147
- ({
148
- as: Heading = "h2",
149
- className,
150
- data,
151
- description,
152
- endDate = /* @__PURE__ */ new Date(),
153
- title = "Activity heatmap",
154
- weeks = 12,
155
- ...props
156
- }, ref) => {
157
- const normalizedEndDate = normalizeDate(endDate);
158
- const gridData = getGridData(data, normalizedEndDate, weeks);
159
- return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4", className), ref, ...props, children: [
160
- /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
161
- /* @__PURE__ */ jsx(Heading, { className: "text-lg font-semibold tracking-tight", children: title }),
162
- description ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description }) : null
163
- ] }),
164
- /* @__PURE__ */ jsx("div", { className: "overflow-x-auto rounded-lg border bg-card p-4 shadow-sm", children: /* @__PURE__ */ jsx(HeatmapGrid, { gridData, weeks }) })
165
- ] });
166
- }
167
- );
140
+ const ActivityHeatmap = ({
141
+ as: Heading = "h2",
142
+ className,
143
+ data,
144
+ description,
145
+ endDate = /* @__PURE__ */ new Date(),
146
+ ref,
147
+ title = "Activity heatmap",
148
+ weeks = 12,
149
+ ...props
150
+ }) => {
151
+ const normalizedEndDate = normalizeDate(endDate);
152
+ const gridData = getGridData(data, normalizedEndDate, weeks);
153
+ return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4", className), ref, ...props, children: [
154
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
155
+ /* @__PURE__ */ jsx(Heading, { className: "text-lg font-semibold tracking-tight", children: title }),
156
+ description ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description }) : null
157
+ ] }),
158
+ /* @__PURE__ */ jsx("div", { className: "overflow-x-auto rounded-lg border bg-card p-4 shadow-sm", children: /* @__PURE__ */ jsx(HeatmapGrid, { gridData, weeks }) })
159
+ ] });
160
+ };
168
161
  ActivityHeatmap.displayName = "ActivityHeatmap";
169
162
  export {
170
163
  ActivityHeatmap
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import { forwardRef, useMemo, useState } from "react";
3
+ import { useMemo, useState } from "react";
4
4
  import { ArrowRight, ChevronLeft, ChevronRight } from "lucide-react";
5
5
  import { cn } from "../../lib/utils";
6
6
  import { Avatar, AvatarFallback } from "../avatar/avatar";
@@ -197,60 +197,59 @@ function ActivityLogBody({
197
197
  ] })
198
198
  ] });
199
199
  }
200
- const ActivityLog = forwardRef(
201
- ({
202
- className,
203
- defaultPage = 1,
204
- description,
205
- emptyMessage = "No activity recorded yet.",
206
- items,
207
- onPageChange,
208
- page,
209
- pageSize = 5,
210
- title = "Activity log",
211
- ...props
212
- }, ref) => {
213
- const totalPages = Math.max(1, Math.ceil(items.length / pageSize));
214
- const [uncontrolledPage, setUncontrolledPage] = useState(defaultPage);
215
- const currentPage = Math.min(
216
- Math.max(page ?? uncontrolledPage, 1),
217
- totalPages
218
- );
219
- const pageNumbers = useMemo(
220
- () => buildPageNumbers(currentPage, totalPages),
221
- [currentPage, totalPages]
222
- );
223
- function handlePageChange(nextPage) {
224
- if (page === void 0) {
225
- setUncontrolledPage(nextPage);
226
- }
227
- onPageChange?.(nextPage);
200
+ const ActivityLog = ({
201
+ className,
202
+ defaultPage = 1,
203
+ description,
204
+ emptyMessage = "No activity recorded yet.",
205
+ items,
206
+ onPageChange,
207
+ page,
208
+ pageSize = 5,
209
+ ref,
210
+ title = "Activity log",
211
+ ...props
212
+ }) => {
213
+ const totalPages = Math.max(1, Math.ceil(items.length / pageSize));
214
+ const [uncontrolledPage, setUncontrolledPage] = useState(defaultPage);
215
+ const currentPage = Math.min(
216
+ Math.max(page ?? uncontrolledPage, 1),
217
+ totalPages
218
+ );
219
+ const pageNumbers = useMemo(
220
+ () => buildPageNumbers(currentPage, totalPages),
221
+ [currentPage, totalPages]
222
+ );
223
+ function handlePageChange(nextPage) {
224
+ if (page === void 0) {
225
+ setUncontrolledPage(nextPage);
228
226
  }
229
- return /* @__PURE__ */ jsxs(Card, { className: cn("w-full", className), ref, ...props, children: [
230
- /* @__PURE__ */ jsx(
231
- ActivityLogHeader,
232
- {
233
- currentPage,
234
- description,
235
- title,
236
- totalPages
237
- }
238
- ),
239
- /* @__PURE__ */ jsx(CardContent, { className: "space-y-4", children: /* @__PURE__ */ jsx(
240
- ActivityLogBody,
241
- {
242
- currentPage,
243
- emptyMessage,
244
- items,
245
- onPageChange: handlePageChange,
246
- pageNumbers,
247
- pageSize,
248
- totalPages
249
- }
250
- ) })
251
- ] });
227
+ onPageChange?.(nextPage);
252
228
  }
253
- );
229
+ return /* @__PURE__ */ jsxs(Card, { className: cn("w-full", className), ref, ...props, children: [
230
+ /* @__PURE__ */ jsx(
231
+ ActivityLogHeader,
232
+ {
233
+ currentPage,
234
+ description,
235
+ title,
236
+ totalPages
237
+ }
238
+ ),
239
+ /* @__PURE__ */ jsx(CardContent, { className: "space-y-4", children: /* @__PURE__ */ jsx(
240
+ ActivityLogBody,
241
+ {
242
+ currentPage,
243
+ emptyMessage,
244
+ items,
245
+ onPageChange: handlePageChange,
246
+ pageNumbers,
247
+ pageSize,
248
+ totalPages
249
+ }
250
+ ) })
251
+ ] });
252
+ };
254
253
  ActivityLog.displayName = "ActivityLog";
255
254
  export {
256
255
  ActivityLog
@@ -2,9 +2,8 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import {
4
4
  createContext,
5
- forwardRef,
5
+ use,
6
6
  useCallback,
7
- useContext,
8
7
  useId,
9
8
  useMemo,
10
9
  useState
@@ -66,50 +65,51 @@ const ACTIVITY_LIVE_REGION_ROLE = {
66
65
  idle: "status",
67
66
  running: "log"
68
67
  };
69
- const AgentActivity = forwardRef(
70
- (props, ref) => {
71
- const {
72
- children,
73
- className,
74
- elapsed,
75
- labels,
76
- status = "idle",
77
- ...rest
78
- } = props;
79
- const resolvedLabels = useMemo(
80
- () => ({ ...DEFAULT_LABELS, ...labels }),
81
- [labels]
82
- );
83
- return /* @__PURE__ */ jsx(AgentActivityLabelsContext.Provider, { value: resolvedLabels, children: /* @__PURE__ */ jsxs(
84
- "section",
85
- {
86
- "aria-live": status === "running" ? "polite" : "off",
87
- className: cn(
88
- "flex flex-col gap-3 rounded-2xl border bg-background p-4",
89
- className
90
- ),
91
- "data-status": status,
92
- ref,
93
- role: ACTIVITY_LIVE_REGION_ROLE[status],
94
- ...rest,
95
- children: [
96
- /* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between gap-3", children: [
97
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold tracking-tight text-foreground", children: resolvedLabels.activity }),
98
- elapsed ? /* @__PURE__ */ jsx(
99
- "span",
100
- {
101
- "aria-label": resolvedLabels.elapsed,
102
- className: "text-xs font-mono text-muted-foreground",
103
- children: elapsed
104
- }
105
- ) : null
106
- ] }),
107
- /* @__PURE__ */ jsx("ol", { className: "flex flex-col gap-2", children })
108
- ]
109
- }
110
- ) });
111
- }
112
- );
68
+ const AgentActivity = ({
69
+ ref,
70
+ ...props
71
+ }) => {
72
+ const {
73
+ children,
74
+ className,
75
+ elapsed,
76
+ labels,
77
+ status = "idle",
78
+ ...rest
79
+ } = props;
80
+ const resolvedLabels = useMemo(
81
+ () => ({ ...DEFAULT_LABELS, ...labels }),
82
+ [labels]
83
+ );
84
+ return /* @__PURE__ */ jsx(AgentActivityLabelsContext.Provider, { value: resolvedLabels, children: /* @__PURE__ */ jsxs(
85
+ "section",
86
+ {
87
+ "aria-live": status === "running" ? "polite" : "off",
88
+ className: cn(
89
+ "flex flex-col gap-3 rounded-2xl border bg-background p-4",
90
+ className
91
+ ),
92
+ "data-status": status,
93
+ ref,
94
+ role: ACTIVITY_LIVE_REGION_ROLE[status],
95
+ ...rest,
96
+ children: [
97
+ /* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between gap-3", children: [
98
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold tracking-tight text-foreground", children: resolvedLabels.activity }),
99
+ elapsed ? /* @__PURE__ */ jsx(
100
+ "span",
101
+ {
102
+ "aria-label": resolvedLabels.elapsed,
103
+ className: "text-xs font-mono text-muted-foreground",
104
+ children: elapsed
105
+ }
106
+ ) : null
107
+ ] }),
108
+ /* @__PURE__ */ jsx("ol", { className: "flex flex-col gap-2", children })
109
+ ]
110
+ }
111
+ ) });
112
+ };
113
113
  AgentActivity.displayName = "AgentActivity";
114
114
  function getDisplayName(value) {
115
115
  if (value !== null && (typeof value === "object" || typeof value === "function") && "displayName" in value && typeof value.displayName === "string") {
@@ -182,72 +182,74 @@ function StepRow({
182
182
  ) : null
183
183
  ] });
184
184
  }
185
- const AgentStep = forwardRef(
186
- (props, ref) => {
187
- const {
188
- children,
189
- className,
190
- defaultOpen = true,
191
- icon,
192
- status,
193
- ...rest
194
- } = props;
195
- const split = useMemo(() => splitChildren(children), [children]);
196
- const palette = STATUS_CLASSES[status];
197
- const hasDetails = split.body.length > 0;
198
- const [open, setOpen] = useState(defaultOpen);
199
- const detailsId = useId();
200
- const labels = useContext(AgentActivityLabelsContext);
201
- const handleToggle = useCallback(() => {
202
- setOpen((value) => !value);
203
- }, []);
204
- const contextValue = useMemo(
205
- () => ({ status }),
206
- [status]
207
- );
208
- const resolvedIcon = icon ?? DEFAULT_STATUS_ICON[status];
209
- return /* @__PURE__ */ jsx(
210
- "li",
211
- {
212
- className: cn(
213
- "rounded-xl border ring-1",
214
- palette.rowClass,
215
- palette.ringClass,
216
- className
185
+ const AgentStep = ({
186
+ ref,
187
+ ...props
188
+ }) => {
189
+ const {
190
+ children,
191
+ className,
192
+ defaultOpen = true,
193
+ icon,
194
+ status,
195
+ ...rest
196
+ } = props;
197
+ const split = useMemo(() => splitChildren(children), [children]);
198
+ const palette = STATUS_CLASSES[status];
199
+ const hasDetails = split.body.length > 0;
200
+ const [open, setOpen] = useState(defaultOpen);
201
+ const detailsId = useId();
202
+ const labels = use(AgentActivityLabelsContext);
203
+ const handleToggle = useCallback(() => {
204
+ setOpen((value) => !value);
205
+ }, []);
206
+ const contextValue = useMemo(() => ({ status }), [status]);
207
+ const resolvedIcon = icon ?? DEFAULT_STATUS_ICON[status];
208
+ return /* @__PURE__ */ jsx(
209
+ "li",
210
+ {
211
+ className: cn(
212
+ "rounded-xl border ring-1",
213
+ palette.rowClass,
214
+ palette.ringClass,
215
+ className
216
+ ),
217
+ "data-status": status,
218
+ ref,
219
+ ...rest,
220
+ children: /* @__PURE__ */ jsxs(StepContext.Provider, { value: contextValue, children: [
221
+ /* @__PURE__ */ jsx(
222
+ StepRow,
223
+ {
224
+ detailsId,
225
+ hasDetails,
226
+ header: split.header,
227
+ icon: resolvedIcon,
228
+ iconClass: palette.iconClass,
229
+ labels,
230
+ onToggle: handleToggle,
231
+ open
232
+ }
217
233
  ),
218
- "data-status": status,
219
- ref,
220
- ...rest,
221
- children: /* @__PURE__ */ jsxs(StepContext.Provider, { value: contextValue, children: [
222
- /* @__PURE__ */ jsx(
223
- StepRow,
224
- {
225
- detailsId,
226
- hasDetails,
227
- header: split.header,
228
- icon: resolvedIcon,
229
- iconClass: palette.iconClass,
230
- labels,
231
- onToggle: handleToggle,
232
- open
233
- }
234
- ),
235
- hasDetails ? /* @__PURE__ */ jsx(
236
- "div",
237
- {
238
- className: "border-t border-border/60 px-3 py-2 text-xs",
239
- hidden: !open,
240
- id: detailsId,
241
- children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 pl-8", children: split.body })
242
- }
243
- ) : null
244
- ] })
245
- }
246
- );
247
- }
248
- );
234
+ hasDetails ? /* @__PURE__ */ jsx(
235
+ "div",
236
+ {
237
+ className: "border-t border-border/60 px-3 py-2 text-xs",
238
+ hidden: !open,
239
+ id: detailsId,
240
+ children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 pl-8", children: split.body })
241
+ }
242
+ ) : null
243
+ ] })
244
+ }
245
+ );
246
+ };
249
247
  AgentStep.displayName = "AgentStep";
250
- const AgentStepTitle = forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
248
+ const AgentStepTitle = ({
249
+ className,
250
+ ref,
251
+ ...rest
252
+ }) => /* @__PURE__ */ jsx(
251
253
  "p",
252
254
  {
253
255
  className: cn(
@@ -257,18 +259,28 @@ const AgentStepTitle = forwardRef(({ className, ...rest }, ref) => /* @__PURE__
257
259
  ref,
258
260
  ...rest
259
261
  }
260
- ));
262
+ );
261
263
  AgentStepTitle.displayName = "AgentStepTitle";
262
- const AgentStepDuration = forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
264
+ const AgentStepDuration = ({
265
+ className,
266
+ ref,
267
+ ...rest
268
+ }) => /* @__PURE__ */ jsx(
263
269
  "span",
264
270
  {
265
271
  className: cn("font-mono text-xs text-muted-foreground", className),
266
272
  ref,
267
273
  ...rest
268
274
  }
269
- ));
275
+ );
270
276
  AgentStepDuration.displayName = "AgentStepDuration";
271
- const AgentStepProgress = forwardRef(({ className, label = "Step progress", value, ...rest }, ref) => {
277
+ const AgentStepProgress = ({
278
+ className,
279
+ label = "Step progress",
280
+ ref,
281
+ value,
282
+ ...rest
283
+ }) => {
272
284
  const clamped = Math.max(0, Math.min(100, value));
273
285
  return /* @__PURE__ */ jsx(
274
286
  "div",
@@ -290,21 +302,23 @@ const AgentStepProgress = forwardRef(({ className, label = "Step progress", valu
290
302
  )
291
303
  }
292
304
  );
293
- });
305
+ };
294
306
  AgentStepProgress.displayName = "AgentStepProgress";
295
- const AgentStepDetail = forwardRef(
296
- ({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
297
- "div",
298
- {
299
- className: cn("text-xs text-muted-foreground", className),
300
- ref,
301
- ...rest
302
- }
303
- )
307
+ const AgentStepDetail = ({
308
+ className,
309
+ ref,
310
+ ...rest
311
+ }) => /* @__PURE__ */ jsx(
312
+ "div",
313
+ {
314
+ className: cn("text-xs text-muted-foreground", className),
315
+ ref,
316
+ ...rest
317
+ }
304
318
  );
305
319
  AgentStepDetail.displayName = "AgentStepDetail";
306
320
  function useAgentStepStatus() {
307
- return useContext(StepContext).status;
321
+ return use(StepContext).status;
308
322
  }
309
323
  export {
310
324
  AgentActivity,