@moldable-ai/ui 0.2.19 → 0.2.20

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 (372) hide show
  1. package/dist/catalog/catalog-manifest.d.ts +6 -0
  2. package/dist/catalog/catalog-manifest.d.ts.map +1 -0
  3. package/dist/catalog/catalog-manifest.js +105 -0
  4. package/dist/catalog/catalog-types.d.ts +54 -0
  5. package/dist/catalog/catalog-types.d.ts.map +1 -0
  6. package/dist/catalog/catalog-types.js +14 -0
  7. package/dist/catalog/component-catalog.d.ts +14 -0
  8. package/dist/catalog/component-catalog.d.ts.map +1 -0
  9. package/dist/catalog/component-catalog.js +39 -0
  10. package/dist/catalog/core-catalog.d.ts +6 -0
  11. package/dist/catalog/core-catalog.d.ts.map +1 -0
  12. package/dist/catalog/core-catalog.js +105 -0
  13. package/dist/catalog/index.d.ts +5 -0
  14. package/dist/catalog/index.d.ts.map +1 -0
  15. package/dist/catalog/index.js +4 -0
  16. package/dist/components/app-error-boundary.d.ts +1 -0
  17. package/dist/components/app-error-boundary.d.ts.map +1 -1
  18. package/dist/components/app-error-boundary.js +13 -0
  19. package/dist/components/chat/chat-image-lightbox.d.ts +9 -0
  20. package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -0
  21. package/dist/components/chat/chat-image-lightbox.js +9 -0
  22. package/dist/components/chat/chat-message.d.ts +19 -1
  23. package/dist/components/chat/chat-message.d.ts.map +1 -1
  24. package/dist/components/chat/chat-message.js +66 -16
  25. package/dist/components/chat/chat-messages.d.ts +5 -2
  26. package/dist/components/chat/chat-messages.d.ts.map +1 -1
  27. package/dist/components/chat/chat-messages.js +61 -6
  28. package/dist/components/chat/chat-panel.d.ts +50 -6
  29. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  30. package/dist/components/chat/chat-panel.js +200 -163
  31. package/dist/components/chat/conversation-history.d.ts +39 -5
  32. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  33. package/dist/components/chat/conversation-history.js +192 -26
  34. package/dist/components/chat/index.d.ts +2 -2
  35. package/dist/components/chat/index.d.ts.map +1 -1
  36. package/dist/components/chat/index.js +1 -1
  37. package/dist/components/chat/tool-handlers.d.ts.map +1 -1
  38. package/dist/components/chat/tool-handlers.js +40 -2
  39. package/dist/components/chat/vertical-scroll-fade.d.ts +6 -0
  40. package/dist/components/chat/vertical-scroll-fade.d.ts.map +1 -0
  41. package/dist/components/chat/vertical-scroll-fade.js +12 -0
  42. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts +9 -0
  43. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts.map +1 -0
  44. package/dist/components/native-capabilities/bluetooth-panel-helpers.js +37 -0
  45. package/dist/components/native-capabilities/bluetooth-panel.d.ts +56 -0
  46. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -0
  47. package/dist/components/native-capabilities/bluetooth-panel.js +470 -0
  48. package/dist/components/native-capabilities/camera-preview.d.ts +39 -0
  49. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -0
  50. package/dist/components/native-capabilities/camera-preview.js +228 -0
  51. package/dist/components/native-capabilities/capability-badge.d.ts +23 -0
  52. package/dist/components/native-capabilities/capability-badge.d.ts.map +1 -0
  53. package/dist/components/native-capabilities/capability-badge.js +39 -0
  54. package/dist/components/native-capabilities/capability-matrix.d.ts +14 -0
  55. package/dist/components/native-capabilities/capability-matrix.d.ts.map +1 -0
  56. package/dist/components/native-capabilities/capability-matrix.js +97 -0
  57. package/dist/components/native-capabilities/clipboard-button.d.ts +26 -0
  58. package/dist/components/native-capabilities/clipboard-button.d.ts.map +1 -0
  59. package/dist/components/native-capabilities/clipboard-button.js +99 -0
  60. package/dist/components/native-capabilities/device-io-controls.d.ts +4 -0
  61. package/dist/components/native-capabilities/device-io-controls.d.ts.map +1 -0
  62. package/dist/components/native-capabilities/device-io-controls.js +28 -0
  63. package/dist/components/native-capabilities/device-list.d.ts +20 -0
  64. package/dist/components/native-capabilities/device-list.d.ts.map +1 -0
  65. package/dist/components/native-capabilities/device-list.js +14 -0
  66. package/dist/components/native-capabilities/display-map.d.ts +23 -0
  67. package/dist/components/native-capabilities/display-map.d.ts.map +1 -0
  68. package/dist/components/native-capabilities/display-map.js +114 -0
  69. package/dist/components/native-capabilities/haptic-button.d.ts +26 -0
  70. package/dist/components/native-capabilities/haptic-button.d.ts.map +1 -0
  71. package/dist/components/native-capabilities/haptic-button.js +94 -0
  72. package/dist/components/native-capabilities/hid-panel.d.ts +40 -0
  73. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -0
  74. package/dist/components/native-capabilities/hid-panel.js +373 -0
  75. package/dist/components/native-capabilities/index.d.ts +27 -0
  76. package/dist/components/native-capabilities/index.d.ts.map +1 -0
  77. package/dist/components/native-capabilities/index.js +26 -0
  78. package/dist/components/native-capabilities/live-indicator.d.ts +15 -0
  79. package/dist/components/native-capabilities/live-indicator.d.ts.map +1 -0
  80. package/dist/components/native-capabilities/live-indicator.js +26 -0
  81. package/dist/components/native-capabilities/local-auth-button.d.ts +33 -0
  82. package/dist/components/native-capabilities/local-auth-button.d.ts.map +1 -0
  83. package/dist/components/native-capabilities/local-auth-button.js +115 -0
  84. package/dist/components/native-capabilities/location-panel.d.ts +29 -0
  85. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -0
  86. package/dist/components/native-capabilities/location-panel.js +146 -0
  87. package/dist/components/native-capabilities/microphone-meter.d.ts +35 -0
  88. package/dist/components/native-capabilities/microphone-meter.d.ts.map +1 -0
  89. package/dist/components/native-capabilities/microphone-meter.js +244 -0
  90. package/dist/components/native-capabilities/midi-monitor.d.ts +54 -0
  91. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -0
  92. package/dist/components/native-capabilities/midi-monitor.js +534 -0
  93. package/dist/components/native-capabilities/native-capability-panel.d.ts +11 -0
  94. package/dist/components/native-capabilities/native-capability-panel.d.ts.map +1 -0
  95. package/dist/components/native-capabilities/native-capability-panel.js +28 -0
  96. package/dist/components/native-capabilities/notification-panel.d.ts +24 -0
  97. package/dist/components/native-capabilities/notification-panel.d.ts.map +1 -0
  98. package/dist/components/native-capabilities/notification-panel.js +124 -0
  99. package/dist/components/native-capabilities/power-blocker-controller.d.ts +19 -0
  100. package/dist/components/native-capabilities/power-blocker-controller.d.ts.map +1 -0
  101. package/dist/components/native-capabilities/power-blocker-controller.js +83 -0
  102. package/dist/components/native-capabilities/power-panel.d.ts +67 -0
  103. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -0
  104. package/dist/components/native-capabilities/power-panel.js +309 -0
  105. package/dist/components/native-capabilities/readout.d.ts +10 -0
  106. package/dist/components/native-capabilities/readout.d.ts.map +1 -0
  107. package/dist/components/native-capabilities/readout.js +11 -0
  108. package/dist/components/native-capabilities/screen-share-preview.d.ts +36 -0
  109. package/dist/components/native-capabilities/screen-share-preview.d.ts.map +1 -0
  110. package/dist/components/native-capabilities/screen-share-preview.js +191 -0
  111. package/dist/components/native-capabilities/secure-storage-panel.d.ts +36 -0
  112. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -0
  113. package/dist/components/native-capabilities/secure-storage-panel.js +193 -0
  114. package/dist/components/native-capabilities/serial-console.d.ts +64 -0
  115. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -0
  116. package/dist/components/native-capabilities/serial-console.js +399 -0
  117. package/dist/components/native-capabilities/shortcut-recorder.d.ts +35 -0
  118. package/dist/components/native-capabilities/shortcut-recorder.d.ts.map +1 -0
  119. package/dist/components/native-capabilities/shortcut-recorder.js +217 -0
  120. package/dist/components/native-capabilities/stream-log.d.ts +35 -0
  121. package/dist/components/native-capabilities/stream-log.d.ts.map +1 -0
  122. package/dist/components/native-capabilities/stream-log.js +65 -0
  123. package/dist/components/native-capabilities/system-audio-monitor.d.ts +34 -0
  124. package/dist/components/native-capabilities/system-audio-monitor.d.ts.map +1 -0
  125. package/dist/components/native-capabilities/system-audio-monitor.js +275 -0
  126. package/dist/components/native-capabilities/usb-panel.d.ts +54 -0
  127. package/dist/components/native-capabilities/usb-panel.d.ts.map +1 -0
  128. package/dist/components/native-capabilities/usb-panel.js +363 -0
  129. package/dist/components/native-capabilities/use-capability.d.ts +20 -0
  130. package/dist/components/native-capabilities/use-capability.d.ts.map +1 -0
  131. package/dist/components/native-capabilities/use-capability.js +61 -0
  132. package/dist/components/ui/app-frame.d.ts +22 -0
  133. package/dist/components/ui/app-frame.d.ts.map +1 -0
  134. package/dist/components/ui/app-frame.js +56 -0
  135. package/dist/components/ui/button-group.d.ts +1 -1
  136. package/dist/components/ui/button.js +1 -1
  137. package/dist/components/ui/color-well.d.ts +13 -0
  138. package/dist/components/ui/color-well.d.ts.map +1 -0
  139. package/dist/components/ui/color-well.js +30 -0
  140. package/dist/components/ui/date-field.d.ts +19 -0
  141. package/dist/components/ui/date-field.d.ts.map +1 -0
  142. package/dist/components/ui/date-field.js +54 -0
  143. package/dist/components/ui/edge-fade.d.ts +11 -0
  144. package/dist/components/ui/edge-fade.d.ts.map +1 -0
  145. package/dist/components/ui/edge-fade.js +41 -0
  146. package/dist/components/ui/empty.js +1 -1
  147. package/dist/components/ui/field.d.ts +1 -1
  148. package/dist/components/ui/grid.d.ts +24 -0
  149. package/dist/components/ui/grid.d.ts.map +1 -0
  150. package/dist/components/ui/grid.js +234 -0
  151. package/dist/components/ui/icon-button.d.ts +15 -0
  152. package/dist/components/ui/icon-button.d.ts.map +1 -0
  153. package/dist/components/ui/icon-button.js +15 -0
  154. package/dist/components/ui/index.d.ts +19 -0
  155. package/dist/components/ui/index.d.ts.map +1 -1
  156. package/dist/components/ui/index.js +19 -0
  157. package/dist/components/ui/input-group.d.ts +1 -1
  158. package/dist/components/ui/inspector.d.ts +15 -0
  159. package/dist/components/ui/inspector.d.ts.map +1 -0
  160. package/dist/components/ui/inspector.js +26 -0
  161. package/dist/components/ui/kbd.d.ts +1 -1
  162. package/dist/components/ui/list.d.ts +24 -0
  163. package/dist/components/ui/list.d.ts.map +1 -0
  164. package/dist/components/ui/list.js +224 -0
  165. package/dist/components/ui/message-scroller-layout-stability.d.ts +33 -0
  166. package/dist/components/ui/message-scroller-layout-stability.d.ts.map +1 -0
  167. package/dist/components/ui/message-scroller-layout-stability.js +153 -0
  168. package/dist/components/ui/message-scroller.d.ts +11 -0
  169. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  170. package/dist/components/ui/message-scroller.js +37 -0
  171. package/dist/components/ui/notification-dot.d.ts +4 -0
  172. package/dist/components/ui/notification-dot.d.ts.map +1 -0
  173. package/dist/components/ui/notification-dot.js +7 -0
  174. package/dist/components/ui/number-input.d.ts +16 -0
  175. package/dist/components/ui/number-input.d.ts.map +1 -0
  176. package/dist/components/ui/number-input.js +56 -0
  177. package/dist/components/ui/panel.d.ts +18 -0
  178. package/dist/components/ui/panel.d.ts.map +1 -0
  179. package/dist/components/ui/panel.js +40 -0
  180. package/dist/components/ui/popover.js +1 -1
  181. package/dist/components/ui/search-field.d.ts +19 -0
  182. package/dist/components/ui/search-field.d.ts.map +1 -0
  183. package/dist/components/ui/search-field.js +64 -0
  184. package/dist/components/ui/segmented-control.d.ts +21 -0
  185. package/dist/components/ui/segmented-control.d.ts.map +1 -0
  186. package/dist/components/ui/segmented-control.js +61 -0
  187. package/dist/components/ui/sidebar.js +1 -1
  188. package/dist/components/ui/sonner.d.ts +4 -3
  189. package/dist/components/ui/sonner.d.ts.map +1 -1
  190. package/dist/components/ui/sonner.js +7 -6
  191. package/dist/components/ui/split-view.d.ts +11 -0
  192. package/dist/components/ui/split-view.d.ts.map +1 -0
  193. package/dist/components/ui/split-view.js +13 -0
  194. package/dist/components/ui/status.d.ts +13 -0
  195. package/dist/components/ui/status.d.ts.map +1 -0
  196. package/dist/components/ui/status.js +36 -0
  197. package/dist/components/ui/table.d.ts +11 -2
  198. package/dist/components/ui/table.d.ts.map +1 -1
  199. package/dist/components/ui/table.js +28 -6
  200. package/dist/components/ui/text.d.ts +17 -0
  201. package/dist/components/ui/text.d.ts.map +1 -0
  202. package/dist/components/ui/text.js +55 -0
  203. package/dist/components/ui/toggle.js +1 -1
  204. package/dist/components/ui/toolbar.d.ts +20 -0
  205. package/dist/components/ui/toolbar.d.ts.map +1 -0
  206. package/dist/components/ui/toolbar.js +52 -0
  207. package/dist/index.d.ts +2 -2
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +4 -4
  210. package/dist/lib/frame-lifecycle.d.ts +28 -0
  211. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  212. package/dist/lib/frame-lifecycle.js +84 -0
  213. package/dist/lib/native-capabilities/access.d.ts +13 -0
  214. package/dist/lib/native-capabilities/access.d.ts.map +1 -0
  215. package/dist/lib/native-capabilities/access.js +53 -0
  216. package/dist/lib/native-capabilities/bluetooth-access.d.ts +14 -0
  217. package/dist/lib/native-capabilities/bluetooth-access.d.ts.map +1 -0
  218. package/dist/lib/native-capabilities/bluetooth-access.js +43 -0
  219. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +19 -0
  220. package/dist/lib/native-capabilities/bluetooth-connection.d.ts.map +1 -0
  221. package/dist/lib/native-capabilities/bluetooth-connection.js +88 -0
  222. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +7 -0
  223. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts.map +1 -0
  224. package/dist/lib/native-capabilities/bluetooth-gatt.js +77 -0
  225. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +10 -0
  226. package/dist/lib/native-capabilities/bluetooth-internal.d.ts.map +1 -0
  227. package/dist/lib/native-capabilities/bluetooth-internal.js +105 -0
  228. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +33 -0
  229. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts.map +1 -0
  230. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +214 -0
  231. package/dist/lib/native-capabilities/bluetooth-types.d.ts +85 -0
  232. package/dist/lib/native-capabilities/bluetooth-types.d.ts.map +1 -0
  233. package/dist/lib/native-capabilities/bluetooth-types.js +2 -0
  234. package/dist/lib/native-capabilities/bluetooth.d.ts +7 -0
  235. package/dist/lib/native-capabilities/bluetooth.d.ts.map +1 -0
  236. package/dist/lib/native-capabilities/bluetooth.js +4 -0
  237. package/dist/lib/native-capabilities/bridge.d.ts +23 -0
  238. package/dist/lib/native-capabilities/bridge.d.ts.map +1 -0
  239. package/dist/lib/native-capabilities/bridge.js +266 -0
  240. package/dist/lib/native-capabilities/capabilities.d.ts +7 -0
  241. package/dist/lib/native-capabilities/capabilities.d.ts.map +1 -0
  242. package/dist/lib/native-capabilities/capabilities.js +95 -0
  243. package/dist/lib/native-capabilities/clipboard.d.ts +11 -0
  244. package/dist/lib/native-capabilities/clipboard.d.ts.map +1 -0
  245. package/dist/lib/native-capabilities/clipboard.js +58 -0
  246. package/dist/lib/native-capabilities/device-io-errors.d.ts +11 -0
  247. package/dist/lib/native-capabilities/device-io-errors.d.ts.map +1 -0
  248. package/dist/lib/native-capabilities/device-io-errors.js +82 -0
  249. package/dist/lib/native-capabilities/displays.d.ts +38 -0
  250. package/dist/lib/native-capabilities/displays.d.ts.map +1 -0
  251. package/dist/lib/native-capabilities/displays.js +12 -0
  252. package/dist/lib/native-capabilities/global-shortcuts.d.ts +86 -0
  253. package/dist/lib/native-capabilities/global-shortcuts.d.ts.map +1 -0
  254. package/dist/lib/native-capabilities/global-shortcuts.js +351 -0
  255. package/dist/lib/native-capabilities/haptics.d.ts +25 -0
  256. package/dist/lib/native-capabilities/haptics.d.ts.map +1 -0
  257. package/dist/lib/native-capabilities/haptics.js +18 -0
  258. package/dist/lib/native-capabilities/hid-native.d.ts +26 -0
  259. package/dist/lib/native-capabilities/hid-native.d.ts.map +1 -0
  260. package/dist/lib/native-capabilities/hid-native.js +229 -0
  261. package/dist/lib/native-capabilities/hid.d.ts +52 -0
  262. package/dist/lib/native-capabilities/hid.d.ts.map +1 -0
  263. package/dist/lib/native-capabilities/hid.js +163 -0
  264. package/dist/lib/native-capabilities/index.d.ts +40 -0
  265. package/dist/lib/native-capabilities/index.d.ts.map +1 -0
  266. package/dist/lib/native-capabilities/index.js +21 -0
  267. package/dist/lib/native-capabilities/local-authentication.d.ts +32 -0
  268. package/dist/lib/native-capabilities/local-authentication.d.ts.map +1 -0
  269. package/dist/lib/native-capabilities/local-authentication.js +46 -0
  270. package/dist/lib/native-capabilities/location.d.ts +49 -0
  271. package/dist/lib/native-capabilities/location.d.ts.map +1 -0
  272. package/dist/lib/native-capabilities/location.js +114 -0
  273. package/dist/lib/native-capabilities/media-permissions.d.ts +28 -0
  274. package/dist/lib/native-capabilities/media-permissions.d.ts.map +1 -0
  275. package/dist/lib/native-capabilities/media-permissions.js +37 -0
  276. package/dist/lib/native-capabilities/media.d.ts +17 -0
  277. package/dist/lib/native-capabilities/media.d.ts.map +1 -0
  278. package/dist/lib/native-capabilities/media.js +104 -0
  279. package/dist/lib/native-capabilities/midi-access.d.ts +13 -0
  280. package/dist/lib/native-capabilities/midi-access.d.ts.map +1 -0
  281. package/dist/lib/native-capabilities/midi-access.js +68 -0
  282. package/dist/lib/native-capabilities/midi-internal.d.ts +12 -0
  283. package/dist/lib/native-capabilities/midi-internal.d.ts.map +1 -0
  284. package/dist/lib/native-capabilities/midi-internal.js +88 -0
  285. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +27 -0
  286. package/dist/lib/native-capabilities/midi-native-fallback.d.ts.map +1 -0
  287. package/dist/lib/native-capabilities/midi-native-fallback.js +127 -0
  288. package/dist/lib/native-capabilities/midi-ports.d.ts +6 -0
  289. package/dist/lib/native-capabilities/midi-ports.d.ts.map +1 -0
  290. package/dist/lib/native-capabilities/midi-ports.js +115 -0
  291. package/dist/lib/native-capabilities/midi-types.d.ts +25 -0
  292. package/dist/lib/native-capabilities/midi-types.d.ts.map +1 -0
  293. package/dist/lib/native-capabilities/midi-types.js +1 -0
  294. package/dist/lib/native-capabilities/midi.d.ts +6 -0
  295. package/dist/lib/native-capabilities/midi.d.ts.map +1 -0
  296. package/dist/lib/native-capabilities/midi.js +3 -0
  297. package/dist/lib/native-capabilities/native-device-io.d.ts +28 -0
  298. package/dist/lib/native-capabilities/native-device-io.d.ts.map +1 -0
  299. package/dist/lib/native-capabilities/native-device-io.js +91 -0
  300. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts +13 -0
  301. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts.map +1 -0
  302. package/dist/lib/native-capabilities/native-device-lifecycle.js +40 -0
  303. package/dist/lib/native-capabilities/notifications.d.ts +38 -0
  304. package/dist/lib/native-capabilities/notifications.d.ts.map +1 -0
  305. package/dist/lib/native-capabilities/notifications.js +50 -0
  306. package/dist/lib/native-capabilities/power-session.d.ts +113 -0
  307. package/dist/lib/native-capabilities/power-session.d.ts.map +1 -0
  308. package/dist/lib/native-capabilities/power-session.js +264 -0
  309. package/dist/lib/native-capabilities/secure-storage.d.ts +36 -0
  310. package/dist/lib/native-capabilities/secure-storage.d.ts.map +1 -0
  311. package/dist/lib/native-capabilities/secure-storage.js +64 -0
  312. package/dist/lib/native-capabilities/serial-native.d.ts +23 -0
  313. package/dist/lib/native-capabilities/serial-native.d.ts.map +1 -0
  314. package/dist/lib/native-capabilities/serial-native.js +181 -0
  315. package/dist/lib/native-capabilities/serial.d.ts +76 -0
  316. package/dist/lib/native-capabilities/serial.d.ts.map +1 -0
  317. package/dist/lib/native-capabilities/serial.js +215 -0
  318. package/dist/lib/native-capabilities/system-audio.d.ts +127 -0
  319. package/dist/lib/native-capabilities/system-audio.d.ts.map +1 -0
  320. package/dist/lib/native-capabilities/system-audio.js +330 -0
  321. package/dist/lib/native-capabilities/types.d.ts +62 -0
  322. package/dist/lib/native-capabilities/types.d.ts.map +1 -0
  323. package/dist/lib/native-capabilities/types.js +27 -0
  324. package/dist/lib/native-capabilities/usb-native.d.ts +39 -0
  325. package/dist/lib/native-capabilities/usb-native.d.ts.map +1 -0
  326. package/dist/lib/native-capabilities/usb-native.js +217 -0
  327. package/dist/lib/native-capabilities/usb.d.ts +85 -0
  328. package/dist/lib/native-capabilities/usb.d.ts.map +1 -0
  329. package/dist/lib/native-capabilities/usb.js +225 -0
  330. package/docs/README.md +37 -0
  331. package/docs/accessibility.md +32 -0
  332. package/docs/app-anatomy.md +72 -0
  333. package/docs/component-catalog.md +59 -0
  334. package/docs/component-guide-template.md +37 -0
  335. package/docs/design-tokens.md +172 -0
  336. package/docs/foundations.md +56 -0
  337. package/docs/native-integration.md +33 -0
  338. package/docs/standalone-app-windows.md +128 -0
  339. package/package.json +9 -3
  340. package/src/components/ui/alert.md +55 -0
  341. package/src/components/ui/app-frame.md +33 -0
  342. package/src/components/ui/badge.md +57 -0
  343. package/src/components/ui/button.md +76 -0
  344. package/src/components/ui/color-well.md +11 -0
  345. package/src/components/ui/combobox.md +43 -0
  346. package/src/components/ui/date-field.md +32 -0
  347. package/src/components/ui/edge-fade.md +7 -0
  348. package/src/components/ui/empty.md +82 -0
  349. package/src/components/ui/field.md +77 -0
  350. package/src/components/ui/grid.md +105 -0
  351. package/src/components/ui/icon-button.md +36 -0
  352. package/src/components/ui/inspector.md +11 -0
  353. package/src/components/ui/item.md +87 -0
  354. package/src/components/ui/list.md +107 -0
  355. package/src/components/ui/notification-dot.md +7 -0
  356. package/src/components/ui/number-input.md +19 -0
  357. package/src/components/ui/panel.md +11 -0
  358. package/src/components/ui/resizable.md +66 -0
  359. package/src/components/ui/scroll-area.md +68 -0
  360. package/src/components/ui/search-field.md +33 -0
  361. package/src/components/ui/segmented-control.md +39 -0
  362. package/src/components/ui/sidebar.md +113 -0
  363. package/src/components/ui/sonner.md +37 -0
  364. package/src/components/ui/split-view.md +15 -0
  365. package/src/components/ui/status.md +12 -0
  366. package/src/components/ui/table.md +35 -0
  367. package/src/components/ui/tabs.md +66 -0
  368. package/src/components/ui/text.md +17 -0
  369. package/src/components/ui/toggle-group.md +80 -0
  370. package/src/components/ui/toggle.md +73 -0
  371. package/src/components/ui/toolbar.md +21 -0
  372. package/src/styles/index.css +491 -3
