@moldable-ai/ui 0.2.19 → 0.2.21

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 (464) hide show
  1. package/dist/catalog/catalog-coverage.d.ts +15 -0
  2. package/dist/catalog/catalog-coverage.d.ts.map +1 -0
  3. package/dist/catalog/catalog-coverage.js +44 -0
  4. package/dist/catalog/catalog-manifest.d.ts +6 -0
  5. package/dist/catalog/catalog-manifest.d.ts.map +1 -0
  6. package/dist/catalog/catalog-manifest.js +117 -0
  7. package/dist/catalog/catalog-types.d.ts +64 -0
  8. package/dist/catalog/catalog-types.d.ts.map +1 -0
  9. package/dist/catalog/catalog-types.js +20 -0
  10. package/dist/catalog/component-catalog.d.ts +14 -0
  11. package/dist/catalog/component-catalog.d.ts.map +1 -0
  12. package/dist/catalog/component-catalog.js +49 -0
  13. package/dist/catalog/core-catalog-exclusions.d.ts +8 -0
  14. package/dist/catalog/core-catalog-exclusions.d.ts.map +1 -0
  15. package/dist/catalog/core-catalog-exclusions.js +151 -0
  16. package/dist/catalog/core-catalog.d.ts +2 -0
  17. package/dist/catalog/core-catalog.d.ts.map +1 -0
  18. package/dist/catalog/core-catalog.js +19 -0
  19. package/dist/catalog/core-collection-stories.d.ts +3 -0
  20. package/dist/catalog/core-collection-stories.d.ts.map +1 -0
  21. package/dist/catalog/core-collection-stories.js +42 -0
  22. package/dist/catalog/core-control-stories.d.ts +3 -0
  23. package/dist/catalog/core-control-stories.d.ts.map +1 -0
  24. package/dist/catalog/core-control-stories.js +94 -0
  25. package/dist/catalog/core-feedback-stories.d.ts +3 -0
  26. package/dist/catalog/core-feedback-stories.d.ts.map +1 -0
  27. package/dist/catalog/core-feedback-stories.js +50 -0
  28. package/dist/catalog/core-foundation-stories.d.ts +3 -0
  29. package/dist/catalog/core-foundation-stories.d.ts.map +1 -0
  30. package/dist/catalog/core-foundation-stories.js +53 -0
  31. package/dist/catalog/core-navigation-stories.d.ts +3 -0
  32. package/dist/catalog/core-navigation-stories.d.ts.map +1 -0
  33. package/dist/catalog/core-navigation-stories.js +25 -0
  34. package/dist/catalog/core-overlay-stories.d.ts +3 -0
  35. package/dist/catalog/core-overlay-stories.d.ts.map +1 -0
  36. package/dist/catalog/core-overlay-stories.js +20 -0
  37. package/dist/catalog/index.d.ts +7 -0
  38. package/dist/catalog/index.d.ts.map +1 -0
  39. package/dist/catalog/index.js +6 -0
  40. package/dist/components/app-error-boundary.d.ts +1 -0
  41. package/dist/components/app-error-boundary.d.ts.map +1 -1
  42. package/dist/components/app-error-boundary.js +13 -0
  43. package/dist/components/chat/chat-image-lightbox.d.ts +9 -0
  44. package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -0
  45. package/dist/components/chat/chat-image-lightbox.js +9 -0
  46. package/dist/components/chat/chat-message.d.ts +19 -1
  47. package/dist/components/chat/chat-message.d.ts.map +1 -1
  48. package/dist/components/chat/chat-message.js +66 -16
  49. package/dist/components/chat/chat-messages.d.ts +5 -2
  50. package/dist/components/chat/chat-messages.d.ts.map +1 -1
  51. package/dist/components/chat/chat-messages.js +61 -6
  52. package/dist/components/chat/chat-panel.d.ts +49 -6
  53. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  54. package/dist/components/chat/chat-panel.js +196 -163
  55. package/dist/components/chat/conversation-history.d.ts +39 -5
  56. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  57. package/dist/components/chat/conversation-history.js +192 -26
  58. package/dist/components/chat/index.d.ts +2 -2
  59. package/dist/components/chat/index.d.ts.map +1 -1
  60. package/dist/components/chat/index.js +1 -1
  61. package/dist/components/chat/tool-handlers.d.ts.map +1 -1
  62. package/dist/components/chat/tool-handlers.js +40 -2
  63. package/dist/components/chat/vertical-scroll-fade.d.ts +6 -0
  64. package/dist/components/chat/vertical-scroll-fade.d.ts.map +1 -0
  65. package/dist/components/chat/vertical-scroll-fade.js +12 -0
  66. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts +9 -0
  67. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts.map +1 -0
  68. package/dist/components/native-capabilities/bluetooth-panel-helpers.js +37 -0
  69. package/dist/components/native-capabilities/bluetooth-panel.d.ts +56 -0
  70. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -0
  71. package/dist/components/native-capabilities/bluetooth-panel.js +470 -0
  72. package/dist/components/native-capabilities/camera-preview.d.ts +39 -0
  73. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -0
  74. package/dist/components/native-capabilities/camera-preview.js +228 -0
  75. package/dist/components/native-capabilities/capability-badge.d.ts +23 -0
  76. package/dist/components/native-capabilities/capability-badge.d.ts.map +1 -0
  77. package/dist/components/native-capabilities/capability-badge.js +39 -0
  78. package/dist/components/native-capabilities/capability-matrix.d.ts +14 -0
  79. package/dist/components/native-capabilities/capability-matrix.d.ts.map +1 -0
  80. package/dist/components/native-capabilities/capability-matrix.js +97 -0
  81. package/dist/components/native-capabilities/clipboard-button.d.ts +26 -0
  82. package/dist/components/native-capabilities/clipboard-button.d.ts.map +1 -0
  83. package/dist/components/native-capabilities/clipboard-button.js +99 -0
  84. package/dist/components/native-capabilities/device-io-controls.d.ts +4 -0
  85. package/dist/components/native-capabilities/device-io-controls.d.ts.map +1 -0
  86. package/dist/components/native-capabilities/device-io-controls.js +28 -0
  87. package/dist/components/native-capabilities/device-list.d.ts +20 -0
  88. package/dist/components/native-capabilities/device-list.d.ts.map +1 -0
  89. package/dist/components/native-capabilities/device-list.js +14 -0
  90. package/dist/components/native-capabilities/display-map.d.ts +23 -0
  91. package/dist/components/native-capabilities/display-map.d.ts.map +1 -0
  92. package/dist/components/native-capabilities/display-map.js +114 -0
  93. package/dist/components/native-capabilities/haptic-button.d.ts +26 -0
  94. package/dist/components/native-capabilities/haptic-button.d.ts.map +1 -0
  95. package/dist/components/native-capabilities/haptic-button.js +94 -0
  96. package/dist/components/native-capabilities/hid-panel.d.ts +40 -0
  97. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -0
  98. package/dist/components/native-capabilities/hid-panel.js +373 -0
  99. package/dist/components/native-capabilities/index.d.ts +27 -0
  100. package/dist/components/native-capabilities/index.d.ts.map +1 -0
  101. package/dist/components/native-capabilities/index.js +26 -0
  102. package/dist/components/native-capabilities/live-indicator.d.ts +15 -0
  103. package/dist/components/native-capabilities/live-indicator.d.ts.map +1 -0
  104. package/dist/components/native-capabilities/live-indicator.js +26 -0
  105. package/dist/components/native-capabilities/local-auth-button.d.ts +33 -0
  106. package/dist/components/native-capabilities/local-auth-button.d.ts.map +1 -0
  107. package/dist/components/native-capabilities/local-auth-button.js +115 -0
  108. package/dist/components/native-capabilities/location-panel.d.ts +29 -0
  109. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -0
  110. package/dist/components/native-capabilities/location-panel.js +146 -0
  111. package/dist/components/native-capabilities/microphone-meter.d.ts +35 -0
  112. package/dist/components/native-capabilities/microphone-meter.d.ts.map +1 -0
  113. package/dist/components/native-capabilities/microphone-meter.js +244 -0
  114. package/dist/components/native-capabilities/midi-monitor.d.ts +54 -0
  115. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -0
  116. package/dist/components/native-capabilities/midi-monitor.js +534 -0
  117. package/dist/components/native-capabilities/native-capability-panel.d.ts +11 -0
  118. package/dist/components/native-capabilities/native-capability-panel.d.ts.map +1 -0
  119. package/dist/components/native-capabilities/native-capability-panel.js +28 -0
  120. package/dist/components/native-capabilities/notification-panel.d.ts +24 -0
  121. package/dist/components/native-capabilities/notification-panel.d.ts.map +1 -0
  122. package/dist/components/native-capabilities/notification-panel.js +124 -0
  123. package/dist/components/native-capabilities/power-blocker-controller.d.ts +19 -0
  124. package/dist/components/native-capabilities/power-blocker-controller.d.ts.map +1 -0
  125. package/dist/components/native-capabilities/power-blocker-controller.js +83 -0
  126. package/dist/components/native-capabilities/power-panel.d.ts +67 -0
  127. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -0
  128. package/dist/components/native-capabilities/power-panel.js +309 -0
  129. package/dist/components/native-capabilities/readout.d.ts +10 -0
  130. package/dist/components/native-capabilities/readout.d.ts.map +1 -0
  131. package/dist/components/native-capabilities/readout.js +11 -0
  132. package/dist/components/native-capabilities/screen-share-preview.d.ts +36 -0
  133. package/dist/components/native-capabilities/screen-share-preview.d.ts.map +1 -0
  134. package/dist/components/native-capabilities/screen-share-preview.js +191 -0
  135. package/dist/components/native-capabilities/secure-storage-panel.d.ts +36 -0
  136. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -0
  137. package/dist/components/native-capabilities/secure-storage-panel.js +193 -0
  138. package/dist/components/native-capabilities/serial-console.d.ts +64 -0
  139. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -0
  140. package/dist/components/native-capabilities/serial-console.js +399 -0
  141. package/dist/components/native-capabilities/shortcut-recorder.d.ts +35 -0
  142. package/dist/components/native-capabilities/shortcut-recorder.d.ts.map +1 -0
  143. package/dist/components/native-capabilities/shortcut-recorder.js +217 -0
  144. package/dist/components/native-capabilities/stream-log.d.ts +35 -0
  145. package/dist/components/native-capabilities/stream-log.d.ts.map +1 -0
  146. package/dist/components/native-capabilities/stream-log.js +65 -0
  147. package/dist/components/native-capabilities/system-audio-monitor.d.ts +34 -0
  148. package/dist/components/native-capabilities/system-audio-monitor.d.ts.map +1 -0
  149. package/dist/components/native-capabilities/system-audio-monitor.js +275 -0
  150. package/dist/components/native-capabilities/usb-panel.d.ts +54 -0
  151. package/dist/components/native-capabilities/usb-panel.d.ts.map +1 -0
  152. package/dist/components/native-capabilities/usb-panel.js +363 -0
  153. package/dist/components/native-capabilities/use-capability.d.ts +20 -0
  154. package/dist/components/native-capabilities/use-capability.d.ts.map +1 -0
  155. package/dist/components/native-capabilities/use-capability.js +61 -0
  156. package/dist/components/ui/alert-dialog.d.ts +7 -3
  157. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  158. package/dist/components/ui/alert-dialog.js +9 -5
  159. package/dist/components/ui/alert.d.ts +19 -3
  160. package/dist/components/ui/alert.d.ts.map +1 -1
  161. package/dist/components/ui/alert.js +25 -8
  162. package/dist/components/ui/app-frame.d.ts +28 -0
  163. package/dist/components/ui/app-frame.d.ts.map +1 -0
  164. package/dist/components/ui/app-frame.js +95 -0
  165. package/dist/components/ui/button-group.d.ts +1 -1
  166. package/dist/components/ui/button.js +1 -1
  167. package/dist/components/ui/collapsible.d.ts +9 -1
  168. package/dist/components/ui/collapsible.d.ts.map +1 -1
  169. package/dist/components/ui/collapsible.js +13 -2
  170. package/dist/components/ui/collection-navigation.d.ts +8 -0
  171. package/dist/components/ui/collection-navigation.d.ts.map +1 -0
  172. package/dist/components/ui/collection-navigation.js +19 -0
  173. package/dist/components/ui/color-well.d.ts +13 -0
  174. package/dist/components/ui/color-well.d.ts.map +1 -0
  175. package/dist/components/ui/color-well.js +30 -0
  176. package/dist/components/ui/command.d.ts +5 -1
  177. package/dist/components/ui/command.d.ts.map +1 -1
  178. package/dist/components/ui/command.js +13 -1
  179. package/dist/components/ui/confirm-dialog.d.ts +19 -0
  180. package/dist/components/ui/confirm-dialog.d.ts.map +1 -0
  181. package/dist/components/ui/confirm-dialog.js +45 -0
  182. package/dist/components/ui/date-field.d.ts +19 -0
  183. package/dist/components/ui/date-field.d.ts.map +1 -0
  184. package/dist/components/ui/date-field.js +54 -0
  185. package/dist/components/ui/date-picker.d.ts +24 -0
  186. package/dist/components/ui/date-picker.d.ts.map +1 -0
  187. package/dist/components/ui/date-picker.js +92 -0
  188. package/dist/components/ui/dialog.d.ts +4 -2
  189. package/dist/components/ui/dialog.d.ts.map +1 -1
  190. package/dist/components/ui/dialog.js +8 -5
  191. package/dist/components/ui/edge-fade.d.ts +11 -0
  192. package/dist/components/ui/edge-fade.d.ts.map +1 -0
  193. package/dist/components/ui/edge-fade.js +41 -0
  194. package/dist/components/ui/empty.d.ts +7 -2
  195. package/dist/components/ui/empty.d.ts.map +1 -1
  196. package/dist/components/ui/empty.js +20 -7
  197. package/dist/components/ui/field.d.ts +1 -1
  198. package/dist/components/ui/grid.d.ts +24 -0
  199. package/dist/components/ui/grid.d.ts.map +1 -0
  200. package/dist/components/ui/grid.js +258 -0
  201. package/dist/components/ui/icon-button.d.ts +15 -0
  202. package/dist/components/ui/icon-button.d.ts.map +1 -0
  203. package/dist/components/ui/icon-button.js +15 -0
  204. package/dist/components/ui/index.d.ts +23 -0
  205. package/dist/components/ui/index.d.ts.map +1 -1
  206. package/dist/components/ui/index.js +23 -0
  207. package/dist/components/ui/input-group.d.ts +1 -1
  208. package/dist/components/ui/inspector.d.ts +15 -0
  209. package/dist/components/ui/inspector.d.ts.map +1 -0
  210. package/dist/components/ui/inspector.js +26 -0
  211. package/dist/components/ui/kbd.d.ts +1 -1
  212. package/dist/components/ui/list.d.ts +28 -0
  213. package/dist/components/ui/list.d.ts.map +1 -0
  214. package/dist/components/ui/list.js +235 -0
  215. package/dist/components/ui/material.d.ts +34 -0
  216. package/dist/components/ui/material.d.ts.map +1 -0
  217. package/dist/components/ui/material.js +34 -0
  218. package/dist/components/ui/message-scroller-controller.d.ts +162 -0
  219. package/dist/components/ui/message-scroller-controller.d.ts.map +1 -0
  220. package/dist/components/ui/message-scroller-controller.js +888 -0
  221. package/dist/components/ui/message-scroller-layout-stability.d.ts +33 -0
  222. package/dist/components/ui/message-scroller-layout-stability.d.ts.map +1 -0
  223. package/dist/components/ui/message-scroller-layout-stability.js +153 -0
  224. package/dist/components/ui/message-scroller-policy.d.ts +74 -0
  225. package/dist/components/ui/message-scroller-policy.d.ts.map +1 -0
  226. package/dist/components/ui/message-scroller-policy.js +129 -0
  227. package/dist/components/ui/message-scroller-primitive.d.ts +55 -0
  228. package/dist/components/ui/message-scroller-primitive.d.ts.map +1 -0
  229. package/dist/components/ui/message-scroller-primitive.js +226 -0
  230. package/dist/components/ui/message-scroller.d.ts +11 -0
  231. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  232. package/dist/components/ui/message-scroller.js +25 -0
  233. package/dist/components/ui/navigation-button-group.d.ts +16 -0
  234. package/dist/components/ui/navigation-button-group.d.ts.map +1 -0
  235. package/dist/components/ui/navigation-button-group.js +9 -0
  236. package/dist/components/ui/notification-dot.d.ts +4 -0
  237. package/dist/components/ui/notification-dot.d.ts.map +1 -0
  238. package/dist/components/ui/notification-dot.js +7 -0
  239. package/dist/components/ui/number-input.d.ts +16 -0
  240. package/dist/components/ui/number-input.d.ts.map +1 -0
  241. package/dist/components/ui/number-input.js +56 -0
  242. package/dist/components/ui/panel.d.ts +18 -0
  243. package/dist/components/ui/panel.d.ts.map +1 -0
  244. package/dist/components/ui/panel.js +40 -0
  245. package/dist/components/ui/popover.d.ts +9 -2
  246. package/dist/components/ui/popover.d.ts.map +1 -1
  247. package/dist/components/ui/popover.js +14 -4
  248. package/dist/components/ui/scroll-area.d.ts +8 -2
  249. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  250. package/dist/components/ui/scroll-area.js +6 -3
  251. package/dist/components/ui/search-field.d.ts +19 -0
  252. package/dist/components/ui/search-field.d.ts.map +1 -0
  253. package/dist/components/ui/search-field.js +64 -0
  254. package/dist/components/ui/segmented-control.d.ts +21 -0
  255. package/dist/components/ui/segmented-control.d.ts.map +1 -0
  256. package/dist/components/ui/segmented-control.js +62 -0
  257. package/dist/components/ui/sheet.d.ts +4 -2
  258. package/dist/components/ui/sheet.d.ts.map +1 -1
  259. package/dist/components/ui/sheet.js +12 -9
  260. package/dist/components/ui/sidebar.js +1 -1
  261. package/dist/components/ui/sonner.d.ts +4 -3
  262. package/dist/components/ui/sonner.d.ts.map +1 -1
  263. package/dist/components/ui/sonner.js +7 -6
  264. package/dist/components/ui/split-view.d.ts +11 -0
  265. package/dist/components/ui/split-view.d.ts.map +1 -0
  266. package/dist/components/ui/split-view.js +13 -0
  267. package/dist/components/ui/status.d.ts +13 -0
  268. package/dist/components/ui/status.d.ts.map +1 -0
  269. package/dist/components/ui/status.js +36 -0
  270. package/dist/components/ui/table.d.ts +11 -2
  271. package/dist/components/ui/table.d.ts.map +1 -1
  272. package/dist/components/ui/table.js +33 -6
  273. package/dist/components/ui/text.d.ts +17 -0
  274. package/dist/components/ui/text.d.ts.map +1 -0
  275. package/dist/components/ui/text.js +55 -0
  276. package/dist/components/ui/toggle.d.ts +12 -4
  277. package/dist/components/ui/toggle.d.ts.map +1 -1
  278. package/dist/components/ui/toggle.js +13 -2
  279. package/dist/components/ui/toolbar.d.ts +27 -0
  280. package/dist/components/ui/toolbar.d.ts.map +1 -0
  281. package/dist/components/ui/toolbar.js +71 -0
  282. package/dist/components/ui/tooltip.d.ts +8 -3
  283. package/dist/components/ui/tooltip.d.ts.map +1 -1
  284. package/dist/components/ui/tooltip.js +11 -6
  285. package/dist/index.d.ts +2 -2
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +4 -4
  288. package/dist/lib/frame-lifecycle.d.ts +29 -0
  289. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  290. package/dist/lib/frame-lifecycle.js +85 -0
  291. package/dist/lib/native-capabilities/access.d.ts +13 -0
  292. package/dist/lib/native-capabilities/access.d.ts.map +1 -0
  293. package/dist/lib/native-capabilities/access.js +53 -0
  294. package/dist/lib/native-capabilities/bluetooth-access.d.ts +14 -0
  295. package/dist/lib/native-capabilities/bluetooth-access.d.ts.map +1 -0
  296. package/dist/lib/native-capabilities/bluetooth-access.js +43 -0
  297. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +19 -0
  298. package/dist/lib/native-capabilities/bluetooth-connection.d.ts.map +1 -0
  299. package/dist/lib/native-capabilities/bluetooth-connection.js +88 -0
  300. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +7 -0
  301. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts.map +1 -0
  302. package/dist/lib/native-capabilities/bluetooth-gatt.js +77 -0
  303. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +10 -0
  304. package/dist/lib/native-capabilities/bluetooth-internal.d.ts.map +1 -0
  305. package/dist/lib/native-capabilities/bluetooth-internal.js +105 -0
  306. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +33 -0
  307. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts.map +1 -0
  308. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +214 -0
  309. package/dist/lib/native-capabilities/bluetooth-types.d.ts +85 -0
  310. package/dist/lib/native-capabilities/bluetooth-types.d.ts.map +1 -0
  311. package/dist/lib/native-capabilities/bluetooth-types.js +2 -0
  312. package/dist/lib/native-capabilities/bluetooth.d.ts +7 -0
  313. package/dist/lib/native-capabilities/bluetooth.d.ts.map +1 -0
  314. package/dist/lib/native-capabilities/bluetooth.js +4 -0
  315. package/dist/lib/native-capabilities/bridge.d.ts +23 -0
  316. package/dist/lib/native-capabilities/bridge.d.ts.map +1 -0
  317. package/dist/lib/native-capabilities/bridge.js +266 -0
  318. package/dist/lib/native-capabilities/capabilities.d.ts +7 -0
  319. package/dist/lib/native-capabilities/capabilities.d.ts.map +1 -0
  320. package/dist/lib/native-capabilities/capabilities.js +95 -0
  321. package/dist/lib/native-capabilities/clipboard.d.ts +11 -0
  322. package/dist/lib/native-capabilities/clipboard.d.ts.map +1 -0
  323. package/dist/lib/native-capabilities/clipboard.js +58 -0
  324. package/dist/lib/native-capabilities/device-io-errors.d.ts +11 -0
  325. package/dist/lib/native-capabilities/device-io-errors.d.ts.map +1 -0
  326. package/dist/lib/native-capabilities/device-io-errors.js +82 -0
  327. package/dist/lib/native-capabilities/displays.d.ts +38 -0
  328. package/dist/lib/native-capabilities/displays.d.ts.map +1 -0
  329. package/dist/lib/native-capabilities/displays.js +12 -0
  330. package/dist/lib/native-capabilities/global-shortcuts.d.ts +86 -0
  331. package/dist/lib/native-capabilities/global-shortcuts.d.ts.map +1 -0
  332. package/dist/lib/native-capabilities/global-shortcuts.js +351 -0
  333. package/dist/lib/native-capabilities/haptics.d.ts +25 -0
  334. package/dist/lib/native-capabilities/haptics.d.ts.map +1 -0
  335. package/dist/lib/native-capabilities/haptics.js +18 -0
  336. package/dist/lib/native-capabilities/hid-native.d.ts +26 -0
  337. package/dist/lib/native-capabilities/hid-native.d.ts.map +1 -0
  338. package/dist/lib/native-capabilities/hid-native.js +229 -0
  339. package/dist/lib/native-capabilities/hid.d.ts +52 -0
  340. package/dist/lib/native-capabilities/hid.d.ts.map +1 -0
  341. package/dist/lib/native-capabilities/hid.js +163 -0
  342. package/dist/lib/native-capabilities/index.d.ts +40 -0
  343. package/dist/lib/native-capabilities/index.d.ts.map +1 -0
  344. package/dist/lib/native-capabilities/index.js +21 -0
  345. package/dist/lib/native-capabilities/local-authentication.d.ts +32 -0
  346. package/dist/lib/native-capabilities/local-authentication.d.ts.map +1 -0
  347. package/dist/lib/native-capabilities/local-authentication.js +46 -0
  348. package/dist/lib/native-capabilities/location.d.ts +49 -0
  349. package/dist/lib/native-capabilities/location.d.ts.map +1 -0
  350. package/dist/lib/native-capabilities/location.js +114 -0
  351. package/dist/lib/native-capabilities/media-permissions.d.ts +28 -0
  352. package/dist/lib/native-capabilities/media-permissions.d.ts.map +1 -0
  353. package/dist/lib/native-capabilities/media-permissions.js +37 -0
  354. package/dist/lib/native-capabilities/media.d.ts +17 -0
  355. package/dist/lib/native-capabilities/media.d.ts.map +1 -0
  356. package/dist/lib/native-capabilities/media.js +104 -0
  357. package/dist/lib/native-capabilities/midi-access.d.ts +13 -0
  358. package/dist/lib/native-capabilities/midi-access.d.ts.map +1 -0
  359. package/dist/lib/native-capabilities/midi-access.js +68 -0
  360. package/dist/lib/native-capabilities/midi-internal.d.ts +12 -0
  361. package/dist/lib/native-capabilities/midi-internal.d.ts.map +1 -0
  362. package/dist/lib/native-capabilities/midi-internal.js +88 -0
  363. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +27 -0
  364. package/dist/lib/native-capabilities/midi-native-fallback.d.ts.map +1 -0
  365. package/dist/lib/native-capabilities/midi-native-fallback.js +127 -0
  366. package/dist/lib/native-capabilities/midi-ports.d.ts +6 -0
  367. package/dist/lib/native-capabilities/midi-ports.d.ts.map +1 -0
  368. package/dist/lib/native-capabilities/midi-ports.js +115 -0
  369. package/dist/lib/native-capabilities/midi-types.d.ts +25 -0
  370. package/dist/lib/native-capabilities/midi-types.d.ts.map +1 -0
  371. package/dist/lib/native-capabilities/midi-types.js +1 -0
  372. package/dist/lib/native-capabilities/midi.d.ts +6 -0
  373. package/dist/lib/native-capabilities/midi.d.ts.map +1 -0
  374. package/dist/lib/native-capabilities/midi.js +3 -0
  375. package/dist/lib/native-capabilities/native-device-io.d.ts +28 -0
  376. package/dist/lib/native-capabilities/native-device-io.d.ts.map +1 -0
  377. package/dist/lib/native-capabilities/native-device-io.js +91 -0
  378. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts +13 -0
  379. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts.map +1 -0
  380. package/dist/lib/native-capabilities/native-device-lifecycle.js +40 -0
  381. package/dist/lib/native-capabilities/notifications.d.ts +38 -0
  382. package/dist/lib/native-capabilities/notifications.d.ts.map +1 -0
  383. package/dist/lib/native-capabilities/notifications.js +50 -0
  384. package/dist/lib/native-capabilities/power-session.d.ts +113 -0
  385. package/dist/lib/native-capabilities/power-session.d.ts.map +1 -0
  386. package/dist/lib/native-capabilities/power-session.js +264 -0
  387. package/dist/lib/native-capabilities/secure-storage.d.ts +36 -0
  388. package/dist/lib/native-capabilities/secure-storage.d.ts.map +1 -0
  389. package/dist/lib/native-capabilities/secure-storage.js +64 -0
  390. package/dist/lib/native-capabilities/serial-native.d.ts +23 -0
  391. package/dist/lib/native-capabilities/serial-native.d.ts.map +1 -0
  392. package/dist/lib/native-capabilities/serial-native.js +181 -0
  393. package/dist/lib/native-capabilities/serial.d.ts +76 -0
  394. package/dist/lib/native-capabilities/serial.d.ts.map +1 -0
  395. package/dist/lib/native-capabilities/serial.js +215 -0
  396. package/dist/lib/native-capabilities/system-audio.d.ts +127 -0
  397. package/dist/lib/native-capabilities/system-audio.d.ts.map +1 -0
  398. package/dist/lib/native-capabilities/system-audio.js +330 -0
  399. package/dist/lib/native-capabilities/types.d.ts +62 -0
  400. package/dist/lib/native-capabilities/types.d.ts.map +1 -0
  401. package/dist/lib/native-capabilities/types.js +27 -0
  402. package/dist/lib/native-capabilities/usb-native.d.ts +39 -0
  403. package/dist/lib/native-capabilities/usb-native.d.ts.map +1 -0
  404. package/dist/lib/native-capabilities/usb-native.js +217 -0
  405. package/dist/lib/native-capabilities/usb.d.ts +85 -0
  406. package/dist/lib/native-capabilities/usb.d.ts.map +1 -0
  407. package/dist/lib/native-capabilities/usb.js +225 -0
  408. package/dist/lib/theme.d.ts.map +1 -1
  409. package/dist/lib/theme.js +2 -1
  410. package/docs/README.md +39 -0
  411. package/docs/accessibility.md +32 -0
  412. package/docs/adaptive-materials.md +79 -0
  413. package/docs/app-anatomy.md +74 -0
  414. package/docs/component-catalog.md +82 -0
  415. package/docs/component-guide-template.md +37 -0
  416. package/docs/design-tokens.md +185 -0
  417. package/docs/foundations.md +58 -0
  418. package/docs/native-integration.md +33 -0
  419. package/docs/standalone-app-windows.md +136 -0
  420. package/package.json +8 -3
  421. package/src/components/ui/alert-dialog.md +31 -0
  422. package/src/components/ui/alert.md +77 -0
  423. package/src/components/ui/app-frame.md +38 -0
  424. package/src/components/ui/badge.md +57 -0
  425. package/src/components/ui/button.md +76 -0
  426. package/src/components/ui/collapsible.md +52 -0
  427. package/src/components/ui/color-well.md +11 -0
  428. package/src/components/ui/combobox.md +42 -0
  429. package/src/components/ui/command.md +54 -0
  430. package/src/components/ui/date-field.md +32 -0
  431. package/src/components/ui/date-picker.md +55 -0
  432. package/src/components/ui/dialog.md +40 -0
  433. package/src/components/ui/edge-fade.md +7 -0
  434. package/src/components/ui/empty.md +87 -0
  435. package/src/components/ui/field.md +77 -0
  436. package/src/components/ui/grid.md +109 -0
  437. package/src/components/ui/icon-button.md +36 -0
  438. package/src/components/ui/inspector.md +11 -0
  439. package/src/components/ui/item.md +87 -0
  440. package/src/components/ui/list.md +140 -0
  441. package/src/components/ui/material.md +51 -0
  442. package/src/components/ui/navigation-button-group.md +46 -0
  443. package/src/components/ui/notification-dot.md +7 -0
  444. package/src/components/ui/number-input.md +19 -0
  445. package/src/components/ui/panel.md +11 -0
  446. package/src/components/ui/popover.md +31 -0
  447. package/src/components/ui/resizable.md +66 -0
  448. package/src/components/ui/scroll-area.md +72 -0
  449. package/src/components/ui/search-field.md +33 -0
  450. package/src/components/ui/segmented-control.md +36 -0
  451. package/src/components/ui/sheet.md +30 -0
  452. package/src/components/ui/sidebar.md +113 -0
  453. package/src/components/ui/sonner.md +37 -0
  454. package/src/components/ui/split-view.md +15 -0
  455. package/src/components/ui/status.md +12 -0
  456. package/src/components/ui/table.md +37 -0
  457. package/src/components/ui/tabs.md +66 -0
  458. package/src/components/ui/text.md +17 -0
  459. package/src/components/ui/toggle-button.md +48 -0
  460. package/src/components/ui/toggle-group.md +80 -0
  461. package/src/components/ui/toggle.md +73 -0
  462. package/src/components/ui/toolbar.md +26 -0
  463. package/src/components/ui/tooltip.md +31 -0
  464. package/src/styles/index.css +704 -3
