@vllnt/ui 0.3.0-canary.f3cafe8 → 0.3.0

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 (336) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +1 -1
  3. package/dist/components/accordion/accordion.js +2 -8
  4. package/dist/components/activity-heatmap/activity-heatmap.js +22 -29
  5. package/dist/components/activity-log/activity-log.js +52 -53
  6. package/dist/components/agent-activity/agent-activity.js +139 -125
  7. package/dist/components/ai-artifact/ai-artifact.js +115 -76
  8. package/dist/components/ai-chat-input/ai-chat-input.js +59 -61
  9. package/dist/components/ai-message-bubble/ai-message-bubble.js +63 -65
  10. package/dist/components/ai-sidebar/ai-sidebar.js +77 -55
  11. package/dist/components/ai-source-citation/ai-source-citation.js +38 -32
  12. package/dist/components/ai-streaming-text/ai-streaming-text.js +33 -35
  13. package/dist/components/ai-tool-call-display/ai-tool-call-display.js +58 -60
  14. package/dist/components/alert/alert.js +20 -7
  15. package/dist/components/alert-dialog/alert-dialog.js +36 -13
  16. package/dist/components/alert-pulse/alert-pulse.js +69 -69
  17. package/dist/components/anchor-port/anchor-port.js +26 -28
  18. package/dist/components/animated-beam/animated-beam.js +157 -0
  19. package/dist/components/animated-beam/index.js +4 -0
  20. package/dist/components/animated-grid-pattern/animated-grid-pattern.js +81 -0
  21. package/dist/components/animated-grid-pattern/index.js +6 -0
  22. package/dist/components/animated-list/animated-list.js +28 -0
  23. package/dist/components/animated-list/index.js +4 -0
  24. package/dist/components/animated-tabs/animated-tabs.js +98 -0
  25. package/dist/components/animated-tabs/index.js +6 -0
  26. package/dist/components/animated-testimonials/animated-testimonials.js +97 -0
  27. package/dist/components/animated-testimonials/index.js +6 -0
  28. package/dist/components/animated-text/animated-text.js +66 -67
  29. package/dist/components/animated-tooltip/animated-tooltip.js +58 -0
  30. package/dist/components/animated-tooltip/index.js +6 -0
  31. package/dist/components/auto-reload/auto-reload.js +109 -105
  32. package/dist/components/avatar/avatar.js +18 -7
  33. package/dist/components/avatar-group/avatar-group.js +35 -30
  34. package/dist/components/banner/banner.js +80 -77
  35. package/dist/components/bento-grid/bento-grid.js +46 -0
  36. package/dist/components/bento-grid/index.js +8 -0
  37. package/dist/components/blur-reveal/blur-reveal.js +83 -0
  38. package/dist/components/blur-reveal/index.js +4 -0
  39. package/dist/components/border-beam/border-beam.js +43 -45
  40. package/dist/components/bottom-activity-strip/bottom-activity-strip.js +5 -5
  41. package/dist/components/bottom-bar/bottom-bar.js +22 -18
  42. package/dist/components/button/button.js +18 -14
  43. package/dist/components/button-group/button-group.js +37 -0
  44. package/dist/components/button-group/index.js +8 -0
  45. package/dist/components/candlestick-chart/candlestick-chart.js +52 -54
  46. package/dist/components/canvas-shell/canvas-shell.js +11 -6
  47. package/dist/components/canvas-view/canvas-view.js +72 -74
  48. package/dist/components/card/card.js +35 -12
  49. package/dist/components/card-flip/card-flip.js +67 -0
  50. package/dist/components/card-flip/index.js +4 -0
  51. package/dist/components/carousel/carousel.js +78 -60
  52. package/dist/components/chain-of-thought/chain-of-thought.js +78 -0
  53. package/dist/components/chain-of-thought/index.js +6 -0
  54. package/dist/components/chart/area-chart.js +66 -67
  55. package/dist/components/chart/bar-chart.js +68 -70
  56. package/dist/components/chart/line-chart.js +69 -70
  57. package/dist/components/chat-dock-section/chat-dock-section.js +43 -45
  58. package/dist/components/checkbox/checkbox.js +6 -3
  59. package/dist/components/checkbox-group/checkbox-group.js +98 -0
  60. package/dist/components/checkbox-group/index.js +8 -0
  61. package/dist/components/choropleth-map/choropleth-map.js +90 -82
  62. package/dist/components/chronological-timeline/chronological-timeline.js +75 -72
  63. package/dist/components/civilization-card/civilization-card.js +59 -56
  64. package/dist/components/code-block/code-block.js +14 -17
  65. package/dist/components/code-playground/code-playground.js +8 -9
  66. package/dist/components/color-picker/color-picker.js +133 -0
  67. package/dist/components/color-picker/index.js +4 -0
  68. package/dist/components/combobox/combobox.js +57 -58
  69. package/dist/components/command/command.js +42 -15
  70. package/dist/components/comment-pin/comment-pin.js +58 -60
  71. package/dist/components/connector-edge/connector-edge.js +59 -54
  72. package/dist/components/content-intro/content-intro.js +4 -1
  73. package/dist/components/context-lens/context-lens.js +74 -73
  74. package/dist/components/context-menu/context-menu.js +55 -17
  75. package/dist/components/contribution-graph/contribution-graph.js +118 -0
  76. package/dist/components/contribution-graph/index.js +6 -0
  77. package/dist/components/conversation-thread/conversation-thread.js +89 -65
  78. package/dist/components/cookie-consent/cookie-consent.js +114 -115
  79. package/dist/components/copy-button/copy-button.js +100 -103
  80. package/dist/components/countdown-timer/countdown-timer.js +47 -75
  81. package/dist/components/credit-badge/credit-badge.js +26 -22
  82. package/dist/components/curriculum/curriculum.js +2 -2
  83. package/dist/components/cursor/cursor.js +52 -0
  84. package/dist/components/cursor/index.js +4 -0
  85. package/dist/components/data-list/data-list.js +54 -40
  86. package/dist/components/date-field/date-field.js +42 -0
  87. package/dist/components/date-field/index.js +4 -0
  88. package/dist/components/date-picker/date-picker.js +49 -50
  89. package/dist/components/date-range-picker/date-range-picker.js +73 -0
  90. package/dist/components/date-range-picker/index.js +6 -0
  91. package/dist/components/dialog/dialog.js +25 -9
  92. package/dist/components/dock/dock.js +109 -0
  93. package/dist/components/dock/index.js +5 -0
  94. package/dist/components/document-sibling-nav/document-sibling-nav.js +10 -5
  95. package/dist/components/dot-pattern/dot-pattern.js +36 -0
  96. package/dist/components/dot-pattern/index.js +4 -0
  97. package/dist/components/drawer/drawer.js +25 -9
  98. package/dist/components/dropdown-menu/dropdown-menu.js +56 -17
  99. package/dist/components/edge-label/edge-label.js +17 -15
  100. package/dist/components/empty-state/empty-state.js +27 -31
  101. package/dist/components/era-comparison/era-comparison.js +96 -83
  102. package/dist/components/expandable-cards/expandable-cards.js +61 -0
  103. package/dist/components/expandable-cards/index.js +6 -0
  104. package/dist/components/field/field.js +137 -0
  105. package/dist/components/field/index.js +16 -0
  106. package/dist/components/fieldset/fieldset.js +49 -0
  107. package/dist/components/fieldset/index.js +10 -0
  108. package/dist/components/file-upload/file-upload.js +4 -3
  109. package/dist/components/floating-navbar/floating-navbar.js +67 -0
  110. package/dist/components/floating-navbar/index.js +4 -0
  111. package/dist/components/floating-toolbar/floating-toolbar.js +49 -51
  112. package/dist/components/flow-diagram/flow-fullscreen.js +3 -13
  113. package/dist/components/flow-diagram/use-flow-diagram.js +7 -18
  114. package/dist/components/follow-mode/follow-mode.js +67 -69
  115. package/dist/components/form/form.js +131 -112
  116. package/dist/components/gantt-chart/gantt-chart.js +49 -51
  117. package/dist/components/gauge-chart/gauge-chart.js +132 -0
  118. package/dist/components/gauge-chart/index.js +4 -0
  119. package/dist/components/geography-quiz-map/geography-quiz-map.js +88 -78
  120. package/dist/components/glass-card/glass-card.js +25 -0
  121. package/dist/components/glass-card/index.js +4 -0
  122. package/dist/components/glass-panel/glass-panel.js +16 -14
  123. package/dist/components/glass-progress/glass-progress.js +39 -0
  124. package/dist/components/glass-progress/index.js +4 -0
  125. package/dist/components/globe-3d/globe-3d.js +70 -66
  126. package/dist/components/grid/grid.js +100 -0
  127. package/dist/components/grid/index.js +4 -0
  128. package/dist/components/group-hull/group-hull.js +27 -22
  129. package/dist/components/handoff-beacon/handoff-beacon.js +55 -57
  130. package/dist/components/heat-map-overlay/heat-map-overlay.js +55 -55
  131. package/dist/components/heat-overlay/heat-overlay.js +49 -48
  132. package/dist/components/historic-timeline/historic-timeline.js +57 -59
  133. package/dist/components/historical-figure-card/historical-figure-card.js +5 -3
  134. package/dist/components/hover-card/hover-card.js +8 -3
  135. package/dist/components/index.js +271 -0
  136. package/dist/components/infinite-plane/infinite-plane.js +34 -36
  137. package/dist/components/input/input.js +19 -17
  138. package/dist/components/input-group/index.js +14 -0
  139. package/dist/components/input-group/input-group.js +73 -0
  140. package/dist/components/input-otp/input-otp.js +25 -8
  141. package/dist/components/interactive-timeline/interactive-timeline.js +38 -15
  142. package/dist/components/item/index.js +18 -0
  143. package/dist/components/item/item.js +118 -0
  144. package/dist/components/jarvis-dock/jarvis-dock.js +40 -42
  145. package/dist/components/kbd/kbd.js +31 -42
  146. package/dist/components/keyboard-shortcuts-help/keyboard-shortcuts-help.js +7 -18
  147. package/dist/components/knowledge-check/knowledge-check.js +50 -58
  148. package/dist/components/label/label.js +6 -3
  149. package/dist/components/left-rail/left-rail.js +22 -18
  150. package/dist/components/link/index.js +5 -0
  151. package/dist/components/link/link.js +53 -0
  152. package/dist/components/liquid-glass/index.js +4 -0
  153. package/dist/components/liquid-glass/liquid-glass.js +39 -0
  154. package/dist/components/list-box/index.js +8 -0
  155. package/dist/components/list-box/list-box.js +130 -0
  156. package/dist/components/live-cursor/live-cursor.js +49 -51
  157. package/dist/components/live-feed/live-feed.js +51 -76
  158. package/dist/components/magnetic/index.js +4 -0
  159. package/dist/components/magnetic/magnetic.js +63 -0
  160. package/dist/components/magnetic-button/index.js +4 -0
  161. package/dist/components/magnetic-button/magnetic-button.js +64 -0
  162. package/dist/components/map-2d/map-2d.js +120 -101
  163. package/dist/components/map-timeline/map-timeline.js +188 -170
  164. package/dist/components/market-treemap/market-treemap.js +10 -6
  165. package/dist/components/marquee/marquee.js +64 -65
  166. package/dist/components/mdx-content/mdx-content.js +4 -1
  167. package/dist/components/menubar/menubar.js +82 -35
  168. package/dist/components/meteors/index.js +4 -0
  169. package/dist/components/meteors/meteors.js +62 -0
  170. package/dist/components/meter/index.js +5 -0
  171. package/dist/components/meter/meter.js +76 -0
  172. package/dist/components/metric-cluster/metric-cluster.js +47 -49
  173. package/dist/components/metric-gauge/metric-gauge.js +42 -44
  174. package/dist/components/mini-map-panel/mini-map-panel.js +71 -66
  175. package/dist/components/model-comparison/model-comparison.js +76 -67
  176. package/dist/components/multi-select/multi-select.js +100 -102
  177. package/dist/components/multi-select-lasso/multi-select-lasso.js +5 -5
  178. package/dist/components/native-select/index.js +4 -0
  179. package/dist/components/native-select/native-select.js +28 -0
  180. package/dist/components/navbar-saas/navbar-saas.js +54 -46
  181. package/dist/components/navigation-menu/navigation-menu.js +38 -13
  182. package/dist/components/newsletter-signup/newsletter-signup.js +5 -3
  183. package/dist/components/number-input/number-input.js +4 -3
  184. package/dist/components/number-ticker/number-ticker.js +50 -51
  185. package/dist/components/object-card/object-card.js +40 -42
  186. package/dist/components/object-handle/object-handle.js +33 -30
  187. package/dist/components/object-inspector/object-inspector.js +40 -42
  188. package/dist/components/order-book/order-book.js +59 -54
  189. package/dist/components/overview-board/overview-board.js +91 -87
  190. package/dist/components/panel/index.js +16 -0
  191. package/dist/components/panel/panel.js +95 -0
  192. package/dist/components/parallel-timeline/parallel-timeline.js +54 -56
  193. package/dist/components/particles/index.js +4 -0
  194. package/dist/components/particles/particles.js +52 -0
  195. package/dist/components/password-input/password-input.js +35 -36
  196. package/dist/components/phone-input/index.js +6 -0
  197. package/dist/components/phone-input/phone-input.js +63 -0
  198. package/dist/components/pie-chart/index.js +4 -0
  199. package/dist/components/pie-chart/pie-chart.js +130 -0
  200. package/dist/components/plan-badge/plan-badge.js +28 -24
  201. package/dist/components/playback-ghost/playback-ghost.js +46 -48
  202. package/dist/components/policy-delivery-panel/policy-delivery-panel.js +5 -5
  203. package/dist/components/popover/popover.js +8 -3
  204. package/dist/components/presence-stack/presence-stack.js +39 -41
  205. package/dist/components/presence-sync-indicator/presence-sync-indicator.js +5 -5
  206. package/dist/components/pricing-table/pricing-table.js +71 -70
  207. package/dist/components/primary-source-viewer/primary-source-viewer.js +90 -41
  208. package/dist/components/progress-tracker/progress-tracker.js +1 -1
  209. package/dist/components/progressive-blur/index.js +6 -0
  210. package/dist/components/progressive-blur/progressive-blur.js +48 -0
  211. package/dist/components/prompt-input/index.js +4 -0
  212. package/dist/components/prompt-input/prompt-input.js +185 -0
  213. package/dist/components/prompt-templates/prompt-templates.js +36 -36
  214. package/dist/components/property-section/property-section.js +28 -30
  215. package/dist/components/qr-code/index.js +4 -0
  216. package/dist/components/qr-code/qr-code.js +49 -0
  217. package/dist/components/radar-chart/index.js +6 -0
  218. package/dist/components/radar-chart/radar-chart.js +180 -0
  219. package/dist/components/radio-group/radio-group.js +12 -5
  220. package/dist/components/range-calendar/index.js +4 -0
  221. package/dist/components/range-calendar/range-calendar.js +35 -0
  222. package/dist/components/reasoning/index.js +4 -0
  223. package/dist/components/reasoning/reasoning.js +124 -0
  224. package/dist/components/relationship-inspector/relationship-inspector.js +5 -5
  225. package/dist/components/reveal-text/index.js +6 -0
  226. package/dist/components/reveal-text/reveal-text.js +93 -0
  227. package/dist/components/right-dock/right-dock.js +26 -21
  228. package/dist/components/role-badge/role-badge.js +22 -19
  229. package/dist/components/route-map/route-map.js +5 -3
  230. package/dist/components/routing-assignment-panel/routing-assignment-panel.js +5 -5
  231. package/dist/components/run-timeline/run-timeline.js +57 -59
  232. package/dist/components/runtime-overview-panel/runtime-overview-panel.js +5 -5
  233. package/dist/components/sankey-chart/index.js +6 -0
  234. package/dist/components/sankey-chart/sankey-chart.js +255 -0
  235. package/dist/components/scope-selector/scope-selector.js +39 -40
  236. package/dist/components/scramble-text/index.js +4 -0
  237. package/dist/components/scramble-text/scramble-text.js +76 -0
  238. package/dist/components/scroll-area/scroll-area.js +14 -5
  239. package/dist/components/scroll-progress/index.js +4 -0
  240. package/dist/components/scroll-progress/scroll-progress.js +50 -0
  241. package/dist/components/search-bar/search-bar.js +5 -2
  242. package/dist/components/search-field/index.js +4 -0
  243. package/dist/components/search-field/search-field.js +67 -0
  244. package/dist/components/segmented-control/segmented-control.js +14 -5
  245. package/dist/components/select/select.js +46 -15
  246. package/dist/components/selection-halo/selection-halo.js +53 -62
  247. package/dist/components/selection-presence/selection-presence.js +5 -5
  248. package/dist/components/separator/separator.js +19 -16
  249. package/dist/components/share-dialog/share-dialog.js +6 -8
  250. package/dist/components/sheet/sheet.js +26 -9
  251. package/dist/components/shimmer-button/index.js +4 -0
  252. package/dist/components/shimmer-button/shimmer-button.js +41 -0
  253. package/dist/components/shimmer-text/index.js +4 -0
  254. package/dist/components/shimmer-text/shimmer-text.js +40 -0
  255. package/dist/components/shine-border/index.js +4 -0
  256. package/dist/components/shine-border/shine-border.js +38 -0
  257. package/dist/components/shiny-button/index.js +4 -0
  258. package/dist/components/shiny-button/shiny-button.js +39 -0
  259. package/dist/components/sidebar-provider/sidebar-provider.js +2 -7
  260. package/dist/components/slider/slider.js +6 -3
  261. package/dist/components/slideshow/slideshow.js +380 -302
  262. package/dist/components/snap-guides/snap-guides.js +35 -35
  263. package/dist/components/sparkles/index.js +4 -0
  264. package/dist/components/sparkles/sparkles.js +51 -0
  265. package/dist/components/sparkline-grid/sparkline-grid.js +6 -7
  266. package/dist/components/spinner/unicode-spinner.js +57 -56
  267. package/dist/components/spinning-text/index.js +4 -0
  268. package/dist/components/spinning-text/spinning-text.js +58 -0
  269. package/dist/components/spotlight-card/index.js +4 -0
  270. package/dist/components/spotlight-card/spotlight-card.js +53 -0
  271. package/dist/components/stat-card/stat-card.js +37 -39
  272. package/dist/components/state-badge-overlay/state-badge-overlay.js +5 -5
  273. package/dist/components/status-board/status-board.js +20 -22
  274. package/dist/components/status-indicator/status-indicator.js +38 -40
  275. package/dist/components/sticky-metric/sticky-metric.js +58 -60
  276. package/dist/components/story-map/story-map.js +66 -60
  277. package/dist/components/subscription-card/subscription-card.js +68 -70
  278. package/dist/components/switch/switch.js +6 -3
  279. package/dist/components/table/table.js +47 -16
  280. package/dist/components/table-of-contents-panel/table-of-contents-panel.js +7 -18
  281. package/dist/components/tabs/tabs.js +2 -2
  282. package/dist/components/tag-group/index.js +8 -0
  283. package/dist/components/tag-group/tag-group.js +127 -0
  284. package/dist/components/tags-input/tags-input.js +59 -60
  285. package/dist/components/terminal/terminal.js +7 -15
  286. package/dist/components/text-animate/index.js +6 -0
  287. package/dist/components/text-animate/text-animate.js +129 -0
  288. package/dist/components/text-field/index.js +4 -0
  289. package/dist/components/text-field/text-field.js +59 -0
  290. package/dist/components/text-reveal/index.js +4 -0
  291. package/dist/components/text-reveal/text-reveal.js +90 -0
  292. package/dist/components/text-shimmer/index.js +4 -0
  293. package/dist/components/text-shimmer/text-shimmer.js +33 -0
  294. package/dist/components/textarea/textarea.js +17 -16
  295. package/dist/components/thinking-block/thinking-block.js +1 -1
  296. package/dist/components/thread-bubble/thread-bubble.js +51 -53
  297. package/dist/components/threshold-ring/threshold-ring.js +76 -78
  298. package/dist/components/ticker-tape/ticker-tape.js +47 -46
  299. package/dist/components/tilt-card/index.js +4 -0
  300. package/dist/components/tilt-card/tilt-card.js +70 -0
  301. package/dist/components/time-field/index.js +4 -0
  302. package/dist/components/time-field/time-field.js +42 -0
  303. package/dist/components/time-picker/index.js +4 -0
  304. package/dist/components/time-picker/time-picker.js +113 -0
  305. package/dist/components/timeline/timeline.js +70 -66
  306. package/dist/components/timeline-scrubber/timeline-scrubber.js +5 -3
  307. package/dist/components/tldr-section/tldr-section.js +9 -6
  308. package/dist/components/toast/toast.js +32 -11
  309. package/dist/components/toggle/toggle.js +8 -3
  310. package/dist/components/toggle-group/toggle-group.js +20 -6
  311. package/dist/components/toolbar/index.js +8 -0
  312. package/dist/components/toolbar/toolbar.js +87 -0
  313. package/dist/components/tooltip/tooltip.js +7 -3
  314. package/dist/components/top-bar/top-bar.js +30 -24
  315. package/dist/components/transaction-list/transaction-list.js +53 -47
  316. package/dist/components/tree-view/tree-view.js +72 -76
  317. package/dist/components/typewriter/index.js +4 -0
  318. package/dist/components/typewriter/typewriter.js +71 -0
  319. package/dist/components/typography/index.js +26 -0
  320. package/dist/components/typography/typography.js +173 -0
  321. package/dist/components/usage-breakdown/usage-breakdown.js +37 -38
  322. package/dist/components/viewport-bookmarks/viewport-bookmarks.js +5 -5
  323. package/dist/components/wallet-card/wallet-card.js +56 -58
  324. package/dist/components/watchlist/watchlist.js +47 -52
  325. package/dist/components/workspace-switcher/workspace-switcher.js +58 -52
  326. package/dist/components/world-breadcrumbs/world-breadcrumbs.js +43 -45
  327. package/dist/components/world-clock-bar/world-clock-bar.js +34 -61
  328. package/dist/components/zoom-hud/zoom-hud.js +56 -51
  329. package/dist/index.d.ts +6132 -3949
  330. package/dist/index.js +9 -0
  331. package/dist/lib/format.js +14 -0
  332. package/dist/lib/use-body-scroll-lock.js +30 -0
  333. package/dist/lib/use-escape-key.js +24 -0
  334. package/dist/lib/use-live-date.js +26 -0
  335. package/package.json +7 -5
  336. package/styles.css +84 -0