@@ -0,0 +1,73 @@
1
+ # Toggle
2
+
3
+ ## Purpose
4
+
5
+ `Toggle` represents a persistent binary view or formatting state, such as showing a sidebar, pinning an inspector, enabling word wrap, or applying bold text.
6
+
7
+ Use `Button` for a one-shot command and `Switch` for a settings-style boolean that is clearer as on/off.
8
+
9
+ ## Usage patterns
10
+
11
+ ```tsx
12
+ import { WrapText } from 'lucide-react'
13
+ import { Toggle } from '@moldable-ai/ui'
14
+
15
+ ;<Toggle
16
+ pressed={wrap}
17
+ onPressedChange={setWrap}
18
+ size="sm"
19
+ className="cursor-pointer"
20
+ aria-label="Wrap lines"
21
+ >
22
+ <WrapText />
23
+ <span className="hidden sm:inline">Wrap</span>
24
+ </Toggle>
25
+ ```
26
+
27
+ For an icon-only toolbar control:
28
+
29
+ ```tsx
30
+ <Toggle
31
+ defaultPressed
32
+ variant="outline"
33
+ size="sm"
34
+ className="cursor-pointer px-0"
35
+ aria-label="Pin inspector"
36
+ >
37
+ <Pin />
38
+ </Toggle>
39
+ ```
40
+
41
+ Pair icon-only use with a tooltip.
42
+
43
+ ## API summary
44
+
45
+ - Built on Radix Toggle and accepts its root props.
46
+ - `pressed` and `onPressedChange`: controlled state.
47
+ - `defaultPressed`: uncontrolled initial state.
48
+ - `variant`: `default` or `outline`.
49
+ - `size`: `default`, `sm`, or `lg`.
50
+ - Supports native button accessibility props such as `aria-label` and `disabled`.
51
+ - `toggleVariants` is exported and shared by `ToggleGroup`.
52
+
53
+ ## Do
54
+
55
+ - Use controlled state when the preference affects another pane or persisted setting.
56
+ - Make the pressed state legible through shape or icon treatment as well as color.
57
+ - Add `cursor-pointer`, an accessible name, and a tooltip for icon-only toggles.
58
+ - Keep toolbar toggles compact and aligned with adjacent controls.
59
+ - Use a specific icon tied to the state.
60
+
61
+ ## Don't
62
+
63
+ - Do not use a toggle for an action that immediately completes.
64
+ - Do not label state ambiguously; prefer “Wrap lines” over “Mode”.
65
+ - Do not use a disabled-looking style without the real `disabled` prop.
66
+ - Do not put critical destructive or submit actions in a toggle.
67
+ - Do not hide a primary workflow state solely in an unlabeled icon.
68
+
69
+ ## Moldable considerations
70
+
71
+ Toggles are most useful in dense pane toolbars and editor chrome. Hide a secondary text label at narrow widths before hiding the control itself. If the state changes how the agent should interpret the current surface, update desktop chat instructions rather than adding explanatory UI.
72
+
73
+ Avoid redundant controls: a sidebar controlled by `SidebarTrigger` does not need a second toggle, and app-level commands should mirror important view toggles when keyboard access matters.
@@ -0,0 +1,21 @@
1
+ # Toolbar
2
+
3
+ Compact pane chrome for context and actions.
4
+
5
+ ```tsx
6
+ <Toolbar position="top">
7
+ <ToolbarContent>
8
+ <ToolbarTitle>Notes</ToolbarTitle>
9
+ <ToolbarDescription>Local workspace</ToolbarDescription>
10
+ </ToolbarContent>
11
+ <ToolbarActions>
12
+ <Button size="icon-sm" aria-label="New note">
13
+ <Plus />
14
+ </Button>
15
+ </ToolbarActions>
16
+ </Toolbar>
17
+ ```
18
+
19
+ Use one toolbar per pane. Put the current context before actions and keep one
20
+ clear primary action. Toolbars are not marketing headers. Icon-only actions
21
+ need labels and tooltips.
@@ -5,20 +5,260 @@
5
5
 