@@ -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,117 @@
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-regular-fill: color-mix(
827
+ in oklch,
828
+ var(--background) 76%,
829
+ transparent
830
+ );
831
+ --material-regular-fallback: color-mix(
832
+ in oklch,
833
+ var(--background) 94%,
834
+ var(--foreground) 6%
835
+ );
836
+ --material-regular-border: color-mix(
837
+ in oklch,
838
+ var(--foreground) 10%,
839
+ transparent
840
+ );
841
+ --material-regular-highlight: oklch(1 0 0 / 42%);
842
+ --material-regular-blur: 20px;
843
+ --material-regular-saturation: 1.18;
844
+ --material-clear-fill: color-mix(
845
+ in oklch,
846
+ var(--background) 24%,
847
+ transparent
848
+ );
849
+ --material-clear-fallback: color-mix(
850
+ in oklch,
851
+ var(--background) 88%,
852
+ var(--foreground) 12%
853
+ );
854
+ --material-clear-border: color-mix(
855
+ in oklch,
856
+ var(--foreground) 14%,
857
+ transparent
858
+ );
859
+ --material-clear-highlight: oklch(1 0 0 / 28%);
860
+ --material-clear-blur: 12px;
861
+ --material-clear-saturation: 1.24;
862
+ --material-shadow-panel:
863
+ 0 1px 2px oklch(0.15 0.005 285 / 6%), 0 4px 12px oklch(0.15 0.005 285 / 4%);
864
+ --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%);
867
+
868
+ /*
869
+ * Renderer boundary for embedded and standalone windows. The host may set
870
+ * these properties on the document root; zero-value defaults are safe in a
871
+ * normal browser or embedded webview.
872
+ */
873
+ --window-safe-area-top: env(safe-area-inset-top, 0px);
874
+ --window-safe-area-inline-end: env(safe-area-inset-right, 0px);
875
+ --window-safe-area-bottom: env(safe-area-inset-bottom, 0px);
876
+ --window-safe-area-inline-start: env(safe-area-inset-left, 0px);
877
+ --window-titlebar-height: env(titlebar-area-height, 0px);
878
+ --window-drag-region-height: var(--window-titlebar-height);
879
+ --window-control-inset-inline-start: 0px;
880
+ --window-control-inset-inline-end: 0px;
881
+ --window-content-inset-top: max(
882
+ var(--window-safe-area-top),
883
+ var(--window-titlebar-height)
884
+ );
885
+ --window-content-inset-inline-end: max(
886
+ var(--window-safe-area-inline-end),
887
+ var(--window-control-inset-inline-end)
888
+ );
889
+ --window-content-inset-bottom: var(--window-safe-area-bottom);
890
+ --window-content-inset-inline-start: max(
891
+ var(--window-safe-area-inline-start),
892
+ var(--window-control-inset-inline-start)
893
+ );
894
+ --window-corner-radius: 0px;
895
+ --window-chrome-background: var(--surface-toolbar);
896
+ --window-chrome-foreground: var(--text-primary);
897
+ --window-chrome-muted-foreground: var(--text-secondary);
898
+ --window-border: var(--separator);
899
+
498
900
  /* Terminal - stays dark in both modes */
