@moldable-ai/ui 0.2.18 → 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 (587) 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 +67 -17
  29. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  30. package/dist/components/chat/chat-panel.js +250 -159
  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 +3 -2
  35. package/dist/components/chat/index.d.ts.map +1 -1
  36. package/dist/components/chat/index.js +3 -2
  37. package/dist/components/chat/model-effort-power-effects.d.ts +7 -0
  38. package/dist/components/chat/model-effort-power-effects.d.ts.map +1 -0
  39. package/dist/components/chat/model-effort-power-effects.js +54 -0
  40. package/dist/components/chat/model-effort-selector.d.ts +26 -0
  41. package/dist/components/chat/model-effort-selector.d.ts.map +1 -0
  42. package/dist/components/chat/model-effort-selector.js +179 -0
  43. package/dist/components/chat/model-effort-ultra-effects.d.ts +5 -0
  44. package/dist/components/chat/model-effort-ultra-effects.d.ts.map +1 -0
  45. package/dist/components/chat/model-effort-ultra-effects.js +56 -0
  46. package/dist/components/chat/tool-handlers.d.ts.map +1 -1
  47. package/dist/components/chat/tool-handlers.js +40 -2
  48. package/dist/components/chat/vertical-scroll-fade.d.ts +6 -0
  49. package/dist/components/chat/vertical-scroll-fade.d.ts.map +1 -0
  50. package/dist/components/chat/vertical-scroll-fade.js +12 -0
  51. package/dist/components/hardware/bluetooth-panel-helpers.d.ts +9 -0
  52. package/dist/components/hardware/bluetooth-panel-helpers.d.ts.map +1 -0
  53. package/dist/components/hardware/bluetooth-panel-helpers.js +37 -0
  54. package/dist/components/hardware/bluetooth-panel.d.ts +56 -0
  55. package/dist/components/hardware/bluetooth-panel.d.ts.map +1 -0
  56. package/dist/components/hardware/bluetooth-panel.js +470 -0
  57. package/dist/components/hardware/camera-preview.d.ts +39 -0
  58. package/dist/components/hardware/camera-preview.d.ts.map +1 -0
  59. package/dist/components/hardware/camera-preview.js +228 -0
  60. package/dist/components/hardware/capability-badge.d.ts +23 -0
  61. package/dist/components/hardware/capability-badge.d.ts.map +1 -0
  62. package/dist/components/hardware/capability-badge.js +39 -0
  63. package/dist/components/hardware/capability-matrix.d.ts +14 -0
  64. package/dist/components/hardware/capability-matrix.d.ts.map +1 -0
  65. package/dist/components/hardware/capability-matrix.js +97 -0
  66. package/dist/components/hardware/clipboard-button.d.ts +26 -0
  67. package/dist/components/hardware/clipboard-button.d.ts.map +1 -0
  68. package/dist/components/hardware/clipboard-button.js +114 -0
  69. package/dist/components/hardware/device-io-controls.d.ts +4 -0
  70. package/dist/components/hardware/device-io-controls.d.ts.map +1 -0
  71. package/dist/components/hardware/device-io-controls.js +28 -0
  72. package/dist/components/hardware/device-list.d.ts +20 -0
  73. package/dist/components/hardware/device-list.d.ts.map +1 -0
  74. package/dist/components/hardware/device-list.js +14 -0
  75. package/dist/components/hardware/display-map.d.ts +23 -0
  76. package/dist/components/hardware/display-map.d.ts.map +1 -0
  77. package/dist/components/hardware/display-map.js +114 -0
  78. package/dist/components/hardware/haptic-button.d.ts +26 -0
  79. package/dist/components/hardware/haptic-button.d.ts.map +1 -0
  80. package/dist/components/hardware/haptic-button.js +94 -0
  81. package/dist/components/hardware/hardware-panel.d.ts +11 -0
  82. package/dist/components/hardware/hardware-panel.d.ts.map +1 -0
  83. package/dist/components/hardware/hardware-panel.js +28 -0
  84. package/dist/components/hardware/hid-panel.d.ts +40 -0
  85. package/dist/components/hardware/hid-panel.d.ts.map +1 -0
  86. package/dist/components/hardware/hid-panel.js +373 -0
  87. package/dist/components/hardware/index.d.ts +27 -0
  88. package/dist/components/hardware/index.d.ts.map +1 -0
  89. package/dist/components/hardware/index.js +26 -0
  90. package/dist/components/hardware/live-indicator.d.ts +15 -0
  91. package/dist/components/hardware/live-indicator.d.ts.map +1 -0
  92. package/dist/components/hardware/live-indicator.js +26 -0
  93. package/dist/components/hardware/local-auth-button.d.ts +33 -0
  94. package/dist/components/hardware/local-auth-button.d.ts.map +1 -0
  95. package/dist/components/hardware/local-auth-button.js +115 -0
  96. package/dist/components/hardware/location-panel.d.ts +29 -0
  97. package/dist/components/hardware/location-panel.d.ts.map +1 -0
  98. package/dist/components/hardware/location-panel.js +154 -0
  99. package/dist/components/hardware/microphone-meter.d.ts +35 -0
  100. package/dist/components/hardware/microphone-meter.d.ts.map +1 -0
  101. package/dist/components/hardware/microphone-meter.js +244 -0
  102. package/dist/components/hardware/midi-monitor.d.ts +54 -0
  103. package/dist/components/hardware/midi-monitor.d.ts.map +1 -0
  104. package/dist/components/hardware/midi-monitor.js +534 -0
  105. package/dist/components/hardware/notification-panel.d.ts +24 -0
  106. package/dist/components/hardware/notification-panel.d.ts.map +1 -0
  107. package/dist/components/hardware/notification-panel.js +124 -0
  108. package/dist/components/hardware/power-blocker-controller.d.ts +19 -0
  109. package/dist/components/hardware/power-blocker-controller.d.ts.map +1 -0
  110. package/dist/components/hardware/power-blocker-controller.js +83 -0
  111. package/dist/components/hardware/power-panel.d.ts +67 -0
  112. package/dist/components/hardware/power-panel.d.ts.map +1 -0
  113. package/dist/components/hardware/power-panel.js +309 -0
  114. package/dist/components/hardware/readout.d.ts +10 -0
  115. package/dist/components/hardware/readout.d.ts.map +1 -0
  116. package/dist/components/hardware/readout.js +11 -0
  117. package/dist/components/hardware/screen-share-preview.d.ts +36 -0
  118. package/dist/components/hardware/screen-share-preview.d.ts.map +1 -0
  119. package/dist/components/hardware/screen-share-preview.js +191 -0
  120. package/dist/components/hardware/secure-storage-panel.d.ts +36 -0
  121. package/dist/components/hardware/secure-storage-panel.d.ts.map +1 -0
  122. package/dist/components/hardware/secure-storage-panel.js +193 -0
  123. package/dist/components/hardware/serial-console.d.ts +64 -0
  124. package/dist/components/hardware/serial-console.d.ts.map +1 -0
  125. package/dist/components/hardware/serial-console.js +399 -0
  126. package/dist/components/hardware/shortcut-recorder.d.ts +35 -0
  127. package/dist/components/hardware/shortcut-recorder.d.ts.map +1 -0
  128. package/dist/components/hardware/shortcut-recorder.js +217 -0
  129. package/dist/components/hardware/stream-log.d.ts +35 -0
  130. package/dist/components/hardware/stream-log.d.ts.map +1 -0
  131. package/dist/components/hardware/stream-log.js +65 -0
  132. package/dist/components/hardware/system-audio-monitor.d.ts +34 -0
  133. package/dist/components/hardware/system-audio-monitor.d.ts.map +1 -0
  134. package/dist/components/hardware/system-audio-monitor.js +275 -0
  135. package/dist/components/hardware/usb-panel.d.ts +54 -0
  136. package/dist/components/hardware/usb-panel.d.ts.map +1 -0
  137. package/dist/components/hardware/usb-panel.js +363 -0
  138. package/dist/components/hardware/use-capability.d.ts +20 -0
  139. package/dist/components/hardware/use-capability.d.ts.map +1 -0
  140. package/dist/components/hardware/use-capability.js +61 -0
  141. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts +9 -0
  142. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts.map +1 -0
  143. package/dist/components/native-capabilities/bluetooth-panel-helpers.js +37 -0
  144. package/dist/components/native-capabilities/bluetooth-panel.d.ts +56 -0
  145. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -0
  146. package/dist/components/native-capabilities/bluetooth-panel.js +470 -0
  147. package/dist/components/native-capabilities/camera-preview.d.ts +39 -0
  148. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -0
  149. package/dist/components/native-capabilities/camera-preview.js +228 -0
  150. package/dist/components/native-capabilities/capability-badge.d.ts +23 -0
  151. package/dist/components/native-capabilities/capability-badge.d.ts.map +1 -0
  152. package/dist/components/native-capabilities/capability-badge.js +39 -0
  153. package/dist/components/native-capabilities/capability-matrix.d.ts +14 -0
  154. package/dist/components/native-capabilities/capability-matrix.d.ts.map +1 -0
  155. package/dist/components/native-capabilities/capability-matrix.js +97 -0
  156. package/dist/components/native-capabilities/clipboard-button.d.ts +26 -0
  157. package/dist/components/native-capabilities/clipboard-button.d.ts.map +1 -0
  158. package/dist/components/native-capabilities/clipboard-button.js +99 -0
  159. package/dist/components/native-capabilities/device-io-controls.d.ts +4 -0
  160. package/dist/components/native-capabilities/device-io-controls.d.ts.map +1 -0
  161. package/dist/components/native-capabilities/device-io-controls.js +28 -0
  162. package/dist/components/native-capabilities/device-list.d.ts +20 -0
  163. package/dist/components/native-capabilities/device-list.d.ts.map +1 -0
  164. package/dist/components/native-capabilities/device-list.js +14 -0
  165. package/dist/components/native-capabilities/display-map.d.ts +23 -0
  166. package/dist/components/native-capabilities/display-map.d.ts.map +1 -0
  167. package/dist/components/native-capabilities/display-map.js +114 -0
  168. package/dist/components/native-capabilities/haptic-button.d.ts +26 -0
  169. package/dist/components/native-capabilities/haptic-button.d.ts.map +1 -0
  170. package/dist/components/native-capabilities/haptic-button.js +94 -0
  171. package/dist/components/native-capabilities/hid-panel.d.ts +40 -0
  172. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -0
  173. package/dist/components/native-capabilities/hid-panel.js +373 -0
  174. package/dist/components/native-capabilities/index.d.ts +27 -0
  175. package/dist/components/native-capabilities/index.d.ts.map +1 -0
  176. package/dist/components/native-capabilities/index.js +26 -0
  177. package/dist/components/native-capabilities/live-indicator.d.ts +15 -0
  178. package/dist/components/native-capabilities/live-indicator.d.ts.map +1 -0
  179. package/dist/components/native-capabilities/live-indicator.js +26 -0
  180. package/dist/components/native-capabilities/local-auth-button.d.ts +33 -0
  181. package/dist/components/native-capabilities/local-auth-button.d.ts.map +1 -0
  182. package/dist/components/native-capabilities/local-auth-button.js +115 -0
  183. package/dist/components/native-capabilities/location-panel.d.ts +29 -0
  184. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -0
  185. package/dist/components/native-capabilities/location-panel.js +146 -0
  186. package/dist/components/native-capabilities/microphone-meter.d.ts +35 -0
  187. package/dist/components/native-capabilities/microphone-meter.d.ts.map +1 -0
  188. package/dist/components/native-capabilities/microphone-meter.js +244 -0
  189. package/dist/components/native-capabilities/midi-monitor.d.ts +54 -0
  190. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -0
  191. package/dist/components/native-capabilities/midi-monitor.js +534 -0
  192. package/dist/components/native-capabilities/native-capability-panel.d.ts +11 -0
  193. package/dist/components/native-capabilities/native-capability-panel.d.ts.map +1 -0
  194. package/dist/components/native-capabilities/native-capability-panel.js +28 -0
  195. package/dist/components/native-capabilities/notification-panel.d.ts +24 -0
  196. package/dist/components/native-capabilities/notification-panel.d.ts.map +1 -0
  197. package/dist/components/native-capabilities/notification-panel.js +124 -0
  198. package/dist/components/native-capabilities/power-blocker-controller.d.ts +19 -0
  199. package/dist/components/native-capabilities/power-blocker-controller.d.ts.map +1 -0
  200. package/dist/components/native-capabilities/power-blocker-controller.js +83 -0
  201. package/dist/components/native-capabilities/power-panel.d.ts +67 -0
  202. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -0
  203. package/dist/components/native-capabilities/power-panel.js +309 -0
  204. package/dist/components/native-capabilities/readout.d.ts +10 -0
  205. package/dist/components/native-capabilities/readout.d.ts.map +1 -0
  206. package/dist/components/native-capabilities/readout.js +11 -0
  207. package/dist/components/native-capabilities/screen-share-preview.d.ts +36 -0
  208. package/dist/components/native-capabilities/screen-share-preview.d.ts.map +1 -0
  209. package/dist/components/native-capabilities/screen-share-preview.js +191 -0
  210. package/dist/components/native-capabilities/secure-storage-panel.d.ts +36 -0
  211. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -0
  212. package/dist/components/native-capabilities/secure-storage-panel.js +193 -0
  213. package/dist/components/native-capabilities/serial-console.d.ts +64 -0
  214. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -0
  215. package/dist/components/native-capabilities/serial-console.js +399 -0
  216. package/dist/components/native-capabilities/shortcut-recorder.d.ts +35 -0
  217. package/dist/components/native-capabilities/shortcut-recorder.d.ts.map +1 -0
  218. package/dist/components/native-capabilities/shortcut-recorder.js +217 -0
  219. package/dist/components/native-capabilities/stream-log.d.ts +35 -0
  220. package/dist/components/native-capabilities/stream-log.d.ts.map +1 -0
  221. package/dist/components/native-capabilities/stream-log.js +65 -0
  222. package/dist/components/native-capabilities/system-audio-monitor.d.ts +34 -0
  223. package/dist/components/native-capabilities/system-audio-monitor.d.ts.map +1 -0
  224. package/dist/components/native-capabilities/system-audio-monitor.js +275 -0
  225. package/dist/components/native-capabilities/usb-panel.d.ts +54 -0
  226. package/dist/components/native-capabilities/usb-panel.d.ts.map +1 -0
  227. package/dist/components/native-capabilities/usb-panel.js +363 -0
  228. package/dist/components/native-capabilities/use-capability.d.ts +20 -0
  229. package/dist/components/native-capabilities/use-capability.d.ts.map +1 -0
  230. package/dist/components/native-capabilities/use-capability.js +61 -0
  231. package/dist/components/ui/app-frame.d.ts +22 -0
  232. package/dist/components/ui/app-frame.d.ts.map +1 -0
  233. package/dist/components/ui/app-frame.js +56 -0
  234. package/dist/components/ui/button-group.d.ts +1 -1
  235. package/dist/components/ui/button.js +1 -1
  236. package/dist/components/ui/color-well.d.ts +13 -0
  237. package/dist/components/ui/color-well.d.ts.map +1 -0
  238. package/dist/components/ui/color-well.js +30 -0
  239. package/dist/components/ui/date-field.d.ts +19 -0
  240. package/dist/components/ui/date-field.d.ts.map +1 -0
  241. package/dist/components/ui/date-field.js +54 -0
  242. package/dist/components/ui/edge-fade.d.ts +11 -0
  243. package/dist/components/ui/edge-fade.d.ts.map +1 -0
  244. package/dist/components/ui/edge-fade.js +41 -0
  245. package/dist/components/ui/empty.js +1 -1
  246. package/dist/components/ui/field.d.ts +1 -1
  247. package/dist/components/ui/grid.d.ts +24 -0
  248. package/dist/components/ui/grid.d.ts.map +1 -0
  249. package/dist/components/ui/grid.js +234 -0
  250. package/dist/components/ui/icon-button.d.ts +15 -0
  251. package/dist/components/ui/icon-button.d.ts.map +1 -0
  252. package/dist/components/ui/icon-button.js +15 -0
  253. package/dist/components/ui/index.d.ts +19 -0
  254. package/dist/components/ui/index.d.ts.map +1 -1
  255. package/dist/components/ui/index.js +19 -0
  256. package/dist/components/ui/inspector.d.ts +15 -0
  257. package/dist/components/ui/inspector.d.ts.map +1 -0
  258. package/dist/components/ui/inspector.js +26 -0
  259. package/dist/components/ui/kbd.d.ts +1 -1
  260. package/dist/components/ui/list.d.ts +24 -0
  261. package/dist/components/ui/list.d.ts.map +1 -0
  262. package/dist/components/ui/list.js +224 -0
  263. package/dist/components/ui/message-scroller-layout-stability.d.ts +33 -0
  264. package/dist/components/ui/message-scroller-layout-stability.d.ts.map +1 -0
  265. package/dist/components/ui/message-scroller-layout-stability.js +153 -0
  266. package/dist/components/ui/message-scroller.d.ts +11 -0
  267. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  268. package/dist/components/ui/message-scroller.js +37 -0
  269. package/dist/components/ui/notification-dot.d.ts +4 -0
  270. package/dist/components/ui/notification-dot.d.ts.map +1 -0
  271. package/dist/components/ui/notification-dot.js +7 -0
  272. package/dist/components/ui/number-input.d.ts +16 -0
  273. package/dist/components/ui/number-input.d.ts.map +1 -0
  274. package/dist/components/ui/number-input.js +56 -0
  275. package/dist/components/ui/panel.d.ts +18 -0
  276. package/dist/components/ui/panel.d.ts.map +1 -0
  277. package/dist/components/ui/panel.js +40 -0
  278. package/dist/components/ui/popover.js +1 -1
  279. package/dist/components/ui/search-field.d.ts +19 -0
  280. package/dist/components/ui/search-field.d.ts.map +1 -0
  281. package/dist/components/ui/search-field.js +64 -0
  282. package/dist/components/ui/segmented-control.d.ts +21 -0
  283. package/dist/components/ui/segmented-control.d.ts.map +1 -0
  284. package/dist/components/ui/segmented-control.js +61 -0
  285. package/dist/components/ui/sidebar.js +1 -1
  286. package/dist/components/ui/slider.d.ts +4 -1
  287. package/dist/components/ui/slider.d.ts.map +1 -1
  288. package/dist/components/ui/slider.js +2 -2
  289. package/dist/components/ui/sonner.d.ts +4 -3
  290. package/dist/components/ui/sonner.d.ts.map +1 -1
  291. package/dist/components/ui/sonner.js +7 -6
  292. package/dist/components/ui/split-view.d.ts +11 -0
  293. package/dist/components/ui/split-view.d.ts.map +1 -0
  294. package/dist/components/ui/split-view.js +13 -0
  295. package/dist/components/ui/status.d.ts +13 -0
  296. package/dist/components/ui/status.d.ts.map +1 -0
  297. package/dist/components/ui/status.js +36 -0
  298. package/dist/components/ui/table.d.ts +11 -2
  299. package/dist/components/ui/table.d.ts.map +1 -1
  300. package/dist/components/ui/table.js +28 -6
  301. package/dist/components/ui/text.d.ts +17 -0
  302. package/dist/components/ui/text.d.ts.map +1 -0
  303. package/dist/components/ui/text.js +55 -0
  304. package/dist/components/ui/toggle.js +1 -1
  305. package/dist/components/ui/toolbar.d.ts +20 -0
  306. package/dist/components/ui/toolbar.d.ts.map +1 -0
  307. package/dist/components/ui/toolbar.js +52 -0
  308. package/dist/index.d.ts +2 -0
  309. package/dist/index.d.ts.map +1 -1
  310. package/dist/index.js +4 -0
  311. package/dist/lib/frame-lifecycle.d.ts +28 -0
  312. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  313. package/dist/lib/frame-lifecycle.js +84 -0
  314. package/dist/lib/native-capabilities/access.d.ts +13 -0
  315. package/dist/lib/native-capabilities/access.d.ts.map +1 -0
  316. package/dist/lib/native-capabilities/access.js +53 -0
  317. package/dist/lib/native-capabilities/bluetooth-access.d.ts +14 -0
  318. package/dist/lib/native-capabilities/bluetooth-access.d.ts.map +1 -0
  319. package/dist/lib/native-capabilities/bluetooth-access.js +43 -0
  320. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +19 -0
  321. package/dist/lib/native-capabilities/bluetooth-connection.d.ts.map +1 -0
  322. package/dist/lib/native-capabilities/bluetooth-connection.js +88 -0
  323. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +7 -0
  324. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts.map +1 -0
  325. package/dist/lib/native-capabilities/bluetooth-gatt.js +77 -0
  326. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +10 -0
  327. package/dist/lib/native-capabilities/bluetooth-internal.d.ts.map +1 -0
  328. package/dist/lib/native-capabilities/bluetooth-internal.js +105 -0
  329. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +33 -0
  330. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts.map +1 -0
  331. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +214 -0
  332. package/dist/lib/native-capabilities/bluetooth-types.d.ts +85 -0
  333. package/dist/lib/native-capabilities/bluetooth-types.d.ts.map +1 -0
  334. package/dist/lib/native-capabilities/bluetooth-types.js +2 -0
  335. package/dist/lib/native-capabilities/bluetooth.d.ts +7 -0
  336. package/dist/lib/native-capabilities/bluetooth.d.ts.map +1 -0
  337. package/dist/lib/native-capabilities/bluetooth.js +4 -0
  338. package/dist/lib/native-capabilities/bridge.d.ts +23 -0
  339. package/dist/lib/native-capabilities/bridge.d.ts.map +1 -0
  340. package/dist/lib/native-capabilities/bridge.js +266 -0
  341. package/dist/lib/native-capabilities/capabilities.d.ts +7 -0
  342. package/dist/lib/native-capabilities/capabilities.d.ts.map +1 -0
  343. package/dist/lib/native-capabilities/capabilities.js +95 -0
  344. package/dist/lib/native-capabilities/clipboard.d.ts +11 -0
  345. package/dist/lib/native-capabilities/clipboard.d.ts.map +1 -0
  346. package/dist/lib/native-capabilities/clipboard.js +58 -0
  347. package/dist/lib/native-capabilities/device-io-errors.d.ts +11 -0
  348. package/dist/lib/native-capabilities/device-io-errors.d.ts.map +1 -0
  349. package/dist/lib/native-capabilities/device-io-errors.js +82 -0
  350. package/dist/lib/native-capabilities/displays.d.ts +38 -0
  351. package/dist/lib/native-capabilities/displays.d.ts.map +1 -0
  352. package/dist/lib/native-capabilities/displays.js +12 -0
  353. package/dist/lib/native-capabilities/global-shortcuts.d.ts +86 -0
  354. package/dist/lib/native-capabilities/global-shortcuts.d.ts.map +1 -0
  355. package/dist/lib/native-capabilities/global-shortcuts.js +351 -0
  356. package/dist/lib/native-capabilities/haptics.d.ts +25 -0
  357. package/dist/lib/native-capabilities/haptics.d.ts.map +1 -0
  358. package/dist/lib/native-capabilities/haptics.js +18 -0
  359. package/dist/lib/native-capabilities/hid-native.d.ts +26 -0
  360. package/dist/lib/native-capabilities/hid-native.d.ts.map +1 -0
  361. package/dist/lib/native-capabilities/hid-native.js +229 -0
  362. package/dist/lib/native-capabilities/hid.d.ts +52 -0
  363. package/dist/lib/native-capabilities/hid.d.ts.map +1 -0
  364. package/dist/lib/native-capabilities/hid.js +163 -0
  365. package/dist/lib/native-capabilities/index.d.ts +40 -0
  366. package/dist/lib/native-capabilities/index.d.ts.map +1 -0
  367. package/dist/lib/native-capabilities/index.js +21 -0
  368. package/dist/lib/native-capabilities/local-authentication.d.ts +32 -0
  369. package/dist/lib/native-capabilities/local-authentication.d.ts.map +1 -0
  370. package/dist/lib/native-capabilities/local-authentication.js +46 -0
  371. package/dist/lib/native-capabilities/location.d.ts +49 -0
  372. package/dist/lib/native-capabilities/location.d.ts.map +1 -0
  373. package/dist/lib/native-capabilities/location.js +114 -0
  374. package/dist/lib/native-capabilities/media-permissions.d.ts +28 -0
  375. package/dist/lib/native-capabilities/media-permissions.d.ts.map +1 -0
  376. package/dist/lib/native-capabilities/media-permissions.js +37 -0
  377. package/dist/lib/native-capabilities/media.d.ts +17 -0
  378. package/dist/lib/native-capabilities/media.d.ts.map +1 -0
  379. package/dist/lib/native-capabilities/media.js +104 -0
  380. package/dist/lib/native-capabilities/midi-access.d.ts +13 -0
  381. package/dist/lib/native-capabilities/midi-access.d.ts.map +1 -0
  382. package/dist/lib/native-capabilities/midi-access.js +68 -0
  383. package/dist/lib/native-capabilities/midi-internal.d.ts +12 -0
  384. package/dist/lib/native-capabilities/midi-internal.d.ts.map +1 -0
  385. package/dist/lib/native-capabilities/midi-internal.js +88 -0
  386. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +27 -0
  387. package/dist/lib/native-capabilities/midi-native-fallback.d.ts.map +1 -0
  388. package/dist/lib/native-capabilities/midi-native-fallback.js +127 -0
  389. package/dist/lib/native-capabilities/midi-ports.d.ts +6 -0
  390. package/dist/lib/native-capabilities/midi-ports.d.ts.map +1 -0
  391. package/dist/lib/native-capabilities/midi-ports.js +115 -0
  392. package/dist/lib/native-capabilities/midi-types.d.ts +25 -0
  393. package/dist/lib/native-capabilities/midi-types.d.ts.map +1 -0
  394. package/dist/lib/native-capabilities/midi-types.js +1 -0
  395. package/dist/lib/native-capabilities/midi.d.ts +6 -0
  396. package/dist/lib/native-capabilities/midi.d.ts.map +1 -0
  397. package/dist/lib/native-capabilities/midi.js +3 -0
  398. package/dist/lib/native-capabilities/native-device-io.d.ts +28 -0
  399. package/dist/lib/native-capabilities/native-device-io.d.ts.map +1 -0
  400. package/dist/lib/native-capabilities/native-device-io.js +91 -0
  401. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts +13 -0
  402. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts.map +1 -0
  403. package/dist/lib/native-capabilities/native-device-lifecycle.js +40 -0
  404. package/dist/lib/native-capabilities/notifications.d.ts +38 -0
  405. package/dist/lib/native-capabilities/notifications.d.ts.map +1 -0
  406. package/dist/lib/native-capabilities/notifications.js +50 -0
  407. package/dist/lib/native-capabilities/power-session.d.ts +113 -0
  408. package/dist/lib/native-capabilities/power-session.d.ts.map +1 -0
  409. package/dist/lib/native-capabilities/power-session.js +264 -0
  410. package/dist/lib/native-capabilities/secure-storage.d.ts +36 -0
  411. package/dist/lib/native-capabilities/secure-storage.d.ts.map +1 -0
  412. package/dist/lib/native-capabilities/secure-storage.js +64 -0
  413. package/dist/lib/native-capabilities/serial-native.d.ts +23 -0
  414. package/dist/lib/native-capabilities/serial-native.d.ts.map +1 -0
  415. package/dist/lib/native-capabilities/serial-native.js +181 -0
  416. package/dist/lib/native-capabilities/serial.d.ts +76 -0
  417. package/dist/lib/native-capabilities/serial.d.ts.map +1 -0
  418. package/dist/lib/native-capabilities/serial.js +215 -0
  419. package/dist/lib/native-capabilities/system-audio.d.ts +127 -0
  420. package/dist/lib/native-capabilities/system-audio.d.ts.map +1 -0
  421. package/dist/lib/native-capabilities/system-audio.js +330 -0
  422. package/dist/lib/native-capabilities/types.d.ts +62 -0
  423. package/dist/lib/native-capabilities/types.d.ts.map +1 -0
  424. package/dist/lib/native-capabilities/types.js +27 -0
  425. package/dist/lib/native-capabilities/usb-native.d.ts +39 -0
  426. package/dist/lib/native-capabilities/usb-native.d.ts.map +1 -0
  427. package/dist/lib/native-capabilities/usb-native.js +217 -0
  428. package/dist/lib/native-capabilities/usb.d.ts +85 -0
  429. package/dist/lib/native-capabilities/usb.d.ts.map +1 -0
  430. package/dist/lib/native-capabilities/usb.js +225 -0
  431. package/dist/lib/native-hardware/bluetooth-access.d.ts +14 -0
  432. package/dist/lib/native-hardware/bluetooth-access.d.ts.map +1 -0
  433. package/dist/lib/native-hardware/bluetooth-access.js +40 -0
  434. package/dist/lib/native-hardware/bluetooth-connection.d.ts +19 -0
  435. package/dist/lib/native-hardware/bluetooth-connection.d.ts.map +1 -0
  436. package/dist/lib/native-hardware/bluetooth-connection.js +88 -0
  437. package/dist/lib/native-hardware/bluetooth-gatt.d.ts +7 -0
  438. package/dist/lib/native-hardware/bluetooth-gatt.d.ts.map +1 -0
  439. package/dist/lib/native-hardware/bluetooth-gatt.js +77 -0
  440. package/dist/lib/native-hardware/bluetooth-internal.d.ts +10 -0
  441. package/dist/lib/native-hardware/bluetooth-internal.d.ts.map +1 -0
  442. package/dist/lib/native-hardware/bluetooth-internal.js +105 -0
  443. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts +33 -0
  444. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts.map +1 -0
  445. package/dist/lib/native-hardware/bluetooth-native-fallback.js +214 -0
  446. package/dist/lib/native-hardware/bluetooth-types.d.ts +85 -0
  447. package/dist/lib/native-hardware/bluetooth-types.d.ts.map +1 -0
  448. package/dist/lib/native-hardware/bluetooth-types.js +2 -0
  449. package/dist/lib/native-hardware/bluetooth.d.ts +7 -0
  450. package/dist/lib/native-hardware/bluetooth.d.ts.map +1 -0
  451. package/dist/lib/native-hardware/bluetooth.js +4 -0
  452. package/dist/lib/native-hardware/bridge.d.ts +23 -0
  453. package/dist/lib/native-hardware/bridge.d.ts.map +1 -0
  454. package/dist/lib/native-hardware/bridge.js +266 -0
  455. package/dist/lib/native-hardware/capabilities.d.ts +7 -0
  456. package/dist/lib/native-hardware/capabilities.d.ts.map +1 -0
  457. package/dist/lib/native-hardware/capabilities.js +95 -0
  458. package/dist/lib/native-hardware/clipboard.d.ts +11 -0
  459. package/dist/lib/native-hardware/clipboard.d.ts.map +1 -0
  460. package/dist/lib/native-hardware/clipboard.js +55 -0
  461. package/dist/lib/native-hardware/device-io-errors.d.ts +11 -0
  462. package/dist/lib/native-hardware/device-io-errors.d.ts.map +1 -0
  463. package/dist/lib/native-hardware/device-io-errors.js +82 -0
  464. package/dist/lib/native-hardware/displays.d.ts +38 -0
  465. package/dist/lib/native-hardware/displays.d.ts.map +1 -0
  466. package/dist/lib/native-hardware/displays.js +12 -0
  467. package/dist/lib/native-hardware/global-shortcuts.d.ts +86 -0
  468. package/dist/lib/native-hardware/global-shortcuts.d.ts.map +1 -0
  469. package/dist/lib/native-hardware/global-shortcuts.js +351 -0
  470. package/dist/lib/native-hardware/haptics.d.ts +25 -0
  471. package/dist/lib/native-hardware/haptics.d.ts.map +1 -0
  472. package/dist/lib/native-hardware/haptics.js +18 -0
  473. package/dist/lib/native-hardware/hid-native.d.ts +26 -0
  474. package/dist/lib/native-hardware/hid-native.d.ts.map +1 -0
  475. package/dist/lib/native-hardware/hid-native.js +229 -0
  476. package/dist/lib/native-hardware/hid.d.ts +52 -0
  477. package/dist/lib/native-hardware/hid.d.ts.map +1 -0
  478. package/dist/lib/native-hardware/hid.js +160 -0
  479. package/dist/lib/native-hardware/index.d.ts +38 -0
  480. package/dist/lib/native-hardware/index.d.ts.map +1 -0
  481. package/dist/lib/native-hardware/index.js +20 -0
  482. package/dist/lib/native-hardware/local-authentication.d.ts +32 -0
  483. package/dist/lib/native-hardware/local-authentication.d.ts.map +1 -0
  484. package/dist/lib/native-hardware/local-authentication.js +46 -0
  485. package/dist/lib/native-hardware/location.d.ts +49 -0
  486. package/dist/lib/native-hardware/location.d.ts.map +1 -0
  487. package/dist/lib/native-hardware/location.js +114 -0
  488. package/dist/lib/native-hardware/media-permissions.d.ts +28 -0
  489. package/dist/lib/native-hardware/media-permissions.d.ts.map +1 -0
  490. package/dist/lib/native-hardware/media-permissions.js +37 -0
  491. package/dist/lib/native-hardware/media.d.ts +17 -0
  492. package/dist/lib/native-hardware/media.d.ts.map +1 -0
  493. package/dist/lib/native-hardware/media.js +99 -0
  494. package/dist/lib/native-hardware/midi-access.d.ts +13 -0
  495. package/dist/lib/native-hardware/midi-access.d.ts.map +1 -0
  496. package/dist/lib/native-hardware/midi-access.js +66 -0
  497. package/dist/lib/native-hardware/midi-internal.d.ts +12 -0
  498. package/dist/lib/native-hardware/midi-internal.d.ts.map +1 -0
  499. package/dist/lib/native-hardware/midi-internal.js +88 -0
  500. package/dist/lib/native-hardware/midi-native-fallback.d.ts +27 -0
  501. package/dist/lib/native-hardware/midi-native-fallback.d.ts.map +1 -0
  502. package/dist/lib/native-hardware/midi-native-fallback.js +127 -0
  503. package/dist/lib/native-hardware/midi-ports.d.ts +6 -0
  504. package/dist/lib/native-hardware/midi-ports.d.ts.map +1 -0
  505. package/dist/lib/native-hardware/midi-ports.js +115 -0
  506. package/dist/lib/native-hardware/midi-types.d.ts +25 -0
  507. package/dist/lib/native-hardware/midi-types.d.ts.map +1 -0
  508. package/dist/lib/native-hardware/midi-types.js +1 -0
  509. package/dist/lib/native-hardware/midi.d.ts +6 -0
  510. package/dist/lib/native-hardware/midi.d.ts.map +1 -0
  511. package/dist/lib/native-hardware/midi.js +3 -0
  512. package/dist/lib/native-hardware/native-device-io.d.ts +28 -0
  513. package/dist/lib/native-hardware/native-device-io.d.ts.map +1 -0
  514. package/dist/lib/native-hardware/native-device-io.js +91 -0
  515. package/dist/lib/native-hardware/native-device-lifecycle.d.ts +13 -0
  516. package/dist/lib/native-hardware/native-device-lifecycle.d.ts.map +1 -0
  517. package/dist/lib/native-hardware/native-device-lifecycle.js +40 -0
  518. package/dist/lib/native-hardware/notifications.d.ts +38 -0
  519. package/dist/lib/native-hardware/notifications.d.ts.map +1 -0
  520. package/dist/lib/native-hardware/notifications.js +50 -0
  521. package/dist/lib/native-hardware/power-session.d.ts +113 -0
  522. package/dist/lib/native-hardware/power-session.d.ts.map +1 -0
  523. package/dist/lib/native-hardware/power-session.js +264 -0
  524. package/dist/lib/native-hardware/secure-storage.d.ts +36 -0
  525. package/dist/lib/native-hardware/secure-storage.d.ts.map +1 -0
  526. package/dist/lib/native-hardware/secure-storage.js +64 -0
  527. package/dist/lib/native-hardware/serial-native.d.ts +23 -0
  528. package/dist/lib/native-hardware/serial-native.d.ts.map +1 -0
  529. package/dist/lib/native-hardware/serial-native.js +181 -0
  530. package/dist/lib/native-hardware/serial.d.ts +76 -0
  531. package/dist/lib/native-hardware/serial.d.ts.map +1 -0
  532. package/dist/lib/native-hardware/serial.js +212 -0
  533. package/dist/lib/native-hardware/system-audio.d.ts +127 -0
  534. package/dist/lib/native-hardware/system-audio.d.ts.map +1 -0
  535. package/dist/lib/native-hardware/system-audio.js +330 -0
  536. package/dist/lib/native-hardware/types.d.ts +62 -0
  537. package/dist/lib/native-hardware/types.d.ts.map +1 -0
  538. package/dist/lib/native-hardware/types.js +27 -0
  539. package/dist/lib/native-hardware/usb-native.d.ts +39 -0
  540. package/dist/lib/native-hardware/usb-native.d.ts.map +1 -0
  541. package/dist/lib/native-hardware/usb-native.js +217 -0
  542. package/dist/lib/native-hardware/usb.d.ts +85 -0
  543. package/dist/lib/native-hardware/usb.d.ts.map +1 -0
  544. package/dist/lib/native-hardware/usb.js +222 -0
  545. package/docs/README.md +37 -0
  546. package/docs/accessibility.md +32 -0
  547. package/docs/app-anatomy.md +72 -0
  548. package/docs/component-catalog.md +59 -0
  549. package/docs/component-guide-template.md +37 -0
  550. package/docs/design-tokens.md +172 -0
  551. package/docs/foundations.md +56 -0
  552. package/docs/native-integration.md +33 -0
  553. package/docs/standalone-app-windows.md +128 -0
  554. package/package.json +9 -3
  555. package/src/components/ui/alert.md +55 -0
  556. package/src/components/ui/app-frame.md +33 -0
  557. package/src/components/ui/badge.md +57 -0
  558. package/src/components/ui/button.md +76 -0
  559. package/src/components/ui/color-well.md +11 -0
  560. package/src/components/ui/combobox.md +43 -0
  561. package/src/components/ui/date-field.md +32 -0
  562. package/src/components/ui/edge-fade.md +7 -0
  563. package/src/components/ui/empty.md +82 -0
  564. package/src/components/ui/field.md +77 -0
  565. package/src/components/ui/grid.md +105 -0
  566. package/src/components/ui/icon-button.md +36 -0
  567. package/src/components/ui/inspector.md +11 -0
  568. package/src/components/ui/item.md +87 -0
  569. package/src/components/ui/list.md +107 -0
  570. package/src/components/ui/notification-dot.md +7 -0
  571. package/src/components/ui/number-input.md +19 -0
  572. package/src/components/ui/panel.md +11 -0
  573. package/src/components/ui/resizable.md +66 -0
  574. package/src/components/ui/scroll-area.md +68 -0
  575. package/src/components/ui/search-field.md +33 -0
  576. package/src/components/ui/segmented-control.md +39 -0
  577. package/src/components/ui/sidebar.md +113 -0
  578. package/src/components/ui/sonner.md +37 -0
  579. package/src/components/ui/split-view.md +15 -0
  580. package/src/components/ui/status.md +12 -0
  581. package/src/components/ui/table.md +35 -0
  582. package/src/components/ui/tabs.md +66 -0
  583. package/src/components/ui/text.md +17 -0
  584. package/src/components/ui/toggle-group.md +80 -0
  585. package/src/components/ui/toggle.md +73 -0
  586. package/src/components/ui/toolbar.md +21 -0
  587. package/src/styles/index.css +868 -3
