@moldable-ai/ui 0.2.22 → 0.2.24

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 (492) hide show
  1. package/dist/catalog/catalog-coverage.d.ts +1 -1
  2. package/dist/catalog/catalog-manifest.d.ts +1 -1
  3. package/dist/catalog/catalog-manifest.js +1 -1
  4. package/dist/catalog/component-catalog.d.ts +1 -1
  5. package/dist/catalog/component-catalog.js +2 -2
  6. package/dist/catalog/core-catalog-exclusions.d.ts +1 -1
  7. package/dist/catalog/core-catalog-exclusions.d.ts.map +1 -1
  8. package/dist/catalog/core-catalog-exclusions.js +1 -150
  9. package/dist/catalog/core-catalog.d.ts +1 -1
  10. package/dist/catalog/core-catalog.d.ts.map +1 -1
  11. package/dist/catalog/core-catalog.js +11 -7
  12. package/dist/catalog/core-collection-stories.d.ts +1 -1
  13. package/dist/catalog/core-collection-stories.d.ts.map +1 -1
  14. package/dist/catalog/core-collection-stories.js +40 -8
  15. package/dist/catalog/core-control-stories.d.ts +1 -1
  16. package/dist/catalog/core-control-stories.d.ts.map +1 -1
  17. package/dist/catalog/core-control-stories.js +48 -20
  18. package/dist/catalog/core-feedback-stories.d.ts +1 -1
  19. package/dist/catalog/core-feedback-stories.d.ts.map +1 -1
  20. package/dist/catalog/core-feedback-stories.js +89 -10
  21. package/dist/catalog/core-form-stories.d.ts +3 -0
  22. package/dist/catalog/core-form-stories.d.ts.map +1 -0
  23. package/dist/catalog/core-form-stories.js +56 -0
  24. package/dist/catalog/core-foundation-stories.d.ts +1 -1
  25. package/dist/catalog/core-foundation-stories.js +7 -7
  26. package/dist/catalog/core-layout-stories.d.ts +3 -0
  27. package/dist/catalog/core-layout-stories.d.ts.map +1 -0
  28. package/dist/catalog/core-layout-stories.js +78 -0
  29. package/dist/catalog/core-navigation-stories.d.ts +1 -1
  30. package/dist/catalog/core-navigation-stories.d.ts.map +1 -1
  31. package/dist/catalog/core-navigation-stories.js +25 -3
  32. package/dist/catalog/core-overlay-stories.d.ts +1 -1
  33. package/dist/catalog/core-overlay-stories.d.ts.map +1 -1
  34. package/dist/catalog/core-overlay-stories.js +113 -8
  35. package/dist/catalog/index.d.ts +6 -6
  36. package/dist/catalog/index.js +6 -6
  37. package/dist/components/app-error-boundary.js +2 -2
  38. package/dist/components/chat/chat-image-lightbox.js +3 -3
  39. package/dist/components/chat/chat-input.js +5 -5
  40. package/dist/components/chat/chat-message.js +17 -17
  41. package/dist/components/chat/chat-messages.d.ts +1 -1
  42. package/dist/components/chat/chat-messages.js +3 -3
  43. package/dist/components/chat/chat-panel.d.ts +6 -6
  44. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  45. package/dist/components/chat/chat-panel.js +33 -33
  46. package/dist/components/chat/checkpoint-badge.js +3 -3
  47. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  48. package/dist/components/chat/conversation-history.js +13 -13
  49. package/dist/components/chat/index.d.ts +20 -15
  50. package/dist/components/chat/index.d.ts.map +1 -1
  51. package/dist/components/chat/index.js +20 -15
  52. package/dist/components/chat/markdown.js +1 -1
  53. package/dist/components/chat/model-effort-selector.js +10 -10
  54. package/dist/components/chat/model-selector.js +4 -4
  55. package/dist/components/chat/reasoning-effort-selector.js +4 -4
  56. package/dist/components/chat/restore-dialog.js +3 -3
  57. package/dist/components/chat/thinking-timeline.js +2 -2
  58. package/dist/components/chat/tool-approval.d.ts +1 -1
  59. package/dist/components/chat/tool-approval.d.ts.map +1 -1
  60. package/dist/components/chat/tool-approval.js +9 -9
  61. package/dist/components/chat/tool-handlers.d.ts +2 -2
  62. package/dist/components/chat/tool-handlers.js +90 -90
  63. package/dist/components/chat/voice-orb-audio.d.ts +16 -0
  64. package/dist/components/chat/voice-orb-audio.d.ts.map +1 -0
  65. package/dist/components/chat/voice-orb-audio.js +110 -0
  66. package/dist/components/chat/voice-orb-renderer.d.ts +51 -0
  67. package/dist/components/chat/voice-orb-renderer.d.ts.map +1 -0
  68. package/dist/components/chat/voice-orb-renderer.js +410 -0
  69. package/dist/components/chat/voice-orb-shaders.d.ts +3 -0
  70. package/dist/components/chat/voice-orb-shaders.d.ts.map +1 -0
  71. package/dist/components/chat/voice-orb-shaders.js +355 -0
  72. package/dist/components/chat/voice-orb-types.d.ts +24 -0
  73. package/dist/components/chat/voice-orb-types.d.ts.map +1 -0
  74. package/dist/components/chat/voice-orb-types.js +73 -0
  75. package/dist/components/chat/voice-orb.d.ts +20 -0
  76. package/dist/components/chat/voice-orb.d.ts.map +1 -0
  77. package/dist/components/chat/voice-orb.js +67 -0
  78. package/dist/components/code-block.js +1 -1
  79. package/dist/components/hardware/bluetooth-panel.d.ts +2 -2
  80. package/dist/components/hardware/bluetooth-panel.js +10 -10
  81. package/dist/components/hardware/camera-preview.js +6 -6
  82. package/dist/components/hardware/capability-badge.d.ts +2 -2
  83. package/dist/components/hardware/capability-badge.js +2 -2
  84. package/dist/components/hardware/capability-matrix.d.ts +1 -1
  85. package/dist/components/hardware/capability-matrix.js +5 -5
  86. package/dist/components/hardware/clipboard-button.d.ts +1 -1
  87. package/dist/components/hardware/clipboard-button.js +2 -2
  88. package/dist/components/hardware/device-list.js +1 -1
  89. package/dist/components/hardware/display-map.d.ts +1 -1
  90. package/dist/components/hardware/display-map.js +7 -7
  91. package/dist/components/hardware/haptic-button.d.ts +2 -2
  92. package/dist/components/hardware/haptic-button.js +3 -3
  93. package/dist/components/hardware/hardware-panel.js +1 -1
  94. package/dist/components/hardware/hid-panel.d.ts +2 -2
  95. package/dist/components/hardware/hid-panel.js +10 -10
  96. package/dist/components/hardware/index.d.ts +26 -26
  97. package/dist/components/hardware/index.js +26 -26
  98. package/dist/components/hardware/live-indicator.js +1 -1
  99. package/dist/components/hardware/local-auth-button.d.ts +2 -2
  100. package/dist/components/hardware/local-auth-button.js +4 -4
  101. package/dist/components/hardware/location-panel.d.ts +1 -1
  102. package/dist/components/hardware/location-panel.js +6 -6
  103. package/dist/components/hardware/microphone-meter.js +7 -7
  104. package/dist/components/hardware/midi-monitor.d.ts +2 -2
  105. package/dist/components/hardware/midi-monitor.js +9 -9
  106. package/dist/components/hardware/notification-panel.d.ts +1 -1
  107. package/dist/components/hardware/notification-panel.js +8 -8
  108. package/dist/components/hardware/power-blocker-controller.d.ts +1 -1
  109. package/dist/components/hardware/power-blocker-controller.js +1 -1
  110. package/dist/components/hardware/power-panel.d.ts +1 -1
  111. package/dist/components/hardware/power-panel.js +9 -9
  112. package/dist/components/hardware/readout.js +1 -1
  113. package/dist/components/hardware/screen-share-preview.js +5 -5
  114. package/dist/components/hardware/secure-storage-panel.d.ts +1 -1
  115. package/dist/components/hardware/secure-storage-panel.js +9 -9
  116. package/dist/components/hardware/serial-console.d.ts +2 -2
  117. package/dist/components/hardware/serial-console.js +10 -10
  118. package/dist/components/hardware/shortcut-recorder.d.ts +1 -1
  119. package/dist/components/hardware/shortcut-recorder.js +4 -4
  120. package/dist/components/hardware/stream-log.js +1 -1
  121. package/dist/components/hardware/system-audio-monitor.d.ts +1 -1
  122. package/dist/components/hardware/system-audio-monitor.js +9 -9
  123. package/dist/components/hardware/usb-panel.d.ts +5 -5
  124. package/dist/components/hardware/usb-panel.js +10 -10
  125. package/dist/components/hardware/use-capability.d.ts +1 -1
  126. package/dist/components/hardware/use-capability.js +1 -1
  127. package/dist/components/markdown.js +5 -5
  128. package/dist/components/native-capabilities/bluetooth-panel.d.ts +2 -2
  129. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -1
  130. package/dist/components/native-capabilities/bluetooth-panel.js +17 -17
  131. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -1
  132. package/dist/components/native-capabilities/camera-preview.js +7 -7
  133. package/dist/components/native-capabilities/capability-badge.d.ts +2 -2
  134. package/dist/components/native-capabilities/capability-badge.js +4 -4
  135. package/dist/components/native-capabilities/capability-matrix.d.ts +1 -1
  136. package/dist/components/native-capabilities/capability-matrix.js +7 -7
  137. package/dist/components/native-capabilities/clipboard-button.d.ts +1 -1
  138. package/dist/components/native-capabilities/clipboard-button.js +2 -2
  139. package/dist/components/native-capabilities/device-list.js +4 -4
  140. package/dist/components/native-capabilities/display-map.d.ts +1 -1
  141. package/dist/components/native-capabilities/display-map.d.ts.map +1 -1
  142. package/dist/components/native-capabilities/display-map.js +11 -11
  143. package/dist/components/native-capabilities/haptic-button.d.ts +2 -2
  144. package/dist/components/native-capabilities/haptic-button.js +3 -3
  145. package/dist/components/native-capabilities/hid-panel.d.ts +2 -2
  146. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -1
  147. package/dist/components/native-capabilities/hid-panel.js +14 -14
  148. package/dist/components/native-capabilities/index.d.ts +26 -26
  149. package/dist/components/native-capabilities/index.js +26 -26
  150. package/dist/components/native-capabilities/live-indicator.js +3 -3
  151. package/dist/components/native-capabilities/local-auth-button.d.ts +2 -2
  152. package/dist/components/native-capabilities/local-auth-button.js +4 -4
  153. package/dist/components/native-capabilities/location-panel.d.ts +1 -1
  154. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -1
  155. package/dist/components/native-capabilities/location-panel.js +8 -8
  156. package/dist/components/native-capabilities/microphone-meter.js +9 -9
  157. package/dist/components/native-capabilities/midi-monitor.d.ts +2 -2
  158. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -1
  159. package/dist/components/native-capabilities/midi-monitor.js +11 -11
  160. package/dist/components/native-capabilities/native-capability-panel.js +6 -6
  161. package/dist/components/native-capabilities/notification-panel.d.ts +1 -1
  162. package/dist/components/native-capabilities/notification-panel.js +9 -9
  163. package/dist/components/native-capabilities/power-blocker-controller.d.ts +1 -1
  164. package/dist/components/native-capabilities/power-blocker-controller.js +1 -1
  165. package/dist/components/native-capabilities/power-panel.d.ts +1 -1
  166. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -1
  167. package/dist/components/native-capabilities/power-panel.js +12 -12
  168. package/dist/components/native-capabilities/readout.d.ts.map +1 -1
  169. package/dist/components/native-capabilities/readout.js +2 -2
  170. package/dist/components/native-capabilities/screen-share-preview.js +6 -6
  171. package/dist/components/native-capabilities/secure-storage-panel.d.ts +1 -1
  172. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -1
  173. package/dist/components/native-capabilities/secure-storage-panel.js +11 -11
  174. package/dist/components/native-capabilities/serial-console.d.ts +2 -2
  175. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -1
  176. package/dist/components/native-capabilities/serial-console.js +11 -11
  177. package/dist/components/native-capabilities/shortcut-recorder.d.ts +1 -1
  178. package/dist/components/native-capabilities/shortcut-recorder.js +5 -5
  179. package/dist/components/native-capabilities/stream-log.js +3 -3
  180. package/dist/components/native-capabilities/system-audio-monitor.d.ts +1 -1
  181. package/dist/components/native-capabilities/system-audio-monitor.js +12 -12
  182. package/dist/components/native-capabilities/usb-panel.d.ts +5 -5
  183. package/dist/components/native-capabilities/usb-panel.js +15 -15
  184. package/dist/components/native-capabilities/use-capability.d.ts +1 -1
  185. package/dist/components/native-capabilities/use-capability.js +1 -1
  186. package/dist/components/rich-media-player.js +3 -3
  187. package/dist/components/ui/accordion.js +3 -3
  188. package/dist/components/ui/alert-dialog.d.ts +2 -2
  189. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  190. package/dist/components/ui/alert-dialog.js +16 -10
  191. package/dist/components/ui/alert.d.ts +1 -1
  192. package/dist/components/ui/alert.d.ts.map +1 -1
  193. package/dist/components/ui/alert.js +11 -11
  194. package/dist/components/ui/app-frame.d.ts +7 -1
  195. package/dist/components/ui/app-frame.d.ts.map +1 -1
  196. package/dist/components/ui/app-frame.js +52 -16
  197. package/dist/components/ui/avatar.js +5 -5
  198. package/dist/components/ui/badge.d.ts +1 -1
  199. package/dist/components/ui/badge.js +4 -4
  200. package/dist/components/ui/breadcrumb.js +2 -2
  201. package/dist/components/ui/button-group.d.ts +1 -1
  202. package/dist/components/ui/button-group.js +4 -4
  203. package/dist/components/ui/button.d.ts +1 -1
  204. package/dist/components/ui/button.d.ts.map +1 -1
  205. package/dist/components/ui/button.js +16 -16
  206. package/dist/components/ui/calendar.d.ts +1 -1
  207. package/dist/components/ui/calendar.d.ts.map +1 -1
  208. package/dist/components/ui/calendar.js +15 -15
  209. package/dist/components/ui/card.js +3 -3
  210. package/dist/components/ui/carousel.d.ts +1 -1
  211. package/dist/components/ui/carousel.js +4 -4
  212. package/dist/components/ui/chart.js +5 -5
  213. package/dist/components/ui/checkbox.d.ts.map +1 -1
  214. package/dist/components/ui/checkbox.js +2 -2
  215. package/dist/components/ui/collapsible.js +3 -3
  216. package/dist/components/ui/color-well.js +2 -2
  217. package/dist/components/ui/combobox.js +9 -9
  218. package/dist/components/ui/command.d.ts +1 -1
  219. package/dist/components/ui/command.d.ts.map +1 -1
  220. package/dist/components/ui/command.js +9 -9
  221. package/dist/components/ui/confirm-dialog.d.ts +1 -1
  222. package/dist/components/ui/confirm-dialog.js +2 -2
  223. package/dist/components/ui/context-menu.d.ts +16 -5
  224. package/dist/components/ui/context-menu.d.ts.map +1 -1
  225. package/dist/components/ui/context-menu.js +92 -16
  226. package/dist/components/ui/date-field.d.ts.map +1 -1
  227. package/dist/components/ui/date-field.js +8 -8
  228. package/dist/components/ui/date-picker.d.ts +2 -2
  229. package/dist/components/ui/date-picker.js +7 -7
  230. package/dist/components/ui/dialog.d.ts +2 -2
  231. package/dist/components/ui/dialog.d.ts.map +1 -1
  232. package/dist/components/ui/dialog.js +14 -8
  233. package/dist/components/ui/drawer.js +4 -4
  234. package/dist/components/ui/dropdown-menu.d.ts +15 -5
  235. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  236. package/dist/components/ui/dropdown-menu.js +98 -16
  237. package/dist/components/ui/edge-fade.js +1 -1
  238. package/dist/components/ui/empty.d.ts +1 -1
  239. package/dist/components/ui/empty.js +5 -5
  240. package/dist/components/ui/error-boundary-view.d.ts.map +1 -1
  241. package/dist/components/ui/error-boundary-view.js +3 -3
  242. package/dist/components/ui/field.d.ts +1 -1
  243. package/dist/components/ui/field.d.ts.map +1 -1
  244. package/dist/components/ui/field.js +9 -9
  245. package/dist/components/ui/form.js +4 -4
  246. package/dist/components/ui/grid.d.ts.map +1 -1
  247. package/dist/components/ui/grid.js +5 -5
  248. package/dist/components/ui/hover-card.js +2 -2
  249. package/dist/components/ui/icon-button.d.ts +1 -1
  250. package/dist/components/ui/icon-button.js +3 -3
  251. package/dist/components/ui/index.d.ts +77 -77
  252. package/dist/components/ui/index.js +77 -77
  253. package/dist/components/ui/input-group.d.ts +2 -2
  254. package/dist/components/ui/input-group.js +14 -14
  255. package/dist/components/ui/input-otp.js +3 -3
  256. package/dist/components/ui/input.js +2 -2
  257. package/dist/components/ui/inspector.d.ts +1 -1
  258. package/dist/components/ui/inspector.js +6 -6
  259. package/dist/components/ui/item.d.ts +1 -1
  260. package/dist/components/ui/item.js +7 -7
  261. package/dist/components/ui/kbd.js +2 -2
  262. package/dist/components/ui/label.js +2 -2
  263. package/dist/components/ui/list.d.ts.map +1 -1
  264. package/dist/components/ui/list.js +5 -5
  265. package/dist/components/ui/material.js +3 -3
  266. package/dist/components/ui/menu-items.d.ts +28 -0
  267. package/dist/components/ui/menu-items.d.ts.map +1 -0
  268. package/dist/components/ui/menu-items.js +111 -0
  269. package/dist/components/ui/menubar.js +11 -11
  270. package/dist/components/ui/message-scroller-controller.d.ts +1 -1
  271. package/dist/components/ui/message-scroller-controller.js +1 -1
  272. package/dist/components/ui/message-scroller-primitive.d.ts +1 -1
  273. package/dist/components/ui/message-scroller-primitive.js +1 -1
  274. package/dist/components/ui/message-scroller.d.ts +2 -2
  275. package/dist/components/ui/message-scroller.js +3 -3
  276. package/dist/components/ui/navigation-button-group.d.ts +2 -2
  277. package/dist/components/ui/navigation-button-group.js +2 -2
  278. package/dist/components/ui/navigation-menu.js +6 -6
  279. package/dist/components/ui/notification-dot.js +2 -2
  280. package/dist/components/ui/number-input.js +8 -8
  281. package/dist/components/ui/pagination.d.ts +1 -1
  282. package/dist/components/ui/pagination.js +2 -2
  283. package/dist/components/ui/panel.d.ts +1 -1
  284. package/dist/components/ui/panel.js +3 -3
  285. package/dist/components/ui/popover.d.ts +1 -1
  286. package/dist/components/ui/popover.js +3 -3
  287. package/dist/components/ui/progress.js +2 -2
  288. package/dist/components/ui/radio-group.d.ts.map +1 -1
  289. package/dist/components/ui/radio-group.js +2 -2
  290. package/dist/components/ui/resizable.d.ts +1 -1
  291. package/dist/components/ui/resizable.d.ts.map +1 -1
  292. package/dist/components/ui/resizable.js +15 -4
  293. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  294. package/dist/components/ui/scroll-area.js +3 -3
  295. package/dist/components/ui/search-field.js +7 -7
  296. package/dist/components/ui/segmented-control.js +9 -9
  297. package/dist/components/ui/select.d.ts.map +1 -1
  298. package/dist/components/ui/select.js +6 -6
  299. package/dist/components/ui/separator.js +1 -1
  300. package/dist/components/ui/sheet.js +4 -4
  301. package/dist/components/ui/sidebar.d.ts +5 -5
  302. package/dist/components/ui/sidebar.d.ts.map +1 -1
  303. package/dist/components/ui/sidebar.js +111 -24
  304. package/dist/components/ui/skeleton.js +2 -2
  305. package/dist/components/ui/slider.d.ts +3 -1
  306. package/dist/components/ui/slider.d.ts.map +1 -1
  307. package/dist/components/ui/slider.js +3 -3
  308. package/dist/components/ui/sonner.js +1 -1
  309. package/dist/components/ui/spinner.js +1 -1
  310. package/dist/components/ui/split-view.js +1 -1
  311. package/dist/components/ui/status.d.ts +1 -1
  312. package/dist/components/ui/status.d.ts.map +1 -1
  313. package/dist/components/ui/status.js +10 -9
  314. package/dist/components/ui/switch.js +2 -2
  315. package/dist/components/ui/table.d.ts.map +1 -1
  316. package/dist/components/ui/table.js +7 -7
  317. package/dist/components/ui/tabs.js +3 -3
  318. package/dist/components/ui/text.d.ts +2 -2
  319. package/dist/components/ui/text.js +19 -19
  320. package/dist/components/ui/textarea.js +2 -2
  321. package/dist/components/ui/toggle-group.d.ts +1 -1
  322. package/dist/components/ui/toggle-group.js +4 -4
  323. package/dist/components/ui/toggle.d.ts +1 -1
  324. package/dist/components/ui/toggle.js +10 -10
  325. package/dist/components/ui/toolbar.d.ts +7 -7
  326. package/dist/components/ui/toolbar.js +7 -7
  327. package/dist/components/ui/tooltip.d.ts +2 -2
  328. package/dist/components/ui/tooltip.js +5 -5
  329. package/dist/index.d.ts +21 -20
  330. package/dist/index.d.ts.map +1 -1
  331. package/dist/index.js +21 -20
  332. package/dist/lib/frame-lifecycle.d.ts +27 -0
  333. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  334. package/dist/lib/frame-lifecycle.js +136 -0
  335. package/dist/lib/host-date-time-picker.d.ts +1 -1
  336. package/dist/lib/host-date-time-picker.js +1 -1
  337. package/dist/lib/host-file-dialog.d.ts +1 -1
  338. package/dist/lib/host-file-dialog.js +1 -1
  339. package/dist/lib/host-native-menu.d.ts +48 -7
  340. package/dist/lib/host-native-menu.d.ts.map +1 -1
  341. package/dist/lib/host-native-menu.js +56 -1
  342. package/dist/lib/host-services.js +1 -1
  343. package/dist/lib/host-share.d.ts +1 -1
  344. package/dist/lib/host-share.js +1 -1
  345. package/dist/lib/host-web-surface.d.ts +31 -0
  346. package/dist/lib/host-web-surface.d.ts.map +1 -0
  347. package/dist/lib/host-web-surface.js +116 -0
  348. package/dist/lib/native-capabilities/access.d.ts +2 -2
  349. package/dist/lib/native-capabilities/access.js +2 -2
  350. package/dist/lib/native-capabilities/bluetooth-access.d.ts +1 -1
  351. package/dist/lib/native-capabilities/bluetooth-access.js +2 -2
  352. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +1 -1
  353. package/dist/lib/native-capabilities/bluetooth-connection.js +1 -1
  354. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +1 -1
  355. package/dist/lib/native-capabilities/bluetooth-gatt.js +1 -1
  356. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +2 -2
  357. package/dist/lib/native-capabilities/bluetooth-internal.js +1 -1
  358. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +2 -2
  359. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +2 -2
  360. package/dist/lib/native-capabilities/bluetooth.d.ts +6 -6
  361. package/dist/lib/native-capabilities/bluetooth.js +4 -4
  362. package/dist/lib/native-capabilities/bridge.d.ts +1 -1
  363. package/dist/lib/native-capabilities/bridge.js +2 -2
  364. package/dist/lib/native-capabilities/capabilities.d.ts +1 -1
  365. package/dist/lib/native-capabilities/capabilities.js +1 -1
  366. package/dist/lib/native-capabilities/clipboard.js +2 -2
  367. package/dist/lib/native-capabilities/device-io-errors.d.ts +1 -1
  368. package/dist/lib/native-capabilities/device-io-errors.js +1 -1
  369. package/dist/lib/native-capabilities/displays.d.ts +1 -1
  370. package/dist/lib/native-capabilities/displays.js +1 -1
  371. package/dist/lib/native-capabilities/global-shortcuts.d.ts +2 -2
  372. package/dist/lib/native-capabilities/global-shortcuts.js +1 -1
  373. package/dist/lib/native-capabilities/haptics.d.ts +1 -1
  374. package/dist/lib/native-capabilities/haptics.js +1 -1
  375. package/dist/lib/native-capabilities/hid-native.d.ts +2 -2
  376. package/dist/lib/native-capabilities/hid-native.js +3 -3
  377. package/dist/lib/native-capabilities/hid.js +5 -5
  378. package/dist/lib/native-capabilities/index.d.ts +39 -39
  379. package/dist/lib/native-capabilities/index.js +21 -21
  380. package/dist/lib/native-capabilities/local-authentication.d.ts +1 -1
  381. package/dist/lib/native-capabilities/local-authentication.js +1 -1
  382. package/dist/lib/native-capabilities/location.js +1 -1
  383. package/dist/lib/native-capabilities/media-permissions.d.ts +1 -1
  384. package/dist/lib/native-capabilities/media-permissions.js +1 -1
  385. package/dist/lib/native-capabilities/media.d.ts +1 -1
  386. package/dist/lib/native-capabilities/media.js +2 -2
  387. package/dist/lib/native-capabilities/midi-access.d.ts +1 -1
  388. package/dist/lib/native-capabilities/midi-access.js +3 -3
  389. package/dist/lib/native-capabilities/midi-internal.d.ts +1 -1
  390. package/dist/lib/native-capabilities/midi-internal.js +1 -1
  391. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +1 -1
  392. package/dist/lib/native-capabilities/midi-native-fallback.js +2 -2
  393. package/dist/lib/native-capabilities/midi-ports.d.ts +1 -1
  394. package/dist/lib/native-capabilities/midi-ports.js +1 -1
  395. package/dist/lib/native-capabilities/midi.d.ts +5 -5
  396. package/dist/lib/native-capabilities/midi.js +3 -3
  397. package/dist/lib/native-capabilities/native-device-io.d.ts +1 -1
  398. package/dist/lib/native-capabilities/native-device-io.js +1 -1
  399. package/dist/lib/native-capabilities/native-device-lifecycle.js +1 -1
  400. package/dist/lib/native-capabilities/notifications.d.ts +2 -2
  401. package/dist/lib/native-capabilities/notifications.js +1 -1
  402. package/dist/lib/native-capabilities/power-session.d.ts +2 -2
  403. package/dist/lib/native-capabilities/power-session.js +1 -1
  404. package/dist/lib/native-capabilities/secure-storage.d.ts +1 -1
  405. package/dist/lib/native-capabilities/secure-storage.js +1 -1
  406. package/dist/lib/native-capabilities/serial-native.d.ts +2 -2
  407. package/dist/lib/native-capabilities/serial-native.js +3 -3
  408. package/dist/lib/native-capabilities/serial.js +5 -5
  409. package/dist/lib/native-capabilities/system-audio.d.ts +1 -1
  410. package/dist/lib/native-capabilities/system-audio.js +1 -1
  411. package/dist/lib/native-capabilities/usb-native.d.ts +2 -2
  412. package/dist/lib/native-capabilities/usb-native.js +3 -3
  413. package/dist/lib/native-capabilities/usb.js +5 -5
  414. package/dist/lib/native-hardware/bluetooth-access.d.ts +1 -1
  415. package/dist/lib/native-hardware/bluetooth-access.js +1 -1
  416. package/dist/lib/native-hardware/bluetooth-connection.d.ts +1 -1
  417. package/dist/lib/native-hardware/bluetooth-connection.js +1 -1
  418. package/dist/lib/native-hardware/bluetooth-gatt.d.ts +1 -1
  419. package/dist/lib/native-hardware/bluetooth-gatt.js +1 -1
  420. package/dist/lib/native-hardware/bluetooth-internal.d.ts +2 -2
  421. package/dist/lib/native-hardware/bluetooth-internal.js +1 -1
  422. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts +2 -2
  423. package/dist/lib/native-hardware/bluetooth-native-fallback.js +2 -2
  424. package/dist/lib/native-hardware/bluetooth.d.ts +6 -6
  425. package/dist/lib/native-hardware/bluetooth.js +4 -4
  426. package/dist/lib/native-hardware/bridge.d.ts +1 -1
  427. package/dist/lib/native-hardware/bridge.js +2 -2
  428. package/dist/lib/native-hardware/capabilities.d.ts +1 -1
  429. package/dist/lib/native-hardware/capabilities.js +1 -1
  430. package/dist/lib/native-hardware/clipboard.js +1 -1
  431. package/dist/lib/native-hardware/device-io-errors.d.ts +1 -1
  432. package/dist/lib/native-hardware/device-io-errors.js +1 -1
  433. package/dist/lib/native-hardware/displays.d.ts +1 -1
  434. package/dist/lib/native-hardware/displays.js +1 -1
  435. package/dist/lib/native-hardware/global-shortcuts.d.ts +2 -2
  436. package/dist/lib/native-hardware/global-shortcuts.js +1 -1
  437. package/dist/lib/native-hardware/haptics.d.ts +1 -1
  438. package/dist/lib/native-hardware/haptics.js +1 -1
  439. package/dist/lib/native-hardware/hid-native.d.ts +2 -2
  440. package/dist/lib/native-hardware/hid-native.js +3 -3
  441. package/dist/lib/native-hardware/hid.js +4 -4
  442. package/dist/lib/native-hardware/index.d.ts +37 -37
  443. package/dist/lib/native-hardware/index.js +20 -20
  444. package/dist/lib/native-hardware/local-authentication.d.ts +1 -1
  445. package/dist/lib/native-hardware/local-authentication.js +1 -1
  446. package/dist/lib/native-hardware/location.js +1 -1
  447. package/dist/lib/native-hardware/media-permissions.d.ts +1 -1
  448. package/dist/lib/native-hardware/media-permissions.js +1 -1
  449. package/dist/lib/native-hardware/media.d.ts +1 -1
  450. package/dist/lib/native-hardware/media.js +1 -1
  451. package/dist/lib/native-hardware/midi-access.d.ts +1 -1
  452. package/dist/lib/native-hardware/midi-access.js +2 -2
  453. package/dist/lib/native-hardware/midi-internal.d.ts +1 -1
  454. package/dist/lib/native-hardware/midi-internal.js +1 -1
  455. package/dist/lib/native-hardware/midi-native-fallback.d.ts +1 -1
  456. package/dist/lib/native-hardware/midi-native-fallback.js +2 -2
  457. package/dist/lib/native-hardware/midi-ports.d.ts +1 -1
  458. package/dist/lib/native-hardware/midi-ports.js +1 -1
  459. package/dist/lib/native-hardware/midi.d.ts +5 -5
  460. package/dist/lib/native-hardware/midi.js +3 -3
  461. package/dist/lib/native-hardware/native-device-io.d.ts +1 -1
  462. package/dist/lib/native-hardware/native-device-io.js +1 -1
  463. package/dist/lib/native-hardware/native-device-lifecycle.js +1 -1
  464. package/dist/lib/native-hardware/notifications.d.ts +2 -2
  465. package/dist/lib/native-hardware/notifications.js +1 -1
  466. package/dist/lib/native-hardware/power-session.d.ts +2 -2
  467. package/dist/lib/native-hardware/power-session.js +1 -1
  468. package/dist/lib/native-hardware/secure-storage.d.ts +1 -1
  469. package/dist/lib/native-hardware/secure-storage.js +1 -1
  470. package/dist/lib/native-hardware/serial-native.d.ts +2 -2
  471. package/dist/lib/native-hardware/serial-native.js +3 -3
  472. package/dist/lib/native-hardware/serial.js +4 -4
  473. package/dist/lib/native-hardware/system-audio.d.ts +1 -1
  474. package/dist/lib/native-hardware/system-audio.js +1 -1
  475. package/dist/lib/native-hardware/usb-native.d.ts +2 -2
  476. package/dist/lib/native-hardware/usb-native.js +3 -3
  477. package/dist/lib/native-hardware/usb.js +4 -4
  478. package/dist/lib/theme.js +1 -1
  479. package/docs/design-tokens.md +28 -6
  480. package/docs/foundations.md +4 -2
  481. package/package.json +4 -2
  482. package/src/components/ui/confirm-dialog.md +97 -0
  483. package/src/components/ui/context-menu.md +158 -0
  484. package/src/components/ui/dropdown-menu.md +165 -0
  485. package/src/components/ui/hover-card.md +90 -0
  486. package/src/components/ui/select.md +111 -0
  487. package/src/lib/host-date-time-picker.md +29 -0
  488. package/src/lib/host-file-dialog.md +76 -0
  489. package/src/lib/host-native-menu.md +67 -0
  490. package/src/lib/host-share.md +36 -0
  491. package/src/lib/host-web-surface.md +66 -0
  492. package/src/styles/index.css +141 -68