@@ -0,0 +1,14 @@
1
+ import {
2
+ InputGroup,
3
+ InputGroupAddon,
4
+ inputGroupAddonVariants,
5
+ InputGroupInput,
6
+ inputGroupVariants
7
+ } from "./input-group";
8
+ export {
9
+ InputGroup,
10
+ InputGroupAddon,
11
+ InputGroupInput,
12
+ inputGroupAddonVariants,
13
+ inputGroupVariants
14
+ };
@@ -0,0 +1,73 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../../lib/utils";
4
+ const inputGroupVariants = cva(
5
+ "flex w-full items-center overflow-hidden rounded-md border border-input bg-background text-sm ring-offset-background focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 has-[input:disabled]:cursor-not-allowed has-[input:disabled]:opacity-50"
6
+ );
7
+ const inputGroupAddonVariants = cva(
8
+ "flex shrink-0 items-center text-muted-foreground [&_svg]:size-4 [&_svg]:shrink-0",
9
+ {
10
+ defaultVariants: {
11
+ align: "leading"
12
+ },
13
+ variants: {
14
+ align: {
15
+ leading: "pl-3",
16
+ trailing: "pr-3"
17
+ }
18
+ }
19
+ }
20
+ );
21
+ const InputGroup = ({
22
+ className,
23
+ ref,
24
+ ...props
25
+ }) => /* @__PURE__ */ jsx(
26
+ "div",
27
+ {
28
+ className: cn(inputGroupVariants(), className),
29
+ "data-slot": "input-group",
30
+ ref,
31
+ role: "group",
32
+ ...props
33
+ }
34
+ );
35
+ InputGroup.displayName = "InputGroup";
36
+ const InputGroupAddon = ({
37
+ align,
38
+ className,
39
+ ref,
40
+ ...props
41
+ }) => /* @__PURE__ */ jsx(
42
+ "div",
43
+ {
44
+ className: cn(inputGroupAddonVariants({ align }), className),
45
+ "data-slot": "input-group-addon",
46
+ ref,
47
+ ...props
48
+ }
49
+ );
50
+ InputGroupAddon.displayName = "InputGroupAddon";
51
+ const InputGroupInput = ({
52
+ className,
53
+ ref,
54
+ ...props
55
+ }) => /* @__PURE__ */ jsx(
56
+ "input",
57
+ {
58
+ className: cn(
59
+ "h-10 w-full flex-1 bg-transparent px-3 py-2 placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed",
60
+ className
61
+ ),
62
+ ref,
63
+ ...props
64
+ }
65
+ );
66
+ InputGroupInput.displayName = "InputGroupInput";
67
+ export {
68
+ InputGroup,
69
+ InputGroupAddon,
70
+ InputGroupInput,
71
+ inputGroupAddonVariants,
72
+ inputGroupVariants
73
+ };
@@ -1,10 +1,15 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { forwardRef, useContext } from "react";
3
+ import { use } from "react";
4
4
  import { OTPInput, OTPInputContext } from "input-otp";