499
901
  --terminal: oklch(0.16 0 0);
500
902
  --terminal-header: oklch(0.22 0 0);
@@ -504,7 +906,33 @@
504
906
  --terminal-stdout: oklch(0.75 0 0);
505
907
  --terminal-stderr: oklch(0.78 0.12 75);
506
908
  --terminal-error: oklch(0.7 0.16 25);
507
- --chat-safe-padding: 104px;
909
+ --chat-safe-padding: 0px;
910
+ }
911
+
912
+ :where([data-density='compact']) {
913
+ --density-control-height-xs: 1.375rem;
914
+ --density-control-height-sm: 1.75rem;
915
+ --density-control-height-md: 2rem;
916
+ --density-control-height-lg: 2.25rem;
917
+ --density-control-gap: 0.25rem;
918
+ --density-control-padding-inline: 0.625rem;
919
+ --density-row-height: 1.875rem;
920
+ --density-toolbar-height: 2rem;
921
+ --density-pane-padding: 0.625rem;
922
+ --density-section-gap: 0.75rem;
923
+ }
924
+
925
+ :where([data-density='comfortable']) {
926
+ --density-control-height-xs: 1.75rem;
927
+ --density-control-height-sm: 2.25rem;
928
+ --density-control-height-md: 2.5rem;
929
+ --density-control-height-lg: 2.75rem;
930
+ --density-control-gap: 0.5rem;
931
+ --density-control-padding-inline: 1rem;
932
+ --density-row-height: 2.75rem;
933
+ --density-toolbar-height: 3rem;
934
+ --density-pane-padding: 1rem;
935
+ --density-section-gap: 1.5rem;
508
936
  }