6
6
  @custom-variant dark (&:is(.dark *));
7
7
 
8
+ /* Keep Sonner notifications visually aligned with Moldable's local-update notice. */
9
+ [data-sonner-toaster].toaster [data-sonner-toast][data-styled='true'] {
10
+ gap: 0.75rem;
11
+ padding: 0.75rem 1rem;
12
+ border-radius: var(--radius);
13
+ box-shadow: var(--material-shadow-overlay);
14
+ font-size: 0.875rem;
15
+ -webkit-backdrop-filter: blur(var(--material-blur-overlay));
16
+ backdrop-filter: blur(var(--material-blur-overlay));
17
+ }
18
+
19
+ [data-sonner-toaster].toaster
20
+ [data-sonner-toast][data-styled='true']
21
+ [data-button] {
22
+ height: 1.75rem;
23
+ padding-inline: 0.75rem;
24
+ border-radius: calc(var(--radius) - 2px);
25
+ background: var(--primary);
26
+ color: var(--primary-foreground);
27
+ font-size: 0.75rem;
28
+ transition: background-color var(--motion-duration-fast)
29
+ var(--motion-ease-standard);
30
+ }
31
+
32
+ [data-sonner-toaster].toaster
33
+ [data-sonner-toast][data-styled='true']
34
+ [data-button]:hover {
35
+ background: color-mix(in oklch, var(--primary) 90%, transparent);
36
+ }
37
+
38
+ .message-scroller-viewport {
39
+ -webkit-mask-image: none;
40
+ mask-image: none;
41
+ }
42
+
43
+ .message-scroller-viewport[data-scrollable='end'] {
44
+ -webkit-mask-image: linear-gradient(
45
+ to bottom,
46
+ black 0%,
47
+ black calc(100% - 4rem),
48
+ transparent 100%
49
+ );
50
+ mask-image: linear-gradient(
51
+ to bottom,
52
+ black 0%,
53
+ black calc(100% - 4rem),
54
+ transparent 100%
55
+ );
56
+ }
57
+
58
+ .message-scroller-viewport[data-scrollable='start'] {
59
+ -webkit-mask-image: linear-gradient(
60
+ to bottom,
61
+ transparent 0%,
62
+ black 4rem,
63
+ black 100%
64
+ );
65
+ mask-image: linear-gradient(
66
+ to bottom,
67
+ transparent 0%,
68
+ black 4rem,
69
+ black 100%
70
+ );
71
+ }
72
+
73
+ .message-scroller-viewport[data-scrollable='start end'] {
74
+ -webkit-mask-image: linear-gradient(
75
+ to bottom,
76
+ transparent 0%,
77
+ black 4rem,
78
+ black calc(100% - 4rem),
79
+ transparent 100%
80
+ );
81
+ mask-image: linear-gradient(
82
+ to bottom,
83
+ transparent 0%,
84
+ black 4rem,
85
+ black calc(100% - 4rem),
86
+ transparent 100%
87
+ );
88
+ }
89
+
90
+ /* ChatGPT-style user-message rail: compact at rest, expanding around hover. */
91
+ [data-message-navigation-marker] {
92
+ --message-navigation-progress: 0;
93
+ transform: scaleX(calc(0.2308 + 0.7692 * var(--message-navigation-progress)));
94
+ transition:
95
+ transform 160ms cubic-bezier(0.23, 1, 0.32, 1),
96
+ background-color 150ms ease,
97
+ opacity 150ms ease;
98
+ }
99
+
100
+ :is(
101
+ [data-message-navigation-row]:hover,
102
+ [data-message-navigation-row]:focus-visible
103
+ )
104
+ [data-message-navigation-marker] {
105
+ --message-navigation-progress: 1;
106
+ background-color: var(--foreground);
107
+ opacity: 1;
108
+ }
109
+
110
+ :is(
111
+ [data-message-navigation-row]:has(
112
+ + [data-message-navigation-row]:is(:hover, :focus-visible)
113
+ ),
114
+ [data-message-navigation-row]:is(:hover, :focus-visible)
115
+ + [data-message-navigation-row]
116
+ )
117
+ [data-message-navigation-marker] {
118
+ --message-navigation-progress: 0.7;
119
+ }
120
+
121
+ :is(
122
+ [data-message-navigation-row]:has(
123
+ + [data-message-navigation-row]
124
+ + [data-message-navigation-row]:is(:hover, :focus-visible)
125
+ ),
126
+ [data-message-navigation-row]:is(:hover, :focus-visible)
127
+ + [data-message-navigation-row]
128
+ + [data-message-navigation-row]
129
+ )
130
+ [data-message-navigation-marker] {
131
+ --message-navigation-progress: 0.4;
132
+ }
133
+
134
+ :is(
135
+ [data-message-navigation-row]:has(
136
+ + [data-message-navigation-row]
137
+ + [data-message-navigation-row]
138
+ + [data-message-navigation-row]:is(:hover, :focus-visible)
139
+ ),
140
+ [data-message-navigation-row]:is(:hover, :focus-visible)
141
+ + [data-message-navigation-row]
142
+ + [data-message-navigation-row]
143
+ + [data-message-navigation-row]
144
+ )
145
+ [data-message-navigation-marker] {
146
+ --message-navigation-progress: 0.2;
147
+ }
148
+
149
+ @media (prefers-reduced-motion: reduce) {
150
+ [data-message-navigation-marker] {
151
+ transition-duration: 0s;
152
+ }
153
+ }
154
+
155
+ @keyframes moldable-chat-fullscreen-enter {
156
+ from {
157
+ opacity: 0;
158
+ transform: translateY(1.5rem) scale(0.96);
159
+ }
160
+ to {
161
+ opacity: 1;
162
+ transform: translateY(0) scale(1);
163
+ }
164
+ }
165
+
166
+ [data-moldable-chat-fullscreen][data-state='open'] {
167
+ animation: moldable-chat-fullscreen-enter 280ms cubic-bezier(0.22, 1, 0.36, 1);
168
+ transform-origin: bottom center;
169
+ }
170
+
171
+ @media (prefers-reduced-motion: reduce) {
172
+ [data-moldable-chat-fullscreen][data-state='open'] {
173
+ animation-duration: 0s;
174
+ }
175
+ }
176
+
8
177
  /* Ensure Tailwind scans UI component class strings */