5
5
  import { Dot } from "lucide-react";
6
6
  import { cn } from "../../lib/utils";
7
- const InputOTP = forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ const InputOTP = ({
8
+ className,
9
+ containerClassName,
10
+ ref,
11
+ ...props
12
+ }) => /* @__PURE__ */ jsx(
8
13
  OTPInput,
9
14
  {
10
15
  className: cn("disabled:cursor-not-allowed", className),
@@ -15,12 +20,21 @@ const InputOTP = forwardRef(({ className, containerClassName, ...props }, ref) =
15
20
  ref,
16
21
  ...props
17
22
  }
18
- ));
23
+ );
19
24
  InputOTP.displayName = "InputOTP";
20
- const InputOTPGroup = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("flex items-center", className), ref, ...props }));
25
+ const InputOTPGroup = ({
26
+ className,
27
+ ref,
28
+ ...props
29
+ }) => /* @__PURE__ */ jsx("div", { className: cn("flex items-center", className), ref, ...props });
21
30
  InputOTPGroup.displayName = "InputOTPGroup";
22
- const InputOTPSlot = forwardRef(({ className, index, ...props }, ref) => {
23
- const inputOTPContext = useContext(OTPInputContext);
31
+ const InputOTPSlot = ({
32
+ className,
33
+ index,
34
+ ref,
35
+ ...props
36
+ }) => {
37
+ const inputOTPContext = use(OTPInputContext);
24
38
  const slot = inputOTPContext.slots[index];
25
39
  if (!slot) {
26
40
  return null;
@@ -42,9 +56,12 @@ const InputOTPSlot = forwardRef(({ className, index, ...props }, ref) => {
42
56
  ]
43
57
  }
44
58
  );
45
- });
59
+ };
46
60
  InputOTPSlot.displayName = "InputOTPSlot";