@@ -0,0 +1,59 @@
1
+ # Component catalog
2
+
3
+ The catalog turns component review into a deterministic matrix rather than a
4
+ set of hand-picked screenshots. Import the catalog utilities from the separate
5
+ subpath so production app bundles do not pull in review infrastructure.
6
+
7
+ ```tsx
8
+ import {
9
+ ComponentCatalog,
10
+ createCatalogManifest,
11
+ } from '@moldable-ai/ui/catalog'
12
+
13
+ const manifest = createCatalogManifest({
14
+ title: 'App UI',
15
+ sections: [
16
+ {
17
+ id: 'controls',
18
+ title: 'Controls',
19
+ stories: [
20
+ {
21
+ id: 'primary-action',
22
+ title: 'Primary action',
23
+ interactions: ['rest', 'focus-visible', 'disabled', 'loading'],
24
+ render: ({ interaction }) => (
25
+ <Button
26
+ autoFocus={interaction === 'focus-visible'}
27
+ disabled={interaction === 'disabled'}
28
+ >
29
+ Continue
30
+ </Button>
31
+ ),
32
+ },
33
+ ],
34
+ },
35
+ ],
36
+ })
37
+
38
+ <ComponentCatalog manifest={manifest} />
39
+ ```
40
+
41
+ ## Required review matrix
42
+
43
+ Every public interactive component should cover:
44
+
45
+ - light and dark themes;
46
+ - regular and compact density;
47
+ - wide and narrow viewports;
48
+ - rest, focus-visible, disabled, invalid, selected, loading, and empty states
49
+ where those states apply;
50
+ - keyboard behavior in unit tests.
51
+
52
+ `buildCatalogCases()` generates stable case IDs and supports filtering, which
53
+ lets a visual-regression runner capture one addressable case at a time. Keep
54
+ catalog stories deterministic: fixed content, fixed dates, no network calls,
55
+ and no animation unless motion itself is under review.
56
+
57
+ The included `coreComponentCatalog` is a smoke foundation, not the complete
58
+ acceptance bar. Add each new public component and its meaningful states as part
59
+ of the same change that adds the component.
@@ -0,0 +1,37 @@
1
+ # Component guide template
2
+
3
+ Use this structure for each public component family.
4
+
5
+ ```markdown
6
+ # Component
7
+
8
+ One-sentence intent.
9
+
10
+ ## When to use
11
+
12
+ ## When not to use
13
+
14
+ ## Anatomy
15
+
16
+ ## Usage
17
+
18
+ ## Variants and sizes
19
+
20
+ ## API
21
+
22
+ ## States and interaction
23
+
24
+ ## Keyboard and accessibility
25
+
26
+ ## Platform behavior
27
+
28
+ ## Do
29
+
30
+ ## Don't
31
+
32
+ ## Testing
33
+ ```
34
+
35
+ Document the real exported API. Include neighboring-component decisions and
36
+ the states callers must implement. Keep examples compact and use semantic
37
+ theme tokens.
@@ -0,0 +1,172 @@
1
+ # Design tokens
2
+
3
+ The token system makes an interface feel consistent before it makes it
4
+ distinctive. Use semantic roles from `@moldable-ai/ui/styles`; do not choose
5
+ raw palette values, one-off control dimensions, or custom easing curves in app
6
+ chrome.
7
+
8
+ Tokens are CSS custom properties so they work in React, plain CSS, canvas
9
+ overlays, and host-provided webviews. Tailwind aliases are provided for the
10
+ roles that are useful in markup.
11
+
12
+ ## Token layers
13
+
14
+ 1. **Theme primitives** such as `--background`, `--foreground`, and
15
+ `--primary` preserve the shadcn-compatible theme contract.
16
+ 2. **Semantic roles** such as `--surface-recessed`, `--text-secondary`, and
17
+ `--control-pressed` describe intent.
18
+ 3. **Component recipes** combine roles into a complete control or layout.
19
+
20
+ Apps should primarily use layer two through shared components or the Tailwind
21
+ aliases below. Override theme primitives to brand a complete app. Override a
22
+ semantic role only when the meaning of that role changes for the entire
23
+ subtree.
24
+
25
+ ## Typography
26
+
27
+ The default UI font is the platform sans-serif stack. Monospaced text uses the
28
+ platform monospace stack. Prefer `Text` for normal interface copy; the token
29
+ utilities are useful for display-scale titles and highly composed canvases.
30
+
31
+ | Role | CSS token | Tailwind utility | Use |
32
+ | ------- | ------------------ | ----------------- | ---------------------------------- |
33
+ | Display | `--type-display-*` | `text-ui-display` | One dominant app or document title |
34
+ | Heading | `--type-heading-*` | `text-ui-heading` | Primary view heading |
35
+ | Title | `--type-title-*` | `text-ui-title` | Major section title |
36
+ | Body | `--type-body-*` | `text-ui-body` | Dense working content |
37
+ | Label | `--type-label-*` | `text-ui-label` | Controls and metadata |
38
+ | Caption | `--type-caption-*` | `text-ui-caption` | Timestamps and compact annotations |
39
+
40
+ Use display type sparingly. A large title can establish a focused canvas, but
41
+ it should not force every utility screen into a marketing-page hierarchy.
42
+ Prefer `font-sans` and `font-mono` over naming a platform font directly.
43
+
44
+ ## Density
45
+
46
+ Density is contextual, not a global scale transform. Place `data-density` on
47
+ the smallest pane that needs a different rhythm:
48
+
49
+ ```tsx
50
+ <section data-density="compact">
51
+ <Toolbar>{/* compact desktop actions */}</Toolbar>
52
+ <div className="min-h-row">{/* selectable row */}</div>
53
+ </section>
54
+ ```
55
+
56
+ Supported values are:
57
+
58
+ - `compact`: inspectors, source lists, and toolbars.
59
+ - default (attribute omitted): general app UI.
60
+ - `comfortable`: touch-forward or presentation-oriented surfaces.
61
+
62
+ The scope sets control heights, row and toolbar heights, gaps, inline padding,
63
+ pane padding, and section spacing. Utilities include `h-control-xs`,
64
+ `h-control-sm`, `h-control-md`, `h-control-lg`, `min-h-row`, `min-h-toolbar`,
65
+ `gap-control-gap`, `px-control-inline`, `p-pane`, and `gap-section`.
66
+
67
+ Component size or density props remain authoritative when supplied. Do not use
68
+ density to shrink labels below readable sizes or to make a pointer-only target
69
+ difficult to acquire.
70
+
71
+ ## Text and surfaces
72
+
73
+ Use the narrowest semantic role that describes the region:
74
+
75
+ | Role | Tailwind alias | Purpose |
76
+ | -------------------- | --------------------- | --------------------------------- |
77
+ | `--text-primary` | `text-text-primary` | Primary content |
78
+ | `--text-secondary` | `text-text-secondary` | Supporting content |
79
+ | `--text-tertiary` | `text-text-tertiary` | De-emphasized metadata |
80
+ | `--text-disabled` | `text-text-disabled` | Unavailable content |
81
+ | `--surface-canvas` | `bg-surface-canvas` | Primary work surface |
82
+ | `--surface-raised` | `bg-surface-raised` | Bounded content above the canvas |
83
+ | `--surface-recessed` | `bg-surface-recessed` | Wells and subordinate regions |
84
+ | `--surface-sidebar` | `bg-surface-sidebar` | Source navigation |
85
+ | `--surface-toolbar` | `bg-surface-toolbar` | Translucent window or pane chrome |
86
+ | `--surface-overlay` | `bg-surface-overlay` | Menus, popovers, and toasts |
87
+ | `--surface-selected` | `bg-surface-selected` | Selected collection items |
88
+
89
+ Use `border-separator` for ordinary pane boundaries and
90
+ `border-separator-strong` when the boundary must remain clear over imagery or
91
+ a busy canvas. Avoid stacking raised surfaces inside cards merely to create
92
+ visual hierarchy; whitespace and a separator are usually quieter.
93
+
94
+ ## Control states
95
+
96
+ Control state roles are shared across buttons, rows, grid items, segmented
97
+ controls, and fields:
98
+
99
+ - `--control-hover`
100
+ - `--control-pressed`
101
+ - `--control-selected`
102
+ - `--control-selected-foreground`
103
+ - `--control-disabled`
104
+ - `--control-focus`
105
+ - `--control-invalid`
106
+
107
+ A complete recipe covers rest, hover, pressed, focus-visible, selected,
108
+ disabled, and invalid states. Disabled wins over pointer states. Focus remains
109
+ visible when combined with selected or invalid. Selection is durable state;
110
+ hover is not a substitute for it.
111
+
112
+ Do not use state-layer colors as arbitrary fills. Prefer the shared component
113
+ when one exists.
114
+
115
+ ## Shape and materials
116
+
117
+ Use `rounded-control`, `rounded-container`, and `rounded-overlay` to keep
118
+ related objects visually consistent. `rounded-window` is host-informed and
119
+ normally only useful in previews; the native host owns the actual window
120
+ shape.
121
+
122
+ Material tokens keep depth and translucency restrained:
123
+
124
+ - `--material-blur-toolbar` and `--material-blur-overlay`
125
+ - `--material-saturation`
126
+ - `shadow-panel`, `shadow-overlay`, and `shadow-window`
127
+
128
+ Translucency must have an opaque fallback. The token system removes blur and
129
+ uses opaque toolbar and overlay surfaces when the operating system requests
130
+ reduced transparency or an ancestor has `data-transparency="reduced"`.
131
+
132
+ ## Motion
133
+
134
+ Use motion to explain entry, exit, reordering, or a state transition:
135
+
136
+ | Purpose | Duration | Easing |
137
+ | ------------------------------- | --------------------------- | ------------------------ |
138
+ | Immediate feedback | `--motion-duration-instant` | `--motion-ease-standard` |
139
+ | Hover and press | `--motion-duration-fast` | `--motion-ease-standard` |
140
+ | Popover or selection transition | `--motion-duration-normal` | `--motion-ease-enter` |
141
+ | Large surface transition | `--motion-duration-slow` | `--motion-ease-enter` |
142
+
143
+ `ease-standard`, `ease-enter`, `ease-exit`, and `ease-spring` are available as
144
+ Tailwind utilities. Use the duration variables directly or with an arbitrary
145
+ value such as `duration-[var(--motion-duration-fast)]`.
146
+
147
+ Reduced-motion preferences collapse token durations to 1ms and remove
148
+ decorative package animations. Components must still render their final state
149
+ without depending on an animation callback.
150
+
151
+ ## Contrast and themes
152
+
153
+ Light and dark themes share semantic names. Never branch app behavior on a
154
+ specific color value. Increased-contrast preferences strengthen separators,
155
+ state layers, and tertiary text. Forced-color mode maps semantic roles to
156
+ system colors and removes material shadows.
157
+
158
+ Test at minimum:
159
+
160
+ - Light and dark.
161
+ - Default and increased contrast.
162
+ - Reduced motion and reduced transparency.
163
+ - Compact and comfortable density.
164
+ - Focus-visible, selected, disabled, and invalid states in combination.
165
+
166
+ ## Adding a token
167
+
168
+ Add a token only when the decision repeats across component families. Name it
169
+ for its role, provide light and dark behavior when necessary, define
170
+ accessibility fallbacks, expose a Tailwind alias only if it improves normal
171
+ composition, and document the intended use. A component-specific visual tweak
172
+ belongs in that component recipe instead.
@@ -0,0 +1,56 @@
1
+ # Foundations
2
+
3
+ ## Character
4
+
5
+ Moldable apps are local working instruments, not websites or SaaS dashboards.
6
+ The interface should be calm, compact, direct, and organized around the user's
7
+ objects. Decoration must clarify hierarchy or state.
8
+
9
+ ## Hierarchy
10
+
11
+ Use `Text` roles instead of rebuilding typography from arbitrary utilities.
12
+ Most desktop chrome should use `regular`, `strong`, `small`, or
13
+ `small-strong`. Reserve `heading1` for a view's primary title and `heading2`
14
+ for a major section.
15
+
16
+ Use one obvious accent action in a region. Secondary actions should be quiet.
17
+ Status color communicates status only; it is not decoration.
18
+
19
+ ## Density
20
+
21
+ - Compact controls are the default in toolbars and inspectors.
22
+ - Preserve usable pointer targets even when the visible control is small.
23
+ - Prefer separators, background shifts, and whitespace over nested cards.
24
+ - Working panes own scrolling. The window shell should not accidentally scroll.
25
+ - Set `data-density="compact"`, `"default"`, or `"comfortable"` at a
26
+ composition boundary. Components should consume density tokens rather than
27
+ inventing per-screen heights.
28
+
29
+ ## Surfaces
30
+
31
+ - `background`: primary work surface.
32
+ - `muted`: subordinate region, well, or quiet selection context.
33
+ - `sidebar`: navigation/list source surface.
34
+ - `popover`: temporary floating surface.
35
+ - `card`: bounded content group, not a universal page wrapper.
36
+
37
+ Use semantic tokens only. Do not introduce raw gray, zinc, white, or black
38
+ classes in app UI.
39
+
40
+ Use material tokens for translucency and elevation. Materials distinguish
41
+ canvas, toolbar, sidebar, raised, recessed, and overlay roles; they are not
42
+ decorative glass effects.
43
+
44
+ ## Motion
45
+
46
+ Motion explains state or continuity. Keep it brief and honor
47
+ `prefers-reduced-motion`. Pulse only for live activity; a static notification
48
+ does not pulse.
49
+
50
+ Use the shared duration and easing tokens. Do not make routine controls feel
51
+ springy, and do not animate layout merely to make a screen feel active.
52
+
53
+ ## Focus
54
+
55
+ Keyboard focus must remain visible against every surface. Do not remove a
56
+ focus ring unless the replacement is at least as clear.
@@ -0,0 +1,33 @@
1
+ # Native integration
2
+
3
+ Renderer components should feel compatible with macOS without pretending to be
4
+ native controls. Use a host-native control only when Moldable exposes a shared,
5
+ transport-neutral capability for it.
6
+
7
+ ## Selection policy
8
+
9
+ 1. Prefer a real Moldable host contract when the operation is inherently
10
+ platform-owned, such as sharing, file selection, or a system permission.
11
+ 2. Use the shared renderer component when its semantics are app-owned.
12
+ 3. Provide an accessible renderer fallback only when the product contract
13
+ defines what happens on desktop, iOS, and remote clients.
14
+
15
+ Do not create UI-only no-op stubs for native menus, share sheets, or date
16
+ pickers. First define ownership, cancellation, errors, replay/reconnect
17
+ behavior, and platform fallbacks.
18
+
19
+ `DateField` is the portable renderer baseline. A future system date picker,
20
+ share sheet, or native menu must only be selected after the host advertises the
21
+ service through a versioned context. Requests must remain bound to the
22
+ originating app window and user activation.
23
+
24
+ Standalone windows should remain host-owned surfaces around an app frame. Do
25
+ not load arbitrary app URLs directly into a privileged native webview merely to
26
+ gain window chrome.
27
+
28
+ ## Platform details
29
+
30
+ Use toolbars, panes, compact controls, keyboard commands, restrained material,
31
+ and clear selection state to achieve platform affinity. Do not copy private
32
+ framework code, undocumented IPC, proprietary fonts, or host-specific symbol
33
+ plumbing.
@@ -0,0 +1,128 @@
1
+ # Standalone app windows
2
+
3
+ Moldable apps should work as focused windows as well as embedded views. The
4
+ same app surface must survive either presentation without imitating operating
5
+ system chrome or assuming that a global desktop shell is present.
6
+
7
+ ## Ownership boundary
8
+
9
+ | Layer | Owns |
10
+ | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- |
11
+ | Native host | Window creation, close/minimize/zoom controls, dragging, resize regions, focus state, system menus, share sheets, and safe insets |
12
+ | Shared UI package | Semantic window tokens, app-level layout recipes, accessible controls, density, and embedded fallbacks |
13
+ | App | Title, document context, primary canvas, toolbars, navigation, selection, and app-specific state |
14
+ | Orchestrator | Cross-app commands, conversation, launching, and switching; it is not permanent app chrome |
15
+
16
+ Do not draw traffic-light controls or recreate a title bar in React. When a
17
+ platform cannot provide a native capability, expose it through a host contract
18
+ or use a clearly web-native fallback.
19
+
20
+ ## Window inset contract
21
+
22
+ The stylesheet defines a renderer boundary with zero-value browser-safe
23
+ defaults:
24
+
25
+ - `--window-safe-area-top`
26
+ - `--window-safe-area-inline-start`
27
+ - `--window-safe-area-inline-end`
28
+ - `--window-safe-area-bottom`
29
+ - `--window-titlebar-height`
30
+ - `--window-drag-region-height`
31
+ - `--window-control-inset-inline-start`
32
+ - `--window-control-inset-inline-end`
33
+ - `--window-content-inset-top`
34
+ - `--window-content-inset-inline-start`
35
+ - `--window-content-inset-inline-end`
36
+ - `--window-content-inset-bottom`
37
+ - `--window-corner-radius`
38
+
39
+ The host may set the primitive safe-area, titlebar, and control inset values on
40
+ the document root. Composite content insets then resolve automatically. The
41
+ transport used to deliver those values belongs to the host integration layer,
42
+ not individual apps.
43
+
44
+ Window appearance roles are `--window-chrome-background`,
45
+ `--window-chrome-foreground`, `--window-chrome-muted-foreground`,
46
+ `--window-border`, and `--material-shadow-window`. The host may update the
47
+ foreground roles when a window becomes inactive. Apps must not infer focus
48
+ from pointer events.
49
+
50
+ ## A portable root
51
+
52
+ Keep the root bounded and make one descendant own each scroll region:
53
+
54
+ ```tsx
55
+ <main
56
+ className="bg-surface-canvas text-text-primary flex h-dvh min-h-0 min-w-0 flex-col overflow-hidden"
57
+ style={{
58
+ paddingTop: 'var(--window-content-inset-top)',
59
+ paddingInlineStart: 'var(--window-content-inset-inline-start)',
60
+ paddingInlineEnd: 'var(--window-content-inset-inline-end)',
61
+ paddingBottom: 'var(--window-content-inset-bottom)',
62
+ }}
63
+ >
64
+ <Toolbar>{/* app title and primary actions */}</Toolbar>
65
+ <PanelContent>{/* the primary canvas or collection */}</PanelContent>
66
+ </main>
67
+ ```
68
+
69
+ This conservative layout places app chrome below any overlay titlebar. A
70
+ future shared window-shell recipe may integrate a toolbar into a host-declared
71
+ drag region, but only the platform adapter should mark draggable and
72
+ non-draggable areas.
73
+
74
+ In embedded presentation all window insets resolve to zero. If chat overlays
75
+ the app, the owning bottom scroll region uses `--chat-safe-padding`. A
76
+ standalone window must not reserve that space unless the orchestrator is
77
+ actually overlaid in that window.
78
+
79
+ ## Window-shaped information architecture
80
+
81
+ A standalone app should identify itself without relying on a global sidebar:
82
+
83
+ - Put the current app or document identity in its own top region.
84
+ - Keep the primary object visually dominant.
85
+ - Place frequent tools near the edge of the canvas they affect.
86
+ - Use a sidebar or inspector only when the task needs one.
87
+ - Keep primary actions reachable at narrow widths.
88
+ - Make empty and onboarding states feel like the app, not a generic dialog.
89
+
90
+ Large, single-purpose canvases can use display typography and generous space.
91
+ Dense utilities should retain compact controls and stronger information
92
+ hierarchy. Native feeling comes from predictable focus, keyboard behavior,
93
+ selection, materials, and restraint—not from decorative window chrome.
94
+
95
+ ## Multi-window state
96
+
97
+ Treat each window as an independent client of shared product APIs:
98
+
99
+ - Give each window its own React root, focus, selection, and transient UI
100
+ state.
101
+ - Keep durable workspace data behind the same authoritative API used by
102
+ embedded and remote clients.
103
+ - Make document and route identity explicit so a window can reconnect or
104
+ restore without a process-global singleton.
105
+ - Define ordering, replay, and conflict behavior for live shared state.
106
+ - Keep binary assets addressable; do not place large payloads in window or
107
+ conversation events.
108
+
109
+ Closing one window must not imply closing an app service or discarding another
110
+ window's state. System menu, share, file, and date behavior should remain
111
+ behind platform-neutral capability contracts with native adapters.
112
+
113
+ ## Verification matrix
114
+
115
+ Every app shell or shared window recipe should cover:
116
+
117
+ - Embedded and standalone presentation.
118
+ - Active and inactive native windows.
119
+ - Light and dark appearance.
120
+ - Narrow, default, and wide sizes.
121
+ - Keyboard-only use and visible focus.
122
+ - Increased contrast, reduced motion, and reduced transparency.
123
+ - Empty, loading, error, ready, and offline or disconnected states.
124
+ - Reopen or reconnect with durable state intact.
125
+
126
+ Visual regression fixtures should capture the same canonical states at stable
127
+ viewport sizes. Interaction tests should verify focus movement, selection,
128
+ resize behavior, and that window controls remain host-owned.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moldable-ai/ui",
3
- "version": "0.2.18",
3
+ "version": "0.2.20",
4
4
  "description": "Shared UI components for Moldable applications",