9
178
  @source "../../dist/**/*.{js,jsx,ts,tsx}";
179
+ @source "../catalog/**/*.{js,jsx,ts,tsx}";
10
180
  @source "../components/**/*.{js,jsx,ts,tsx}";
11
181
  @source "../lib/**/*.{js,jsx,ts,tsx}";
12
182
  @source "../hooks/**/*.{js,jsx,ts,tsx}";
13
183
  @source "../index.{js,jsx,ts,tsx}";
14
184
 
15
185
  @theme inline {
186
+ --font-sans: var(--font-family-ui);
187
+ --font-mono: var(--font-family-mono);
188
+
189
+ --text-ui-display: var(--type-display-size);
190
+ --text-ui-display--line-height: var(--type-display-line-height);
191
+ --text-ui-display--font-weight: var(--type-display-weight);
192
+ --text-ui-display--letter-spacing: var(--type-display-tracking);
193
+ --text-ui-heading: var(--type-heading-size);
194
+ --text-ui-heading--line-height: var(--type-heading-line-height);
195
+ --text-ui-heading--font-weight: var(--type-heading-weight);
196
+ --text-ui-heading--letter-spacing: var(--type-heading-tracking);
197
+ --text-ui-title: var(--type-title-size);
198
+ --text-ui-title--line-height: var(--type-title-line-height);
199
+ --text-ui-title--font-weight: var(--type-title-weight);
200
+ --text-ui-title--letter-spacing: var(--type-title-tracking);
201
+ --text-ui-body: var(--type-body-size);
202
+ --text-ui-body--line-height: var(--type-body-line-height);
203
+ --text-ui-label: var(--type-label-size);
204
+ --text-ui-label--line-height: var(--type-label-line-height);
205
+ --text-ui-caption: var(--type-caption-size);
206
+ --text-ui-caption--line-height: var(--type-caption-line-height);
207
+
16
208
  --radius-sm: calc(var(--radius) - 4px);
17
209
  --radius-md: calc(var(--radius) - 2px);
18
210
  --radius-lg: var(--radius);
19
211
  --radius-xl: calc(var(--radius) + 4px);
212
+ --radius-control: var(--shape-control);
213
+ --radius-container: var(--shape-container);
214
+ --radius-overlay: var(--shape-overlay);
215
+ --radius-window: var(--window-corner-radius);
216
+
217
+ --spacing-control-gap: var(--density-control-gap);
218
+ --spacing-control-inline: var(--density-control-padding-inline);
219
+ --spacing-control-xs: var(--density-control-height-xs);
220
+ --spacing-control-sm: var(--density-control-height-sm);
221
+ --spacing-control-md: var(--density-control-height-md);
222
+ --spacing-control-lg: var(--density-control-height-lg);
223
+ --spacing-row: var(--density-row-height);
224
+ --spacing-toolbar: var(--density-toolbar-height);
225
+ --spacing-pane: var(--density-pane-padding);
226
+ --spacing-section: var(--density-section-gap);
227
+
228
+ --ease-standard: var(--motion-ease-standard);
229
+ --ease-enter: var(--motion-ease-enter);
230
+ --ease-exit: var(--motion-ease-exit);
231
+ --ease-spring: var(--motion-ease-spring);
232
+ --shadow-panel: var(--material-shadow-panel);
233
+ --shadow-overlay: var(--material-shadow-overlay);
234
+ --shadow-window: var(--material-shadow-window);
235
+
20
236
  --color-background: var(--background);
21
237
  --color-foreground: var(--foreground);
238
+ --color-text-primary: var(--text-primary);
239
+ --color-text-secondary: var(--text-secondary);
240
+ --color-text-tertiary: var(--text-tertiary);
241
+ --color-text-disabled: var(--text-disabled);
242
+ --color-surface-canvas: var(--surface-canvas);
243
+ --color-surface-raised: var(--surface-raised);
244
+ --color-surface-recessed: var(--surface-recessed);
245
+ --color-surface-sidebar: var(--surface-sidebar);
246
+ --color-surface-toolbar: var(--surface-toolbar);
247
+ --color-surface-overlay: var(--surface-overlay);
248
+ --color-surface-selected: var(--surface-selected);
249
+ --color-separator: var(--separator);
250
+ --color-separator-strong: var(--separator-strong);
251
+ --color-control-hover: var(--control-hover);
252
+ --color-control-pressed: var(--control-pressed);
253
+ --color-control-selected: var(--control-selected);
254
+ --color-control-selected-foreground: var(--control-selected-foreground);
255
+ --color-control-disabled: var(--control-disabled);
256
+ --color-control-focus: var(--control-focus);
257
+ --color-control-invalid: var(--control-invalid);
258
+ --color-window-chrome: var(--window-chrome-background);
259
+ --color-window-chrome-foreground: var(--window-chrome-foreground);
260
+ --color-window-chrome-muted: var(--window-chrome-muted-foreground);
261
+ --color-window-border: var(--window-border);
22
262
  --color-card: var(--card);
23
263
  --color-card-foreground: var(--card-foreground);
24
264
  --color-popover: var(--popover);
@@ -67,7 +307,7 @@
67
307
  --color-terminal-stdout: var(--terminal-stdout);
68
308
  --color-terminal-stderr: var(--terminal-stderr);
69
309
  --color-terminal-error: var(--terminal-error);
70
- --chat-safe-padding: var(--chat-safe-padding);
310
+ --spacing-chat-safe: var(--chat-safe-padding);
71
311
  }