47
- const InputOTPSeparator = forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Dot, {}) }));
61
+ const InputOTPSeparator = ({
62
+ ref,
63
+ ...props
64
+ }) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Dot, {}) });
48
65
  InputOTPSeparator.displayName = "InputOTPSeparator";
49
66
  export {
50
67
  InputOTP,
@@ -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
  useRef,
@@ -69,7 +68,7 @@ const DEFAULT_LABELS = {
69
68
  };
70
69
  const TimelineContext = createContext(null);
71
70
  function useTimelineContext() {
72
- const ctx = useContext(TimelineContext);
71
+ const ctx = use(TimelineContext);
73
72
  if (!ctx) {
74
73
  throw new Error("InteractiveTimeline subcomponent used outside its root.");
75
74
  }
@@ -424,7 +423,12 @@ function ScrollArea({
424
423
  }
425
424
  );
426
425
  }
427
- const InteractiveTimelineToolbar = forwardRef(({ children, className, ...rest }, ref) => /* @__PURE__ */ jsx(
426
+ const InteractiveTimelineToolbar = ({
427
+ children,
428
+ className,
429
+ ref,
430
+ ...rest
431
+ }) => /* @__PURE__ */ jsx(
428
432
  "div",
429
433
  {
430
434
  className: cn(
@@ -436,9 +440,13 @@ const InteractiveTimelineToolbar = forwardRef(({ children, className, ...rest },
436
440
  ...rest,
437
441
  children
438
442
  }
439
- ));
443
+ );
440
444
  InteractiveTimelineToolbar.displayName = "InteractiveTimelineToolbar";
441
- const InteractiveTimelineZoomIn = forwardRef(({ className, ...rest }, ref) => {
445
+ const InteractiveTimelineZoomIn = ({
446
+ className,
447
+ ref,
448
+ ...rest
449
+ }) => {
442
450
  const { labels, zoomIn } = useTimelineContext();
443
451
  return /* @__PURE__ */ jsx(
444
452
  "button",
@@ -455,9 +463,13 @@ const InteractiveTimelineZoomIn = forwardRef(({ className, ...rest }, ref) => {
455
463
  children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "+" })
456
464
  }
457
465
  );
458
- });
466
+ };
459
467
  InteractiveTimelineZoomIn.displayName = "InteractiveTimelineZoomIn";
460
- const InteractiveTimelineZoomOut = forwardRef(({ className, ...rest }, ref) => {
468
+ const InteractiveTimelineZoomOut = ({
469
+ className,
470
+ ref,
471
+ ...rest
472
+ }) => {
461
473
  const { labels, zoomOut } = useTimelineContext();
462
474
  return /* @__PURE__ */ jsx(
463
475
  "button",
@@ -474,9 +486,14 @@ const InteractiveTimelineZoomOut = forwardRef(({ className, ...rest }, ref) => {
474
486
  children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\u2212" })
475
487
  }
476
488
  );
477
- });
489
+ };
478
490
  InteractiveTimelineZoomOut.displayName = "InteractiveTimelineZoomOut";
479
- const InteractiveTimelineToday = forwardRef(({ children, className, ...rest }, ref) => {
491
+ const InteractiveTimelineToday = ({
492
+ children,
493
+ className,
494
+ ref,
495
+ ...rest
496
+ }) => {
480
497
  const { centerToday, labels } = useTimelineContext();
481
498
  return /* @__PURE__ */ jsx(
482
499
  "button",
@@ -493,9 +510,14 @@ const InteractiveTimelineToday = forwardRef(({ children, className, ...rest }, r
493
510
  children: children ?? "Today"
494
511
  }
495
512
  );
496
- });
513
+ };
497
514
  InteractiveTimelineToday.displayName = "InteractiveTimelineToday";
498
- const InteractiveTimelineFilter = forwardRef(({ categories, className, ...rest }, ref) => {
515
+ const InteractiveTimelineFilter = ({
516
+ categories,
517
+ className,
518
+ ref,
519
+ ...rest
520
+ }) => {
499
521
  const { toggleCategory, visibleCategories } = useTimelineContext();
500
522
  return /* @__PURE__ */ jsx(
501
523
  "div",
@@ -527,7 +549,7 @@ const InteractiveTimelineFilter = forwardRef(({ categories, className, ...rest }
527
549
  })
528
550
  }
529
551
  );
530
- });
552
+ };
531
553
  InteractiveTimelineFilter.displayName = "InteractiveTimelineFilter";
532
554
  const FALLBACK_TRACK = {
533
555
  color: "neutral",
@@ -644,7 +666,7 @@ function useTimelineFilter(categories, events) {
644
666
  }, [categories.length, events, hidden]);
645
667
  return { filteredEvents, toggleCategory, visibleCategories };
646
668
  }
647
- const InteractiveTimeline = forwardRef((props, ref) => {
669
+ const InteractiveTimeline = (props) => {
648
670
  const {
649
671
  categories = [],
650
672
  children,
@@ -653,6 +675,7 @@ const InteractiveTimeline = forwardRef((props, ref) => {
653
675
  events = [],
654
676
  labels,
655
677
  onEventClick = noop,
678
+ ref,
656
679
  startDate,
657
680
  tracks: trackProperty,
658
681
  ...rest
@@ -712,7 +735,7 @@ const InteractiveTimeline = forwardRef((props, ref) => {
712
735
  ]
713
736
  }
714
737
  ) });
715
- });
738
+ };
716
739
  InteractiveTimeline.displayName = "InteractiveTimeline";
717
740
  export {
718
741
  InteractiveTimeline,
@@ -0,0 +1,18 @@
1
+ import {
2
+ Item,
3
+ ItemActions,
4
+ ItemContent,
5
+ ItemDescription,
6
+ ItemMedia,
7
+ ItemTitle,
8
+ itemVariants
9
+ } from "./item";
10
+ export {
11
+ Item,
12
+ ItemActions,
13
+ ItemContent,
14
+ ItemDescription,
15
+ ItemMedia,
16
+ ItemTitle,
17
+ itemVariants
18
+ };
@@ -0,0 +1,118 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../../lib/utils";
4
+ const itemVariants = cva("flex items-center gap-3 rounded-md text-sm", {
5
+ defaultVariants: {
6
+ size: "default",
7
+ variant: "default"
8
+ },
9
+ variants: {
10
+ size: {
11
+ default: "p-3",
12
+ sm: "p-2"
13
+ },
14
+ variant: {
15
+ default: "",
16
+ muted: "bg-muted/50",
17
+ outline: "border border-border"
18
+ }
19
+ }
20
+ });
21
+ const Item = ({
22
+ className,
23
+ ref,
24
+ size,
25
+ variant,
26
+ ...props
27
+ }) => /* @__PURE__ */ jsx(
28
+ "div",
29
+ {
30
+ className: cn(itemVariants({ size, variant }), className),
31
+ "data-slot": "item",
32
+ ref,
33
+ ...props
34
+ }
35
+ );
36
+ Item.displayName = "Item";
37
+ const ItemMedia = ({
38
+ className,
39
+ ref,
40
+ ...props
41
+ }) => /* @__PURE__ */ jsx(
42
+ "div",
43
+ {
44
+ className: cn(
45
+ "flex shrink-0 items-center justify-center [&_svg]:size-5",
46
+ className
47
+ ),
48
+ "data-slot": "item-media",
49
+ ref,
50
+ ...props
51
+ }
52
+ );
53
+ ItemMedia.displayName = "ItemMedia";
54
+ const ItemContent = ({
55
+ className,
56
+ ref,
57
+ ...props
58
+ }) => /* @__PURE__ */ jsx(
59
+ "div",
60
+ {
61
+ className: cn("flex min-w-0 flex-1 flex-col gap-0.5", className),
62
+ "data-slot": "item-content",
63
+ ref,
64
+ ...props
65
+ }
66
+ );
67
+ ItemContent.displayName = "ItemContent";
68
+ const ItemTitle = ({
69
+ className,
70
+ ref,
71
+ ...props
72
+ }) => /* @__PURE__ */ jsx(
73
+ "div",
74
+ {
75
+ className: cn("font-medium leading-none", className),
76
+ "data-slot": "item-title",
77
+ ref,
78
+ ...props
79
+ }
80
+ );
81
+ ItemTitle.displayName = "ItemTitle";
82
+ const ItemDescription = ({
83
+ className,
84
+ ref,
85
+ ...props
86
+ }) => /* @__PURE__ */ jsx(
87
+ "p",
88
+ {
89
+ className: cn("text-sm text-muted-foreground", className),
90
+ "data-slot": "item-description",
91
+ ref,
92
+ ...props
93
+ }
94
+ );
95
+ ItemDescription.displayName = "ItemDescription";
96
+ const ItemActions = ({
97
+ className,
98
+ ref,
99
+ ...props
100
+ }) => /* @__PURE__ */ jsx(
101
+ "div",
102
+ {
103
+ className: cn("flex shrink-0 items-center gap-2", className),
104
+ "data-slot": "item-actions",
105
+ ref,
106
+ ...props
107
+ }
108
+ );
109
+ ItemActions.displayName = "ItemActions";
110
+ export {
111
+ Item,
112
+ ItemActions,
113
+ ItemContent,
114
+ ItemDescription,
115
+ ItemMedia,
116
+ ItemTitle,
117
+ itemVariants
118
+ };
@@ -1,8 +1,5 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import {
4
- forwardRef
5
- } from "react";
6
3
  import { cn } from "../../lib/utils";
7
4
  const TONE_CLASS = {
8
5
  danger: "text-red-600 dark:text-red-400",
@@ -53,45 +50,46 @@ const ActionButton = (props) => {
53
50
  }
54
51
  );
55
52
  };
56
- const JarvisDock = forwardRef(
57
- (props, ref) => {
58
- const { actions, className, labels, onOpenPalette, ...rest } = props;
59
- const resolvedLabels = { ...DEFAULT_LABELS, ...labels };
60
- const handlePalette = () => {
61
- onOpenPalette?.();
62
- };
63
- return /* @__PURE__ */ jsxs(
64
- "nav",
65
- {
66
- "aria-label": resolvedLabels.region,
67
- className: cn(
68
- "inline-flex items-center gap-1 rounded-2xl border bg-background/90 p-1.5 shadow-md backdrop-blur",
69
- className
70
- ),
71
- "data-jarvis-dock": true,
72
- ref,
73
- ...rest,
74
- children: [
75
- actions.map((action) => /* @__PURE__ */ jsx(ActionButton, { action }, action.id)),
76
- onOpenPalette ? /* @__PURE__ */ jsxs(Fragment, { children: [
77
- /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "mx-1 h-8 w-px bg-border" }),
78
- /* @__PURE__ */ jsx(
79
- "button",
80
- {
81
- "aria-label": resolvedLabels.paletteTrigger,
82
- className: "flex size-12 items-center justify-center rounded-md border border-transparent text-base text-muted-foreground transition-colors hover:border-border hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
83
- "data-jarvis-palette-trigger": true,
84
- onClick: handlePalette,
85
- type: "button",
86
- children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\u2318" })
87
- }
88
- )
89
- ] }) : null
90
- ]
91
- }
92
- );
93
- }
94
- );
53
+ const JarvisDock = ({
54
+ ref,
55
+ ...props
56
+ }) => {
57
+ const { actions, className, labels, onOpenPalette, ...rest } = props;
58
+ const resolvedLabels = { ...DEFAULT_LABELS, ...labels };
59
+ const handlePalette = () => {
60
+ onOpenPalette?.();
61
+ };
62
+ return /* @__PURE__ */ jsxs(
63
+ "nav",
64
+ {
65
+ "aria-label": resolvedLabels.region,
66
+ className: cn(
67
+ "inline-flex items-center gap-1 rounded-2xl border bg-background/90 p-1.5 shadow-md backdrop-blur",
68
+ className
69
+ ),
70
+ "data-jarvis-dock": true,
71
+ ref,
72
+ ...rest,
73
+ children: [
74
+ actions.map((action) => /* @__PURE__ */ jsx(ActionButton, { action }, action.id)),
75
+ onOpenPalette ? /* @__PURE__ */ jsxs(Fragment, { children: [
76
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "mx-1 h-8 w-px bg-border" }),
77
+ /* @__PURE__ */ jsx(
78
+ "button",
79
+ {
80
+ "aria-label": resolvedLabels.paletteTrigger,
81
+ className: "flex size-12 items-center justify-center rounded-md border border-transparent text-base text-muted-foreground transition-colors hover:border-border hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
82
+ "data-jarvis-palette-trigger": true,
83
+ onClick: handlePalette,
84
+ type: "button",
85
+ children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\u2318" })
86
+ }
87
+ )
88
+ ] }) : null
89
+ ]
90
+ }
91
+ );
92
+ };
95
93
  JarvisDock.displayName = "JarvisDock";