5
5
  "author": "Desiderata LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -26,10 +26,17 @@
26
26
  "import": "./dist/index.js",
27
27
  "require": "./dist/index.js"
28
28
  },
29
+ "./catalog": {
30
+ "types": "./dist/catalog/index.d.ts",
31
+ "import": "./dist/catalog/index.js",
32
+ "require": "./dist/catalog/index.js"
33
+ },
29
34
  "./styles": "./src/styles/index.css"
30
35
  },
31
36
  "files": [
32
37
  "dist",
38
+ "docs",
39
+ "src/components/ui/*.md",
33
40
  "src/styles",
34
41
  "LICENSE"
35
42
  ],
@@ -73,6 +80,7 @@
73
80
  "@radix-ui/react-toggle": "^1.1.10",
74
81
  "@radix-ui/react-toggle-group": "^1.1.11",
75
82
  "@radix-ui/react-tooltip": "^1.2.8",
83
+ "@shadcn/react": "^0.2.1",
76
84
  "@tailwindcss/typography": "^0.5.16",
77
85
  "class-variance-authority": "^0.7.1",
78
86
  "clsx": "^2.1.1",
@@ -82,7 +90,6 @@
82
90
  "framer-motion": "^12.15.0",
83
91
  "input-otp": "^1.4.2",
