@moldable-ai/ui 0.2.21 → 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 (515) 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/catalog-types.d.ts +7 -0
  5. package/dist/catalog/catalog-types.d.ts.map +1 -1
  6. package/dist/catalog/catalog-types.js +1 -0
  7. package/dist/catalog/component-catalog.d.ts +1 -1
  8. package/dist/catalog/component-catalog.js +2 -2
  9. package/dist/catalog/core-catalog-exclusions.d.ts +1 -1
  10. package/dist/catalog/core-catalog-exclusions.d.ts.map +1 -1
  11. package/dist/catalog/core-catalog-exclusions.js +1 -146
  12. package/dist/catalog/core-catalog.d.ts +1 -1
  13. package/dist/catalog/core-catalog.d.ts.map +1 -1
  14. package/dist/catalog/core-catalog.js +11 -7
  15. package/dist/catalog/core-collection-stories.d.ts +1 -1
  16. package/dist/catalog/core-collection-stories.d.ts.map +1 -1
  17. package/dist/catalog/core-collection-stories.js +41 -9
  18. package/dist/catalog/core-control-stories.d.ts +1 -1
  19. package/dist/catalog/core-control-stories.d.ts.map +1 -1
  20. package/dist/catalog/core-control-stories.js +53 -22
  21. package/dist/catalog/core-feedback-stories.d.ts +1 -1
  22. package/dist/catalog/core-feedback-stories.d.ts.map +1 -1
  23. package/dist/catalog/core-feedback-stories.js +89 -10
  24. package/dist/catalog/core-form-stories.d.ts +3 -0
  25. package/dist/catalog/core-form-stories.d.ts.map +1 -0
  26. package/dist/catalog/core-form-stories.js +56 -0
  27. package/dist/catalog/core-foundation-stories.d.ts +1 -1
  28. package/dist/catalog/core-foundation-stories.js +7 -7
  29. package/dist/catalog/core-layout-stories.d.ts +3 -0
  30. package/dist/catalog/core-layout-stories.d.ts.map +1 -0
  31. package/dist/catalog/core-layout-stories.js +78 -0
  32. package/dist/catalog/core-navigation-stories.d.ts +1 -1
  33. package/dist/catalog/core-navigation-stories.d.ts.map +1 -1
  34. package/dist/catalog/core-navigation-stories.js +25 -3
  35. package/dist/catalog/core-overlay-stories.d.ts +1 -1
  36. package/dist/catalog/core-overlay-stories.d.ts.map +1 -1
  37. package/dist/catalog/core-overlay-stories.js +113 -8
  38. package/dist/catalog/index.d.ts +6 -6
  39. package/dist/catalog/index.js +6 -6
  40. package/dist/components/app-error-boundary.d.ts.map +1 -1
  41. package/dist/components/app-error-boundary.js +4 -3
  42. package/dist/components/chat/chat-image-lightbox.js +3 -3
  43. package/dist/components/chat/chat-input.js +5 -5
  44. package/dist/components/chat/chat-message.js +17 -17
  45. package/dist/components/chat/chat-messages.d.ts +1 -1
  46. package/dist/components/chat/chat-messages.js +3 -3
  47. package/dist/components/chat/chat-panel.d.ts +6 -6
  48. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  49. package/dist/components/chat/chat-panel.js +33 -33
  50. package/dist/components/chat/checkpoint-badge.js +3 -3
  51. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  52. package/dist/components/chat/conversation-history.js +13 -13
  53. package/dist/components/chat/index.d.ts +20 -15
  54. package/dist/components/chat/index.d.ts.map +1 -1
  55. package/dist/components/chat/index.js +20 -15
  56. package/dist/components/chat/markdown.js +1 -1
  57. package/dist/components/chat/model-effort-selector.js +10 -10
  58. package/dist/components/chat/model-selector.js +4 -4
  59. package/dist/components/chat/reasoning-effort-selector.js +4 -4
  60. package/dist/components/chat/restore-dialog.js +3 -3
  61. package/dist/components/chat/thinking-timeline.js +2 -2
  62. package/dist/components/chat/tool-approval.d.ts +1 -1
  63. package/dist/components/chat/tool-approval.d.ts.map +1 -1
  64. package/dist/components/chat/tool-approval.js +9 -9
  65. package/dist/components/chat/tool-handlers.d.ts +2 -2
  66. package/dist/components/chat/tool-handlers.js +90 -90
  67. package/dist/components/chat/voice-orb-audio.d.ts +16 -0
  68. package/dist/components/chat/voice-orb-audio.d.ts.map +1 -0
  69. package/dist/components/chat/voice-orb-audio.js +110 -0
  70. package/dist/components/chat/voice-orb-renderer.d.ts +51 -0
  71. package/dist/components/chat/voice-orb-renderer.d.ts.map +1 -0
  72. package/dist/components/chat/voice-orb-renderer.js +410 -0
  73. package/dist/components/chat/voice-orb-shaders.d.ts +3 -0
  74. package/dist/components/chat/voice-orb-shaders.d.ts.map +1 -0
  75. package/dist/components/chat/voice-orb-shaders.js +355 -0
  76. package/dist/components/chat/voice-orb-types.d.ts +24 -0
  77. package/dist/components/chat/voice-orb-types.d.ts.map +1 -0
  78. package/dist/components/chat/voice-orb-types.js +73 -0
  79. package/dist/components/chat/voice-orb.d.ts +20 -0
  80. package/dist/components/chat/voice-orb.d.ts.map +1 -0
  81. package/dist/components/chat/voice-orb.js +67 -0
  82. package/dist/components/code-block.js +1 -1
  83. package/dist/components/hardware/bluetooth-panel.d.ts +2 -2
  84. package/dist/components/hardware/bluetooth-panel.js +10 -10
  85. package/dist/components/hardware/camera-preview.js +6 -6
  86. package/dist/components/hardware/capability-badge.d.ts +2 -2
  87. package/dist/components/hardware/capability-badge.js +2 -2
  88. package/dist/components/hardware/capability-matrix.d.ts +1 -1
  89. package/dist/components/hardware/capability-matrix.js +5 -5
  90. package/dist/components/hardware/clipboard-button.d.ts +1 -1
  91. package/dist/components/hardware/clipboard-button.js +2 -2
  92. package/dist/components/hardware/device-list.js +1 -1
  93. package/dist/components/hardware/display-map.d.ts +1 -1
  94. package/dist/components/hardware/display-map.js +7 -7
  95. package/dist/components/hardware/haptic-button.d.ts +2 -2
  96. package/dist/components/hardware/haptic-button.js +3 -3
  97. package/dist/components/hardware/hardware-panel.js +1 -1
  98. package/dist/components/hardware/hid-panel.d.ts +2 -2
  99. package/dist/components/hardware/hid-panel.js +10 -10
  100. package/dist/components/hardware/index.d.ts +26 -26
  101. package/dist/components/hardware/index.js +26 -26
  102. package/dist/components/hardware/live-indicator.js +1 -1
  103. package/dist/components/hardware/local-auth-button.d.ts +2 -2
  104. package/dist/components/hardware/local-auth-button.js +4 -4
  105. package/dist/components/hardware/location-panel.d.ts +1 -1
  106. package/dist/components/hardware/location-panel.js +6 -6
  107. package/dist/components/hardware/microphone-meter.js +7 -7
  108. package/dist/components/hardware/midi-monitor.d.ts +2 -2
  109. package/dist/components/hardware/midi-monitor.js +9 -9
  110. package/dist/components/hardware/notification-panel.d.ts +1 -1
  111. package/dist/components/hardware/notification-panel.js +8 -8
  112. package/dist/components/hardware/power-blocker-controller.d.ts +1 -1
  113. package/dist/components/hardware/power-blocker-controller.js +1 -1
  114. package/dist/components/hardware/power-panel.d.ts +1 -1
  115. package/dist/components/hardware/power-panel.js +9 -9
  116. package/dist/components/hardware/readout.js +1 -1
  117. package/dist/components/hardware/screen-share-preview.js +5 -5
  118. package/dist/components/hardware/secure-storage-panel.d.ts +1 -1
  119. package/dist/components/hardware/secure-storage-panel.js +9 -9
  120. package/dist/components/hardware/serial-console.d.ts +2 -2
  121. package/dist/components/hardware/serial-console.js +10 -10
  122. package/dist/components/hardware/shortcut-recorder.d.ts +1 -1
  123. package/dist/components/hardware/shortcut-recorder.js +4 -4
  124. package/dist/components/hardware/stream-log.js +1 -1
  125. package/dist/components/hardware/system-audio-monitor.d.ts +1 -1
  126. package/dist/components/hardware/system-audio-monitor.js +9 -9
  127. package/dist/components/hardware/usb-panel.d.ts +5 -5
  128. package/dist/components/hardware/usb-panel.js +10 -10
  129. package/dist/components/hardware/use-capability.d.ts +1 -1
  130. package/dist/components/hardware/use-capability.js +1 -1
  131. package/dist/components/markdown.js +5 -5
  132. package/dist/components/native-capabilities/bluetooth-panel.d.ts +2 -2
  133. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -1
  134. package/dist/components/native-capabilities/bluetooth-panel.js +17 -17
  135. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -1
  136. package/dist/components/native-capabilities/camera-preview.js +7 -7
  137. package/dist/components/native-capabilities/capability-badge.d.ts +2 -2
  138. package/dist/components/native-capabilities/capability-badge.js +4 -4
  139. package/dist/components/native-capabilities/capability-matrix.d.ts +1 -1
  140. package/dist/components/native-capabilities/capability-matrix.js +7 -7
  141. package/dist/components/native-capabilities/clipboard-button.d.ts +1 -1
  142. package/dist/components/native-capabilities/clipboard-button.js +2 -2
  143. package/dist/components/native-capabilities/device-list.js +4 -4
  144. package/dist/components/native-capabilities/display-map.d.ts +1 -1
  145. package/dist/components/native-capabilities/display-map.d.ts.map +1 -1
  146. package/dist/components/native-capabilities/display-map.js +11 -11
  147. package/dist/components/native-capabilities/haptic-button.d.ts +2 -2
  148. package/dist/components/native-capabilities/haptic-button.js +3 -3
  149. package/dist/components/native-capabilities/hid-panel.d.ts +2 -2
  150. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -1
  151. package/dist/components/native-capabilities/hid-panel.js +14 -14
  152. package/dist/components/native-capabilities/index.d.ts +26 -26
  153. package/dist/components/native-capabilities/index.js +26 -26
  154. package/dist/components/native-capabilities/live-indicator.js +3 -3
  155. package/dist/components/native-capabilities/local-auth-button.d.ts +2 -2
  156. package/dist/components/native-capabilities/local-auth-button.js +4 -4
  157. package/dist/components/native-capabilities/location-panel.d.ts +1 -1
  158. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -1
  159. package/dist/components/native-capabilities/location-panel.js +8 -8
  160. package/dist/components/native-capabilities/microphone-meter.js +9 -9
  161. package/dist/components/native-capabilities/midi-monitor.d.ts +2 -2
  162. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -1
  163. package/dist/components/native-capabilities/midi-monitor.js +11 -11
  164. package/dist/components/native-capabilities/native-capability-panel.js +6 -6
  165. package/dist/components/native-capabilities/notification-panel.d.ts +1 -1
  166. package/dist/components/native-capabilities/notification-panel.js +9 -9
  167. package/dist/components/native-capabilities/power-blocker-controller.d.ts +1 -1
  168. package/dist/components/native-capabilities/power-blocker-controller.js +1 -1
  169. package/dist/components/native-capabilities/power-panel.d.ts +1 -1
  170. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -1
  171. package/dist/components/native-capabilities/power-panel.js +12 -12
  172. package/dist/components/native-capabilities/readout.d.ts.map +1 -1
  173. package/dist/components/native-capabilities/readout.js +2 -2
  174. package/dist/components/native-capabilities/screen-share-preview.js +6 -6
  175. package/dist/components/native-capabilities/secure-storage-panel.d.ts +1 -1
  176. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -1
  177. package/dist/components/native-capabilities/secure-storage-panel.js +11 -11
  178. package/dist/components/native-capabilities/serial-console.d.ts +2 -2
  179. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -1
  180. package/dist/components/native-capabilities/serial-console.js +11 -11
  181. package/dist/components/native-capabilities/shortcut-recorder.d.ts +1 -1
  182. package/dist/components/native-capabilities/shortcut-recorder.js +5 -5
  183. package/dist/components/native-capabilities/stream-log.js +3 -3
  184. package/dist/components/native-capabilities/system-audio-monitor.d.ts +1 -1
  185. package/dist/components/native-capabilities/system-audio-monitor.js +12 -12
  186. package/dist/components/native-capabilities/usb-panel.d.ts +5 -5
  187. package/dist/components/native-capabilities/usb-panel.js +15 -15
  188. package/dist/components/native-capabilities/use-capability.d.ts +1 -1
  189. package/dist/components/native-capabilities/use-capability.js +1 -1
  190. package/dist/components/rich-media-player.js +3 -3
  191. package/dist/components/ui/accordion.js +3 -3
  192. package/dist/components/ui/alert-dialog.d.ts +5 -3
  193. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  194. package/dist/components/ui/alert-dialog.js +20 -10
  195. package/dist/components/ui/alert.d.ts +2 -2
  196. package/dist/components/ui/alert.d.ts.map +1 -1
  197. package/dist/components/ui/alert.js +11 -11
  198. package/dist/components/ui/app-frame.d.ts +7 -1
  199. package/dist/components/ui/app-frame.d.ts.map +1 -1
  200. package/dist/components/ui/app-frame.js +52 -16
  201. package/dist/components/ui/avatar.js +5 -5
  202. package/dist/components/ui/badge.d.ts +1 -1
  203. package/dist/components/ui/badge.js +4 -4
  204. package/dist/components/ui/breadcrumb.js +2 -2
  205. package/dist/components/ui/button-group.d.ts +1 -1
  206. package/dist/components/ui/button-group.js +4 -4
  207. package/dist/components/ui/button.d.ts +6 -4
  208. package/dist/components/ui/button.d.ts.map +1 -1
  209. package/dist/components/ui/button.js +50 -18
  210. package/dist/components/ui/calendar.d.ts +1 -1
  211. package/dist/components/ui/calendar.d.ts.map +1 -1
  212. package/dist/components/ui/calendar.js +15 -15
  213. package/dist/components/ui/card.js +3 -3
  214. package/dist/components/ui/carousel.d.ts +1 -1
  215. package/dist/components/ui/carousel.js +4 -4
  216. package/dist/components/ui/chart.js +5 -5
  217. package/dist/components/ui/checkbox.d.ts.map +1 -1
  218. package/dist/components/ui/checkbox.js +2 -2
  219. package/dist/components/ui/collapsible.js +3 -3
  220. package/dist/components/ui/color-well.js +2 -2
  221. package/dist/components/ui/combobox.js +9 -9
  222. package/dist/components/ui/command.d.ts +1 -1
  223. package/dist/components/ui/command.d.ts.map +1 -1
  224. package/dist/components/ui/command.js +9 -9
  225. package/dist/components/ui/confirm-dialog.d.ts +1 -1
  226. package/dist/components/ui/confirm-dialog.d.ts.map +1 -1
  227. package/dist/components/ui/confirm-dialog.js +2 -2
  228. package/dist/components/ui/context-menu.d.ts +16 -5
  229. package/dist/components/ui/context-menu.d.ts.map +1 -1
  230. package/dist/components/ui/context-menu.js +92 -16
  231. package/dist/components/ui/date-field.d.ts.map +1 -1
  232. package/dist/components/ui/date-field.js +8 -8
  233. package/dist/components/ui/date-picker.d.ts +2 -2
  234. package/dist/components/ui/date-picker.js +7 -7
  235. package/dist/components/ui/dialog-primary-action.d.ts +4 -0
  236. package/dist/components/ui/dialog-primary-action.d.ts.map +1 -0
  237. package/dist/components/ui/dialog-primary-action.js +37 -0
  238. package/dist/components/ui/dialog.d.ts +6 -2
  239. package/dist/components/ui/dialog.d.ts.map +1 -1
  240. package/dist/components/ui/dialog.js +20 -7
  241. package/dist/components/ui/drawer.js +4 -4
  242. package/dist/components/ui/dropdown-menu.d.ts +15 -5
  243. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  244. package/dist/components/ui/dropdown-menu.js +98 -16
  245. package/dist/components/ui/edge-fade.js +1 -1
  246. package/dist/components/ui/empty.d.ts +1 -1
  247. package/dist/components/ui/empty.js +5 -5
  248. package/dist/components/ui/error-boundary-view.d.ts +12 -0
  249. package/dist/components/ui/error-boundary-view.d.ts.map +1 -0
  250. package/dist/components/ui/error-boundary-view.js +8 -0
  251. package/dist/components/ui/field.d.ts +1 -1
  252. package/dist/components/ui/field.d.ts.map +1 -1
  253. package/dist/components/ui/field.js +9 -9
  254. package/dist/components/ui/form.js +4 -4
  255. package/dist/components/ui/grid.d.ts.map +1 -1
  256. package/dist/components/ui/grid.js +5 -5
  257. package/dist/components/ui/hover-card.js +2 -2
  258. package/dist/components/ui/icon-button.d.ts +1 -1
  259. package/dist/components/ui/icon-button.d.ts.map +1 -1
  260. package/dist/components/ui/icon-button.js +3 -4
  261. package/dist/components/ui/index.d.ts +77 -76
  262. package/dist/components/ui/index.d.ts.map +1 -1
  263. package/dist/components/ui/index.js +77 -76
  264. package/dist/components/ui/input-group.d.ts +3 -3
  265. package/dist/components/ui/input-group.js +14 -14
  266. package/dist/components/ui/input-otp.js +3 -3
  267. package/dist/components/ui/input.js +2 -2
  268. package/dist/components/ui/inspector.d.ts +1 -1
  269. package/dist/components/ui/inspector.js +6 -6
  270. package/dist/components/ui/item.d.ts +1 -1
  271. package/dist/components/ui/item.js +7 -7
  272. package/dist/components/ui/kbd.js +2 -2
  273. package/dist/components/ui/label.js +2 -2
  274. package/dist/components/ui/list.d.ts.map +1 -1
  275. package/dist/components/ui/list.js +5 -5
  276. package/dist/components/ui/material.js +3 -3
  277. package/dist/components/ui/menu-items.d.ts +28 -0
  278. package/dist/components/ui/menu-items.d.ts.map +1 -0
  279. package/dist/components/ui/menu-items.js +111 -0
  280. package/dist/components/ui/menubar.js +11 -11
  281. package/dist/components/ui/message-scroller-controller.d.ts +1 -1
  282. package/dist/components/ui/message-scroller-controller.js +1 -1
  283. package/dist/components/ui/message-scroller-primitive.d.ts +1 -1
  284. package/dist/components/ui/message-scroller-primitive.js +1 -1
  285. package/dist/components/ui/message-scroller.d.ts +2 -2
  286. package/dist/components/ui/message-scroller.js +3 -3
  287. package/dist/components/ui/navigation-button-group.d.ts +2 -2
  288. package/dist/components/ui/navigation-button-group.js +2 -2
  289. package/dist/components/ui/navigation-menu.js +6 -6
  290. package/dist/components/ui/notification-dot.js +2 -2
  291. package/dist/components/ui/number-input.js +8 -8
  292. package/dist/components/ui/pagination.d.ts +1 -1
  293. package/dist/components/ui/pagination.js +2 -2
  294. package/dist/components/ui/panel.d.ts +1 -1
  295. package/dist/components/ui/panel.js +3 -3
  296. package/dist/components/ui/popover.d.ts +1 -1
  297. package/dist/components/ui/popover.js +3 -3
  298. package/dist/components/ui/progress.js +2 -2
  299. package/dist/components/ui/radio-group.d.ts.map +1 -1
  300. package/dist/components/ui/radio-group.js +2 -2
  301. package/dist/components/ui/resizable.d.ts +1 -1
  302. package/dist/components/ui/resizable.d.ts.map +1 -1
  303. package/dist/components/ui/resizable.js +15 -4
  304. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  305. package/dist/components/ui/scroll-area.js +3 -3
  306. package/dist/components/ui/search-field.js +7 -7
  307. package/dist/components/ui/segmented-control.js +9 -9
  308. package/dist/components/ui/select.d.ts.map +1 -1
  309. package/dist/components/ui/select.js +6 -6
  310. package/dist/components/ui/separator.js +1 -1
  311. package/dist/components/ui/sheet.js +4 -4
  312. package/dist/components/ui/sidebar.d.ts +5 -5
  313. package/dist/components/ui/sidebar.d.ts.map +1 -1
  314. package/dist/components/ui/sidebar.js +111 -24
  315. package/dist/components/ui/skeleton.js +2 -2
  316. package/dist/components/ui/slider.d.ts +3 -1
  317. package/dist/components/ui/slider.d.ts.map +1 -1
  318. package/dist/components/ui/slider.js +3 -3
  319. package/dist/components/ui/sonner.js +1 -1
  320. package/dist/components/ui/spinner.d.ts.map +1 -1
  321. package/dist/components/ui/spinner.js +2 -2
  322. package/dist/components/ui/split-view.js +1 -1
  323. package/dist/components/ui/status.d.ts +1 -1
  324. package/dist/components/ui/status.d.ts.map +1 -1
  325. package/dist/components/ui/status.js +10 -9
  326. package/dist/components/ui/switch.js +2 -2
  327. package/dist/components/ui/table.d.ts.map +1 -1
  328. package/dist/components/ui/table.js +7 -7
  329. package/dist/components/ui/tabs.js +3 -3
  330. package/dist/components/ui/text.d.ts +2 -2
  331. package/dist/components/ui/text.js +19 -19
  332. package/dist/components/ui/textarea.js +2 -2
  333. package/dist/components/ui/toggle-group.d.ts +1 -1
  334. package/dist/components/ui/toggle-group.js +4 -4
  335. package/dist/components/ui/toggle.d.ts +1 -1
  336. package/dist/components/ui/toggle.js +10 -10
  337. package/dist/components/ui/toolbar.d.ts +7 -7
  338. package/dist/components/ui/toolbar.js +7 -7
  339. package/dist/components/ui/tooltip.d.ts +2 -2
  340. package/dist/components/ui/tooltip.js +5 -5
  341. package/dist/index.d.ts +21 -15
  342. package/dist/index.d.ts.map +1 -1
  343. package/dist/index.js +22 -15
  344. package/dist/lib/frame-lifecycle.d.ts +49 -0
  345. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  346. package/dist/lib/frame-lifecycle.js +163 -1
  347. package/dist/lib/host-date-time-picker.d.ts +36 -0
  348. package/dist/lib/host-date-time-picker.d.ts.map +1 -0
  349. package/dist/lib/host-date-time-picker.js +162 -0
  350. package/dist/lib/host-file-dialog.d.ts +66 -0
  351. package/dist/lib/host-file-dialog.d.ts.map +1 -0
  352. package/dist/lib/host-file-dialog.js +221 -0
  353. package/dist/lib/host-native-menu.d.ts +116 -0
  354. package/dist/lib/host-native-menu.d.ts.map +1 -0
  355. package/dist/lib/host-native-menu.js +242 -0
  356. package/dist/lib/host-services.d.ts +13 -0
  357. package/dist/lib/host-services.d.ts.map +1 -0
  358. package/dist/lib/host-services.js +161 -0
  359. package/dist/lib/host-share.d.ts +39 -0
  360. package/dist/lib/host-share.d.ts.map +1 -0
  361. package/dist/lib/host-share.js +161 -0
  362. package/dist/lib/host-web-surface.d.ts +31 -0
  363. package/dist/lib/host-web-surface.d.ts.map +1 -0
  364. package/dist/lib/host-web-surface.js +116 -0
  365. package/dist/lib/native-capabilities/access.d.ts +2 -2
  366. package/dist/lib/native-capabilities/access.js +2 -2
  367. package/dist/lib/native-capabilities/bluetooth-access.d.ts +1 -1
  368. package/dist/lib/native-capabilities/bluetooth-access.js +2 -2
  369. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +1 -1
  370. package/dist/lib/native-capabilities/bluetooth-connection.js +1 -1
  371. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +1 -1
  372. package/dist/lib/native-capabilities/bluetooth-gatt.js +1 -1
  373. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +2 -2
  374. package/dist/lib/native-capabilities/bluetooth-internal.js +1 -1
  375. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +2 -2
  376. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +2 -2
  377. package/dist/lib/native-capabilities/bluetooth.d.ts +6 -6
  378. package/dist/lib/native-capabilities/bluetooth.js +4 -4
  379. package/dist/lib/native-capabilities/bridge.d.ts +1 -1
  380. package/dist/lib/native-capabilities/bridge.js +2 -2
  381. package/dist/lib/native-capabilities/capabilities.d.ts +1 -1
  382. package/dist/lib/native-capabilities/capabilities.js +1 -1
  383. package/dist/lib/native-capabilities/clipboard.js +2 -2
  384. package/dist/lib/native-capabilities/device-io-errors.d.ts +1 -1
  385. package/dist/lib/native-capabilities/device-io-errors.js +1 -1
  386. package/dist/lib/native-capabilities/displays.d.ts +1 -1
  387. package/dist/lib/native-capabilities/displays.js +1 -1
  388. package/dist/lib/native-capabilities/global-shortcuts.d.ts +2 -2
  389. package/dist/lib/native-capabilities/global-shortcuts.js +1 -1
  390. package/dist/lib/native-capabilities/haptics.d.ts +1 -1
  391. package/dist/lib/native-capabilities/haptics.js +1 -1
  392. package/dist/lib/native-capabilities/hid-native.d.ts +2 -2
  393. package/dist/lib/native-capabilities/hid-native.js +3 -3
  394. package/dist/lib/native-capabilities/hid.js +5 -5
  395. package/dist/lib/native-capabilities/index.d.ts +39 -39
  396. package/dist/lib/native-capabilities/index.js +21 -21
  397. package/dist/lib/native-capabilities/local-authentication.d.ts +1 -1
  398. package/dist/lib/native-capabilities/local-authentication.js +1 -1
  399. package/dist/lib/native-capabilities/location.js +1 -1
  400. package/dist/lib/native-capabilities/media-permissions.d.ts +1 -1
  401. package/dist/lib/native-capabilities/media-permissions.js +1 -1
  402. package/dist/lib/native-capabilities/media.d.ts +1 -1
  403. package/dist/lib/native-capabilities/media.js +2 -2
  404. package/dist/lib/native-capabilities/midi-access.d.ts +1 -1
  405. package/dist/lib/native-capabilities/midi-access.js +3 -3
  406. package/dist/lib/native-capabilities/midi-internal.d.ts +1 -1
  407. package/dist/lib/native-capabilities/midi-internal.js +1 -1
  408. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +1 -1
  409. package/dist/lib/native-capabilities/midi-native-fallback.js +2 -2
  410. package/dist/lib/native-capabilities/midi-ports.d.ts +1 -1
  411. package/dist/lib/native-capabilities/midi-ports.js +1 -1
  412. package/dist/lib/native-capabilities/midi.d.ts +5 -5
  413. package/dist/lib/native-capabilities/midi.js +3 -3
  414. package/dist/lib/native-capabilities/native-device-io.d.ts +1 -1
  415. package/dist/lib/native-capabilities/native-device-io.js +1 -1
  416. package/dist/lib/native-capabilities/native-device-lifecycle.js +1 -1
  417. package/dist/lib/native-capabilities/notifications.d.ts +2 -2
  418. package/dist/lib/native-capabilities/notifications.js +1 -1
  419. package/dist/lib/native-capabilities/power-session.d.ts +2 -2
  420. package/dist/lib/native-capabilities/power-session.js +1 -1
  421. package/dist/lib/native-capabilities/secure-storage.d.ts +1 -1
  422. package/dist/lib/native-capabilities/secure-storage.js +1 -1
  423. package/dist/lib/native-capabilities/serial-native.d.ts +2 -2
  424. package/dist/lib/native-capabilities/serial-native.js +3 -3
  425. package/dist/lib/native-capabilities/serial.js +5 -5
  426. package/dist/lib/native-capabilities/system-audio.d.ts +1 -1
  427. package/dist/lib/native-capabilities/system-audio.js +1 -1
  428. package/dist/lib/native-capabilities/usb-native.d.ts +2 -2
  429. package/dist/lib/native-capabilities/usb-native.js +3 -3
  430. package/dist/lib/native-capabilities/usb.js +5 -5
  431. package/dist/lib/native-hardware/bluetooth-access.d.ts +1 -1
  432. package/dist/lib/native-hardware/bluetooth-access.js +1 -1
  433. package/dist/lib/native-hardware/bluetooth-connection.d.ts +1 -1
  434. package/dist/lib/native-hardware/bluetooth-connection.js +1 -1
  435. package/dist/lib/native-hardware/bluetooth-gatt.d.ts +1 -1
  436. package/dist/lib/native-hardware/bluetooth-gatt.js +1 -1
  437. package/dist/lib/native-hardware/bluetooth-internal.d.ts +2 -2
  438. package/dist/lib/native-hardware/bluetooth-internal.js +1 -1
  439. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts +2 -2
  440. package/dist/lib/native-hardware/bluetooth-native-fallback.js +2 -2
  441. package/dist/lib/native-hardware/bluetooth.d.ts +6 -6
  442. package/dist/lib/native-hardware/bluetooth.js +4 -4
  443. package/dist/lib/native-hardware/bridge.d.ts +1 -1
  444. package/dist/lib/native-hardware/bridge.js +2 -2
  445. package/dist/lib/native-hardware/capabilities.d.ts +1 -1
  446. package/dist/lib/native-hardware/capabilities.js +1 -1
  447. package/dist/lib/native-hardware/clipboard.js +1 -1
  448. package/dist/lib/native-hardware/device-io-errors.d.ts +1 -1
  449. package/dist/lib/native-hardware/device-io-errors.js +1 -1
  450. package/dist/lib/native-hardware/displays.d.ts +1 -1
  451. package/dist/lib/native-hardware/displays.js +1 -1
  452. package/dist/lib/native-hardware/global-shortcuts.d.ts +2 -2
  453. package/dist/lib/native-hardware/global-shortcuts.js +1 -1
  454. package/dist/lib/native-hardware/haptics.d.ts +1 -1
  455. package/dist/lib/native-hardware/haptics.js +1 -1
  456. package/dist/lib/native-hardware/hid-native.d.ts +2 -2
  457. package/dist/lib/native-hardware/hid-native.js +3 -3
  458. package/dist/lib/native-hardware/hid.js +4 -4
  459. package/dist/lib/native-hardware/index.d.ts +37 -37
  460. package/dist/lib/native-hardware/index.js +20 -20
  461. package/dist/lib/native-hardware/local-authentication.d.ts +1 -1
  462. package/dist/lib/native-hardware/local-authentication.js +1 -1
  463. package/dist/lib/native-hardware/location.js +1 -1
  464. package/dist/lib/native-hardware/media-permissions.d.ts +1 -1
  465. package/dist/lib/native-hardware/media-permissions.js +1 -1
  466. package/dist/lib/native-hardware/media.d.ts +1 -1
  467. package/dist/lib/native-hardware/media.js +1 -1
  468. package/dist/lib/native-hardware/midi-access.d.ts +1 -1
  469. package/dist/lib/native-hardware/midi-access.js +2 -2
  470. package/dist/lib/native-hardware/midi-internal.d.ts +1 -1
  471. package/dist/lib/native-hardware/midi-internal.js +1 -1
  472. package/dist/lib/native-hardware/midi-native-fallback.d.ts +1 -1
  473. package/dist/lib/native-hardware/midi-native-fallback.js +2 -2
  474. package/dist/lib/native-hardware/midi-ports.d.ts +1 -1
  475. package/dist/lib/native-hardware/midi-ports.js +1 -1
  476. package/dist/lib/native-hardware/midi.d.ts +5 -5
  477. package/dist/lib/native-hardware/midi.js +3 -3
  478. package/dist/lib/native-hardware/native-device-io.d.ts +1 -1
  479. package/dist/lib/native-hardware/native-device-io.js +1 -1
  480. package/dist/lib/native-hardware/native-device-lifecycle.js +1 -1
  481. package/dist/lib/native-hardware/notifications.d.ts +2 -2
  482. package/dist/lib/native-hardware/notifications.js +1 -1
  483. package/dist/lib/native-hardware/power-session.d.ts +2 -2
  484. package/dist/lib/native-hardware/power-session.js +1 -1
  485. package/dist/lib/native-hardware/secure-storage.d.ts +1 -1
  486. package/dist/lib/native-hardware/secure-storage.js +1 -1
  487. package/dist/lib/native-hardware/serial-native.d.ts +2 -2
  488. package/dist/lib/native-hardware/serial-native.js +3 -3
  489. package/dist/lib/native-hardware/serial.js +4 -4
  490. package/dist/lib/native-hardware/system-audio.d.ts +1 -1
  491. package/dist/lib/native-hardware/system-audio.js +1 -1
  492. package/dist/lib/native-hardware/usb-native.d.ts +2 -2
  493. package/dist/lib/native-hardware/usb-native.js +3 -3
  494. package/dist/lib/native-hardware/usb.js +4 -4
  495. package/dist/lib/theme.js +1 -1
  496. package/docs/README.md +1 -0
  497. package/docs/design-tokens.md +28 -6
  498. package/docs/foundations.md +4 -2
  499. package/docs/visual-regression.md +78 -0
  500. package/package.json +15 -4
  501. package/src/components/ui/alert-dialog.md +27 -0
  502. package/src/components/ui/button.md +10 -3
  503. package/src/components/ui/confirm-dialog.md +97 -0
  504. package/src/components/ui/context-menu.md +158 -0
  505. package/src/components/ui/dialog.md +23 -4
  506. package/src/components/ui/dropdown-menu.md +165 -0
  507. package/src/components/ui/error-boundary-view.md +98 -0
  508. package/src/components/ui/hover-card.md +90 -0
  509. package/src/components/ui/select.md +111 -0
  510. package/src/lib/host-date-time-picker.md +29 -0
  511. package/src/lib/host-file-dialog.md +76 -0
  512. package/src/lib/host-native-menu.md +67 -0
  513. package/src/lib/host-share.md +36 -0
  514. package/src/lib/host-web-surface.md +66 -0
  515. package/src/styles/index.css +141 -68