72
312
 
73
313
  @keyframes moldable-chat-shimmer {
@@ -451,6 +691,57 @@
451
691
  }
452
692
 
453
693
  :root {
694
+ /*
695
+ * Stable design decisions. Components and applications should consume these
696
+ * semantic roles instead of deriving their own grays, sizes, or timings.
697
+ */
698
+ --font-family-ui:
699
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
700
+ --font-family-mono: ui-monospace, Menlo, Consolas, monospace;
701
+
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;
712
+ --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;
720
+
721
+ --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;
735
+
736
+ --motion-duration-instant: 80ms;
737
+ --motion-duration-fast: 120ms;
738
+ --motion-duration-normal: 180ms;
739
+ --motion-duration-slow: 280ms;
740
+ --motion-ease-standard: cubic-bezier(0.2, 0, 0, 1);
741
+ --motion-ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
742
+ --motion-ease-exit: cubic-bezier(0.4, 0, 1, 1);
743
+ --motion-ease-spring: cubic-bezier(0.22, 1.15, 0.36, 1);
744
+
454
745
  --radius: 0.65rem;
455
746
  --background: oklch(1 0 0);
456
747
  --foreground: oklch(0.141 0.005 285.823);
@@ -495,6 +786,81 @@
495
786
  --status-stopped: oklch(0.552 0.016 285.938);
496
787
  --status-pending: oklch(0.75 0.15 75);
497
788
  --status-error: oklch(0.5866 0.1994 31.76);
789
+
790
+ --text-primary: var(--foreground);
791
+ --text-secondary: var(--muted-foreground);
792
+ --text-tertiary: color-mix(
793
+ in oklch,
794
+ var(--muted-foreground) 72%,
795
+ transparent
796
+ );
797
+ --text-disabled: color-mix(
798
+ in oklch,
799
+ var(--muted-foreground) 50%,
800
+ transparent
801
+ );
802
+ --surface-canvas: var(--background);
803
+ --surface-raised: var(--card);
804
+ --surface-recessed: color-mix(in oklch, var(--muted) 52%, var(--background));
805
+ --surface-sidebar: var(--sidebar);
806
+ --surface-toolbar: color-mix(in oklch, var(--background) 82%, transparent);
807
+ --surface-overlay: color-mix(in oklch, var(--popover) 92%, transparent);
808
+ --surface-selected: var(--accent);
809
+ --separator: color-mix(in oklch, var(--border) 78%, transparent);
810
+ --separator-strong: var(--border);
811
+ --control-hover: color-mix(in oklch, var(--foreground) 6%, transparent);
812
+ --control-pressed: color-mix(in oklch, var(--foreground) 10%, transparent);
813
+ --control-selected: var(--accent);
814
+ --control-selected-foreground: var(--accent-foreground);
815
+ --control-disabled: color-mix(
816
+ in oklch,
817
+ var(--muted-foreground) 10%,
818
+ transparent
819
+ );
820
+ --control-focus: var(--ring);
821
+ --control-invalid: var(--destructive);
822
+
823
+ --material-blur-toolbar: 16px;
824
+ --material-blur-overlay: 20px;
825
+ --material-saturation: 1.12;
826
+ --material-shadow-panel:
827
+ 0 1px 2px oklch(0.15 0.005 285 / 6%), 0 4px 12px oklch(0.15 0.005 285 / 4%);
828
+ --material-shadow-overlay:
829
+ 0 8px 24px oklch(0.15 0.005 285 / 12%), 0 2px 6px oklch(0.15 0.005 285 / 8%);
830
+ --material-shadow-window: 0 24px 80px oklch(0.1 0.005 285 / 22%);
831
+
832
+ /*
833
+ * Renderer boundary for embedded and standalone windows. The host may set
834
+ * these properties on the document root; zero-value defaults are safe in a
835
+ * normal browser or embedded webview.
836
+ */
837
+ --window-safe-area-top: env(safe-area-inset-top, 0px);
838
+ --window-safe-area-inline-end: env(safe-area-inset-right, 0px);
839
+ --window-safe-area-bottom: env(safe-area-inset-bottom, 0px);
840
+ --window-safe-area-inline-start: env(safe-area-inset-left, 0px);
841
+ --window-titlebar-height: env(titlebar-area-height, 0px);
842
+ --window-drag-region-height: var(--window-titlebar-height);
843
+ --window-control-inset-inline-start: 0px;
844
+ --window-control-inset-inline-end: 0px;
845
+ --window-content-inset-top: max(
846
+ var(--window-safe-area-top),
847
+ var(--window-titlebar-height)
848
+ );
849
+ --window-content-inset-inline-end: max(
850
+ var(--window-safe-area-inline-end),
851
+ var(--window-control-inset-inline-end)
852
+ );
853
+ --window-content-inset-bottom: var(--window-safe-area-bottom);
854
+ --window-content-inset-inline-start: max(
855
+ var(--window-safe-area-inline-start),
856
+ var(--window-control-inset-inline-start)
857
+ );
858
+ --window-corner-radius: 0px;
859
+ --window-chrome-background: var(--surface-toolbar);
860
+ --window-chrome-foreground: var(--text-primary);
861
+ --window-chrome-muted-foreground: var(--text-secondary);
862
+ --window-border: var(--separator);
863
+
498
864
  /* Terminal - stays dark in both modes */
499
865
  --terminal: oklch(0.16 0 0);
500
866
  --terminal-header: oklch(0.22 0 0);
@@ -504,7 +870,33 @@
504
870
  --terminal-stdout: oklch(0.75 0 0);
505
871
  --terminal-stderr: oklch(0.78 0.12 75);
506
872
  --terminal-error: oklch(0.7 0.16 25);
507
- --chat-safe-padding: 104px;
873
+ --chat-safe-padding: 0px;
874
+ }
875
+
876
+ :where([data-density='compact']) {
877
+ --density-control-height-xs: 1.375rem;
878
+ --density-control-height-sm: 1.75rem;
879
+ --density-control-height-md: 2rem;
880
+ --density-control-height-lg: 2.25rem;
881
+ --density-control-gap: 0.25rem;
882
+ --density-control-padding-inline: 0.625rem;
883
+ --density-row-height: 1.875rem;
884
+ --density-toolbar-height: 2rem;
885
+ --density-pane-padding: 0.625rem;
886
+ --density-section-gap: 0.75rem;
887
+ }
888
+
889
+ :where([data-density='comfortable']) {
890
+ --density-control-height-xs: 1.75rem;
891
+ --density-control-height-sm: 2.25rem;
892
+ --density-control-height-md: 2.5rem;
893
+ --density-control-height-lg: 2.75rem;
894
+ --density-control-gap: 0.5rem;
895
+ --density-control-padding-inline: 1rem;
896
+ --density-row-height: 2.75rem;
897
+ --density-toolbar-height: 3rem;
898
+ --density-pane-padding: 1rem;
899
+ --density-section-gap: 1.5rem;
508
900
  }