509
937
 
510
938
  .dark {
@@ -551,6 +979,35 @@
551
979
  --status-stopped: oklch(0.705 0.015 286.067);
552
980
  --status-pending: oklch(0.8 0.12 75);
553
981
  --status-error: oklch(0.704 0.191 22.216);
982
+ --material-regular-fill: color-mix(
983
+ in oklch,
984
+ var(--background) 68%,
985
+ transparent
986
+ );
987
+ --material-regular-fallback: color-mix(
988
+ in oklch,
989
+ var(--background) 88%,
990
+ var(--foreground) 12%
991
+ );
992
+ --material-regular-border: oklch(1 0 0 / 14%);
993
+ --material-regular-highlight: oklch(1 0 0 / 12%);
994
+ --material-clear-fill: color-mix(
995
+ in oklch,
996
+ var(--background) 20%,
997
+ transparent
998
+ );
999
+ --material-clear-fallback: color-mix(
1000
+ in oklch,
1001
+ var(--background) 78%,
1002
+ var(--foreground) 22%
1003
+ );
1004
+ --material-clear-border: oklch(1 0 0 / 18%);
1005
+ --material-clear-highlight: oklch(1 0 0 / 10%);
1006
+ --material-shadow-panel:
1007
+ 0 1px 2px oklch(0 0 0 / 24%), 0 6px 16px oklch(0 0 0 / 16%);
1008
+ --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%);
554
1011
  /* Terminal - same dark look in dark mode */