84
92
  "lucide-react": "^0.473.0",
85
- "next-themes": "^0.4.6",
86
93
  "react-day-picker": "^9.13.0",
87
94
  "react-hook-form": "^7.71.1",
88
95
  "react-markdown": "^10.1.0",
@@ -96,7 +103,6 @@
96
103
  "tailwindcss": "^4.1.10",
97
104
  "tw-animate-css": "^1.3.4",
98
105
  "vaul": "^1.1.2",
99
- "virtua": "^0.48.5",
100
106
  "zod": "^4.3.5"
101
107
  },
102
108
  "devDependencies": {
@@ -0,0 +1,55 @@
1
+ # Alert
2
+
3
+ ## Purpose
4
+
5
+ `Alert` presents an important inline message that belongs to the current surface. Use it for recoverable errors, permission or connection problems, and information the user should notice before continuing.
6
+
7
+ Use `AlertDialog` when the user must confirm an action. Use `Empty` for the normal absence of data. Use a toast for brief feedback that does not need to remain in the layout.
8
+
9
+ ## Usage patterns
10
+
11
+ ```tsx
12
+ import { CircleAlert } from 'lucide-react'
13
+ import { Alert, AlertDescription, AlertTitle } from '@moldable-ai/ui'
14
+
15
+ ;<Alert variant="destructive">
16
+ <CircleAlert />
17
+ <AlertTitle>Could not save</AlertTitle>
18
+ <AlertDescription>
19
+ The file changed on disk. Reload it, then try again.
20
+ </AlertDescription>
21
+ </Alert>
22
+ ```
23
+
24
+ An alert can include a compact retry or setup action in its description, but the message should still stand on its own. Place the action close to the cause rather than at the top of the whole app.
25
+
26
+ ## API summary
27
+
28
+ - `Alert`: a `div` with `role="alert"`.
29
+ - `variant`: `default` or `destructive`; defaults to `default`.
30
+ - `AlertTitle`: the short, emphasized heading.
31
+ - `AlertDescription`: muted supporting content; supports nested paragraphs and controls.
32
+ - All parts accept the native props for their rendered element and a `className`.
33
+ - A direct icon child on `Alert` receives the component’s grid placement and sizing.
34
+
35
+ ## Do
36
+
37
+ - State what failed or what is blocked in a short title.
38
+ - Include the specific message and a retry action when recovery is possible.
39
+ - Keep technical details available through logs or a disclosure, not in the primary message.
40
+ - Use an icon only when it improves recognition.
41
+ - Keep the alert close to the field, pane, or operation it describes.
42
+
43
+ ## Don't
44
+
45
+ - Do not use an alert as decorative introductory copy.
46
+ - Do not show stack traces, raw exceptions, or secret values.
47
+ - Do not use `destructive` for neutral notices.
48
+ - Do not rely on the icon or color alone for meaning.
49
+ - Do not use `Alert` as a confirmation surface.
50
+
51
+ ## Moldable considerations
52
+
53
+ Alerts inside a scrollable pane must participate in that pane’s chat-safe bottom spacing. Long-lived errors should not be covered by a fixed dock or desktop chat overlay.
54
+
55
+ Copy should be calm and literal: “Could not load messages” is better than “Something went wrong!”. For authentication and permission states, name the blocked capability and offer exactly one primary next action. If the alert includes buttons, follow the standard button accessibility and density rules.
@@ -0,0 +1,33 @@
1
+ # App frame
2
+
3
+ The top-level shell for an app that can run in its own window or inside a host
4
+ surface.
5
+
6
+ ```tsx
7
+ <AppFrame>
8
+ <AppFrameTitlebar>
9
+ <AppFrameToolbar>
10
+ <strong>Calendar</strong>
11
+ <div className="ml-auto">{/* compact actions */}</div>
12
+ </AppFrameToolbar>
13
+ </AppFrameTitlebar>
14
+ <AppFrameContent>{/* the app-owned canvas */}</AppFrameContent>
15
+ <AppFrameStatusbar>Saved locally</AppFrameStatusbar>
16
+ </AppFrame>
17
+ ```
18
+
19
+ ## Rules
20
+
21
+ - Let the host render real window controls. Never draw imitation traffic lights.
22
+ - Make the app's primary canvas the visual focus; titlebars and status bars are
23
+ supporting structure.
24
+ - The app frame does not make the outer window draggable. A decorated native
25
+ titlebar or host-owned drag region must provide that behavior.
26
+ - The host owns the `--window-*` inset variables. The component only consumes
27
+ them.
28
+ - `AppFrameContent` applies the shared chat-safe padding by default. The value is
29
+ zero in a standalone window and is updated by the embedded host lifecycle.
30
+ - Use `mode="embedded"` or `mode="window"` only for deterministic previews and
31
+ tests. Runtime apps should normally use `mode="auto"`; a future host context
32
+ may set `data-moldable-display-mode` before render when a window still uses an
33
+ app iframe.
@@ -0,0 +1,57 @@
1
+ # Badge
2
+
3
+ ## Purpose
4
+
5
+ `Badge` is a compact, non-primary label for status, category, count, or metadata. It helps a user scan rows and objects without becoming another action surface.
6
+
7
+ Use a button or toggle when the element changes state. Use plain muted text when the metadata does not need a bounded shape.
8
+
9
+ ## Usage patterns
10
+
11
+ ```tsx
12
+ import { Badge } from '@moldable-ai/ui'
13
+
14
+ <Badge variant="secondary">Draft</Badge>
15
+ <Badge variant="outline">3 selected</Badge>
16
+ <Badge variant="destructive">Failed</Badge>
17
+ ```
18
+
19
+ Badges work best at the edge of list rows, in compact inspector metadata, or beside a title. Keep the content short enough to scan without wrapping.
20
+
21
+ When a badge is interactive, give the child its correct semantics:
22
+
23
+ ```tsx
24
+ <Badge asChild variant="outline">
25
+ <a href="/jobs/running">Running</a>
26
+ </Badge>
27
+ ```
28
+
29
+ ## API summary
30
+
31
+ - `variant`: `default`, `secondary`, `destructive`, `outline`, `ghost`, or `link`. Defaults to `default`.
32
+ - `asChild`: renders a Radix `Slot` and applies badge styling to its child.
33
+ - Accepts native `span` props.
34
+ - `badgeVariants` is exported for composing the same variants elsewhere.
35
+ - Icons placed directly inside are normalized to a compact size.
36
+
37
+ ## Do
38
+
39
+ - Use one or two words, a short number, or a concise state.
40
+ - Prefer `secondary` or `outline` for ordinary metadata.
41
+ - Use `destructive` only for a failure, blocked state, or serious warning.
42
+ - Pair a colored state with clear text or an icon so meaning is not color-only.
43
+ - Use `tabular-nums` through `className` for counts that update in place.
44
+
45
+ ## Don't
46
+
47
+ - Do not turn every property into a badge.
48
+ - Do not use badges as a substitute for primary buttons, tabs, or filters.
49
+ - Do not place long explanations or sentences inside.
50
+ - Do not invent raw category colors; use semantic variants unless a small, meaningful object color is required.
51
+ - Do not show “AI” as a decorative badge when no actionable distinction exists.
52
+
53
+ ## Moldable considerations
54
+
55
+ Moldable surfaces are intentionally dense, so badges should preserve horizontal scan order. In rows, keep the badge `shrink-0` and make the main text column `min-w-0`. Prefer a small status marker plus text over multiple adjacent badges.
56
+
57
+ For background activity, use a precise state such as “Syncing” or “Queued”; remove the badge when the state no longer helps. A badge is not a notification and should not replace a useful Today item, alert, or progress indicator.