509
901
 
510
902
  .dark {
@@ -551,6 +943,11 @@
551
943
  --status-stopped: oklch(0.705 0.015 286.067);
552
944
  --status-pending: oklch(0.8 0.12 75);
553
945
  --status-error: oklch(0.704 0.191 22.216);
946
+ --material-shadow-panel:
947
+ 0 1px 2px oklch(0 0 0 / 24%), 0 6px 16px oklch(0 0 0 / 16%);
948
+ --material-shadow-overlay:
949
+ 0 12px 32px oklch(0 0 0 / 34%), 0 2px 8px oklch(0 0 0 / 24%);
950
+ --material-shadow-window: 0 28px 96px oklch(0 0 0 / 48%);
554
951
  /* Terminal - same dark look in dark mode */
555
952
  --terminal: oklch(0.16 0 0);
556
953
  --terminal-header: oklch(0.22 0 0);
@@ -560,7 +957,76 @@
560
957
  --terminal-stdout: oklch(0.75 0 0);
561
958
  --terminal-stderr: oklch(0.78 0.12 75);
562
959
  --terminal-error: oklch(0.7 0.16 25);
563
- --chat-safe-padding: 104px;
960
+ --chat-safe-padding: 0px;
961
+ }
962
+
963
+ @media (prefers-contrast: more) {
964
+ :root {
965
+ --text-tertiary: color-mix(
966
+ in oklch,
967
+ var(--muted-foreground) 92%,
968
+ var(--foreground)
969
+ );
970
+ --text-disabled: color-mix(
971
+ in oklch,
972
+ var(--muted-foreground) 72%,
973
+ transparent
974
+ );
975
+ --separator: color-mix(in oklch, var(--foreground) 32%, transparent);
976
+ --separator-strong: color-mix(in oklch, var(--foreground) 54%, transparent);
977
+ --control-hover: color-mix(in oklch, var(--foreground) 12%, transparent);
978
+ --control-pressed: color-mix(in oklch, var(--foreground) 18%, transparent);
979
+ --window-border: var(--separator-strong);
980
+ }
981
+ }
982
+
983
+ @media (forced-colors: active) {
984
+ :root {
985
+ --text-primary: CanvasText;
986
+ --text-secondary: CanvasText;
987
+ --text-tertiary: CanvasText;
988
+ --text-disabled: GrayText;
989
+ --surface-canvas: Canvas;
990
+ --surface-raised: Canvas;
991
+ --surface-recessed: Canvas;
992
+ --surface-sidebar: Canvas;
993
+ --surface-toolbar: Canvas;
994
+ --surface-overlay: Canvas;
995
+ --surface-selected: Highlight;
996
+ --separator: ButtonBorder;
997
+ --separator-strong: CanvasText;
998
+ --control-hover: transparent;
999
+ --control-pressed: transparent;
1000
+ --control-selected: Highlight;
1001
+ --control-selected-foreground: HighlightText;
1002
+ --control-disabled: transparent;
1003
+ --control-focus: Highlight;
1004
+ --control-invalid: Mark;
1005
+ --material-blur-toolbar: 0px;
1006
+ --material-blur-overlay: 0px;
1007
+ --material-saturation: 1;
1008
+ --material-shadow-panel: none;
1009
+ --material-shadow-overlay: none;
1010
+ --material-shadow-window: none;
1011
+ }
1012
+ }
1013
+
1014
+ :where([data-transparency='reduced']) {
1015
+ --surface-toolbar: var(--background);
1016
+ --surface-overlay: var(--popover);
1017
+ --material-blur-toolbar: 0px;
1018
+ --material-blur-overlay: 0px;
1019
+ --material-saturation: 1;
1020
+ }
1021
+
1022
+ @media (prefers-reduced-transparency: reduce) {
1023
+ :root {
1024
+ --surface-toolbar: var(--background);
1025
+ --surface-overlay: var(--popover);
1026
+ --material-blur-toolbar: 0px;
1027
+ --material-blur-overlay: 0px;
1028
+ --material-saturation: 1;
1029
+ }
564
1030
  }