@@ -1,20 +1,20 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
4
- import { Button } from './button';
5
- import { Input } from './input';
6
- import { Textarea } from './textarea';
3
+ import { cn } from '../../lib/utils.js';
4
+ import { Button } from './button.js';
5
+ import { Input } from './input.js';
6
+ import { Textarea } from './textarea.js';
7
7
  import { cva } from 'class-variance-authority';
8
8
  function InputGroup({ className, ...props }) {
9
- return (_jsx("div", { "data-slot": "input-group", role: "group", className: cn('group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-md border outline-none transition-[color,box-shadow]', 'h-9 min-w-0 has-[>textarea]:h-auto',
9
+ return (_jsx("div", { "data-slot": "input-group", role: "group", className: cn('group/input-group border-input dark:bg-input/30 shadow-xs rounded-control relative flex w-full items-center border outline-none transition-[color,box-shadow]', 'h-control-md min-w-0 has-[>textarea]:h-auto',
10
10
  // Variants based on alignment.
11
11
  'has-[>[data-align=inline-start]]:[&>input]:pl-2', 'has-[>[data-align=inline-end]]:[&>input]:pr-2', 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3', 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3',
12
12
  // Focus state.
13
- 'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]',
13
+ 'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1',
14
14
  // Error state.
15
- 'has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40', className), ...props }));
15
+ 'has-[[data-slot][aria-invalid=true]]:border-destructive', className), ...props }));
16
16
  }