@@ -0,0 +1,76 @@
1
+ # Host file dialog
2
+
3
+ `useHostFileDialog()`, `openFileDialogWithHost()`, and
4
+ `saveFileDialogWithHost()` opt a call site into the host-owned macOS open/save
5
+ sheet when Moldable advertises `fileDialog`.
6
+
7
+ The fallback is intentionally only a routing signal:
8
+
9
+ ```tsx
10
+ const fileDialog = useHostFileDialog()
11
+
12
+ async function chooseFiles() {
13
+ const result = await fileDialog.open({
14
+ title: 'Import notes',
15
+ filters: [{ name: 'Text', extensions: ['txt', 'md'] }],
16
+ defaultLocation: 'documents',
17
+ properties: { multiple: true },
18
+ })
19
+
20
+ if (result.status === 'fallback') {
21
+ portableFileInputRef.current?.click()
22
+ return
23
+ }
24
+ if (result.status === 'completed') {
25
+ await importSelectedPaths(result.paths)
26
+ }
27
+ }
28
+
29
+ return (
30
+ <>
31
+ <Button onClick={chooseFiles}>Import</Button>
32
+ <input ref={portableFileInputRef} type="file" multiple hidden />
33
+ </>
34
+ )
35
+ ```
36
+
37
+ This SDK does not build or trigger the portable `<input type="file">` flow.
38
+ Callers own that cross-platform UI and route to it when the result is
39
+ `{ status: "fallback" }`.
40
+
41
+ ## Result representation
42
+
43
+ For v1, completed native results contain absolute path strings. This preserves
44
+ parity with Moldable's legacy app-facing `moldable:select-folder` API; there is
45
+ currently no external-file asset or opaque-handle scheme. A selected path is
46
+ not additional filesystem authority: this service only selects a location and
47
+ adds no read or write API.
48
+
49
+ ## Defined v1 behavior
50
+
51
+ - `filters` accepts at most 32 named filters. Each filter has 1–64 extensions,
52
+ written without a leading dot. On macOS the validated names describe the
53
+ filter groups, while AppKit receives the deduplicated union of their
54
+ extensions as its allowed file types.
55
+ - `defaultLocation` maps `documents`, `downloads`, and `desktop` to those
56
+ conventional folders under the user's home directory; `home` maps to the
57
+ home directory; `appData` maps to the requesting app's
58
+ `workspaces/{workspaceId}/apps/{appId}/data` directory.
59
+ - Open `multiple` defaults to `false`.
60
+ - Open `directories` defaults to `false`; when true the panel chooses
61
+ directories instead of files.
62
+ - Open and save `createDirectories` default to `false`; when true AppKit shows
63
+ its New Folder control.
64
+ - Open `showHidden` defaults to `false`; when true hidden entries are initially
65
+ visible. The user may still use AppKit's standard hidden-file shortcut.
66
+ - Save `defaultName` initializes the filename field and must be a filename, not
67
+ a path.
68
+ - `title` and `buttonLabel` set AppKit's panel title and confirmation prompt.
69
+ AppKit sheets may not visibly render a titlebar, but the value is still
70
+ applied to the panel.
71
+ - Unknown and mode-inappropriate properties are rejected before presentation.
72
+
73
+ The panel is presented as a sheet owned by the requesting embedded or dedicated
74
+ host window. User cancellation resolves with `{ status: "cancelled" }`. An
75
+ `AbortSignal` abort rejects with `AbortError` and asks the host to cancel the
76
+ request-ID-keyed AppKit panel.
@@ -0,0 +1,67 @@
1
+ # Host native menu
2
+
3
+ `useHostNativeMenu()` and `openNativeMenuWithHost()` opt a call site into a
4
+ host-owned AppKit menu when the Moldable host advertises `nativeMenu`. The
5
+ portable Radix `ContextMenu` remains the cross-platform implementation and is
6
+ owned by the caller.
7
+
8
+ The intended integration shape is to try the native menu from the same pointer
9
+ handler that would open the portable menu, then leave or restore the portable
10
+ path when the host is unavailable:
11
+
12
+ ```tsx
13
+ const nativeMenu = useHostNativeMenu()
14
+ const [portableOpen, setPortableOpen] = useState(false)
15
+
16
+ async function handleContextMenu(event: React.MouseEvent) {
17
+ if (!nativeMenu.available) {
18
+ // Do not prevent the event. ContextMenuTrigger opens the portable menu.
19
+ return
20
+ }
21
+
22
+ event.preventDefault()
23
+ const result = await nativeMenu.open(menuItems, {
24
+ position: { x: event.clientX, y: event.clientY },
25
+ })
26
+
27
+ if (result.status === 'completed') {
28
+ runCommand(result.selectedId)
29
+ } else if (result.status === 'fallback') {
30
+ setPortableOpen(true)
31
+ }
32
+ }
33
+
34
+ return (
35
+ <ContextMenu open={portableOpen} onOpenChange={setPortableOpen}>
36
+ <ContextMenuTrigger asChild>
37
+ <div onContextMenu={handleContextMenu}>{children}</div>
38
+ </ContextMenuTrigger>
39
+ <ContextMenuContent>{/* existing portable items */}</ContextMenuContent>
40
+ </ContextMenu>
41
+ )
42
+ ```
43
+
44
+ The request requires exactly one app-viewport placement: an `anchor` element or
45
+ rect, or a pointer `position`. Item depth is capped at 3 and the whole tree at
46
+ 200 items. Selectable item IDs are non-empty and unique across the tree.
47
+ Checkboxes support `true`, `false`, and `"mixed"`; radio items reject
48
+ `"mixed"`.
49
+
50
+ `destructive` is reserved in v1. It is validated and carried through the
51
+ service but is deliberately not rendered with native destructive styling. The
52
+ portable menu may continue to render its destructive variant.
53
+
54
+ Shortcuts use AppKit's
55
+ [`NSMenuItem.keyEquivalent`](https://developer.apple.com/documentation/appkit/nsmenuitem/keyequivalent)
56
+ and modifier mask so AppKit draws the conventional shortcut label. The menu is
57
+ a transient popup attached to the requesting host window and is never installed
58
+ as the application's main menu, so these values do not register global app
59
+ shortcuts. AppKit may still match the equivalent while that popup is actively
60
+ tracking; callers must treat the field as display metadata and keep command
61
+ handling keyed by the returned `selectedId`.
62
+
63
+ Click-away and Escape resolve with `{ status: "cancelled" }`. An explicit
64
+ `AbortSignal` abort rejects with `AbortError` and asks the host to call
65
+ `cancelTracking()` on the request-ID-keyed open menu. When native menus are not
66
+ advertised, the helper resolves with `{ status: "fallback" }` without opening
67
+ renderer UI.
@@ -0,0 +1,36 @@
1
+ # Host share
2
+
3
+ `useHostShare()` and `shareWithHost()` provide one share API across Moldable
4
+ hosts and ordinary browsers.
5
+
6
+ ```tsx
7
+ const share = useHostShare()
8
+ const buttonRef = useRef<HTMLButtonElement>(null)
9
+
10
+ await share.share(
11
+ [
12
+ { kind: 'text', text: 'A useful note' },
13
+ { kind: 'url', url: 'https://example.com/note' },
14
+ ],
15
+ { anchor: buttonRef.current ?? undefined },
16
+ )
17
+ ```
18
+
19
+ The decision flow is:
20
+
21
+ 1. When the host advertises `share`, the SDK sends a host-service request. The
22
+ host translates the supplied element or rect from app-viewport coordinates
23
+ and presents the native picker.
24
+ 2. Without that advertisement, text and URL items use `navigator.share` when
25
+ Web Share is available.
26
+ 3. Otherwise the promise resolves with `status: "fallback"` and returns the
27
+ original items. The caller can then expose its own copy or download UI.
28
+ File references always take this path outside a native Moldable host because
29
+ a browser cannot dereference a workspace-local path.
30
+
31
+ Native dismissal is represented by the envelope's terminal `cancelled` status;
32
+ the SDK maps it to `{ status: "cancelled", method: "native" }`. Web Share
33
+ dismissal resolves with the equivalent `web` result. An explicit `AbortSignal`
34
+ abort rejects with `AbortError`; on the native path the envelope also asks the
35
+ host to dismiss the open picker. `timeoutMs` can lower the host's default
36
+ timeout.
@@ -0,0 +1,66 @@
1
+ # Host web surface
2
+
3
+ `useHostWebSurface()` controls a native child webview supplied by the Moldable
4
+ desktop host. It is progressive enhancement: `available` is `true` only in a
5
+ dedicated app window whose manifest declares:
6
+
7
+ ```json
8
+ {
9
+ "nativeCapabilities": ["webSurface"]
10
+ }
11
+ ```
12
+
13
+ Embedded app views, older hosts, and apps without the declaration receive
14
+ `available: false`. Keep an iframe or reader implementation for those cases.
15
+
16
+ ```tsx
17
+ import { useEffect } from 'react'
18
+ import { useHostWebSurface } from '@moldable-ai/ui'
19
+
20
+ function LivePage({
21
+ url,
22
+ bounds,
23
+ }: {
24
+ url: string
25
+ bounds: { x: number; y: number; width: number; height: number }
26
+ }) {
27
+ const { available, create, destroy, onNavState, setBounds } =
28
+ useHostWebSurface()
29
+
30
+ useEffect(() => {
31
+ if (!available) return
32
+
33
+ void create('active-tab', url, bounds)
34
+ const unsubscribe = onNavState((state) => {
35
+ if (state.surfaceId === 'active-tab') {
36
+ console.log(state.url, state.canGoBack, state.canGoForward)
37
+ }
38
+ })
39
+
40
+ return () => {
41
+ unsubscribe()
42
+ void destroy('active-tab')
43
+ }
44
+ }, [available, create, destroy, onNavState, url])
45
+
46
+ useEffect(() => {
47
+ if (available) {
48
+ void setBounds('active-tab', bounds)
49
+ }
50
+ }, [available, bounds, setBounds])
51
+
52
+ return available ? null : <iframe title="Live page" src={url} />
53
+ }
54
+ ```
55
+
56
+ Bounds are logical pixels relative to the app content viewport. Re-send them
57
+ when a `ResizeObserver` reports a layout change. The host also re-clamps the
58
+ last requested bounds after native window resizes.
59
+
60
+ Native child webviews paint above app DOM. Call `setVisible(surfaceId, false)`
61
+ before showing a renderer-owned dialog or overlay, then restore visibility
62
+ when it closes. Host-native menus already paint above the surface.
63
+
64
+ All methods accept the standard host-service `{ signal, timeoutMs }` options.
65
+ Invalid input throws a `TypeError`; cancellation, timeout, and host failures
66
+ reject with the same errors as other host-service adapters.
@@ -186,6 +186,11 @@
186
186
  --font-sans: var(--font-family-ui);
187
187
  --font-mono: var(--font-family-mono);
188
188
 
189
+ --text-11: 11px;
190
+ --text-13: 13px;
191
+ --text-16: 16px;
192
+ --text-18: 18px;
193
+ --text-24: 24px;
189
194
  --text-ui-display: var(--type-display-size);
190
195
  --text-ui-display--line-height: var(--type-display-line-height);
191
196
  --text-ui-display--font-weight: var(--type-display-weight);
@@ -210,8 +215,15 @@
210
215
  --radius-lg: var(--radius);
211
216
  --radius-xl: calc(var(--radius) + 4px);
212
217
  --radius-control: var(--shape-control);
218
+ --radius-checkbox: var(--shape-checkbox);
213
219
  --radius-container: var(--shape-container);
214
220
  --radius-overlay: var(--shape-overlay);
221
+ --radius-popover: var(--shape-popover);
222
+ --radius-card: var(--shape-card);
223
+ --radius-group: var(--shape-group);
224
+ --radius-panel: var(--shape-panel);
225
+ --radius-dialog: var(--shape-dialog);
226
+ --radius-pill: var(--shape-pill);
215
227
  --radius-window: var(--window-corner-radius);
216
228
 
217
229
  --spacing-control-gap: var(--density-control-gap);
@@ -231,6 +243,7 @@
231
243
  --ease-spring: var(--motion-ease-spring);
232
244
  --shadow-panel: var(--material-shadow-panel);
233
245
  --shadow-overlay: var(--material-shadow-overlay);
246
+ --shadow-dialog: var(--material-shadow-dialog);
234
247
  --shadow-window: var(--material-shadow-window);
235
248
 
236
249
  --color-background: var(--background);
@@ -273,6 +286,12 @@
273
286
  --color-accent-foreground: var(--accent-foreground);
274
287
  --color-destructive: var(--destructive);
275
288
  --color-destructive-foreground: var(--destructive-foreground);
289
+ --color-info: var(--info);
290
+ --color-info-foreground: var(--info-foreground);
291
+ --color-neutral: var(--neutral);
292
+ --color-neutral-foreground: var(--neutral-foreground);
293
+ --color-pending: var(--pending);
294
+ --color-pending-foreground: var(--pending-foreground);
276
295
  --color-border: var(--border);
277
296
  --color-input: var(--input);
278
297
  --color-ring: var(--ring);
@@ -699,39 +718,46 @@
699
718
  system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
700
719
  --font-family-mono: ui-monospace, Menlo, Consolas, monospace;
701
720
 
702
- --type-display-size: 2rem;
703
- --type-display-line-height: 2.25rem;
704
- --type-display-weight: 650;
705
- --type-display-tracking: -0.035em;
706
- --type-heading-size: 1.5rem;
707
- --type-heading-line-height: 1.75rem;
708
- --type-heading-weight: 650;
709
- --type-heading-tracking: -0.025em;
710
- --type-title-size: 1.125rem;
711
- --type-title-line-height: 1.5rem;
721
+ --type-display-size: var(--text-24);
722
+ --type-display-line-height: 28px;
723
+ --type-display-weight: 600;
724
+ --type-display-tracking: -0.02em;
725
+ --type-heading-size: var(--text-18);
726
+ --type-heading-line-height: 22px;
727
+ --type-heading-weight: 600;
728
+ --type-heading-tracking: -0.012em;
729
+ --type-title-size: var(--text-16);
730
+ --type-title-line-height: 20px;
712
731
  --type-title-weight: 600;
713
- --type-title-tracking: -0.015em;
714
- --type-body-size: 0.8125rem;
715
- --type-body-line-height: 1.25rem;
716
- --type-label-size: 0.75rem;
717
- --type-label-line-height: 1rem;
718
- --type-caption-size: 0.625rem;
719
- --type-caption-line-height: 0.75rem;
732
+ --type-title-tracking: -0.006em;
733
+ --type-body-size: var(--text-13);
734
+ --type-body-line-height: 18px;
735
+ --type-label-size: var(--text-13);
736
+ --type-label-line-height: 16px;
737
+ --type-caption-size: var(--text-11);
738
+ --type-caption-line-height: 14px;
720
739
 
721
740
  --density-control-height-xs: 1.5rem;
722
- --density-control-height-sm: 2rem;
723
- --density-control-height-md: 2.25rem;
724
- --density-control-height-lg: 2.5rem;
725
- --density-control-gap: 0.375rem;
726
- --density-control-padding-inline: 0.75rem;
727
- --density-row-height: 2.25rem;
728
- --density-toolbar-height: 2.5rem;
729
- --density-pane-padding: 0.75rem;
730
- --density-section-gap: 1rem;
731
-
732
- --shape-control: 0.5rem;
733
- --shape-container: 0.65rem;
734
- --shape-overlay: 0.75rem;
741
+ --density-control-height-sm: 1.75rem;
742
+ --density-control-height-md: 2rem;
743
+ --density-control-height-lg: 2.25rem;
744
+ --density-control-gap: 0.3125rem;
745
+ --density-control-padding-inline: 0.625rem;
746
+ --density-row-height: 2rem;
747
+ --density-toolbar-height: 2.375rem;
748
+ --density-pane-padding: 0.625rem;
749
+ --density-section-gap: 0.875rem;
750
+
751
+ --shape-control: 10px;
752
+ --shape-checkbox: 4px;
753
+ --shape-popover: 12px;
754
+ --shape-card: 12px;
755
+ --shape-group: 12px;
756
+ --shape-panel: 16px;
757
+ --shape-dialog: 22px;
758
+ --shape-pill: 9999px;
759
+ --shape-container: var(--shape-card);
760
+ --shape-overlay: var(--shape-popover);
735
761
 
736
762
  --motion-duration-instant: 80ms;
737
763
  --motion-duration-fast: 120ms;
@@ -742,7 +768,7 @@
742
768
  --motion-ease-exit: cubic-bezier(0.4, 0, 1, 1);
743
769
  --motion-ease-spring: cubic-bezier(0.22, 1.15, 0.36, 1);
744
770
 
745
- --radius: 0.65rem;
771
+ --radius: var(--shape-card);
746
772
  --background: oklch(1 0 0);
747
773
  --foreground: oklch(0.141 0.005 285.823);
748
774
  --card: oklch(1 0 0);
@@ -754,22 +780,22 @@
754
780
  --secondary: oklch(0.967 0.001 286.375);
755
781
  --secondary-foreground: oklch(0.21 0.006 285.885);
756
782
  --muted: oklch(0.967 0.001 286.375);
757
- --muted-foreground: oklch(0.552 0.016 285.938);
783
+ --muted-foreground: oklch(0.5 0.016 285.938);
758
784
  --accent: oklch(0.967 0.001 286.375);
759
785
  --accent-foreground: oklch(0.21 0.006 285.885);
760
786
  --destructive: oklch(0.5866 0.1994 31.76);
761
787
  --destructive-foreground: oklch(0.985 0 0);
762
788
  --border: oklch(0.92 0.004 286.32);
763
789
  --input: oklch(0.92 0.004 286.32);
764
- --ring: oklch(0.7145 0.185 45.03);
790
+ --ring: oklch(0.2 0 0 / 48%);
765
791
  --model-effort-blue: #339cff;
766
792
  --model-effort-purple: #924ff7;
767
793
  --model-effort-sparkle: #fff;
768
- --chart-1: oklch(0.646 0.222 41.116);
769
- --chart-2: oklch(0.6 0.118 184.704);
770
- --chart-3: oklch(0.398 0.07 227.392);
771
- --chart-4: oklch(0.828 0.189 84.429);
772
- --chart-5: oklch(0.769 0.188 70.08);
794
+ --chart-1: var(--info);
795
+ --chart-2: var(--success);
796
+ --chart-3: var(--pending);
797
+ --chart-4: var(--neutral);
798
+ --chart-5: var(--accent-foreground);
773
799
  --sidebar: oklch(0.967 0.001 286.375);
774
800
  --sidebar-foreground: oklch(0.141 0.005 285.823);
775
801
  --sidebar-primary: oklch(0.7145 0.185 45.03);
@@ -777,15 +803,21 @@
777
803
  --sidebar-accent: oklch(0.9212 0.0029 264.54);
778
804
  --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
779
805
  --sidebar-border: oklch(0.92 0.004 286.32);
780
- --sidebar-ring: oklch(0.7145 0.185 45.03);
781
- --warning: oklch(0.75 0.15 75);
782
- --warning-foreground: oklch(0.35 0.1 75);
783
- --success: oklch(0.65 0.2 145);
784
- --success-foreground: oklch(0.985 0 0);
785
- --status-running: oklch(0.65 0.2 145);
786
- --status-stopped: oklch(0.552 0.016 285.938);
787
- --status-pending: oklch(0.75 0.15 75);
788
- --status-error: oklch(0.5866 0.1994 31.76);
806
+ --sidebar-ring: var(--ring);
807
+ --info: oklch(0.6 0.16 250);
808
+ --info-foreground: oklch(0.42 0.14 250);
809
+ --neutral: oklch(0.64 0.012 286);
810
+ --neutral-foreground: oklch(0.43 0.012 286);
811
+ --pending: oklch(0.64 0.14 75);
812
+ --pending-foreground: oklch(0.42 0.12 75);
813
+ --warning: oklch(0.64 0.14 75);
814
+ --warning-foreground: oklch(0.4 0.12 75);
815
+ --success: oklch(0.53 0.17 145);
816
+ --success-foreground: oklch(0.4 0.13 145);
817
+ --status-running: var(--success);
818
+ --status-stopped: var(--neutral);
819
+ --status-pending: var(--pending);
820
+ --status-error: var(--destructive);
789
821
 
790
822
  --text-primary: var(--foreground);
791
823
  --text-secondary: var(--muted-foreground);
@@ -860,10 +892,15 @@
860
892
  --material-clear-blur: 12px;
861
893
  --material-clear-saturation: 1.24;
862
894
  --material-shadow-panel:
863
- 0 1px 2px oklch(0.15 0.005 285 / 6%), 0 4px 12px oklch(0.15 0.005 285 / 4%);
895
+ inset 0 0 0 1px var(--separator), 0 1px 2px oklch(0.15 0.005 285 / 5%),
896
+ 0 5px 14px oklch(0.15 0.005 285 / 5%);
864
897
  --material-shadow-overlay:
865
- 0 8px 24px oklch(0.15 0.005 285 / 12%), 0 2px 6px oklch(0.15 0.005 285 / 8%);
866
- --material-shadow-window: 0 24px 80px oklch(0.1 0.005 285 / 22%);
898
+ inset 0 0 0 1px var(--separator), 0 4px 12px oklch(0.12 0.004 285 / 9%),
899
+ 0 16px 38px oklch(0.12 0.004 285 / 13%);
900
+ --material-shadow-dialog:
901
+ inset 0 0 0 1px var(--separator), 0 12px 32px oklch(0.1 0.004 285 / 12%),
902
+ 0 32px 88px oklch(0.1 0.004 285 / 18%);
903
+ --material-shadow-window: 0 28px 96px oklch(0.1 0.005 285 / 24%);
867
904
 
868
905
  /*
869
906
  * Renderer boundary for embedded and standalone windows. The host may set
@@ -947,22 +984,22 @@
947
984
  --secondary: oklch(0.3375 0.0035 286.21);
948
985
  --secondary-foreground: oklch(0.985 0 0);
949
986
  --muted: oklch(0.3375 0.0035 286.21);
950
- --muted-foreground: oklch(0.705 0.015 286.067);
987
+ --muted-foreground: oklch(0.74 0.012 286);
951
988
  --accent: oklch(0.3375 0.0035 286.21);
952
989
  --accent-foreground: oklch(0.985 0 0);
953
990
  --destructive: oklch(0.704 0.191 22.216);
954
991
  --destructive-foreground: oklch(0.985 0 0);
955
992
  --border: oklch(1 0 0 / 10%);
956
993
  --input: oklch(1 0 0 / 15%);
957
- --ring: oklch(0.7145 0.185 45.03);
994
+ --ring: oklch(0.92 0 0 / 40%);
958
995
  --model-effort-blue: #339cff;
959
996
  --model-effort-purple: #ad7bf9;
960
997
  --model-effort-sparkle: #fff;
961
- --chart-1: oklch(0.7145 0.185 45.03);
962
- --chart-2: oklch(0.696 0.17 162.48);
963
- --chart-3: oklch(0.769 0.188 70.08);
964
- --chart-4: oklch(0.627 0.265 303.9);
965
- --chart-5: oklch(0.645 0.246 16.439);
998
+ --chart-1: var(--info);
999
+ --chart-2: var(--success);
1000
+ --chart-3: var(--pending);
1001
+ --chart-4: var(--neutral);
1002
+ --chart-5: var(--accent-foreground);
966
1003
  --sidebar: oklch(0.235 0 0);
967
1004
  --sidebar-foreground: oklch(0.985 0 0);
968
1005
  --sidebar-primary: oklch(0.7145 0.185 45.03);
@@ -970,15 +1007,21 @@
970
1007
  --sidebar-accent: oklch(0.3375 0.0035 286.21);
971
1008
  --sidebar-accent-foreground: oklch(0.985 0 0);
972
1009
  --sidebar-border: oklch(1 0 0 / 10%);
973
- --sidebar-ring: oklch(0.7145 0.185 45.03);
974
- --warning: oklch(0.8 0.12 75);
975
- --warning-foreground: oklch(0.25 0.08 75);
1010
+ --sidebar-ring: var(--ring);
1011
+ --info: oklch(0.72 0.15 250);
1012
+ --info-foreground: oklch(0.78 0.11 250);
1013
+ --neutral: oklch(0.7 0.012 286);
1014
+ --neutral-foreground: oklch(0.76 0.012 286);
1015
+ --pending: oklch(0.79 0.12 80);
1016
+ --pending-foreground: oklch(0.84 0.1 80);
1017
+ --warning: oklch(0.79 0.12 80);
1018
+ --warning-foreground: oklch(0.84 0.1 80);
976
1019
  --success: oklch(0.7 0.18 145);
977
- --success-foreground: oklch(0.235 0 0);
978
- --status-running: oklch(0.7 0.18 145);
979
- --status-stopped: oklch(0.705 0.015 286.067);
980
- --status-pending: oklch(0.8 0.12 75);
981
- --status-error: oklch(0.704 0.191 22.216);
1020
+ --success-foreground: oklch(0.8 0.12 145);
1021
+ --status-running: var(--success);
1022
+ --status-stopped: var(--neutral);
1023
+ --status-pending: var(--pending);
1024
+ --status-error: var(--destructive);
982
1025
  --material-regular-fill: color-mix(
983
1026
  in oklch,
984
1027
  var(--background) 68%,
@@ -1004,10 +1047,15 @@
1004
1047
  --material-clear-border: oklch(1 0 0 / 18%);
1005
1048
  --material-clear-highlight: oklch(1 0 0 / 10%);
1006
1049
  --material-shadow-panel:
1007
- 0 1px 2px oklch(0 0 0 / 24%), 0 6px 16px oklch(0 0 0 / 16%);
1050
+ inset 0 0 0 1px var(--separator), 0 2px 5px oklch(0 0 0 / 28%),
1051
+ 0 8px 22px oklch(0 0 0 / 22%);
1008
1052
  --material-shadow-overlay:
1009
- 0 12px 32px oklch(0 0 0 / 34%), 0 2px 8px oklch(0 0 0 / 24%);
1010
- --material-shadow-window: 0 28px 96px oklch(0 0 0 / 48%);
1053
+ inset 0 0 0 1px var(--separator), 0 8px 22px oklch(0 0 0 / 36%),
1054
+ 0 24px 56px oklch(0 0 0 / 46%);
1055
+ --material-shadow-dialog:
1056
+ inset 0 0 0 1px var(--separator), 0 16px 44px oklch(0 0 0 / 42%),
1057
+ 0 40px 112px oklch(0 0 0 / 58%);
1058
+ --material-shadow-window: 0 32px 112px oklch(0 0 0 / 56%);
1011
1059
  /* Terminal - same dark look in dark mode */
1012
1060
  --terminal: oklch(0.16 0 0);
1013
1061
  --terminal-header: oklch(0.22 0 0);
@@ -1036,6 +1084,14 @@
1036
1084
  --separator-strong: color-mix(in oklch, var(--foreground) 54%, transparent);
1037
1085
  --control-hover: color-mix(in oklch, var(--foreground) 12%, transparent);
1038
1086
  --control-pressed: color-mix(in oklch, var(--foreground) 18%, transparent);
1087
+ --shape-control: 6px;
1088
+ --shape-checkbox: 3px;
1089
+ --shape-popover: 6px;
1090
+ --shape-card: 6px;
1091
+ --shape-group: 6px;
1092
+ --shape-panel: 6px;
1093
+ --shape-dialog: 6px;
1094
+ --shape-pill: 6px;
1039
1095
  --material-regular-fill: color-mix(
1040
1096
  in oklch,
1041
1097
  var(--material-regular-fallback) 92%,
@@ -1048,6 +1104,10 @@
1048
1104
  transparent
1049
1105
  );
1050
1106
  --material-clear-border: var(--separator-strong);
1107
+ --material-shadow-panel: inset 0 0 0 1px var(--separator-strong);
1108
+ --material-shadow-overlay: inset 0 0 0 1px var(--separator-strong);
1109
+ --material-shadow-dialog: inset 0 0 0 1px var(--separator-strong);
1110
+ --material-shadow-window: inset 0 0 0 1px var(--separator-strong);
1051
1111
  --window-border: var(--separator-strong);
1052
1112
  }