555
1012
  --terminal: oklch(0.16 0 0);
556
1013
  --terminal-header: oklch(0.22 0 0);
@@ -560,7 +1017,142 @@
560
1017
  --terminal-stdout: oklch(0.75 0 0);
561
1018
  --terminal-stderr: oklch(0.78 0.12 75);
562
1019
  --terminal-error: oklch(0.7 0.16 25);
563
- --chat-safe-padding: 104px;
1020
+ --chat-safe-padding: 0px;
1021
+ }
1022
+
1023
+ @media (prefers-contrast: more) {
1024
+ :root {
1025
+ --text-tertiary: color-mix(
1026
+ in oklch,
1027
+ var(--muted-foreground) 92%,
1028
+ var(--foreground)
1029
+ );
1030
+ --text-disabled: color-mix(
1031
+ in oklch,
1032
+ var(--muted-foreground) 72%,
1033
+ transparent
1034
+ );
1035
+ --separator: color-mix(in oklch, var(--foreground) 32%, transparent);
1036
+ --separator-strong: color-mix(in oklch, var(--foreground) 54%, transparent);
1037
+ --control-hover: color-mix(in oklch, var(--foreground) 12%, transparent);
1038
+ --control-pressed: color-mix(in oklch, var(--foreground) 18%, transparent);
1039
+ --material-regular-fill: color-mix(
1040
+ in oklch,
1041
+ var(--material-regular-fallback) 92%,
1042
+ transparent
1043
+ );
1044
+ --material-regular-border: var(--separator-strong);
1045
+ --material-clear-fill: color-mix(
1046
+ in oklch,
1047
+ var(--material-clear-fallback) 84%,
1048
+ transparent
1049
+ );
1050
+ --material-clear-border: var(--separator-strong);
1051
+ --window-border: var(--separator-strong);
1052
+ }
1053
+ }
1054
+
1055
+ :where([data-contrast='increased']) {
1056
+ --text-tertiary: color-mix(
1057
+ in oklch,
1058
+ var(--muted-foreground) 92%,
1059
+ var(--foreground)
1060
+ );
1061
+ --text-disabled: color-mix(
1062
+ in oklch,
1063
+ var(--muted-foreground) 72%,
1064
+ transparent
1065
+ );
1066
+ --separator: color-mix(in oklch, var(--foreground) 32%, transparent);
1067
+ --separator-strong: color-mix(in oklch, var(--foreground) 54%, transparent);
1068
+ --control-hover: color-mix(in oklch, var(--foreground) 12%, transparent);
1069
+ --control-pressed: color-mix(in oklch, var(--foreground) 18%, transparent);
1070
+ --material-regular-fill: color-mix(
1071
+ in oklch,
1072
+ var(--material-regular-fallback) 92%,
1073
+ transparent
1074
+ );
1075
+ --material-regular-border: var(--separator-strong);
1076
+ --material-clear-fill: color-mix(
1077
+ in oklch,
1078
+ var(--material-clear-fallback) 84%,
1079
+ transparent
1080
+ );
1081
+ --material-clear-border: var(--separator-strong);
1082
+ --window-border: var(--separator-strong);
1083
+ }
1084
+
1085
+ @media (forced-colors: active) {
1086
+ :root {
1087
+ --text-primary: CanvasText;
1088
+ --text-secondary: CanvasText;
1089
+ --text-tertiary: CanvasText;
1090
+ --text-disabled: GrayText;
1091
+ --surface-canvas: Canvas;
1092
+ --surface-raised: Canvas;
1093
+ --surface-recessed: Canvas;
1094
+ --surface-sidebar: Canvas;
1095
+ --surface-toolbar: Canvas;
1096
+ --surface-overlay: Canvas;
1097
+ --surface-selected: Highlight;
1098
+ --separator: ButtonBorder;
1099
+ --separator-strong: CanvasText;
1100
+ --control-hover: transparent;
1101
+ --control-pressed: transparent;
1102
+ --control-selected: Highlight;
1103
+ --control-selected-foreground: HighlightText;
1104
+ --control-disabled: transparent;
1105
+ --control-focus: Highlight;
1106
+ --control-invalid: Mark;
1107
+ --material-regular-fill: Canvas;
1108
+ --material-regular-fallback: Canvas;
1109
+ --material-regular-border: ButtonBorder;
1110
+ --material-regular-highlight: transparent;
1111
+ --material-regular-blur: 0px;
1112
+ --material-regular-saturation: 1;
1113
+ --material-clear-fill: Canvas;
1114
+ --material-clear-fallback: Canvas;
1115
+ --material-clear-border: ButtonBorder;
1116
+ --material-clear-highlight: transparent;
1117
+ --material-clear-blur: 0px;
1118
+ --material-clear-saturation: 1;
1119
+ --material-blur-toolbar: 0px;
1120
+ --material-blur-overlay: 0px;
1121
+ --material-saturation: 1;
1122
+ --material-shadow-panel: none;
1123
+ --material-shadow-overlay: none;
1124
+ --material-shadow-window: none;
1125
+ }
1126
+ }
1127
+
1128
+ :where([data-transparency='reduced']) {
1129
+ --surface-toolbar: var(--background);
1130
+ --surface-overlay: var(--popover);
1131
+ --material-regular-fill: var(--material-regular-fallback);
1132
+ --material-regular-blur: 0px;
1133
+ --material-regular-saturation: 1;
1134
+ --material-clear-fill: var(--material-clear-fallback);
1135
+ --material-clear-blur: 0px;
1136
+ --material-clear-saturation: 1;
1137
+ --material-blur-toolbar: 0px;
1138
+ --material-blur-overlay: 0px;
1139
+ --material-saturation: 1;
1140
+ }
1141
+
1142
+ @media (prefers-reduced-transparency: reduce) {
1143
+ :root {
1144
+ --surface-toolbar: var(--background);
1145
+ --surface-overlay: var(--popover);
1146
+ --material-regular-fill: var(--material-regular-fallback);
1147
+ --material-regular-blur: 0px;
1148
+ --material-regular-saturation: 1;
1149
+ --material-clear-fill: var(--material-clear-fallback);
1150
+ --material-clear-blur: 0px;
1151
+ --material-clear-saturation: 1;
1152
+ --material-blur-toolbar: 0px;
1153
+ --material-blur-overlay: 0px;
1154
+ --material-saturation: 1;
1155
+ }
564
1156
  }