96
94
  export {
97
95
  JarvisDock
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import {
4
- forwardRef,
5
4
  useSyncExternalStore
6
5
  } from "react";
7
6
  import { cva } from "class-variance-authority";
@@ -72,52 +71,42 @@ function formatToken(token, mac) {
72
71
  if (special !== void 0) return special;
73
72
  return token.length === 1 ? token.toUpperCase() : token;
74
73
  }
75
- const Kbd = forwardRef(
76
- ({ children, className, shortcut, size, ...rest }, ref) => {
77
- const isMac = useIsMac();
78
- if (children !== void 0) {
79
- return /* @__PURE__ */ jsx(
80
- "kbd",
81
- {
82
- className: cn(kbdVariants({ size }), className),
83
- ref,
84
- ...rest,
85
- children
86
- }
87
- );
88
- }
89
- if (shortcut) {
90
- const tokens = shortcut.split(SHORTCUT_SEPARATOR).filter(Boolean);
91
- const ariaLabel = tokens.map((token) => formatToken(token, isMac)).join(" + ");
92
- return /* @__PURE__ */ jsx(
93
- "span",
94
- {
95
- "aria-label": ariaLabel,
96
- className: "inline-flex items-center gap-1",
97
- role: "img",
98
- children: tokens.map((token, index) => /* @__PURE__ */ jsx(
99
- "kbd",
100
- {
101
- className: cn(kbdVariants({ size }), className),
102
- ref: index === 0 ? ref : void 0,
103
- ...index === 0 ? rest : {},
104
- children: formatToken(token, isMac)
105
- },
106
- `${token}-${index.toString()}`
107
- ))
108
- }
109
- );
110
- }
74
+ const Kbd = ({
75
+ children,
76
+ className,
77
+ ref,
78
+ shortcut,
79
+ size,
80
+ ...rest
81
+ }) => {
82
+ const isMac = useIsMac();
83
+ if (children !== void 0) {
84
+ return /* @__PURE__ */ jsx("kbd", { className: cn(kbdVariants({ size }), className), ref, ...rest, children });
85
+ }
86
+ if (shortcut) {
87
+ const tokens = shortcut.split(SHORTCUT_SEPARATOR).filter(Boolean);
88
+ const ariaLabel = tokens.map((token) => formatToken(token, isMac)).join(" + ");
111
89
  return /* @__PURE__ */ jsx(
112
- "kbd",
90
+ "span",
113
91
  {
114
- className: cn(kbdVariants({ size }), className),
115
- ref,
116
- ...rest
92
+ "aria-label": ariaLabel,
93
+ className: "inline-flex items-center gap-1",
94
+ role: "img",
95
+ children: tokens.map((token, index) => /* @__PURE__ */ jsx(
96
+ "kbd",
97
+ {
98
+ className: cn(kbdVariants({ size }), className),
99
+ ref: index === 0 ? ref : void 0,
100
+ ...index === 0 ? rest : {},
101
+ children: formatToken(token, isMac)
102
+ },
103
+ `${token}-${index.toString()}`
104
+ ))
117
105
  }
118
106
  );
119
107
  }
120
- );
108
+ return /* @__PURE__ */ jsx("kbd", { className: cn(kbdVariants({ size }), className), ref, ...rest });
109
+ };
121
110
  Kbd.displayName = "Kbd";
122
111
  export {
123
112
  Kbd,
@@ -1,6 +1,8 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { memo, useEffect, useRef } from "react";
4
+ import { useBodyScrollLock } from "../../lib/use-body-scroll-lock";
5
+ import { useEscapeKey } from "../../lib/use-escape-key";
4
6
  import { cn } from "../../lib/utils";
5
7
  function KeyboardShortcutsHelpImpl({
6
8
  as: Heading = "h2",
@@ -14,25 +16,12 @@ function KeyboardShortcutsHelpImpl({
14
16
  }) {
15
17
  const closeButtonRef = useRef(null);
16
18
  useEffect(() => {
17
- if (!isOpen) return;
18
- closeButtonRef.current?.focus();
19
- const handleKeyDown = (event) => {
20
- if (event.key === "Escape") {
21
- event.preventDefault();
22
- onClose();
23
- }
24
- };
25
- window.addEventListener("keydown", handleKeyDown);
26
- return () => {
27
- window.removeEventListener("keydown", handleKeyDown);
28
- };
29
- }, [isOpen, onClose]);
30
- useEffect(() => {
31
- document.body.style.overflow = isOpen ? "hidden" : "";
32
- return () => {
33
- document.body.style.overflow = "";
34
- };
19
+ if (isOpen) {
20
+ closeButtonRef.current?.focus();
21
+ }
35
22
  }, [isOpen]);
23
+ useEscapeKey(onClose, { enabled: isOpen, preventDefault: true });
24
+ useBodyScrollLock(isOpen);
36
25
  if (!isOpen) return null;
37
26
  return /* @__PURE__ */ jsxs(
38
27
  "div",