1053
1113
  }
@@ -1067,6 +1127,14 @@
1067
1127
  --separator-strong: color-mix(in oklch, var(--foreground) 54%, transparent);
1068
1128
  --control-hover: color-mix(in oklch, var(--foreground) 12%, transparent);
1069
1129
  --control-pressed: color-mix(in oklch, var(--foreground) 18%, transparent);
1130
+ --shape-control: 6px;
1131
+ --shape-checkbox: 3px;
1132
+ --shape-popover: 6px;
1133
+ --shape-card: 6px;
1134
+ --shape-group: 6px;
1135
+ --shape-panel: 6px;
1136
+ --shape-dialog: 6px;
1137
+ --shape-pill: 6px;
1070
1138
  --material-regular-fill: color-mix(
1071
1139
  in oklch,
1072
1140
  var(--material-regular-fallback) 92%,
@@ -1079,6 +1147,10 @@
1079
1147
  transparent
1080
1148
  );
1081
1149
  --material-clear-border: var(--separator-strong);
1150
+ --material-shadow-panel: inset 0 0 0 1px var(--separator-strong);
1151
+ --material-shadow-overlay: inset 0 0 0 1px var(--separator-strong);
1152
+ --material-shadow-dialog: inset 0 0 0 1px var(--separator-strong);
1153
+ --material-shadow-window: inset 0 0 0 1px var(--separator-strong);
1082
1154
  --window-border: var(--separator-strong);
1083
1155
  }
1084
1156
 
@@ -1121,6 +1193,7 @@
1121
1193
  --material-saturation: 1;
1122
1194
  --material-shadow-panel: none;
1123
1195
  --material-shadow-overlay: none;
1196
+ --material-shadow-dialog: none;
1124
1197
  --material-shadow-window: none;
1125
1198
  }
1126
1199
  }