565
1157
 
566
1158
  @layer base {
@@ -576,6 +1168,84 @@
576
1168
  }
577
1169
  }
578
1170
 
1171
+ @layer components {
1172
+ /*
1173
+ * Adaptive material is reserved for navigation and control chrome. The
1174
+ * opaque background is the baseline; capable renderers opt into backdrop
1175
+ * sampling below.
1176
+ */
1177
+ .moldable-material {
1178
+ --material-active-fill: var(--material-regular-fill);
1179
+ --material-active-fallback: var(--material-regular-fallback);
1180
+ --material-active-border: var(--material-regular-border);
1181
+ --material-active-highlight: var(--material-regular-highlight);
1182
+ --material-active-blur: var(--material-regular-blur);
1183
+ --material-active-saturation: var(--material-regular-saturation);
1184
+ --material-active-shadow: none;
1185
+
1186
+ position: relative;
1187
+ isolation: isolate;
1188
+ background-color: var(--material-active-fallback);
1189
+ border-color: var(--material-active-border);
1190
+ box-shadow:
1191
+ inset 0 1px 0 var(--material-active-highlight),
1192
+ var(--material-active-shadow);
1193
+ }
1194
+
1195
+ .moldable-material[data-material='clear'] {
1196
+ --material-active-fill: var(--material-clear-fill);
1197
+ --material-active-fallback: var(--material-clear-fallback);
1198
+ --material-active-border: var(--material-clear-border);
1199
+ --material-active-highlight: var(--material-clear-highlight);
1200
+ --material-active-blur: var(--material-clear-blur);
1201
+ --material-active-saturation: var(--material-clear-saturation);
1202
+ }
1203
+
1204
+ .moldable-material[data-material-elevation='panel'] {
1205
+ --material-active-shadow: var(--material-shadow-panel);
1206
+ }
1207
+
1208
+ .moldable-material[data-material-elevation='overlay'] {
1209
+ --material-active-shadow: var(--material-shadow-overlay);
1210
+ }
1211
+
1212
+ .moldable-material[data-material-interactive='true'] {
1213
+ transition:
1214
+ transform var(--motion-duration-fast) var(--motion-ease-standard),
1215
+ background-color var(--motion-duration-fast) var(--motion-ease-standard),
1216
+ border-color var(--motion-duration-fast) var(--motion-ease-standard);
1217
+ }
1218
+
1219
+ .moldable-material[data-material-interactive='true']:hover {
1220
+ background-color: color-mix(
1221
+ in oklch,
1222
+ var(--material-active-fill),
1223
+ var(--control-hover)
1224
+ );
1225
+ }
1226
+
1227
+ .moldable-material[data-material-interactive='true']:active {
1228
+ background-color: color-mix(
1229
+ in oklch,
1230
+ var(--material-active-fill),
1231
+ var(--control-pressed)
1232
+ );
1233
+ transform: scale(0.98);
1234
+ }
1235
+
1236
+ @supports (
1237
+ (-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))
1238
+ ) {
1239
+ .moldable-material {
1240
+ background-color: var(--material-active-fill);
1241
+ -webkit-backdrop-filter: blur(var(--material-active-blur))
1242
+ saturate(var(--material-active-saturation));
1243
+ backdrop-filter: blur(var(--material-active-blur))
1244
+ saturate(var(--material-active-saturation));
1245
+ }
1246
+ }
1247
+ }
1248
+
579
1249
  @layer utilities {
580
1250
  .scrollbar-hide {
581
1251
  &::-webkit-scrollbar {
@@ -587,6 +1257,17 @@
587
1257
  }
588
1258
 
589
1259
  @media (prefers-reduced-motion: reduce) {
1260
+ :root {
1261
+ --motion-duration-instant: 1ms;
1262
+ --motion-duration-fast: 1ms;
1263
+ --motion-duration-normal: 1ms;
1264
+ --motion-duration-slow: 1ms;
1265
+ --motion-ease-standard: linear;
1266
+ --motion-ease-enter: linear;
1267
+ --motion-ease-exit: linear;
1268
+ --motion-ease-spring: linear;
1269
+ }
1270
+
590
1271
  .model-effort-power-fill,
591
1272
  .model-effort-power-field,
592
1273
  .model-effort-power-particle,
@@ -598,6 +1279,26 @@
598
1279
  .model-effort-max-burst {
599
1280
  display: none;
600
1281
  }
1282
+
1283
+ .moldable-material[data-material-interactive='true']:active {
1284
+ transform: none;
1285
+ }
1286
+ }
1287
+
1288
+ :where([data-motion='reduced']) {
1289
+ --motion-duration-instant: 1ms;
1290
+ --motion-duration-fast: 1ms;
1291
+ --motion-duration-normal: 1ms;
1292
+ --motion-duration-slow: 1ms;
1293
+ --motion-ease-standard: linear;
1294
+ --motion-ease-enter: linear;
1295
+ --motion-ease-exit: linear;
1296
+ --motion-ease-spring: linear;
1297
+ }
1298
+
1299
+ :where([data-motion='reduced'])
1300
+ .moldable-material[data-material-interactive='true']:active {
1301
+ transform: none;
601
1302
  }
602
1303
 
603
1304
  /* Shiki dual-theme support: override inline styles in dark mode */