@moldable-ai/ui 0.2.19 → 0.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/dist/catalog/catalog-manifest.d.ts +6 -0
  2. package/dist/catalog/catalog-manifest.d.ts.map +1 -0
  3. package/dist/catalog/catalog-manifest.js +105 -0
  4. package/dist/catalog/catalog-types.d.ts +54 -0
  5. package/dist/catalog/catalog-types.d.ts.map +1 -0
  6. package/dist/catalog/catalog-types.js +14 -0
  7. package/dist/catalog/component-catalog.d.ts +14 -0
  8. package/dist/catalog/component-catalog.d.ts.map +1 -0
  9. package/dist/catalog/component-catalog.js +39 -0
  10. package/dist/catalog/core-catalog.d.ts +6 -0
  11. package/dist/catalog/core-catalog.d.ts.map +1 -0
  12. package/dist/catalog/core-catalog.js +105 -0
  13. package/dist/catalog/index.d.ts +5 -0
  14. package/dist/catalog/index.d.ts.map +1 -0
  15. package/dist/catalog/index.js +4 -0
  16. package/dist/components/app-error-boundary.d.ts +1 -0
  17. package/dist/components/app-error-boundary.d.ts.map +1 -1
  18. package/dist/components/app-error-boundary.js +13 -0
  19. package/dist/components/chat/chat-image-lightbox.d.ts +9 -0
  20. package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -0
  21. package/dist/components/chat/chat-image-lightbox.js +9 -0
  22. package/dist/components/chat/chat-message.d.ts +19 -1
  23. package/dist/components/chat/chat-message.d.ts.map +1 -1
  24. package/dist/components/chat/chat-message.js +66 -16
  25. package/dist/components/chat/chat-messages.d.ts +5 -2
  26. package/dist/components/chat/chat-messages.d.ts.map +1 -1
  27. package/dist/components/chat/chat-messages.js +61 -6
  28. package/dist/components/chat/chat-panel.d.ts +50 -6
  29. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  30. package/dist/components/chat/chat-panel.js +200 -163
  31. package/dist/components/chat/conversation-history.d.ts +39 -5
  32. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  33. package/dist/components/chat/conversation-history.js +192 -26
  34. package/dist/components/chat/index.d.ts +2 -2
  35. package/dist/components/chat/index.d.ts.map +1 -1
  36. package/dist/components/chat/index.js +1 -1
  37. package/dist/components/chat/tool-handlers.d.ts.map +1 -1
  38. package/dist/components/chat/tool-handlers.js +40 -2
  39. package/dist/components/chat/vertical-scroll-fade.d.ts +6 -0
  40. package/dist/components/chat/vertical-scroll-fade.d.ts.map +1 -0
  41. package/dist/components/chat/vertical-scroll-fade.js +12 -0
  42. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts +9 -0
  43. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts.map +1 -0
  44. package/dist/components/native-capabilities/bluetooth-panel-helpers.js +37 -0
  45. package/dist/components/native-capabilities/bluetooth-panel.d.ts +56 -0
  46. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -0
  47. package/dist/components/native-capabilities/bluetooth-panel.js +470 -0
  48. package/dist/components/native-capabilities/camera-preview.d.ts +39 -0
  49. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -0
  50. package/dist/components/native-capabilities/camera-preview.js +228 -0
  51. package/dist/components/native-capabilities/capability-badge.d.ts +23 -0
  52. package/dist/components/native-capabilities/capability-badge.d.ts.map +1 -0
  53. package/dist/components/native-capabilities/capability-badge.js +39 -0
  54. package/dist/components/native-capabilities/capability-matrix.d.ts +14 -0
  55. package/dist/components/native-capabilities/capability-matrix.d.ts.map +1 -0
  56. package/dist/components/native-capabilities/capability-matrix.js +97 -0
  57. package/dist/components/native-capabilities/clipboard-button.d.ts +26 -0
  58. package/dist/components/native-capabilities/clipboard-button.d.ts.map +1 -0
  59. package/dist/components/native-capabilities/clipboard-button.js +99 -0
  60. package/dist/components/native-capabilities/device-io-controls.d.ts +4 -0
  61. package/dist/components/native-capabilities/device-io-controls.d.ts.map +1 -0
  62. package/dist/components/native-capabilities/device-io-controls.js +28 -0
  63. package/dist/components/native-capabilities/device-list.d.ts +20 -0
  64. package/dist/components/native-capabilities/device-list.d.ts.map +1 -0
  65. package/dist/components/native-capabilities/device-list.js +14 -0
  66. package/dist/components/native-capabilities/display-map.d.ts +23 -0
  67. package/dist/components/native-capabilities/display-map.d.ts.map +1 -0
  68. package/dist/components/native-capabilities/display-map.js +114 -0
  69. package/dist/components/native-capabilities/haptic-button.d.ts +26 -0
  70. package/dist/components/native-capabilities/haptic-button.d.ts.map +1 -0
  71. package/dist/components/native-capabilities/haptic-button.js +94 -0
  72. package/dist/components/native-capabilities/hid-panel.d.ts +40 -0
  73. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -0
  74. package/dist/components/native-capabilities/hid-panel.js +373 -0
  75. package/dist/components/native-capabilities/index.d.ts +27 -0
  76. package/dist/components/native-capabilities/index.d.ts.map +1 -0
  77. package/dist/components/native-capabilities/index.js +26 -0
  78. package/dist/components/native-capabilities/live-indicator.d.ts +15 -0
  79. package/dist/components/native-capabilities/live-indicator.d.ts.map +1 -0
  80. package/dist/components/native-capabilities/live-indicator.js +26 -0
  81. package/dist/components/native-capabilities/local-auth-button.d.ts +33 -0
  82. package/dist/components/native-capabilities/local-auth-button.d.ts.map +1 -0
  83. package/dist/components/native-capabilities/local-auth-button.js +115 -0
  84. package/dist/components/native-capabilities/location-panel.d.ts +29 -0
  85. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -0
  86. package/dist/components/native-capabilities/location-panel.js +146 -0
  87. package/dist/components/native-capabilities/microphone-meter.d.ts +35 -0
  88. package/dist/components/native-capabilities/microphone-meter.d.ts.map +1 -0
  89. package/dist/components/native-capabilities/microphone-meter.js +244 -0
  90. package/dist/components/native-capabilities/midi-monitor.d.ts +54 -0
  91. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -0
  92. package/dist/components/native-capabilities/midi-monitor.js +534 -0
  93. package/dist/components/native-capabilities/native-capability-panel.d.ts +11 -0
  94. package/dist/components/native-capabilities/native-capability-panel.d.ts.map +1 -0
  95. package/dist/components/native-capabilities/native-capability-panel.js +28 -0
  96. package/dist/components/native-capabilities/notification-panel.d.ts +24 -0
  97. package/dist/components/native-capabilities/notification-panel.d.ts.map +1 -0
  98. package/dist/components/native-capabilities/notification-panel.js +124 -0
  99. package/dist/components/native-capabilities/power-blocker-controller.d.ts +19 -0
  100. package/dist/components/native-capabilities/power-blocker-controller.d.ts.map +1 -0
  101. package/dist/components/native-capabilities/power-blocker-controller.js +83 -0
  102. package/dist/components/native-capabilities/power-panel.d.ts +67 -0
  103. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -0
  104. package/dist/components/native-capabilities/power-panel.js +309 -0
  105. package/dist/components/native-capabilities/readout.d.ts +10 -0
  106. package/dist/components/native-capabilities/readout.d.ts.map +1 -0
  107. package/dist/components/native-capabilities/readout.js +11 -0
  108. package/dist/components/native-capabilities/screen-share-preview.d.ts +36 -0
  109. package/dist/components/native-capabilities/screen-share-preview.d.ts.map +1 -0
  110. package/dist/components/native-capabilities/screen-share-preview.js +191 -0
  111. package/dist/components/native-capabilities/secure-storage-panel.d.ts +36 -0
  112. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -0
  113. package/dist/components/native-capabilities/secure-storage-panel.js +193 -0
  114. package/dist/components/native-capabilities/serial-console.d.ts +64 -0
  115. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -0
  116. package/dist/components/native-capabilities/serial-console.js +399 -0
  117. package/dist/components/native-capabilities/shortcut-recorder.d.ts +35 -0
  118. package/dist/components/native-capabilities/shortcut-recorder.d.ts.map +1 -0
  119. package/dist/components/native-capabilities/shortcut-recorder.js +217 -0
  120. package/dist/components/native-capabilities/stream-log.d.ts +35 -0
  121. package/dist/components/native-capabilities/stream-log.d.ts.map +1 -0
  122. package/dist/components/native-capabilities/stream-log.js +65 -0
  123. package/dist/components/native-capabilities/system-audio-monitor.d.ts +34 -0
  124. package/dist/components/native-capabilities/system-audio-monitor.d.ts.map +1 -0
  125. package/dist/components/native-capabilities/system-audio-monitor.js +275 -0
  126. package/dist/components/native-capabilities/usb-panel.d.ts +54 -0
  127. package/dist/components/native-capabilities/usb-panel.d.ts.map +1 -0
  128. package/dist/components/native-capabilities/usb-panel.js +363 -0
  129. package/dist/components/native-capabilities/use-capability.d.ts +20 -0
  130. package/dist/components/native-capabilities/use-capability.d.ts.map +1 -0
  131. package/dist/components/native-capabilities/use-capability.js +61 -0
  132. package/dist/components/ui/app-frame.d.ts +22 -0
  133. package/dist/components/ui/app-frame.d.ts.map +1 -0
  134. package/dist/components/ui/app-frame.js +56 -0
  135. package/dist/components/ui/button-group.d.ts +1 -1
  136. package/dist/components/ui/button.js +1 -1
  137. package/dist/components/ui/color-well.d.ts +13 -0
  138. package/dist/components/ui/color-well.d.ts.map +1 -0
  139. package/dist/components/ui/color-well.js +30 -0
  140. package/dist/components/ui/date-field.d.ts +19 -0
  141. package/dist/components/ui/date-field.d.ts.map +1 -0
  142. package/dist/components/ui/date-field.js +54 -0
  143. package/dist/components/ui/edge-fade.d.ts +11 -0
  144. package/dist/components/ui/edge-fade.d.ts.map +1 -0
  145. package/dist/components/ui/edge-fade.js +41 -0
  146. package/dist/components/ui/empty.js +1 -1
  147. package/dist/components/ui/field.d.ts +1 -1
  148. package/dist/components/ui/grid.d.ts +24 -0
  149. package/dist/components/ui/grid.d.ts.map +1 -0
  150. package/dist/components/ui/grid.js +234 -0
  151. package/dist/components/ui/icon-button.d.ts +15 -0
  152. package/dist/components/ui/icon-button.d.ts.map +1 -0
  153. package/dist/components/ui/icon-button.js +15 -0
  154. package/dist/components/ui/index.d.ts +19 -0
  155. package/dist/components/ui/index.d.ts.map +1 -1
  156. package/dist/components/ui/index.js +19 -0
  157. package/dist/components/ui/input-group.d.ts +1 -1
  158. package/dist/components/ui/inspector.d.ts +15 -0
  159. package/dist/components/ui/inspector.d.ts.map +1 -0
  160. package/dist/components/ui/inspector.js +26 -0
  161. package/dist/components/ui/kbd.d.ts +1 -1
  162. package/dist/components/ui/list.d.ts +24 -0
  163. package/dist/components/ui/list.d.ts.map +1 -0
  164. package/dist/components/ui/list.js +224 -0
  165. package/dist/components/ui/message-scroller-layout-stability.d.ts +33 -0
  166. package/dist/components/ui/message-scroller-layout-stability.d.ts.map +1 -0
  167. package/dist/components/ui/message-scroller-layout-stability.js +153 -0
  168. package/dist/components/ui/message-scroller.d.ts +11 -0
  169. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  170. package/dist/components/ui/message-scroller.js +37 -0
  171. package/dist/components/ui/notification-dot.d.ts +4 -0
  172. package/dist/components/ui/notification-dot.d.ts.map +1 -0
  173. package/dist/components/ui/notification-dot.js +7 -0
  174. package/dist/components/ui/number-input.d.ts +16 -0
  175. package/dist/components/ui/number-input.d.ts.map +1 -0
  176. package/dist/components/ui/number-input.js +56 -0
  177. package/dist/components/ui/panel.d.ts +18 -0
  178. package/dist/components/ui/panel.d.ts.map +1 -0
  179. package/dist/components/ui/panel.js +40 -0
  180. package/dist/components/ui/popover.js +1 -1
  181. package/dist/components/ui/search-field.d.ts +19 -0
  182. package/dist/components/ui/search-field.d.ts.map +1 -0
  183. package/dist/components/ui/search-field.js +64 -0
  184. package/dist/components/ui/segmented-control.d.ts +21 -0
  185. package/dist/components/ui/segmented-control.d.ts.map +1 -0
  186. package/dist/components/ui/segmented-control.js +61 -0
  187. package/dist/components/ui/sidebar.js +1 -1
  188. package/dist/components/ui/sonner.d.ts +4 -3
  189. package/dist/components/ui/sonner.d.ts.map +1 -1
  190. package/dist/components/ui/sonner.js +7 -6
  191. package/dist/components/ui/split-view.d.ts +11 -0
  192. package/dist/components/ui/split-view.d.ts.map +1 -0
  193. package/dist/components/ui/split-view.js +13 -0
  194. package/dist/components/ui/status.d.ts +13 -0
  195. package/dist/components/ui/status.d.ts.map +1 -0
  196. package/dist/components/ui/status.js +36 -0
  197. package/dist/components/ui/table.d.ts +11 -2
  198. package/dist/components/ui/table.d.ts.map +1 -1
  199. package/dist/components/ui/table.js +28 -6
  200. package/dist/components/ui/text.d.ts +17 -0
  201. package/dist/components/ui/text.d.ts.map +1 -0
  202. package/dist/components/ui/text.js +55 -0
  203. package/dist/components/ui/toggle.js +1 -1
  204. package/dist/components/ui/toolbar.d.ts +20 -0
  205. package/dist/components/ui/toolbar.d.ts.map +1 -0
  206. package/dist/components/ui/toolbar.js +52 -0
  207. package/dist/index.d.ts +2 -2
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +4 -4
  210. package/dist/lib/frame-lifecycle.d.ts +28 -0
  211. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  212. package/dist/lib/frame-lifecycle.js +84 -0
  213. package/dist/lib/native-capabilities/access.d.ts +13 -0
  214. package/dist/lib/native-capabilities/access.d.ts.map +1 -0
  215. package/dist/lib/native-capabilities/access.js +53 -0
  216. package/dist/lib/native-capabilities/bluetooth-access.d.ts +14 -0
  217. package/dist/lib/native-capabilities/bluetooth-access.d.ts.map +1 -0
  218. package/dist/lib/native-capabilities/bluetooth-access.js +43 -0
  219. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +19 -0
  220. package/dist/lib/native-capabilities/bluetooth-connection.d.ts.map +1 -0
  221. package/dist/lib/native-capabilities/bluetooth-connection.js +88 -0
  222. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +7 -0
  223. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts.map +1 -0
  224. package/dist/lib/native-capabilities/bluetooth-gatt.js +77 -0
  225. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +10 -0
  226. package/dist/lib/native-capabilities/bluetooth-internal.d.ts.map +1 -0
  227. package/dist/lib/native-capabilities/bluetooth-internal.js +105 -0
  228. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +33 -0
  229. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts.map +1 -0
  230. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +214 -0
  231. package/dist/lib/native-capabilities/bluetooth-types.d.ts +85 -0
  232. package/dist/lib/native-capabilities/bluetooth-types.d.ts.map +1 -0
  233. package/dist/lib/native-capabilities/bluetooth-types.js +2 -0
  234. package/dist/lib/native-capabilities/bluetooth.d.ts +7 -0
  235. package/dist/lib/native-capabilities/bluetooth.d.ts.map +1 -0
  236. package/dist/lib/native-capabilities/bluetooth.js +4 -0
  237. package/dist/lib/native-capabilities/bridge.d.ts +23 -0
  238. package/dist/lib/native-capabilities/bridge.d.ts.map +1 -0
  239. package/dist/lib/native-capabilities/bridge.js +266 -0
  240. package/dist/lib/native-capabilities/capabilities.d.ts +7 -0
  241. package/dist/lib/native-capabilities/capabilities.d.ts.map +1 -0
  242. package/dist/lib/native-capabilities/capabilities.js +95 -0
  243. package/dist/lib/native-capabilities/clipboard.d.ts +11 -0
  244. package/dist/lib/native-capabilities/clipboard.d.ts.map +1 -0
  245. package/dist/lib/native-capabilities/clipboard.js +58 -0
  246. package/dist/lib/native-capabilities/device-io-errors.d.ts +11 -0
  247. package/dist/lib/native-capabilities/device-io-errors.d.ts.map +1 -0
  248. package/dist/lib/native-capabilities/device-io-errors.js +82 -0
  249. package/dist/lib/native-capabilities/displays.d.ts +38 -0
  250. package/dist/lib/native-capabilities/displays.d.ts.map +1 -0
  251. package/dist/lib/native-capabilities/displays.js +12 -0
  252. package/dist/lib/native-capabilities/global-shortcuts.d.ts +86 -0
  253. package/dist/lib/native-capabilities/global-shortcuts.d.ts.map +1 -0
  254. package/dist/lib/native-capabilities/global-shortcuts.js +351 -0
  255. package/dist/lib/native-capabilities/haptics.d.ts +25 -0
  256. package/dist/lib/native-capabilities/haptics.d.ts.map +1 -0
  257. package/dist/lib/native-capabilities/haptics.js +18 -0
  258. package/dist/lib/native-capabilities/hid-native.d.ts +26 -0
  259. package/dist/lib/native-capabilities/hid-native.d.ts.map +1 -0
  260. package/dist/lib/native-capabilities/hid-native.js +229 -0
  261. package/dist/lib/native-capabilities/hid.d.ts +52 -0
  262. package/dist/lib/native-capabilities/hid.d.ts.map +1 -0
  263. package/dist/lib/native-capabilities/hid.js +163 -0
  264. package/dist/lib/native-capabilities/index.d.ts +40 -0
  265. package/dist/lib/native-capabilities/index.d.ts.map +1 -0
  266. package/dist/lib/native-capabilities/index.js +21 -0
  267. package/dist/lib/native-capabilities/local-authentication.d.ts +32 -0
  268. package/dist/lib/native-capabilities/local-authentication.d.ts.map +1 -0
  269. package/dist/lib/native-capabilities/local-authentication.js +46 -0
  270. package/dist/lib/native-capabilities/location.d.ts +49 -0
  271. package/dist/lib/native-capabilities/location.d.ts.map +1 -0
  272. package/dist/lib/native-capabilities/location.js +114 -0
  273. package/dist/lib/native-capabilities/media-permissions.d.ts +28 -0
  274. package/dist/lib/native-capabilities/media-permissions.d.ts.map +1 -0
  275. package/dist/lib/native-capabilities/media-permissions.js +37 -0
  276. package/dist/lib/native-capabilities/media.d.ts +17 -0
  277. package/dist/lib/native-capabilities/media.d.ts.map +1 -0
  278. package/dist/lib/native-capabilities/media.js +104 -0
  279. package/dist/lib/native-capabilities/midi-access.d.ts +13 -0
  280. package/dist/lib/native-capabilities/midi-access.d.ts.map +1 -0
  281. package/dist/lib/native-capabilities/midi-access.js +68 -0
  282. package/dist/lib/native-capabilities/midi-internal.d.ts +12 -0
  283. package/dist/lib/native-capabilities/midi-internal.d.ts.map +1 -0
  284. package/dist/lib/native-capabilities/midi-internal.js +88 -0
  285. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +27 -0
  286. package/dist/lib/native-capabilities/midi-native-fallback.d.ts.map +1 -0
  287. package/dist/lib/native-capabilities/midi-native-fallback.js +127 -0
  288. package/dist/lib/native-capabilities/midi-ports.d.ts +6 -0
  289. package/dist/lib/native-capabilities/midi-ports.d.ts.map +1 -0
  290. package/dist/lib/native-capabilities/midi-ports.js +115 -0
  291. package/dist/lib/native-capabilities/midi-types.d.ts +25 -0
  292. package/dist/lib/native-capabilities/midi-types.d.ts.map +1 -0
  293. package/dist/lib/native-capabilities/midi-types.js +1 -0
  294. package/dist/lib/native-capabilities/midi.d.ts +6 -0
  295. package/dist/lib/native-capabilities/midi.d.ts.map +1 -0
  296. package/dist/lib/native-capabilities/midi.js +3 -0
  297. package/dist/lib/native-capabilities/native-device-io.d.ts +28 -0
  298. package/dist/lib/native-capabilities/native-device-io.d.ts.map +1 -0
  299. package/dist/lib/native-capabilities/native-device-io.js +91 -0
  300. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts +13 -0
  301. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts.map +1 -0
  302. package/dist/lib/native-capabilities/native-device-lifecycle.js +40 -0
  303. package/dist/lib/native-capabilities/notifications.d.ts +38 -0
  304. package/dist/lib/native-capabilities/notifications.d.ts.map +1 -0
  305. package/dist/lib/native-capabilities/notifications.js +50 -0
  306. package/dist/lib/native-capabilities/power-session.d.ts +113 -0
  307. package/dist/lib/native-capabilities/power-session.d.ts.map +1 -0
  308. package/dist/lib/native-capabilities/power-session.js +264 -0
  309. package/dist/lib/native-capabilities/secure-storage.d.ts +36 -0
  310. package/dist/lib/native-capabilities/secure-storage.d.ts.map +1 -0
  311. package/dist/lib/native-capabilities/secure-storage.js +64 -0
  312. package/dist/lib/native-capabilities/serial-native.d.ts +23 -0
  313. package/dist/lib/native-capabilities/serial-native.d.ts.map +1 -0
  314. package/dist/lib/native-capabilities/serial-native.js +181 -0
  315. package/dist/lib/native-capabilities/serial.d.ts +76 -0
  316. package/dist/lib/native-capabilities/serial.d.ts.map +1 -0
  317. package/dist/lib/native-capabilities/serial.js +215 -0
  318. package/dist/lib/native-capabilities/system-audio.d.ts +127 -0
  319. package/dist/lib/native-capabilities/system-audio.d.ts.map +1 -0
  320. package/dist/lib/native-capabilities/system-audio.js +330 -0
  321. package/dist/lib/native-capabilities/types.d.ts +62 -0
  322. package/dist/lib/native-capabilities/types.d.ts.map +1 -0
  323. package/dist/lib/native-capabilities/types.js +27 -0
  324. package/dist/lib/native-capabilities/usb-native.d.ts +39 -0
  325. package/dist/lib/native-capabilities/usb-native.d.ts.map +1 -0
  326. package/dist/lib/native-capabilities/usb-native.js +217 -0
  327. package/dist/lib/native-capabilities/usb.d.ts +85 -0
  328. package/dist/lib/native-capabilities/usb.d.ts.map +1 -0
  329. package/dist/lib/native-capabilities/usb.js +225 -0
  330. package/docs/README.md +37 -0
  331. package/docs/accessibility.md +32 -0
  332. package/docs/app-anatomy.md +72 -0
  333. package/docs/component-catalog.md +59 -0
  334. package/docs/component-guide-template.md +37 -0
  335. package/docs/design-tokens.md +172 -0
  336. package/docs/foundations.md +56 -0
  337. package/docs/native-integration.md +33 -0
  338. package/docs/standalone-app-windows.md +128 -0
  339. package/package.json +9 -3
  340. package/src/components/ui/alert.md +55 -0
  341. package/src/components/ui/app-frame.md +33 -0
  342. package/src/components/ui/badge.md +57 -0
  343. package/src/components/ui/button.md +76 -0
  344. package/src/components/ui/color-well.md +11 -0
  345. package/src/components/ui/combobox.md +43 -0
  346. package/src/components/ui/date-field.md +32 -0
  347. package/src/components/ui/edge-fade.md +7 -0
  348. package/src/components/ui/empty.md +82 -0
  349. package/src/components/ui/field.md +77 -0
  350. package/src/components/ui/grid.md +105 -0
  351. package/src/components/ui/icon-button.md +36 -0
  352. package/src/components/ui/inspector.md +11 -0
  353. package/src/components/ui/item.md +87 -0
  354. package/src/components/ui/list.md +107 -0
  355. package/src/components/ui/notification-dot.md +7 -0
  356. package/src/components/ui/number-input.md +19 -0
  357. package/src/components/ui/panel.md +11 -0
  358. package/src/components/ui/resizable.md +66 -0
  359. package/src/components/ui/scroll-area.md +68 -0
  360. package/src/components/ui/search-field.md +33 -0
  361. package/src/components/ui/segmented-control.md +39 -0
  362. package/src/components/ui/sidebar.md +113 -0
  363. package/src/components/ui/sonner.md +37 -0
  364. package/src/components/ui/split-view.md +15 -0
  365. package/src/components/ui/status.md +12 -0
  366. package/src/components/ui/table.md +35 -0
  367. package/src/components/ui/tabs.md +66 -0
  368. package/src/components/ui/text.md +17 -0
  369. package/src/components/ui/toggle-group.md +80 -0
  370. package/src/components/ui/toggle.md +73 -0
  371. package/src/components/ui/toolbar.md +21 -0
  372. package/src/styles/index.css +491 -3
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { type MoldableDisplay } from '../../lib/native-capabilities';
3
+ export type MoldableDisplaysStatus = 'loading' | 'ready' | 'unavailable';
4
+ /**
5
+ * Display arrangement state behind `DisplayMap`. One-shot query by design —
6
+ * the host does not expose display change events.
7
+ */
8
+ export declare function useMoldableDisplays(): {
9
+ displays: MoldableDisplay[];
10
+ status: MoldableDisplaysStatus;
11
+ error: Error | null;
12
+ refresh: () => void;
13
+ };
14
+ export interface DisplayMapProps extends React.ComponentProps<'div'> {
15
+ onSelectDisplay?: (display: MoldableDisplay | null) => void;
16
+ }
17
+ /**
18
+ * To-scale map of the native monitor arrangement. Hover or click a display to
19
+ * inspect its name, resolution, position, and scale factor.
20
+ */
21
+ declare function DisplayMap({ className, onSelectDisplay, ...props }: DisplayMapProps): import("react/jsx-runtime").JSX.Element;
22
+ export { DisplayMap };
23
+ //# sourceMappingURL=display-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-map.d.ts","sourceRoot":"","sources":["../../../src/components/native-capabilities/display-map.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,+BAA+B,CAAA;AAgBtC,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;AAExE;;;GAGG;AACH,wBAAgB,mBAAmB;;;;;EAiClC;AAgCD,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAClE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAA;CAC5D;AAED;;;GAGG;AACH,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CA2K5E;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,114 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Monitor, RefreshCw } from 'lucide-react';
4
+ import { useCallback, useEffect, useRef, useState } from 'react';
5
+ import { getMoldableDisplays, } from '../../lib/native-capabilities';
6
+ import { cn } from '../../lib/utils';
7
+ import { Button } from '../ui/button';
8
+ import { Spinner } from '../ui/spinner';
9
+ import { CapabilityBadge } from './capability-badge';
10
+ import { NativeCapabilityPanel, NativeCapabilityPanelAction, NativeCapabilityPanelContent, NativeCapabilityPanelFooter, NativeCapabilityPanelHeader, NativeCapabilityPanelIcon, NativeCapabilityPanelTitle, } from './native-capability-panel';
11
+ import { Readout, ReadoutItem } from './readout';
12
+ /**
13
+ * Display arrangement state behind `DisplayMap`. One-shot query by design —
14
+ * the host does not expose display change events.
15
+ */
16
+ export function useMoldableDisplays() {
17
+ const [displays, setDisplays] = useState([]);
18
+ const [status, setStatus] = useState('loading');
19
+ const [error, setError] = useState(null);
20
+ const generationRef = useRef(0);
21
+ const refresh = useCallback(() => {
22
+ const generation = ++generationRef.current;
23
+ setStatus('loading');
24
+ setError(null);
25
+ getMoldableDisplays()
26
+ .then((result) => {
27
+ if (generationRef.current !== generation)
28
+ return;
29
+ setDisplays(result.displays);
30
+ setStatus('ready');
31
+ })
32
+ .catch((cause) => {
33
+ if (generationRef.current !== generation)
34
+ return;
35
+ setDisplays([]);
36
+ setError(cause instanceof Error ? cause : new Error(String(cause)));
37
+ setStatus('unavailable');
38
+ });
39
+ }, []);
40
+ useEffect(() => {
41
+ refresh();
42
+ const liveGeneration = generationRef;
43
+ return () => {
44
+ liveGeneration.current++;
45
+ };
46
+ }, [refresh]);
47
+ return { displays, status, error, refresh };
48
+ }
49
+ function computeDisplayBounds(displays) {
50
+ let minX = Infinity;
51
+ let minY = Infinity;
52
+ let maxX = -Infinity;
53
+ let maxY = -Infinity;
54
+ for (const display of displays) {
55
+ minX = Math.min(minX, display.position.x);
56
+ minY = Math.min(minY, display.position.y);
57
+ maxX = Math.max(maxX, display.position.x + display.size.width);
58
+ maxY = Math.max(maxY, display.position.y + display.size.height);
59
+ }
60
+ return {
61
+ minX,
62
+ minY,
63
+ width: Math.max(1, maxX - minX),
64
+ height: Math.max(1, maxY - minY),
65
+ };
66
+ }
67
+ function displayName(display, index) {
68
+ return display.name ?? `Display ${index + 1}`;
69
+ }
70
+ /**
71
+ * To-scale map of the native monitor arrangement. Hover or click a display to
72
+ * inspect its name, resolution, position, and scale factor.
73
+ */
74
+ function DisplayMap({ className, onSelectDisplay, ...props }) {
75
+ const { displays, status, refresh } = useMoldableDisplays();
76
+ const [selected, setSelected] = useState(null);
77
+ const onSelectDisplayRef = useRef(onSelectDisplay);
78
+ onSelectDisplayRef.current = onSelectDisplay;
79
+ const select = (index) => {
80
+ setSelected(index);
81
+ onSelectDisplayRef.current?.(displays[index] ?? null);
82
+ };
83
+ const primaryIndex = displays.findIndex((display) => display.primary);
84
+ const selectedIndex = selected !== null && selected < displays.length
85
+ ? selected
86
+ : primaryIndex >= 0
87
+ ? primaryIndex
88
+ : displays.length > 0
89
+ ? 0
90
+ : null;
91
+ const selectedDisplay = selectedIndex === null ? null : (displays[selectedIndex] ?? null);
92
+ const bounds = computeDisplayBounds(displays);
93
+ const mapWidth = Math.round((200 * bounds.width) / bounds.height);
94
+ return (_jsxs(NativeCapabilityPanel, { "data-slot": "display-map", "data-status": status, className: className, ...props, children: [_jsxs(NativeCapabilityPanelHeader, { children: [_jsx(NativeCapabilityPanelIcon, { children: _jsx(Monitor, {}) }), _jsx(NativeCapabilityPanelTitle, { children: "Displays" }), _jsx(CapabilityBadge, { capability: "displays" }), _jsx(NativeCapabilityPanelAction, { children: _jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Refresh displays", onClick: () => {
95
+ setSelected(null);
96
+ refresh();
97
+ }, children: _jsx(RefreshCw, {}) }) })] }), _jsx(NativeCapabilityPanelContent, { children: status === 'ready' && displays.length > 0 ? (_jsxs("div", { className: "animate-in fade-in space-y-4 duration-300 motion-reduce:animate-none", children: [_jsx("div", { className: "bg-muted/20 flex justify-center overflow-hidden rounded-lg border p-4", children: _jsx("div", { "data-slot": "display-map-canvas", className: "relative", style: {
98
+ aspectRatio: `${bounds.width} / ${bounds.height}`,
99
+ width: `min(100%, ${mapWidth}px)`,
100
+ }, children: displays.map((display, index) => {
101
+ const isSelected = index === selectedIndex;
102
+ return (_jsxs("button", { type: "button", "data-slot": "display-map-display", "data-primary": display.primary || undefined, "data-selected": isSelected || undefined, "aria-label": `Select ${displayName(display, index)}`, onClick: () => select(index), onMouseEnter: () => select(index), onFocus: () => select(index), className: cn('animate-in fade-in zoom-in-95 absolute flex flex-col items-start justify-end gap-0.5 overflow-hidden rounded-md border p-1.5 text-left duration-300 motion-reduce:animate-none', isSelected
103
+ ? 'bg-primary/10 border-primary'
104
+ : 'bg-muted/40 hover:bg-muted/70', !isSelected && display.primary && 'border-primary'), style: {
105
+ left: `${((display.position.x - bounds.minX) / bounds.width) * 100}%`,
106
+ top: `${((display.position.y - bounds.minY) / bounds.height) * 100}%`,
107
+ width: `${(display.size.width / bounds.width) * 100}%`,
108
+ height: `${(display.size.height / bounds.height) * 100}%`,
109
+ animationDelay: `${index * 75}ms`,
110
+ animationFillMode: 'backwards',
111
+ }, children: [display.primary ? (_jsx("span", { className: "border-primary/40 bg-primary/10 text-primary absolute right-1 top-1 rounded-full border px-1 py-px text-[8px] font-medium leading-none", children: "Primary" })) : null, _jsx("span", { className: "w-full truncate text-[10px] font-medium leading-tight", children: displayName(display, index) }), _jsxs("span", { className: "text-muted-foreground font-mono text-[9px] tabular-nums leading-none", children: [display.size.width, "\u00D7", display.size.height] })] }, `${display.position.x},${display.position.y},${index}`));
112
+ }) }) }), selectedDisplay ? (_jsxs(Readout, { className: "grid-cols-2 sm:grid-cols-4", children: [_jsx(ReadoutItem, { label: "Name", value: displayName(selectedDisplay, selectedIndex ?? 0) }), _jsx(ReadoutItem, { label: "Resolution", value: `${selectedDisplay.size.width}×${selectedDisplay.size.height}` }), _jsx(ReadoutItem, { label: "Position", value: `${selectedDisplay.position.x}, ${selectedDisplay.position.y}` }), _jsx(ReadoutItem, { label: "Scale factor", value: `${selectedDisplay.scaleFactor}×` })] })) : null] })) : (_jsx("div", { className: "animate-in fade-in flex flex-col items-center gap-3 py-6 text-center duration-300 motion-reduce:animate-none", children: status === 'loading' ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { className: "text-muted-foreground" }), _jsx("p", { className: "text-muted-foreground text-xs", children: "Reading display arrangement\u2026" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "text-muted-foreground bg-background shadow-xs flex size-10 items-center justify-center rounded-lg border [&_svg]:size-5", children: _jsx(Monitor, {}) }), status === 'unavailable' ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "text-sm font-medium", children: "Displays unavailable" }), _jsx("p", { className: "text-muted-foreground max-w-64 text-xs", children: "Display metadata is only available inside Moldable." })] })) : (_jsx("p", { className: "text-muted-foreground text-xs", children: "No displays reported" }))] })) })) }), _jsx(NativeCapabilityPanelFooter, { children: _jsxs("span", { className: "truncate", children: [displays.length, " ", displays.length === 1 ? 'display' : 'displays'] }) })] }));
113
+ }
114
+ export { DisplayMap };
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ import { type MoldableHapticAvailability, type MoldableHapticPattern } from '../../lib/native-capabilities';
3
+ import { Button } from '../ui/button';
4
+ /**
5
+ * Haptic feedback state behind `HapticButton`. `perform` never throws — it
6
+ * resolves `false` when the host rejects or is unavailable.
7
+ */
8
+ export declare function useMoldableHaptics(): {
9
+ availability: MoldableHapticAvailability | null;
10
+ patterns: MoldableHapticPattern[];
11
+ supported: boolean;
12
+ perform: (pattern?: MoldableHapticPattern) => Promise<boolean>;
13
+ };
14
+ export interface HapticButtonProps extends React.ComponentProps<typeof Button> {
15
+ /** Haptic pattern to perform on click. Defaults to `generic`. */
16
+ pattern?: MoldableHapticPattern;
17
+ /** Called with whether the OS accepted the feedback request. */
18
+ onPerformed?: (ok: boolean) => void;
19
+ }
20
+ /**
21
+ * A `Button` that performs native haptic feedback on click, with a matching
22
+ * press-and-jiggle animation so the tap reads even without hardware feedback.
23
+ */
24
+ declare function HapticButton({ pattern, onPerformed, onClick, className, children, ...props }: HapticButtonProps): import("react/jsx-runtime").JSX.Element;
25
+ export { HapticButton };
26
+ //# sourceMappingURL=haptic-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"haptic-button.d.ts","sourceRoot":"","sources":["../../../src/components/native-capabilities/haptic-button.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAG3B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAIrC;;;GAGG;AACH,wBAAgB,kBAAkB;;;;wBAqBd,qBAAqB;EAiBxC;AAkBD,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC;IAC5E,iEAAiE;IACjE,OAAO,CAAC,EAAE,qBAAqB,CAAA;IAC/B,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;CACpC;AAED;;;GAGG;AACH,iBAAS,YAAY,CAAC,EACpB,OAAmB,EACnB,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmDnB;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,94 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Vibrate } from 'lucide-react';
4
+ import { useCallback, useEffect, useRef, useState } from 'react';
5
+ import { getMoldableHapticAvailability, performMoldableHapticFeedback, } from '../../lib/native-capabilities';
6
+ import { cn } from '../../lib/utils';
7
+ import { Button } from '../ui/button';
8
+ const EMPTY_PATTERNS = [];
9
+ /**
10
+ * Haptic feedback state behind `HapticButton`. `perform` never throws — it
11
+ * resolves `false` when the host rejects or is unavailable.
12
+ */
13
+ export function useMoldableHaptics() {
14
+ const [availability, setAvailability] = useState(null);
15
+ const generationRef = useRef(0);
16
+ useEffect(() => {
17
+ const generation = ++generationRef.current;
18
+ getMoldableHapticAvailability()
19
+ .then((value) => {
20
+ if (generationRef.current === generation)
21
+ setAvailability(value);
22
+ })
23
+ .catch(() => {
24
+ // Haptics availability is best-effort outside Moldable.
25
+ });
26
+ const liveGeneration = generationRef;
27
+ return () => {
28
+ liveGeneration.current++;
29
+ };
30
+ }, []);
31
+ const perform = useCallback(async (pattern = 'generic') => {
32
+ try {
33
+ const result = await performMoldableHapticFeedback(pattern);
34
+ return result.accepted === true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }, []);
40
+ return {
41
+ availability,
42
+ patterns: availability?.patterns ?? EMPTY_PATTERNS,
43
+ supported: availability?.apiAvailable ?? false,
44
+ perform,
45
+ };
46
+ }
47
+ const HAPTIC_PRESS_STYLE = `
48
+ @keyframes moldable-haptic-press {
49
+ 0% { transform: scale(1) translateX(0); }
50
+ 20% { transform: scale(0.96) translateX(-1.5px); }
51
+ 45% { transform: scale(0.97) translateX(1.5px); }
52
+ 70% { transform: scale(0.98) translateX(-1px); }
53
+ 100% { transform: scale(1) translateX(0); }
54
+ }
55
+ [data-slot='haptic-button'][data-state='pressed'] {
56
+ animation: moldable-haptic-press 150ms ease-in-out;
57
+ }
58
+ @media (prefers-reduced-motion: reduce) {
59
+ [data-slot='haptic-button'][data-state='pressed'] { animation: none; }
60
+ }
61
+ `;
62
+ /**
63
+ * A `Button` that performs native haptic feedback on click, with a matching
64
+ * press-and-jiggle animation so the tap reads even without hardware feedback.
65
+ */
66
+ function HapticButton({ pattern = 'generic', onPerformed, onClick, className, children, ...props }) {
67
+ const { perform } = useMoldableHaptics();
68
+ const [pressed, setPressed] = useState(false);
69
+ const onPerformedRef = useRef(onPerformed);
70
+ onPerformedRef.current = onPerformed;
71
+ const frameRef = useRef(0);
72
+ const timeoutRef = useRef(0);
73
+ useEffect(() => () => {
74
+ window.cancelAnimationFrame(frameRef.current);
75
+ window.clearTimeout(timeoutRef.current);
76
+ }, []);
77
+ const triggerPress = () => {
78
+ window.cancelAnimationFrame(frameRef.current);
79
+ window.clearTimeout(timeoutRef.current);
80
+ // Drop the attribute for a frame so rapid clicks restart the animation.
81
+ setPressed(false);
82
+ frameRef.current = window.requestAnimationFrame(() => {
83
+ setPressed(true);
84
+ timeoutRef.current = window.setTimeout(() => setPressed(false), 180);
85
+ });
86
+ };
87
+ const handleClick = (event) => {
88
+ triggerPress();
89
+ void perform(pattern).then((ok) => onPerformedRef.current?.(ok));
90
+ onClick?.(event);
91
+ };
92
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: HAPTIC_PRESS_STYLE }), _jsx(Button, { "data-slot": "haptic-button", "data-state": pressed ? 'pressed' : 'idle', className: cn('motion-reduce:animate-none', className), onClick: handleClick, ...props, children: children ?? (_jsxs(_Fragment, { children: [_jsx(Vibrate, {}), " Haptic"] })) })] }));
93
+ }
94
+ export { HapticButton };
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import { type MoldableHidDevice, type MoldableHidDeviceFilter, type MoldableHidInputReportEvent } from '../../lib/native-capabilities';
3
+ export type MoldableHidStatus = 'idle' | 'requesting' | 'error';
4
+ export interface UseMoldableHidOptions {
5
+ onInputReport?: (event: MoldableHidInputReportEvent) => void;
6
+ }
7
+ /**
8
+ * HID state machine behind `HidDevicePanel`: granted-device list, chooser
9
+ * requests, open/close with input-report streaming, and output reports. Use
10
+ * directly to build custom HID UI on the same lifecycle handling.
11
+ */
12
+ export declare function useMoldableHid(options?: UseMoldableHidOptions): {
13
+ devices: MoldableHidDevice[];
14
+ status: MoldableHidStatus;
15
+ error: Error | null;
16
+ openIds: string[];
17
+ entries: import("./stream-log").StreamLogEntry[];
18
+ deviceId: (device: MoldableHidDevice) => string;
19
+ refresh: () => Promise<void>;
20
+ request: (filters?: readonly MoldableHidDeviceFilter[]) => Promise<void>;
21
+ open: (device: MoldableHidDevice) => Promise<void>;
22
+ close: (device: MoldableHidDevice) => Promise<boolean>;
23
+ sendReport: (device: MoldableHidDevice, reportId: number, data: BufferSource) => Promise<boolean>;
24
+ sendFeatureReport: (device: MoldableHidDevice, reportId: number, data: BufferSource) => Promise<boolean>;
25
+ receiveFeatureReport: (device: MoldableHidDevice, reportId: number) => Promise<DataView<ArrayBufferLike> | undefined>;
26
+ forget: (device: MoldableHidDevice) => Promise<boolean>;
27
+ clearEntries: () => void;
28
+ };
29
+ export interface HidDevicePanelProps extends React.ComponentProps<'div'> {
30
+ /** Chooser filters (empty shows every device the runtime allows). */
31
+ filters?: readonly MoldableHidDeviceFilter[];
32
+ onInputReport?: (event: MoldableHidInputReportEvent) => void;
33
+ }
34
+ /**
35
+ * HID device panel: chooser access, granted-device list with open/close, and
36
+ * a live hex log of incoming input reports.
37
+ */
38
+ declare function HidDevicePanel({ className, filters, onInputReport, ...props }: HidDevicePanelProps): import("react/jsx-runtime").JSX.Element;
39
+ export { HidDevicePanel };
40
+ //# sourceMappingURL=hid-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hid-panel.d.ts","sourceRoot":"","sources":["../../../src/components/native-capabilities/hid-panel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAWjC,MAAM,+BAA+B,CAAA;AAsBtC,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAA;AA0D/D,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAA;CAC7D;AAOD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B;;;;;;uBAe1B,iBAAiB,KAAG,MAAM;;wBAyC9C,SAAS,uBAAuB,EAAE;mBA4BnC,iBAAiB;oBA+CjB,iBAAiB;yBAoBjB,iBAAiB,YAAY,MAAM,QAAQ,YAAY;gCAuBvD,iBAAiB,YAAY,MAAM,QAAQ,YAAY;mCAuBvD,iBAAiB,YAAY,MAAM;qBAsBnC,iBAAiB;;EAoDnC;AAED,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACtE,qEAAqE;IACrE,OAAO,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAA;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAA;CAC7D;AAyGD;;;GAGG;AACH,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,OAAO,EACP,aAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAgHrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}