17
- const inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50", {
17
+ const inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-ui-body font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-control group-data-[disabled=true]/input-group:opacity-50", {
18
18
  variants: {
19
19
  align: {
20
20
  'inline-start': 'order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]',
@@ -35,13 +35,13 @@ function InputGroupAddon({ className, align = 'inline-start', ...props }) {
35
35
  e.currentTarget.parentElement?.querySelector('input')?.focus();
36
36
  }, ...props }));
37
37
  }
38
- const inputGroupButtonVariants = cva('text-sm shadow-none flex gap-2 items-center', {
38
+ const inputGroupButtonVariants = cva('text-ui-body shadow-none flex gap-2 items-center', {
39
39
  variants: {
40
40
  size: {
41
- xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
42
- sm: 'h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5',
43
- 'icon-xs': 'size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0',
44
- 'icon-sm': 'size-8 p-0 has-[>svg]:p-0',
41
+ xs: "h-control-xs gap-1 px-2 rounded-control [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
42
+ sm: 'h-control-sm px-control-inline gap-1.5 rounded-control has-[>svg]:px-control-inline',
43
+ 'icon-xs': 'size-control-xs rounded-control p-0 has-[>svg]:p-0',
44
+ 'icon-sm': 'size-control-sm p-0 has-[>svg]:p-0',
45
45
  },
46
46
  },
47
47
  defaultVariants: {
@@ -52,7 +52,7 @@ function InputGroupButton({ className, type = 'button', variant = 'ghost', size
52
52
  return (_jsx(Button, { type: type, "data-size": size, variant: variant, className: cn(inputGroupButtonVariants({ size }), className), ...props }));
53
53
  }
54
54
  function InputGroupText({ className, ...props }) {
55
- return (_jsx("span", { className: cn("text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none", className), ...props }));
55
+ return (_jsx("span", { className: cn("text-muted-foreground text-ui-body flex items-center gap-2 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none", className), ...props }));
56
56
  }
57
57
  function InputGroupInput({ className, ...props }) {
58
58
  return (_jsx(Input, { "data-slot": "input-group-control", className: cn('flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent', className), ...props }));
@@ -2,10 +2,10 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { MinusIcon } from 'lucide-react';
4
4
  import * as React from 'react';
5
- import { cn } from '../../lib/utils';
5
+ import { cn } from '../../lib/utils.js';
6
6
  import { OTPInput, OTPInputContext } from 'input-otp';
7
7
  function InputOTP({ className, containerClassName, ...props }) {
8
- return (_jsx(OTPInput, { "data-slot": "input-otp", containerClassName: cn('flex items-center gap-2 has-disabled:opacity-50', containerClassName), className: cn('disabled:cursor-not-allowed', className), ...props }));
8
+ return (_jsx(OTPInput, { "data-slot": "input-otp", containerClassName: cn('group/input-otp flex items-center gap-2 has-disabled:opacity-50', containerClassName), className: cn('disabled:cursor-not-allowed', className), ...props }));
9
9
  }
10
10
  function InputOTPGroup({ className, ...props }) {
11
11
  return (_jsx("div", { "data-slot": "input-otp-group", className: cn('flex items-center', className), ...props }));
@@ -13,7 +13,7 @@ function InputOTPGroup({ className, ...props }) {
13
13
  function InputOTPSlot({ index, className, ...props }) {
14
14
  const inputOTPContext = React.useContext(OTPInputContext);
15
15
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
16
- return (_jsxs("div", { "data-slot": "input-otp-slot", "data-active": isActive, className: cn('data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input shadow-xs relative flex h-9 w-9 items-center justify-center border-y border-r text-sm outline-none transition-all first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]', className), ...props, children: [char, hasFakeCaret && (_jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: _jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] }));
16
+ return (_jsxs("div", { "data-slot": "input-otp-slot", "data-active": isActive, className: cn('data-[active=true]:border-ring data-[active=true]:bg-control-hover data-[active=true]:ring-ring group-has-[:focus-visible]/input-otp:ring-ring aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input shadow-xs text-ui-body first:rounded-l-control last:rounded-r-control relative flex size-control-md items-center justify-center border-y border-r outline-none transition-all first:border-l group-has-[:focus-visible]/input-otp:ring-1 data-[active=true]:z-10 data-[active=true]:ring-1', className), ...props, children: [char, hasFakeCaret && (_jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: _jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] }));
17
17
  }
18
18
  function InputOTPSeparator({ ...props }) {
19
19
  return (_jsx("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: _jsx(MinusIcon, {}) }));
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
3
+ import { cn } from '../../lib/utils.js';
4
4
  function Input({ className, type, ...props }) {
5
- return (_jsx("input", { type: type, "data-slot": "input", className: cn('file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input shadow-xs h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base outline-none transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', className), ...props }));
5
+ return (_jsx("input", { type: type, "data-slot": "input", className: cn('file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input shadow-xs rounded-control text-16 file:text-ui-body md:text-ui-body h-control-md w-full min-w-0 border bg-transparent px-control-inline py-1 outline-none transition-[color,box-shadow] file:inline-flex file:h-control-xs file:border-0 file:bg-transparent file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50', 'focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-1', 'aria-invalid:border-destructive', className), ...props }));
6
6
  }
7
7
  export { Input };
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Text } from './text';
2
+ import { Text } from './text.js';
3
3
  declare function Inspector({ className, ...props }: React.ComponentProps<'aside'>): import("react/jsx-runtime").JSX.Element;
4
4
  declare function InspectorHeader({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function InspectorContent({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
@@ -1,21 +1,21 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
4
- import { Text } from './text';
3
+ import { cn } from '../../lib/utils.js';
4
+ import { Text } from './text.js';
5
5
  function Inspector({ className, ...props }) {
6
6
  return (_jsx("aside", { "data-slot": "inspector", className: cn('bg-background flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden', className), ...props }));
7
7
  }
8
8
  function InspectorHeader({ className, ...props }) {
9
- return (_jsx("div", { "data-slot": "inspector-header", className: cn('border-border/70 flex min-h-9 shrink-0 items-center gap-2 border-b px-3 py-1.5', className), ...props }));
9
+ return (_jsx("div", { "data-slot": "inspector-header", className: cn('border-border/70 flex min-h-row shrink-0 items-center gap-control-gap border-b px-control-inline py-1', className), ...props }));
10
10
  }
11
11
  function InspectorContent({ className, ...props }) {
12
- return (_jsx("div", { "data-slot": "inspector-content", className: cn('min-h-0 flex-1 overflow-y-auto pb-[calc(var(--chat-safe-padding,0px)+0.75rem)]', className), ...props }));
12
+ return (_jsx("div", { "data-slot": "inspector-content", className: cn('min-h-0 flex-1 overflow-y-auto pb-[calc(var(--chat-safe-padding,0px)+var(--density-pane-padding))]', className), ...props }));
13
13
  }
14
14
  function InspectorSection({ title, actions, className, children, ...props }) {
15
- return (_jsxs("section", { "data-slot": "inspector-section", className: cn('border-border/60 border-b px-3 py-3 last:border-b-0', className), ...props, children: [title || actions ? (_jsxs("div", { "data-slot": "inspector-section-header", className: "mb-2 flex min-w-0 items-center gap-2", children: [title ? (_jsx(Text, { variant: "small-strong", color: "secondary", truncate: true, className: "uppercase tracking-wide", children: title })) : null, actions ? (_jsx("div", { className: "ml-auto flex shrink-0 items-center gap-1", children: actions })) : null] })) : null, _jsx("div", { "data-slot": "inspector-section-content", className: "space-y-2", children: children })] }));
15
+ return (_jsxs("section", { "data-slot": "inspector-section", className: cn('border-border/60 border-b p-pane last:border-b-0', className), ...props, children: [title || actions ? (_jsxs("div", { "data-slot": "inspector-section-header", className: "mb-2 flex min-w-0 items-center gap-2", children: [title ? (_jsx(Text, { variant: "small-strong", color: "secondary", truncate: true, className: "uppercase tracking-wide", children: title })) : null, actions ? (_jsx("div", { className: "ml-auto flex shrink-0 items-center gap-1", children: actions })) : null] })) : null, _jsx("div", { "data-slot": "inspector-section-content", className: "space-y-2", children: children })] }));
16
16
  }
17
17
  function InspectorRow({ className, ...props }) {
18
- return (_jsx("div", { "data-slot": "inspector-row", className: cn('grid min-h-7 grid-cols-[minmax(5rem,0.8fr)_minmax(0,1.2fr)] items-center gap-3', className), ...props }));
18
+ return (_jsx("div", { "data-slot": "inspector-row", className: cn('grid min-h-row grid-cols-[minmax(5rem,0.8fr)_minmax(0,1.2fr)] items-center gap-control-gap', className), ...props }));
19
19
  }
20
20
  function InspectorLabel({ className, ...props }) {
21
21
  return (_jsx(Text, { as: "label", variant: "small", color: "secondary", "data-slot": "inspector-label", className: cn('truncate', className), ...props }));
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Separator } from './separator';
2
+ import { Separator } from './separator.js';
3
3
  import { type VariantProps } from 'class-variance-authority';
4
4
  declare function ItemGroup({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { Slot } from '@radix-ui/react-slot';
4
- import { cn } from '../../lib/utils';
5
- import { Separator } from './separator';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { Separator } from './separator.js';
6
6
  import { cva } from 'class-variance-authority';
7
7
  function ItemGroup({ className, ...props }) {
8
8
  return (_jsx("div", { role: "list", "data-slot": "item-group", className: cn('group/item-group flex flex-col', className), ...props }));
@@ -10,7 +10,7 @@ function ItemGroup({ className, ...props }) {
10
10
  function ItemSeparator({ className, ...props }) {
11
11
  return (_jsx(Separator, { "data-slot": "item-separator", orientation: "horizontal", className: cn('my-0', className), ...props }));
12
12
  }
13
- const itemVariants = cva('group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', {
13
+ const itemVariants = cva('group/item flex items-center border border-transparent text-ui-body rounded-control transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-1', {
14
14
  variants: {
15
15
  variant: {
16
16
  default: 'bg-transparent',
@@ -35,8 +35,8 @@ const itemMediaVariants = cva('flex shrink-0 items-center justify-center gap-2 g
35
35
  variants: {
36
36
  variant: {
37
37
  default: 'bg-transparent',
38
- icon: "size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4",
39
- image: 'size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover',
38
+ icon: "size-8 border rounded-control bg-muted [&_svg:not([class*='size-'])]:size-4",
39
+ image: 'size-10 rounded-control overflow-hidden [&_img]:size-full [&_img]:object-cover',
40
40
  },
41
41
  },
42
42
  defaultVariants: {
@@ -50,10 +50,10 @@ function ItemContent({ className, ...props }) {
50
50
  return (_jsx("div", { "data-slot": "item-content", className: cn('flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none', className), ...props }));
51
51
  }
52
52
  function ItemTitle({ className, ...props }) {
53
- return (_jsx("div", { "data-slot": "item-title", className: cn('flex w-fit items-center gap-2 text-sm font-medium leading-snug', className), ...props }));
53
+ return (_jsx("div", { "data-slot": "item-title", className: cn('text-ui-body flex w-fit items-center gap-2 font-medium leading-snug', className), ...props }));
54
54
  }
55
55
  function ItemDescription({ className, ...props }) {
56
- return (_jsx("p", { "data-slot": "item-description", className: cn('text-muted-foreground line-clamp-2 text-balance text-sm font-normal leading-normal', '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4', className), ...props }));
56
+ return (_jsx("p", { "data-slot": "item-description", className: cn('text-muted-foreground text-ui-body line-clamp-2 text-balance font-normal leading-normal', '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4', className), ...props }));
57
57
  }
58
58
  function ItemActions({ className, ...props }) {
59
59
  return (_jsx("div", { "data-slot": "item-actions", className: cn('flex items-center gap-2', className), ...props }));
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
3
+ import { cn } from '../../lib/utils.js';
4
4
  function Kbd({ className, ...props }) {
5
- return (_jsx("kbd", { "data-slot": "kbd", className: cn('bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium', "[&_svg:not([class*='size-'])]:size-3", '[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10', className), ...props }));
5
+ return (_jsx("kbd", { "data-slot": "kbd", className: cn('bg-muted text-muted-foreground rounded-control text-ui-caption pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 px-1 font-sans font-medium', "[&_svg:not([class*='size-'])]:size-3", '[[data-slot=tooltip-content]_&]:bg-foreground/10 [[data-slot=tooltip-content]_&]:text-popover-foreground dark:[[data-slot=tooltip-content]_&]:bg-foreground/15', className), ...props }));
6
6
  }
7
7
  function KbdGroup({ className, ...props }) {
8
8
  return (_jsx("kbd", { "data-slot": "kbd-group", className: cn('inline-flex items-center gap-1', className), ...props }));
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as LabelPrimitive from '@radix-ui/react-label';
4
- import { cn } from '../../lib/utils';
4
+ import { cn } from '../../lib/utils.js';
5
5
  function Label({ className, ...props }) {
6
- return (_jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn('flex select-none items-center gap-2 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50', className), ...props }));
6
+ return (_jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn('text-ui-body flex select-none items-center gap-2 font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50', className), ...props }));
7
7
  }
8
8
  export { Label };
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/ui/list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,KAAK,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;AA+CvD,KAAK,SAAS,GAAG,IAAI,CACnB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAC3B,cAAc,GAAG,UAAU,CAC5B,GAAG;IACF,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACjC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACzD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,QAAQ,EACR,aAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,WAAwB,EACxB,IAAY,EACZ,QAAgB,EAChB,IAAI,EACJ,SAAS,EACT,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,2CAoMX;AAED,KAAK,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;AAEjE,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAiBlB;AAED,KAAK,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;AAErE,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,2CAiBzE;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAgB,EAChB,OAAO,EACP,aAAa,EACb,OAAO,EACP,GAAG,EACH,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,2CA+Ef;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ5E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ1E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAQ3B;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ5E;AAED,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,CAAA"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/ui/list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,KAAK,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;AA+CvD,KAAK,SAAS,GAAG,IAAI,CACnB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAC3B,cAAc,GAAG,UAAU,CAC5B,GAAG;IACF,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACjC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACzD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,QAAQ,EACR,aAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,WAAwB,EACxB,IAAY,EACZ,QAAgB,EAChB,IAAI,EACJ,SAAS,EACT,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,2CAoMX;AAED,KAAK,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;AAEjE,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAiBlB;AAED,KAAK,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;AAErE,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,2CAiBzE;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAgB,EAChB,OAAO,EACP,aAAa,EACb,OAAO,EACP,GAAG,EACH,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,2CA+Ef;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ5E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ1E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW3B;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ5E;AAED,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,CAAA"}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
- import { cn } from '../../lib/utils';
5
- import { getCollectionItemsInDomOrder, isInteractiveDescendant, } from './collection-navigation';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { getCollectionItemsInDomOrder, isInteractiveDescendant, } from './collection-navigation.js';
6
6
  const ListContext = React.createContext(null);
7
7
  const ListSectionContext = React.createContext(null);
8
8
  function useListContext(component) {
@@ -177,7 +177,7 @@ function ListSectionHeader({ className, ...props }) {
177
177
  if (!context) {
178
178
  throw new Error('ListSectionHeader must be used inside ListSection');
179
179
  }
180
- return (_jsx("div", { id: context.headerId, "data-slot": "list-section-header", className: cn('text-muted-foreground px-2.5 py-1 text-xs font-medium', className), ...props }));
180
+ return (_jsx("div", { id: context.headerId, "data-slot": "list-section-header", className: cn('text-muted-foreground text-ui-caption px-2.5 py-1 font-medium', className), ...props }));
181
181
  }
182
182
  function ListItem({ className, children, value, disabled = false, onClick, onDoubleClick, onFocus, ref, role, ...props }) {
183
183
  const context = useListContext('ListItem');
@@ -195,7 +195,7 @@ function ListItem({ className, children, value, disabled = false, onClick, onDou
195
195
  }, [ref]);
196
196
  React.useLayoutEffect(() => registerItem(value, itemRef.current, isDisabled), [isDisabled, registerItem, value]);
197
197
  const resolvedRole = role ?? (context.selectionMode === 'none' ? 'listitem' : 'option');
198
- return (_jsx("div", { ref: setRef, role: resolvedRole, tabIndex: isDisabled ? -1 : isActive ? 0 : -1, "aria-disabled": isDisabled || undefined, "aria-selected": context.selectionMode === 'none' ? undefined : isSelected, "data-slot": "list-item", "data-active": isActive || undefined, "data-disabled": isDisabled || undefined, "data-selected": context.selectionMode === 'none' ? undefined : isSelected, "data-value": value, className: cn('group/list-item relative flex min-w-0 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2 text-sm outline-none transition-colors duration-100', 'hover:bg-accent/60 focus-visible:bg-accent focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground', 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50', className), onClick: (event) => {
198
+ return (_jsx("div", { ref: setRef, role: resolvedRole, tabIndex: isDisabled ? -1 : isActive ? 0 : -1, "aria-disabled": isDisabled || undefined, "aria-selected": context.selectionMode === 'none' ? undefined : isSelected, "data-slot": "list-item", "data-active": isActive || undefined, "data-disabled": isDisabled || undefined, "data-selected": context.selectionMode === 'none' ? undefined : isSelected, "data-value": value, className: cn('group/list-item rounded-control text-ui-body relative flex min-w-0 cursor-default select-none items-center gap-2 px-2.5 py-2 outline-none transition-colors duration-100', 'hover:bg-accent/60 focus-visible:bg-accent focus-visible:ring-ring focus-visible:ring-1', 'data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground', 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50', className), onClick: (event) => {
199
199
  onClick?.(event);
200
200
  if (event.defaultPrevented ||
201
201
  isDisabled ||
@@ -227,7 +227,7 @@ function ListItemTitle({ className, ...props }) {
227
227
  return (_jsx("div", { "data-slot": "list-item-title", className: cn('truncate font-medium', className), ...props }));
228
228
  }
229
229
  function ListItemDescription({ className, ...props }) {
230
- return (_jsx("p", { "data-slot": "list-item-description", className: cn('text-muted-foreground truncate text-xs', className), ...props }));
230
+ return (_jsx("p", { "data-slot": "list-item-description", className: cn('text-muted-foreground text-ui-caption truncate', className), ...props }));
231
231
  }
232
232
  function ListItemActions({ className, ...props }) {
233
233
  return (_jsx("div", { "data-slot": "list-item-actions", className: cn('ml-auto flex shrink-0 items-center gap-1', className), ...props }));
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { Slot } from '@radix-ui/react-slot';
4
- import { cn } from '../../lib/utils';
4
+ import { cn } from '../../lib/utils.js';
5
5
  import { cva } from 'class-variance-authority';
6
6
  const materialVariants = cva('moldable-material border text-inherit', {
7
7
  variants: {
8
8
  shape: {
9
9
  rounded: 'rounded-overlay',
10
- capsule: 'rounded-full',
11
- circle: 'aspect-square rounded-full',
10
+ capsule: 'rounded-pill',
11
+ circle: 'aspect-square rounded-pill',
12
12
  },
13
13
  },
14
14
  defaultVariants: {
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { type HostNativeMenuOptions, type MenuItems } from '../../lib/host-native-menu.js';
3
+ interface DeclarativeMenuStateOptions {
4
+ items?: MenuItems[];
5
+ onSelectItem?: (id: string) => void;
6
+ open?: boolean;
7
+ defaultOpen?: boolean;
8
+ onOpenChange?: (open: boolean) => void;
9
+ onFallback?: () => void;
10
+ }
11
+ interface DeclarativeMenuState {
12
+ nativeOpen: boolean;
13
+ portableOpen: boolean | undefined;
14
+ onPortableOpenChange: (open: boolean) => void;
15
+ requestNativeMenu: (options: HostNativeMenuOptions) => boolean;
16
+ }
17
+ export declare function useDeclarativeMenuState({ items, onSelectItem, open, defaultOpen, onOpenChange, onFallback, }: DeclarativeMenuStateOptions): DeclarativeMenuState;
18
+ export declare function formatMenuShortcut(shortcut: MenuItems['shortcut']): string | null;
19
+ export declare function MenuItemContents({ item, shortcutSlot, }: {
20
+ item: Exclude<MenuItems, {
21
+ kind: 'separator';
22
+ }>;
23
+ shortcutSlot: string;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ export declare function hasMenuContentChild(children: React.ReactNode, contentType: React.ElementType): boolean;
26
+ export declare function withoutMenuContentChild(children: React.ReactNode, contentType: React.ElementType): React.ReactNode;
27
+ export {};
28
+ //# sourceMappingURL=menu-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-items.d.ts","sourceRoot":"","sources":["../../../src/components/ui/menu-items.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EAGf,MAAM,4BAA4B,CAAA;AAUnC,UAAU,2BAA2B;IACnC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,iBAAiB,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAA;CAC/D;AAED,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,UAAU,GACX,EAAE,2BAA2B,GAAG,oBAAoB,CAqEpD;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAC9B,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,YAAY,GACb,EAAE;IACD,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC,CAAA;IAC/C,YAAY,EAAE,MAAM,CAAA;CACrB,2CAiBA;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,WAAW,EAAE,KAAK,CAAC,WAAW,GAC7B,OAAO,CAUT;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,WAAW,EAAE,KAAK,CAAC,WAAW,GAC7B,KAAK,CAAC,SAAS,CAajB"}
@@ -0,0 +1,111 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { toNativeMenuItems, useHostNativeMenu, } from '../../lib/host-native-menu.js';
5
+ import { Kbd } from './kbd.js';
6
+ const SHORTCUT_MODIFIER_LABELS = {
7
+ cmd: '⌘',
8
+ shift: '⇧',
9
+ alt: '⌥',
10
+ ctrl: '⌃',
11
+ };
12
+ export function useDeclarativeMenuState({ items, onSelectItem, open, defaultOpen, onOpenChange, onFallback, }) {
13
+ const { available: nativeAvailable, open: openNativeMenu } = useHostNativeMenu();
14
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);
15
+ const [nativeOpen, setNativeOpen] = React.useState(false);
16
+ const nativeOpenRef = React.useRef(false);
17
+ const onPortableOpenChange = React.useCallback((nextOpen) => {
18
+ if (open === undefined)
19
+ setUncontrolledOpen(nextOpen);
20
+ onOpenChange?.(nextOpen);
21
+ }, [onOpenChange, open]);
22
+ const requestNativeMenu = React.useCallback((options) => {
23
+ if (!items || !nativeAvailable)
24
+ return false;
25
+ if (nativeOpenRef.current)
26
+ return true;
27
+ nativeOpenRef.current = true;
28
+ setNativeOpen(true);
29
+ if (open === undefined)
30
+ setUncontrolledOpen(false);
31
+ else if (open)
32
+ onOpenChange?.(false);
33
+ void openNativeMenu(toNativeMenuItems(items), options)
34
+ .then((result) => {
35
+ if (result.status === 'completed') {
36
+ onSelectItem?.(result.selectedId);
37
+ }
38
+ else if (result.status === 'fallback') {
39
+ if (onFallback)
40
+ onFallback();
41
+ else
42
+ onPortableOpenChange(true);
43
+ }
44
+ })
45
+ .catch((error) => {
46
+ console.error('Native menu request failed; opening portable menu.', error);
47
+ if (onFallback)
48
+ onFallback();
49
+ else
50
+ onPortableOpenChange(true);
51
+ })
52
+ .finally(() => {
53
+ nativeOpenRef.current = false;
54
+ setNativeOpen(false);
55
+ });
56
+ return true;
57
+ }, [
58
+ items,
59
+ nativeAvailable,
60
+ onOpenChange,
61
+ onFallback,
62
+ onPortableOpenChange,
63
+ onSelectItem,
64
+ openNativeMenu,
65
+ open,
66
+ ]);
67
+ return {
68
+ nativeOpen,
69
+ portableOpen: nativeOpen ? false : (open ?? uncontrolledOpen),
70
+ onPortableOpenChange,
71
+ requestNativeMenu,
72
+ };
73
+ }
74
+ export function formatMenuShortcut(shortcut) {
75
+ if (!shortcut)
76
+ return null;
77
+ const modifiers = shortcut.modifiers
78
+ ?.map((modifier) => SHORTCUT_MODIFIER_LABELS[modifier])
79
+ .join('');
80
+ const key = shortcut.key.length === 1 ? shortcut.key.toUpperCase() : shortcut.key;
81
+ return `${modifiers ?? ''}${key}`;
82
+ }
83
+ export function MenuItemContents({ item, shortcutSlot, }) {
84
+ const Icon = item.icon;
85
+ const shortcut = formatMenuShortcut(item.shortcut);
86
+ return (_jsxs(_Fragment, { children: [Icon ? _jsx(Icon, { "aria-hidden": "true" }) : null, _jsx("span", { children: item.label }), shortcut ? (_jsx("span", { "data-slot": shortcutSlot, className: "text-muted-foreground text-ui-caption ml-auto tracking-widest", children: _jsx(Kbd, { children: shortcut }) })) : null] }));
87
+ }
88
+ export function hasMenuContentChild(children, contentType) {
89
+ return React.Children.toArray(children).some((child) => {
90
+ if (!React.isValidElement(child))
91
+ return false;
92
+ if (child.type === contentType)
93
+ return true;
94
+ if (child.type !== React.Fragment)
95
+ return false;
96
+ return hasMenuContentChild(child.props.children, contentType);
97
+ });
98
+ }
99
+ export function withoutMenuContentChild(children, contentType) {
100
+ return React.Children.map(children, (child) => {
101
+ if (!React.isValidElement(child))
102
+ return child;
103
+ if (child.type === contentType)
104
+ return null;
105
+ if (child.type !== React.Fragment)
106
+ return child;
107
+ const fragmentChildren = child.props
108
+ .children;
109
+ return React.cloneElement(child, undefined, withoutMenuContentChild(fragmentChildren, contentType));
110
+ });
111
+ }
@@ -2,9 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as MenubarPrimitive from '@radix-ui/react-menubar';
4
4
  import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';
5
- import { cn } from '../../lib/utils';
5
+ import { cn } from '../../lib/utils.js';
6
6
  function Menubar({ className, ...props }) {
7
- return (_jsx(MenubarPrimitive.Root, { "data-slot": "menubar", className: cn('bg-background shadow-xs flex h-9 items-center gap-1 rounded-md border p-1', className), ...props }));
7
+ return (_jsx(MenubarPrimitive.Root, { "data-slot": "menubar", className: cn('bg-background shadow-xs rounded-group flex h-control-md items-center gap-control-gap border p-1', className), ...props }));
8
8
  }
9
9
  function MenubarMenu({ ...props }) {
10
10
  return _jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
@@ -19,36 +19,36 @@ function MenubarRadioGroup({ ...props }) {
19
19
  return (_jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props }));
20
20
  }
21
21
  function MenubarTrigger({ className, ...props }) {
22
- return (_jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn('focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground outline-hidden flex select-none items-center rounded-sm px-2 py-1 text-sm font-medium', className), ...props }));
22
+ return (_jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn('focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground outline-hidden rounded-control text-ui-body flex select-none items-center px-2 py-1 font-medium', className), ...props }));
23
23
  }
24
24
  function MenubarContent({ className, align = 'start', alignOffset = -4, sideOffset = 8, ...props }) {
25
- return (_jsx(MenubarPortal, { children: _jsx(MenubarPrimitive.Content, { "data-slot": "menubar-content", align: align, alignOffset: alignOffset, sideOffset: sideOffset, className: cn('bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin) z-50 min-w-[12rem] overflow-hidden rounded-md border p-1 shadow-md', className), ...props }) }));
25
+ return (_jsx(MenubarPortal, { children: _jsx(MenubarPrimitive.Content, { "data-slot": "menubar-content", align: align, alignOffset: alignOffset, sideOffset: sideOffset, className: cn('bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin) rounded-overlay shadow-overlay z-50 min-w-[12rem] overflow-hidden border p-1', className), ...props }) }));
26
26
  }
27
27
  function MenubarItem({ className, inset, variant = 'default', ...props }) {
28
- return (_jsx(MenubarPrimitive.Item, { "data-slot": "menubar-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), ...props }));
28
+ return (_jsx(MenubarPrimitive.Item, { "data-slot": "menubar-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden rounded-control text-ui-body relative flex cursor-default select-none items-center gap-2 px-2 py-1.5 data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), ...props }));
29
29
  }
30
30
  function MenubarCheckboxItem({ className, children, checked, ...props }) {
31
- return (_jsxs(MenubarPrimitive.CheckboxItem, { "data-slot": "menubar-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground rounded-xs outline-hidden relative flex cursor-default select-none items-center gap-2 py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), checked: checked, ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(MenubarPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), children] }));
31
+ return (_jsxs(MenubarPrimitive.CheckboxItem, { "data-slot": "menubar-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground rounded-control outline-hidden text-ui-body relative flex cursor-default select-none items-center gap-2 py-1.5 pl-8 pr-2 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), checked: checked, ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(MenubarPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), children] }));
32
32
  }
33
33
  function MenubarRadioItem({ className, children, ...props }) {
34
- return (_jsxs(MenubarPrimitive.RadioItem, { "data-slot": "menubar-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground rounded-xs outline-hidden relative flex cursor-default select-none items-center gap-2 py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(MenubarPrimitive.ItemIndicator, { children: _jsx(CircleIcon, { className: "size-2 fill-current" }) }) }), children] }));
34
+ return (_jsxs(MenubarPrimitive.RadioItem, { "data-slot": "menubar-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground rounded-control outline-hidden text-ui-body relative flex cursor-default select-none items-center gap-2 py-1.5 pl-8 pr-2 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className), ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(MenubarPrimitive.ItemIndicator, { children: _jsx(CircleIcon, { className: "size-2 fill-current" }) }) }), children] }));
35
35
  }
36
36
  function MenubarLabel({ className, inset, ...props }) {
37
- return (_jsx(MenubarPrimitive.Label, { "data-slot": "menubar-label", "data-inset": inset, className: cn('px-2 py-1.5 text-sm font-medium data-[inset]:pl-8', className), ...props }));
37
+ return (_jsx(MenubarPrimitive.Label, { "data-slot": "menubar-label", "data-inset": inset, className: cn('text-ui-body px-2 py-1.5 font-medium data-[inset]:pl-8', className), ...props }));
38
38
  }
39
39
  function MenubarSeparator({ className, ...props }) {
40
40
  return (_jsx(MenubarPrimitive.Separator, { "data-slot": "menubar-separator", className: cn('bg-border -mx-1 my-1 h-px', className), ...props }));
41
41
  }
42
42
  function MenubarShortcut({ className, ...props }) {
43
- return (_jsx("span", { "data-slot": "menubar-shortcut", className: cn('text-muted-foreground ml-auto text-xs tracking-widest', className), ...props }));
43
+ return (_jsx("span", { "data-slot": "menubar-shortcut", className: cn('text-muted-foreground text-ui-caption ml-auto tracking-widest', className), ...props }));
44
44
  }
45
45
  function MenubarSub({ ...props }) {
46
46
  return _jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
47
47
  }
48
48
  function MenubarSubTrigger({ className, inset, children, ...props }) {
49
- return (_jsxs(MenubarPrimitive.SubTrigger, { "data-slot": "menubar-sub-trigger", "data-inset": inset, className: cn('focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[inset]:pl-8', className), ...props, children: [children, _jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })] }));
49
+ return (_jsxs(MenubarPrimitive.SubTrigger, { "data-slot": "menubar-sub-trigger", "data-inset": inset, className: cn('focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground rounded-control text-ui-body flex cursor-default select-none items-center px-2 py-1.5 outline-none data-[inset]:pl-8', className), ...props, children: [children, _jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })] }));
50
50
  }
51
51
  function MenubarSubContent({ className, ...props }) {
52
- return (_jsx(MenubarPrimitive.SubContent, { "data-slot": "menubar-sub-content", className: cn('bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin) z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg', className), ...props }));
52
+ return (_jsx(MenubarPrimitive.SubContent, { "data-slot": "menubar-sub-content", className: cn('bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-menubar-content-transform-origin) rounded-overlay shadow-overlay z-50 min-w-[8rem] overflow-hidden border p-1', className), ...props }));
53
53
  }
54
54
  export { Menubar, MenubarPortal, MenubarMenu, MenubarTrigger, MenubarContent, MenubarGroup, MenubarSeparator, MenubarLabel, MenubarItem, MenubarShortcut, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, };
@@ -1,4 +1,4 @@
1
- import { MessageScrollerPolicy } from './message-scroller-policy';
1
+ import { MessageScrollerPolicy } from './message-scroller-policy.js';
2
2
  export type MessageScrollerDefaultScrollPosition = 'start' | 'end' | 'last-anchor';
3
3
  export type MessageScrollerScrollAlign = 'start' | 'center' | 'end' | 'nearest';
4
4
  export type MessageScrollerScrollOptions = {
@@ -1,4 +1,4 @@
1
- import { MessageScrollerPolicy } from './message-scroller-policy';
1
+ import { MessageScrollerPolicy } from './message-scroller-policy.js';
2
2
  const READING_LEAF_SELECTOR = '[data-message-scroll-anchor]';
3
3
  const POSITION_EPSILON_PX = 0.5;
4
4
  const WARMUP_BATCH_SIZE = 3;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type MessageScrollerDefaultScrollPosition, type MessageScrollerScrollAlign, type MessageScrollerScrollOptions, type MessageScrollerScrollable, type MessageScrollerVisibilityState } from './message-scroller-controller';
2
+ import { type MessageScrollerDefaultScrollPosition, type MessageScrollerScrollAlign, type MessageScrollerScrollOptions, type MessageScrollerScrollable, type MessageScrollerVisibilityState } from './message-scroller-controller.js';
3
3
  type MessageScrollerProviderProps = {
4
4
  children?: React.ReactNode;
5
5
  autoScroll?: boolean;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
- import { MessageScrollerController, } from './message-scroller-controller';
4
+ import { MessageScrollerController, } from './message-scroller-controller.js';
5
5
  /**
6
6
  * The transcript scroller primitive, owned in-repo. Drop-in compatible with
7
7
  * the `@shadcn/react/message-scroller` surface it replaces, but built around
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { Button } from './button';
3
- import { MessageScroller as MessageScrollerPrimitive, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility } from './message-scroller-primitive';
2
+ import { Button } from './button.js';
3
+ import { MessageScroller as MessageScrollerPrimitive, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility } from './message-scroller-primitive.js';
4
4
  declare function MessageScrollerProvider(props: React.ComponentProps<typeof MessageScrollerPrimitive.Provider>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function MessageScroller({ className, ...props }: React.ComponentProps<typeof MessageScrollerPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
6
6
  declare function MessageScrollerViewport({ className, ...props }: React.ComponentProps<typeof MessageScrollerPrimitive.Viewport>): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { ArrowDown } from 'lucide-react';
4
- import { cn } from '../../lib/utils';
5
- import { Button } from './button';
6
- import { MessageScroller as MessageScrollerPrimitive, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, } from './message-scroller-primitive';
4
+ import { cn } from '../../lib/utils.js';
5
+ import { Button } from './button.js';
6
+ import { MessageScroller as MessageScrollerPrimitive, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, } from './message-scroller-primitive.js';
7
7
  function MessageScrollerProvider(props) {
8
8
  return _jsx(MessageScrollerPrimitive.Provider, { ...props });
9
9
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { ButtonGroup } from './button-group';
3
- import { type IconButtonProps, type IconButtonSize } from './icon-button';
2
+ import { ButtonGroup } from './button-group.js';
3
+ import { type IconButtonProps, type IconButtonSize } from './icon-button.js';
4
4
  export interface NavigationButtonGroupProps extends Omit<React.ComponentProps<typeof ButtonGroup>, 'children' | 'orientation'> {
5
5
  canGoBack?: boolean;
6
6
  canGoForward?: boolean;
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';
4
- import { ButtonGroup } from './button-group';
5
- import { IconButton, } from './icon-button';
4
+ import { ButtonGroup } from './button-group.js';
5
+ import { IconButton, } from './icon-button.js';
6
6
  function NavigationButtonGroup({ canGoBack = true, canGoForward = true, onBack, onForward, backLabel = 'Go back', forwardLabel = 'Go forward', size = 'sm', variant = 'ghost', 'aria-label': ariaLabel = 'Navigation', ...props }) {
7
7
  return (_jsxs(ButtonGroup, { "aria-label": ariaLabel, orientation: "horizontal", ...props, children: [_jsx(IconButton, { label: backLabel, tooltip: true, size: size, variant: variant, disabled: !canGoBack, onClick: onBack, children: _jsx(ChevronLeftIcon, {}) }), _jsx(IconButton, { label: forwardLabel, tooltip: true, size: size, variant: variant, disabled: !canGoForward, onClick: onForward, children: _jsx(ChevronRightIcon, {}) })] }));
8
8
  }