565
1031
 
566
1032
  @layer base {
@@ -587,6 +1053,17 @@
587
1053
  }
588
1054
 
589
1055
  @media (prefers-reduced-motion: reduce) {
1056
+ :root {
1057
+ --motion-duration-instant: 1ms;
1058
+ --motion-duration-fast: 1ms;
1059
+ --motion-duration-normal: 1ms;
1060
+ --motion-duration-slow: 1ms;
1061
+ --motion-ease-standard: linear;
1062
+ --motion-ease-enter: linear;
1063
+ --motion-ease-exit: linear;
1064
+ --motion-ease-spring: linear;
1065
+ }
1066
+
590
1067
  .model-effort-power-fill,
591
1068
  .model-effort-power-field,
592
1069
  .model-effort-power-particle,
@@ -600,6 +1077,17 @@
600
1077
  }
601
1078
  }
602
1079
 
1080
+ :where([data-motion='reduced']) {
1081
+ --motion-duration-instant: 1ms;
1082
+ --motion-duration-fast: 1ms;
1083
+ --motion-duration-normal: 1ms;
1084
+ --motion-duration-slow: 1ms;
1085
+ --motion-ease-standard: linear;
1086
+ --motion-ease-enter: linear;
1087
+ --motion-ease-exit: linear;
1088
+ --motion-ease-spring: linear;
1089
+ }
1090
+
603
1091
  /* Shiki dual-theme support: override inline styles in dark mode */
604
1092
  .dark .shiki,
605
1093
  .dark .shiki span {