@moldable-ai/ui 0.2.21 → 0.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/dist/catalog/catalog-coverage.d.ts +1 -1
  2. package/dist/catalog/catalog-manifest.d.ts +1 -1
  3. package/dist/catalog/catalog-manifest.js +1 -1
  4. package/dist/catalog/catalog-types.d.ts +7 -0
  5. package/dist/catalog/catalog-types.d.ts.map +1 -1
  6. package/dist/catalog/catalog-types.js +1 -0
  7. package/dist/catalog/component-catalog.d.ts +1 -1
  8. package/dist/catalog/component-catalog.js +2 -2
  9. package/dist/catalog/core-catalog-exclusions.d.ts +1 -1
  10. package/dist/catalog/core-catalog-exclusions.d.ts.map +1 -1
  11. package/dist/catalog/core-catalog-exclusions.js +1 -146
  12. package/dist/catalog/core-catalog.d.ts +1 -1
  13. package/dist/catalog/core-catalog.d.ts.map +1 -1
  14. package/dist/catalog/core-catalog.js +11 -7
  15. package/dist/catalog/core-collection-stories.d.ts +1 -1
  16. package/dist/catalog/core-collection-stories.d.ts.map +1 -1
  17. package/dist/catalog/core-collection-stories.js +41 -9
  18. package/dist/catalog/core-control-stories.d.ts +1 -1
  19. package/dist/catalog/core-control-stories.d.ts.map +1 -1
  20. package/dist/catalog/core-control-stories.js +53 -22
  21. package/dist/catalog/core-feedback-stories.d.ts +1 -1
  22. package/dist/catalog/core-feedback-stories.d.ts.map +1 -1
  23. package/dist/catalog/core-feedback-stories.js +89 -10
  24. package/dist/catalog/core-form-stories.d.ts +3 -0
  25. package/dist/catalog/core-form-stories.d.ts.map +1 -0
  26. package/dist/catalog/core-form-stories.js +56 -0
  27. package/dist/catalog/core-foundation-stories.d.ts +1 -1
  28. package/dist/catalog/core-foundation-stories.js +7 -7
  29. package/dist/catalog/core-layout-stories.d.ts +3 -0
  30. package/dist/catalog/core-layout-stories.d.ts.map +1 -0
  31. package/dist/catalog/core-layout-stories.js +78 -0
  32. package/dist/catalog/core-navigation-stories.d.ts +1 -1
  33. package/dist/catalog/core-navigation-stories.d.ts.map +1 -1
  34. package/dist/catalog/core-navigation-stories.js +25 -3
  35. package/dist/catalog/core-overlay-stories.d.ts +1 -1
  36. package/dist/catalog/core-overlay-stories.d.ts.map +1 -1
  37. package/dist/catalog/core-overlay-stories.js +113 -8
  38. package/dist/catalog/index.d.ts +6 -6
  39. package/dist/catalog/index.js +6 -6
  40. package/dist/components/app-error-boundary.d.ts.map +1 -1
  41. package/dist/components/app-error-boundary.js +4 -3
  42. package/dist/components/chat/chat-image-lightbox.js +3 -3
  43. package/dist/components/chat/chat-input.js +5 -5
  44. package/dist/components/chat/chat-message.js +17 -17
  45. package/dist/components/chat/chat-messages.d.ts +1 -1
  46. package/dist/components/chat/chat-messages.js +3 -3
  47. package/dist/components/chat/chat-panel.d.ts +6 -6
  48. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  49. package/dist/components/chat/chat-panel.js +33 -33
  50. package/dist/components/chat/checkpoint-badge.js +3 -3
  51. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  52. package/dist/components/chat/conversation-history.js +13 -13
  53. package/dist/components/chat/index.d.ts +20 -15
  54. package/dist/components/chat/index.d.ts.map +1 -1
  55. package/dist/components/chat/index.js +20 -15
  56. package/dist/components/chat/markdown.js +1 -1
  57. package/dist/components/chat/model-effort-selector.js +10 -10
  58. package/dist/components/chat/model-selector.js +4 -4
  59. package/dist/components/chat/reasoning-effort-selector.js +4 -4
  60. package/dist/components/chat/restore-dialog.js +3 -3
  61. package/dist/components/chat/thinking-timeline.js +2 -2
  62. package/dist/components/chat/tool-approval.d.ts +1 -1
  63. package/dist/components/chat/tool-approval.d.ts.map +1 -1
  64. package/dist/components/chat/tool-approval.js +9 -9
  65. package/dist/components/chat/tool-handlers.d.ts +2 -2
  66. package/dist/components/chat/tool-handlers.js +90 -90
  67. package/dist/components/chat/voice-orb-audio.d.ts +16 -0
  68. package/dist/components/chat/voice-orb-audio.d.ts.map +1 -0
  69. package/dist/components/chat/voice-orb-audio.js +110 -0
  70. package/dist/components/chat/voice-orb-renderer.d.ts +51 -0
  71. package/dist/components/chat/voice-orb-renderer.d.ts.map +1 -0
  72. package/dist/components/chat/voice-orb-renderer.js +410 -0
  73. package/dist/components/chat/voice-orb-shaders.d.ts +3 -0
  74. package/dist/components/chat/voice-orb-shaders.d.ts.map +1 -0
  75. package/dist/components/chat/voice-orb-shaders.js +355 -0
  76. package/dist/components/chat/voice-orb-types.d.ts +24 -0
  77. package/dist/components/chat/voice-orb-types.d.ts.map +1 -0
  78. package/dist/components/chat/voice-orb-types.js +73 -0
  79. package/dist/components/chat/voice-orb.d.ts +20 -0
  80. package/dist/components/chat/voice-orb.d.ts.map +1 -0
  81. package/dist/components/chat/voice-orb.js +67 -0
  82. package/dist/components/code-block.js +1 -1
  83. package/dist/components/hardware/bluetooth-panel.d.ts +2 -2
  84. package/dist/components/hardware/bluetooth-panel.js +10 -10
  85. package/dist/components/hardware/camera-preview.js +6 -6
  86. package/dist/components/hardware/capability-badge.d.ts +2 -2
  87. package/dist/components/hardware/capability-badge.js +2 -2
  88. package/dist/components/hardware/capability-matrix.d.ts +1 -1
  89. package/dist/components/hardware/capability-matrix.js +5 -5
  90. package/dist/components/hardware/clipboard-button.d.ts +1 -1
  91. package/dist/components/hardware/clipboard-button.js +2 -2
  92. package/dist/components/hardware/device-list.js +1 -1
  93. package/dist/components/hardware/display-map.d.ts +1 -1
  94. package/dist/components/hardware/display-map.js +7 -7
  95. package/dist/components/hardware/haptic-button.d.ts +2 -2
  96. package/dist/components/hardware/haptic-button.js +3 -3
  97. package/dist/components/hardware/hardware-panel.js +1 -1
  98. package/dist/components/hardware/hid-panel.d.ts +2 -2
  99. package/dist/components/hardware/hid-panel.js +10 -10
  100. package/dist/components/hardware/index.d.ts +26 -26
  101. package/dist/components/hardware/index.js +26 -26
  102. package/dist/components/hardware/live-indicator.js +1 -1
  103. package/dist/components/hardware/local-auth-button.d.ts +2 -2
  104. package/dist/components/hardware/local-auth-button.js +4 -4
  105. package/dist/components/hardware/location-panel.d.ts +1 -1
  106. package/dist/components/hardware/location-panel.js +6 -6
  107. package/dist/components/hardware/microphone-meter.js +7 -7
  108. package/dist/components/hardware/midi-monitor.d.ts +2 -2
  109. package/dist/components/hardware/midi-monitor.js +9 -9
  110. package/dist/components/hardware/notification-panel.d.ts +1 -1
  111. package/dist/components/hardware/notification-panel.js +8 -8
  112. package/dist/components/hardware/power-blocker-controller.d.ts +1 -1
  113. package/dist/components/hardware/power-blocker-controller.js +1 -1
  114. package/dist/components/hardware/power-panel.d.ts +1 -1
  115. package/dist/components/hardware/power-panel.js +9 -9
  116. package/dist/components/hardware/readout.js +1 -1
  117. package/dist/components/hardware/screen-share-preview.js +5 -5
  118. package/dist/components/hardware/secure-storage-panel.d.ts +1 -1
  119. package/dist/components/hardware/secure-storage-panel.js +9 -9
  120. package/dist/components/hardware/serial-console.d.ts +2 -2
  121. package/dist/components/hardware/serial-console.js +10 -10
  122. package/dist/components/hardware/shortcut-recorder.d.ts +1 -1
  123. package/dist/components/hardware/shortcut-recorder.js +4 -4
  124. package/dist/components/hardware/stream-log.js +1 -1
  125. package/dist/components/hardware/system-audio-monitor.d.ts +1 -1
  126. package/dist/components/hardware/system-audio-monitor.js +9 -9
  127. package/dist/components/hardware/usb-panel.d.ts +5 -5
  128. package/dist/components/hardware/usb-panel.js +10 -10
  129. package/dist/components/hardware/use-capability.d.ts +1 -1
  130. package/dist/components/hardware/use-capability.js +1 -1
  131. package/dist/components/markdown.js +5 -5
  132. package/dist/components/native-capabilities/bluetooth-panel.d.ts +2 -2
  133. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -1
  134. package/dist/components/native-capabilities/bluetooth-panel.js +17 -17
  135. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -1
  136. package/dist/components/native-capabilities/camera-preview.js +7 -7
  137. package/dist/components/native-capabilities/capability-badge.d.ts +2 -2
  138. package/dist/components/native-capabilities/capability-badge.js +4 -4
  139. package/dist/components/native-capabilities/capability-matrix.d.ts +1 -1
  140. package/dist/components/native-capabilities/capability-matrix.js +7 -7
  141. package/dist/components/native-capabilities/clipboard-button.d.ts +1 -1
  142. package/dist/components/native-capabilities/clipboard-button.js +2 -2
  143. package/dist/components/native-capabilities/device-list.js +4 -4
  144. package/dist/components/native-capabilities/display-map.d.ts +1 -1
  145. package/dist/components/native-capabilities/display-map.d.ts.map +1 -1
  146. package/dist/components/native-capabilities/display-map.js +11 -11
  147. package/dist/components/native-capabilities/haptic-button.d.ts +2 -2
  148. package/dist/components/native-capabilities/haptic-button.js +3 -3
  149. package/dist/components/native-capabilities/hid-panel.d.ts +2 -2
  150. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -1
  151. package/dist/components/native-capabilities/hid-panel.js +14 -14
  152. package/dist/components/native-capabilities/index.d.ts +26 -26
  153. package/dist/components/native-capabilities/index.js +26 -26
  154. package/dist/components/native-capabilities/live-indicator.js +3 -3
  155. package/dist/components/native-capabilities/local-auth-button.d.ts +2 -2
  156. package/dist/components/native-capabilities/local-auth-button.js +4 -4
  157. package/dist/components/native-capabilities/location-panel.d.ts +1 -1
  158. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -1
  159. package/dist/components/native-capabilities/location-panel.js +8 -8
  160. package/dist/components/native-capabilities/microphone-meter.js +9 -9
  161. package/dist/components/native-capabilities/midi-monitor.d.ts +2 -2
  162. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -1
  163. package/dist/components/native-capabilities/midi-monitor.js +11 -11
  164. package/dist/components/native-capabilities/native-capability-panel.js +6 -6
  165. package/dist/components/native-capabilities/notification-panel.d.ts +1 -1
  166. package/dist/components/native-capabilities/notification-panel.js +9 -9
  167. package/dist/components/native-capabilities/power-blocker-controller.d.ts +1 -1
  168. package/dist/components/native-capabilities/power-blocker-controller.js +1 -1
  169. package/dist/components/native-capabilities/power-panel.d.ts +1 -1
  170. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -1
  171. package/dist/components/native-capabilities/power-panel.js +12 -12
  172. package/dist/components/native-capabilities/readout.d.ts.map +1 -1
  173. package/dist/components/native-capabilities/readout.js +2 -2
  174. package/dist/components/native-capabilities/screen-share-preview.js +6 -6
  175. package/dist/components/native-capabilities/secure-storage-panel.d.ts +1 -1
  176. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -1
  177. package/dist/components/native-capabilities/secure-storage-panel.js +11 -11
  178. package/dist/components/native-capabilities/serial-console.d.ts +2 -2
  179. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -1
  180. package/dist/components/native-capabilities/serial-console.js +11 -11
  181. package/dist/components/native-capabilities/shortcut-recorder.d.ts +1 -1
  182. package/dist/components/native-capabilities/shortcut-recorder.js +5 -5
  183. package/dist/components/native-capabilities/stream-log.js +3 -3
  184. package/dist/components/native-capabilities/system-audio-monitor.d.ts +1 -1
  185. package/dist/components/native-capabilities/system-audio-monitor.js +12 -12
  186. package/dist/components/native-capabilities/usb-panel.d.ts +5 -5
  187. package/dist/components/native-capabilities/usb-panel.js +15 -15
  188. package/dist/components/native-capabilities/use-capability.d.ts +1 -1
  189. package/dist/components/native-capabilities/use-capability.js +1 -1
  190. package/dist/components/rich-media-player.js +3 -3
  191. package/dist/components/ui/accordion.js +3 -3
  192. package/dist/components/ui/alert-dialog.d.ts +5 -3
  193. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  194. package/dist/components/ui/alert-dialog.js +20 -10
  195. package/dist/components/ui/alert.d.ts +2 -2
  196. package/dist/components/ui/alert.d.ts.map +1 -1
  197. package/dist/components/ui/alert.js +11 -11
  198. package/dist/components/ui/app-frame.d.ts +7 -1
  199. package/dist/components/ui/app-frame.d.ts.map +1 -1
  200. package/dist/components/ui/app-frame.js +52 -16
  201. package/dist/components/ui/avatar.js +5 -5
  202. package/dist/components/ui/badge.d.ts +1 -1
  203. package/dist/components/ui/badge.js +4 -4
  204. package/dist/components/ui/breadcrumb.js +2 -2
  205. package/dist/components/ui/button-group.d.ts +1 -1
  206. package/dist/components/ui/button-group.js +4 -4
  207. package/dist/components/ui/button.d.ts +6 -4
  208. package/dist/components/ui/button.d.ts.map +1 -1
  209. package/dist/components/ui/button.js +50 -18
  210. package/dist/components/ui/calendar.d.ts +1 -1
  211. package/dist/components/ui/calendar.d.ts.map +1 -1
  212. package/dist/components/ui/calendar.js +15 -15
  213. package/dist/components/ui/card.js +3 -3
  214. package/dist/components/ui/carousel.d.ts +1 -1
  215. package/dist/components/ui/carousel.js +4 -4
  216. package/dist/components/ui/chart.js +5 -5
  217. package/dist/components/ui/checkbox.d.ts.map +1 -1
  218. package/dist/components/ui/checkbox.js +2 -2
  219. package/dist/components/ui/collapsible.js +3 -3
  220. package/dist/components/ui/color-well.js +2 -2
  221. package/dist/components/ui/combobox.js +9 -9
  222. package/dist/components/ui/command.d.ts +1 -1
  223. package/dist/components/ui/command.d.ts.map +1 -1
  224. package/dist/components/ui/command.js +9 -9
  225. package/dist/components/ui/confirm-dialog.d.ts +1 -1
  226. package/dist/components/ui/confirm-dialog.d.ts.map +1 -1
  227. package/dist/components/ui/confirm-dialog.js +2 -2
  228. package/dist/components/ui/context-menu.d.ts +16 -5
  229. package/dist/components/ui/context-menu.d.ts.map +1 -1
  230. package/dist/components/ui/context-menu.js +92 -16
  231. package/dist/components/ui/date-field.d.ts.map +1 -1
  232. package/dist/components/ui/date-field.js +8 -8
  233. package/dist/components/ui/date-picker.d.ts +2 -2
  234. package/dist/components/ui/date-picker.js +7 -7
  235. package/dist/components/ui/dialog-primary-action.d.ts +4 -0
  236. package/dist/components/ui/dialog-primary-action.d.ts.map +1 -0
  237. package/dist/components/ui/dialog-primary-action.js +37 -0
  238. package/dist/components/ui/dialog.d.ts +6 -2
  239. package/dist/components/ui/dialog.d.ts.map +1 -1
  240. package/dist/components/ui/dialog.js +20 -7
  241. package/dist/components/ui/drawer.js +4 -4
  242. package/dist/components/ui/dropdown-menu.d.ts +15 -5
  243. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  244. package/dist/components/ui/dropdown-menu.js +98 -16
  245. package/dist/components/ui/edge-fade.js +1 -1
  246. package/dist/components/ui/empty.d.ts +1 -1
  247. package/dist/components/ui/empty.js +5 -5
  248. package/dist/components/ui/error-boundary-view.d.ts +12 -0
  249. package/dist/components/ui/error-boundary-view.d.ts.map +1 -0
  250. package/dist/components/ui/error-boundary-view.js +8 -0
  251. package/dist/components/ui/field.d.ts +1 -1
  252. package/dist/components/ui/field.d.ts.map +1 -1
  253. package/dist/components/ui/field.js +9 -9
  254. package/dist/components/ui/form.js +4 -4
  255. package/dist/components/ui/grid.d.ts.map +1 -1
  256. package/dist/components/ui/grid.js +5 -5
  257. package/dist/components/ui/hover-card.js +2 -2
  258. package/dist/components/ui/icon-button.d.ts +1 -1
  259. package/dist/components/ui/icon-button.d.ts.map +1 -1
  260. package/dist/components/ui/icon-button.js +3 -4
  261. package/dist/components/ui/index.d.ts +77 -76
  262. package/dist/components/ui/index.d.ts.map +1 -1
  263. package/dist/components/ui/index.js +77 -76
  264. package/dist/components/ui/input-group.d.ts +3 -3
  265. package/dist/components/ui/input-group.js +14 -14
  266. package/dist/components/ui/input-otp.js +3 -3
  267. package/dist/components/ui/input.js +2 -2
  268. package/dist/components/ui/inspector.d.ts +1 -1
  269. package/dist/components/ui/inspector.js +6 -6
  270. package/dist/components/ui/item.d.ts +1 -1
  271. package/dist/components/ui/item.js +7 -7
  272. package/dist/components/ui/kbd.js +2 -2
  273. package/dist/components/ui/label.js +2 -2
  274. package/dist/components/ui/list.d.ts.map +1 -1
  275. package/dist/components/ui/list.js +5 -5
  276. package/dist/components/ui/material.js +3 -3
  277. package/dist/components/ui/menu-items.d.ts +28 -0
  278. package/dist/components/ui/menu-items.d.ts.map +1 -0
  279. package/dist/components/ui/menu-items.js +111 -0
  280. package/dist/components/ui/menubar.js +11 -11
  281. package/dist/components/ui/message-scroller-controller.d.ts +1 -1
  282. package/dist/components/ui/message-scroller-controller.js +1 -1
  283. package/dist/components/ui/message-scroller-primitive.d.ts +1 -1
  284. package/dist/components/ui/message-scroller-primitive.js +1 -1
  285. package/dist/components/ui/message-scroller.d.ts +2 -2
  286. package/dist/components/ui/message-scroller.js +3 -3
  287. package/dist/components/ui/navigation-button-group.d.ts +2 -2
  288. package/dist/components/ui/navigation-button-group.js +2 -2
  289. package/dist/components/ui/navigation-menu.js +6 -6
  290. package/dist/components/ui/notification-dot.js +2 -2
  291. package/dist/components/ui/number-input.js +8 -8
  292. package/dist/components/ui/pagination.d.ts +1 -1
  293. package/dist/components/ui/pagination.js +2 -2
  294. package/dist/components/ui/panel.d.ts +1 -1
  295. package/dist/components/ui/panel.js +3 -3
  296. package/dist/components/ui/popover.d.ts +1 -1
  297. package/dist/components/ui/popover.js +3 -3
  298. package/dist/components/ui/progress.js +2 -2
  299. package/dist/components/ui/radio-group.d.ts.map +1 -1
  300. package/dist/components/ui/radio-group.js +2 -2
  301. package/dist/components/ui/resizable.d.ts +1 -1
  302. package/dist/components/ui/resizable.d.ts.map +1 -1
  303. package/dist/components/ui/resizable.js +15 -4
  304. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  305. package/dist/components/ui/scroll-area.js +3 -3
  306. package/dist/components/ui/search-field.js +7 -7
  307. package/dist/components/ui/segmented-control.js +9 -9
  308. package/dist/components/ui/select.d.ts.map +1 -1
  309. package/dist/components/ui/select.js +6 -6
  310. package/dist/components/ui/separator.js +1 -1
  311. package/dist/components/ui/sheet.js +4 -4
  312. package/dist/components/ui/sidebar.d.ts +5 -5
  313. package/dist/components/ui/sidebar.d.ts.map +1 -1
  314. package/dist/components/ui/sidebar.js +111 -24
  315. package/dist/components/ui/skeleton.js +2 -2
  316. package/dist/components/ui/slider.d.ts +3 -1
  317. package/dist/components/ui/slider.d.ts.map +1 -1
  318. package/dist/components/ui/slider.js +3 -3
  319. package/dist/components/ui/sonner.js +1 -1
  320. package/dist/components/ui/spinner.d.ts.map +1 -1
  321. package/dist/components/ui/spinner.js +2 -2
  322. package/dist/components/ui/split-view.js +1 -1
  323. package/dist/components/ui/status.d.ts +1 -1
  324. package/dist/components/ui/status.d.ts.map +1 -1
  325. package/dist/components/ui/status.js +10 -9
  326. package/dist/components/ui/switch.js +2 -2
  327. package/dist/components/ui/table.d.ts.map +1 -1
  328. package/dist/components/ui/table.js +7 -7
  329. package/dist/components/ui/tabs.js +3 -3
  330. package/dist/components/ui/text.d.ts +2 -2
  331. package/dist/components/ui/text.js +19 -19
  332. package/dist/components/ui/textarea.js +2 -2
  333. package/dist/components/ui/toggle-group.d.ts +1 -1
  334. package/dist/components/ui/toggle-group.js +4 -4
  335. package/dist/components/ui/toggle.d.ts +1 -1
  336. package/dist/components/ui/toggle.js +10 -10
  337. package/dist/components/ui/toolbar.d.ts +7 -7
  338. package/dist/components/ui/toolbar.js +7 -7
  339. package/dist/components/ui/tooltip.d.ts +2 -2
  340. package/dist/components/ui/tooltip.js +5 -5
  341. package/dist/index.d.ts +21 -15
  342. package/dist/index.d.ts.map +1 -1
  343. package/dist/index.js +22 -15
  344. package/dist/lib/frame-lifecycle.d.ts +49 -0
  345. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  346. package/dist/lib/frame-lifecycle.js +163 -1
  347. package/dist/lib/host-date-time-picker.d.ts +36 -0
  348. package/dist/lib/host-date-time-picker.d.ts.map +1 -0
  349. package/dist/lib/host-date-time-picker.js +162 -0
  350. package/dist/lib/host-file-dialog.d.ts +66 -0
  351. package/dist/lib/host-file-dialog.d.ts.map +1 -0
  352. package/dist/lib/host-file-dialog.js +221 -0
  353. package/dist/lib/host-native-menu.d.ts +116 -0
  354. package/dist/lib/host-native-menu.d.ts.map +1 -0
  355. package/dist/lib/host-native-menu.js +242 -0
  356. package/dist/lib/host-services.d.ts +13 -0
  357. package/dist/lib/host-services.d.ts.map +1 -0
  358. package/dist/lib/host-services.js +161 -0
  359. package/dist/lib/host-share.d.ts +39 -0
  360. package/dist/lib/host-share.d.ts.map +1 -0
  361. package/dist/lib/host-share.js +161 -0
  362. package/dist/lib/host-web-surface.d.ts +31 -0
  363. package/dist/lib/host-web-surface.d.ts.map +1 -0
  364. package/dist/lib/host-web-surface.js +116 -0
  365. package/dist/lib/native-capabilities/access.d.ts +2 -2
  366. package/dist/lib/native-capabilities/access.js +2 -2
  367. package/dist/lib/native-capabilities/bluetooth-access.d.ts +1 -1
  368. package/dist/lib/native-capabilities/bluetooth-access.js +2 -2
  369. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +1 -1
  370. package/dist/lib/native-capabilities/bluetooth-connection.js +1 -1
  371. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +1 -1
  372. package/dist/lib/native-capabilities/bluetooth-gatt.js +1 -1
  373. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +2 -2
  374. package/dist/lib/native-capabilities/bluetooth-internal.js +1 -1
  375. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +2 -2
  376. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +2 -2
  377. package/dist/lib/native-capabilities/bluetooth.d.ts +6 -6
  378. package/dist/lib/native-capabilities/bluetooth.js +4 -4
  379. package/dist/lib/native-capabilities/bridge.d.ts +1 -1
  380. package/dist/lib/native-capabilities/bridge.js +2 -2
  381. package/dist/lib/native-capabilities/capabilities.d.ts +1 -1
  382. package/dist/lib/native-capabilities/capabilities.js +1 -1
  383. package/dist/lib/native-capabilities/clipboard.js +2 -2
  384. package/dist/lib/native-capabilities/device-io-errors.d.ts +1 -1
  385. package/dist/lib/native-capabilities/device-io-errors.js +1 -1
  386. package/dist/lib/native-capabilities/displays.d.ts +1 -1
  387. package/dist/lib/native-capabilities/displays.js +1 -1
  388. package/dist/lib/native-capabilities/global-shortcuts.d.ts +2 -2
  389. package/dist/lib/native-capabilities/global-shortcuts.js +1 -1
  390. package/dist/lib/native-capabilities/haptics.d.ts +1 -1
  391. package/dist/lib/native-capabilities/haptics.js +1 -1
  392. package/dist/lib/native-capabilities/hid-native.d.ts +2 -2
  393. package/dist/lib/native-capabilities/hid-native.js +3 -3
  394. package/dist/lib/native-capabilities/hid.js +5 -5
  395. package/dist/lib/native-capabilities/index.d.ts +39 -39
  396. package/dist/lib/native-capabilities/index.js +21 -21
  397. package/dist/lib/native-capabilities/local-authentication.d.ts +1 -1
  398. package/dist/lib/native-capabilities/local-authentication.js +1 -1
  399. package/dist/lib/native-capabilities/location.js +1 -1
  400. package/dist/lib/native-capabilities/media-permissions.d.ts +1 -1
  401. package/dist/lib/native-capabilities/media-permissions.js +1 -1
  402. package/dist/lib/native-capabilities/media.d.ts +1 -1
  403. package/dist/lib/native-capabilities/media.js +2 -2
  404. package/dist/lib/native-capabilities/midi-access.d.ts +1 -1
  405. package/dist/lib/native-capabilities/midi-access.js +3 -3
  406. package/dist/lib/native-capabilities/midi-internal.d.ts +1 -1
  407. package/dist/lib/native-capabilities/midi-internal.js +1 -1
  408. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +1 -1
  409. package/dist/lib/native-capabilities/midi-native-fallback.js +2 -2
  410. package/dist/lib/native-capabilities/midi-ports.d.ts +1 -1
  411. package/dist/lib/native-capabilities/midi-ports.js +1 -1
  412. package/dist/lib/native-capabilities/midi.d.ts +5 -5
  413. package/dist/lib/native-capabilities/midi.js +3 -3
  414. package/dist/lib/native-capabilities/native-device-io.d.ts +1 -1
  415. package/dist/lib/native-capabilities/native-device-io.js +1 -1
  416. package/dist/lib/native-capabilities/native-device-lifecycle.js +1 -1
  417. package/dist/lib/native-capabilities/notifications.d.ts +2 -2
  418. package/dist/lib/native-capabilities/notifications.js +1 -1
  419. package/dist/lib/native-capabilities/power-session.d.ts +2 -2
  420. package/dist/lib/native-capabilities/power-session.js +1 -1
  421. package/dist/lib/native-capabilities/secure-storage.d.ts +1 -1
  422. package/dist/lib/native-capabilities/secure-storage.js +1 -1
  423. package/dist/lib/native-capabilities/serial-native.d.ts +2 -2
  424. package/dist/lib/native-capabilities/serial-native.js +3 -3
  425. package/dist/lib/native-capabilities/serial.js +5 -5
  426. package/dist/lib/native-capabilities/system-audio.d.ts +1 -1
  427. package/dist/lib/native-capabilities/system-audio.js +1 -1
  428. package/dist/lib/native-capabilities/usb-native.d.ts +2 -2
  429. package/dist/lib/native-capabilities/usb-native.js +3 -3
  430. package/dist/lib/native-capabilities/usb.js +5 -5
  431. package/dist/lib/native-hardware/bluetooth-access.d.ts +1 -1
  432. package/dist/lib/native-hardware/bluetooth-access.js +1 -1
  433. package/dist/lib/native-hardware/bluetooth-connection.d.ts +1 -1
  434. package/dist/lib/native-hardware/bluetooth-connection.js +1 -1
  435. package/dist/lib/native-hardware/bluetooth-gatt.d.ts +1 -1
  436. package/dist/lib/native-hardware/bluetooth-gatt.js +1 -1
  437. package/dist/lib/native-hardware/bluetooth-internal.d.ts +2 -2
  438. package/dist/lib/native-hardware/bluetooth-internal.js +1 -1
  439. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts +2 -2
  440. package/dist/lib/native-hardware/bluetooth-native-fallback.js +2 -2
  441. package/dist/lib/native-hardware/bluetooth.d.ts +6 -6
  442. package/dist/lib/native-hardware/bluetooth.js +4 -4
  443. package/dist/lib/native-hardware/bridge.d.ts +1 -1
  444. package/dist/lib/native-hardware/bridge.js +2 -2
  445. package/dist/lib/native-hardware/capabilities.d.ts +1 -1
  446. package/dist/lib/native-hardware/capabilities.js +1 -1
  447. package/dist/lib/native-hardware/clipboard.js +1 -1
  448. package/dist/lib/native-hardware/device-io-errors.d.ts +1 -1
  449. package/dist/lib/native-hardware/device-io-errors.js +1 -1
  450. package/dist/lib/native-hardware/displays.d.ts +1 -1
  451. package/dist/lib/native-hardware/displays.js +1 -1
  452. package/dist/lib/native-hardware/global-shortcuts.d.ts +2 -2
  453. package/dist/lib/native-hardware/global-shortcuts.js +1 -1
  454. package/dist/lib/native-hardware/haptics.d.ts +1 -1
  455. package/dist/lib/native-hardware/haptics.js +1 -1
  456. package/dist/lib/native-hardware/hid-native.d.ts +2 -2
  457. package/dist/lib/native-hardware/hid-native.js +3 -3
  458. package/dist/lib/native-hardware/hid.js +4 -4
  459. package/dist/lib/native-hardware/index.d.ts +37 -37
  460. package/dist/lib/native-hardware/index.js +20 -20
  461. package/dist/lib/native-hardware/local-authentication.d.ts +1 -1
  462. package/dist/lib/native-hardware/local-authentication.js +1 -1
  463. package/dist/lib/native-hardware/location.js +1 -1
  464. package/dist/lib/native-hardware/media-permissions.d.ts +1 -1
  465. package/dist/lib/native-hardware/media-permissions.js +1 -1
  466. package/dist/lib/native-hardware/media.d.ts +1 -1
  467. package/dist/lib/native-hardware/media.js +1 -1
  468. package/dist/lib/native-hardware/midi-access.d.ts +1 -1
  469. package/dist/lib/native-hardware/midi-access.js +2 -2
  470. package/dist/lib/native-hardware/midi-internal.d.ts +1 -1
  471. package/dist/lib/native-hardware/midi-internal.js +1 -1
  472. package/dist/lib/native-hardware/midi-native-fallback.d.ts +1 -1
  473. package/dist/lib/native-hardware/midi-native-fallback.js +2 -2
  474. package/dist/lib/native-hardware/midi-ports.d.ts +1 -1
  475. package/dist/lib/native-hardware/midi-ports.js +1 -1
  476. package/dist/lib/native-hardware/midi.d.ts +5 -5
  477. package/dist/lib/native-hardware/midi.js +3 -3
  478. package/dist/lib/native-hardware/native-device-io.d.ts +1 -1
  479. package/dist/lib/native-hardware/native-device-io.js +1 -1
  480. package/dist/lib/native-hardware/native-device-lifecycle.js +1 -1
  481. package/dist/lib/native-hardware/notifications.d.ts +2 -2
  482. package/dist/lib/native-hardware/notifications.js +1 -1
  483. package/dist/lib/native-hardware/power-session.d.ts +2 -2
  484. package/dist/lib/native-hardware/power-session.js +1 -1
  485. package/dist/lib/native-hardware/secure-storage.d.ts +1 -1
  486. package/dist/lib/native-hardware/secure-storage.js +1 -1
  487. package/dist/lib/native-hardware/serial-native.d.ts +2 -2
  488. package/dist/lib/native-hardware/serial-native.js +3 -3
  489. package/dist/lib/native-hardware/serial.js +4 -4
  490. package/dist/lib/native-hardware/system-audio.d.ts +1 -1
  491. package/dist/lib/native-hardware/system-audio.js +1 -1
  492. package/dist/lib/native-hardware/usb-native.d.ts +2 -2
  493. package/dist/lib/native-hardware/usb-native.js +3 -3
  494. package/dist/lib/native-hardware/usb.js +4 -4
  495. package/dist/lib/theme.js +1 -1
  496. package/docs/README.md +1 -0
  497. package/docs/design-tokens.md +28 -6
  498. package/docs/foundations.md +4 -2
  499. package/docs/visual-regression.md +78 -0
  500. package/package.json +15 -4
  501. package/src/components/ui/alert-dialog.md +27 -0
  502. package/src/components/ui/button.md +10 -3
  503. package/src/components/ui/confirm-dialog.md +97 -0
  504. package/src/components/ui/context-menu.md +158 -0
  505. package/src/components/ui/dialog.md +23 -4
  506. package/src/components/ui/dropdown-menu.md +165 -0
  507. package/src/components/ui/error-boundary-view.md +98 -0
  508. package/src/components/ui/hover-card.md +90 -0
  509. package/src/components/ui/select.md +111 -0
  510. package/src/lib/host-date-time-picker.md +29 -0
  511. package/src/lib/host-file-dialog.md +76 -0
  512. package/src/lib/host-native-menu.md +67 -0
  513. package/src/lib/host-share.md +36 -0
  514. package/src/lib/host-web-surface.md +66 -0
  515. package/src/styles/index.css +141 -68
@@ -1,14 +1,53 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CircleAlertIcon, InboxIcon } from 'lucide-react';
3
- import { Alert, AlertDescription, AlertTitle } from '../components/ui/alert';
4
- import { Avatar, AvatarBadge, AvatarFallback } from '../components/ui/avatar';
5
- import { Badge } from '../components/ui/badge';
6
- import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, } from '../components/ui/empty';
7
- import { NotificationDot } from '../components/ui/notification-dot';
8
- import { Progress } from '../components/ui/progress';
9
- import { Skeleton } from '../components/ui/skeleton';
10
- import { Spinner } from '../components/ui/spinner';
11
- import { Status } from '../components/ui/status';
3
+ import * as React from 'react';
4
+ import { ThemeProvider } from '../lib/theme.js';
5
+ import { Alert, AlertDescription, AlertTitle } from '../components/ui/alert.js';
6
+ import { Avatar, AvatarBadge, AvatarFallback } from '../components/ui/avatar.js';
7
+ import { Badge } from '../components/ui/badge.js';
8
+ import { EdgeFade } from '../components/ui/edge-fade.js';
9
+ import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, } from '../components/ui/empty.js';
10
+ import { ErrorBoundaryView } from '../components/ui/error-boundary-view.js';
11
+ import { Kbd, KbdGroup } from '../components/ui/kbd.js';
12
+ import { MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, } from '../components/ui/message-scroller.js';
13
+ import { NotificationDot } from '../components/ui/notification-dot.js';
14
+ import { Progress } from '../components/ui/progress.js';
15
+ import { Skeleton } from '../components/ui/skeleton.js';
16
+ import { Toaster, toast } from '../components/ui/sonner.js';
17
+ import { Spinner } from '../components/ui/spinner.js';
18
+ import { Status } from '../components/ui/status.js';
19
+ function StaticToasts() {
20
+ React.useEffect(() => {
21
+ const frame = requestAnimationFrame(() => {
22
+ toast.success('Workspace synced', {
23
+ id: 'catalog-success',
24
+ description: 'All local changes are backed up.',
25
+ duration: Number.POSITIVE_INFINITY,
26
+ });
27
+ toast('Changes staged', {
28
+ id: 'catalog-action',
29
+ description: 'The release is ready to review.',
30
+ action: {
31
+ label: 'Undo',
32
+ onClick: () => undefined,
33
+ },
34
+ duration: Number.POSITIVE_INFINITY,
35
+ });
36
+ toast.error('Upload paused', {
37
+ id: 'catalog-destructive',
38
+ description: 'Reconnect to continue.',
39
+ duration: Number.POSITIVE_INFINITY,
40
+ });
41
+ });
42
+ return () => {
43
+ cancelAnimationFrame(frame);
44
+ toast.dismiss('catalog-success');
45
+ toast.dismiss('catalog-action');
46
+ toast.dismiss('catalog-destructive');
47
+ };
48
+ }, []);
49
+ return _jsx(Toaster, { visibleToasts: 3, position: "bottom-right", expand: true });
50
+ }
12
51
  export const coreFeedbackSection = {
13
52
  id: 'feedback',
14
53
  title: 'Feedback',
@@ -18,7 +57,7 @@ export const coreFeedbackSection = {
18
57
  title: 'Status and badges',
19
58
  components: ['avatar', 'badge', 'notification-dot', 'status'],
20
59
  viewports: ['narrow'],
21
- render: () => (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Avatar, { children: [_jsx(AvatarFallback, { children: "RM" }), _jsx(AvatarBadge, {})] }), _jsx(Status, { variant: "running", children: "Running" }), _jsx(Badge, { variant: "secondary", children: "Draft" }), _jsxs(Badge, { variant: "outline", className: "gap-1.5", children: [_jsx(NotificationDot, {}), "New"] })] })),
60
+ render: () => (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Avatar, { children: [_jsx(AvatarFallback, { children: "RM" }), _jsx(AvatarBadge, {})] }), _jsx(Status, { variant: "success", children: "Success" }), _jsx(Status, { variant: "info", children: "Info" }), _jsx(Status, { variant: "neutral", children: "Neutral" }), _jsx(Status, { variant: "pending", children: "Pending" }), _jsx(Badge, { variant: "secondary", children: "Draft" }), _jsxs(Badge, { variant: "outline", className: "gap-1.5", children: [_jsx(NotificationDot, {}), "New"] })] })),
22
61
  },
23
62
  {
24
63
  id: 'semantic-alert',
@@ -46,5 +85,45 @@ export const coreFeedbackSection = {
46
85
  accessibilityModes: ['standard', 'reduced-motion'],
47
86
  render: () => (_jsxs("div", { className: "grid gap-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [_jsx(Spinner, {}), "Syncing changes"] }), _jsx(Progress, { "aria-label": "Sync progress", value: 64 }), _jsxs("div", { className: "grid gap-2", children: [_jsx(Skeleton, { className: "h-3 w-3/4" }), _jsx(Skeleton, { className: "h-3 w-1/2" })] })] })),
48
87
  },
88
+ {
89
+ id: 'static-toasts',
90
+ title: 'Static toast stack',
91
+ components: ['sonner'],
92
+ render: () => (_jsxs(ThemeProvider, { children: [_jsx("div", { className: "text-muted-foreground h-56 text-sm", children: "Toasts are mounted at the viewport edge." }), _jsx(StaticToasts, {})] })),
93
+ },
94
+ {
95
+ id: 'keyboard-shortcuts',
96
+ title: 'Keyboard shortcuts',
97
+ components: ['kbd'],
98
+ render: () => (_jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm", children: [_jsxs("span", { className: "flex items-center gap-2", children: ["Commands", _jsxs(KbdGroup, { children: [_jsx(Kbd, { children: "\u2318" }), _jsx(Kbd, { children: "K" })] })] }), _jsxs("span", { className: "flex items-center gap-2", children: ["Search", _jsx(Kbd, { children: "/" })] }), _jsxs("span", { className: "flex items-center gap-2", children: ["Dismiss", _jsx(Kbd, { children: "Esc" })] })] })),
99
+ },
100
+ {
101
+ id: 'error-boundary',
102
+ title: 'Error boundary view',
103
+ components: ['error-boundary-view'],
104
+ render: () => (_jsx(ErrorBoundaryView, { className: "min-h-64", title: "Calendar could not load", message: "Your data is safe. Retry the local view.", details: "RenderError: calendar view unavailable", onRetry: () => undefined })),
105
+ },
106
+ {
107
+ id: 'edge-fades',
108
+ title: 'Overflow edge fades',
109
+ components: ['edge-fade'],
110
+ render: () => (_jsxs("div", { className: "border-border relative h-48 overflow-hidden rounded-md border", children: [_jsx("div", { className: "grid gap-3 p-4", children: ['Today', 'Planning', 'Review', 'Archive', 'Later'].map((label) => (_jsx("div", { className: "bg-card rounded-md border px-3 py-2 text-sm", children: label }, label))) }), _jsx(EdgeFade, { edge: "top", size: "sm" }), _jsx(EdgeFade, { edge: "bottom", size: "lg" })] })),
111
+ },
112
+ {
113
+ id: 'message-scroller-frame',
114
+ title: 'Static message scroller',
115
+ components: ['message-scroller'],
116
+ render: () => (_jsx(MessageScrollerProvider, { defaultScrollPosition: "start", children: _jsxs(MessageScroller, { className: "border-border h-56 rounded-md border", children: [_jsx(MessageScrollerViewport, { children: _jsx(MessageScrollerContent, { className: "gap-3 p-3", children: [
117
+ ['user', 'Create a quiet weekly planner.'],
118
+ [
119
+ 'assistant',
120
+ 'I added a focused week view and quick capture.',
121
+ ],
122
+ ['user', 'Keep completed tasks visible.'],
123
+ ['assistant', 'Completed tasks now remain grouped below.'],
124
+ ].map(([role, message], index) => (_jsx(MessageScrollerItem, { messageId: `catalog-${index}`, className: role === 'user'
125
+ ? 'bg-muted ml-8 rounded-md p-3 text-sm'
126
+ : 'mr-8 p-3 text-sm', children: message }, message))) }) }), _jsx(MessageScrollerButton, { direction: "end", behavior: "auto" })] }) })),
127
+ },
49
128
  ],
50
129
  };
@@ -0,0 +1,3 @@
1
+ import type { CatalogSectionDefinition } from './catalog-types.js';
2
+ export declare const coreFormsSection: CatalogSectionDefinition;
3
+ //# sourceMappingURL=core-form-stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-form-stories.d.ts","sourceRoot":"","sources":["../../src/catalog/core-form-stories.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAO/D,eAAO,MAAM,gBAAgB,EAAE,wBAiK9B,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Calendar } from '../components/ui/calendar.js';
3
+ import { ColorWell } from '../components/ui/color-well.js';
4
+ import { DatePicker } from '../components/ui/date-picker.js';
5
+ import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, } from '../components/ui/input-otp.js';
6
+ import { NumberInput } from '../components/ui/number-input.js';
7
+ import { Slider } from '../components/ui/slider.js';
8
+ import { enUS } from 'date-fns/locale';
9
+ const selectedDate = new Date('2026-07-26T12:00:00');
10
+ const rangeStart = new Date('2026-07-21T12:00:00');
11
+ const rangeEnd = new Date('2026-07-26T12:00:00');
12
+ export const coreFormsSection = {
13
+ id: 'forms-and-values',
14
+ title: 'Forms and values',
15
+ description: 'Frozen calendar, segmented-value, stepper, slider, and color fixtures.',
16
+ stories: [
17
+ {
18
+ id: 'calendar-month',
19
+ title: 'Calendar month and range',
20
+ components: ['calendar'],
21
+ render: () => (_jsxs("div", { className: "flex flex-wrap items-start gap-4", children: [_jsx(Calendar, { "aria-label": "July 2026", mode: "single", locale: enUS, month: selectedDate, selected: selectedDate, disabled: { before: rangeStart } }), _jsx(Calendar, { "aria-label": "July 2026 date range", mode: "range", locale: enUS, month: selectedDate, selected: { from: rangeStart, to: rangeEnd } })] })),
22
+ },
23
+ {
24
+ id: 'date-picker-open',
25
+ title: 'Open date picker',
26
+ components: ['date-picker'],
27
+ render: () => (_jsx("div", { className: "flex h-[25rem] items-start justify-center pt-2", children: _jsx(DatePicker, { "aria-label": "Due date", open: true, value: "2026-07-26", locale: enUS, min: "2026-07-20", max: "2026-08-10", clearable: true, onOpenChange: () => undefined }) })),
28
+ },
29
+ {
30
+ id: 'input-otp-values',
31
+ title: 'One-time code',
32
+ components: ['input-otp'],
33
+ liveStates: ['focus'],
34
+ render: () => (_jsxs(InputOTP, { "data-state-target": "focus", "aria-label": "Verification code", maxLength: 6, value: "4812", onChange: () => undefined, children: [_jsx(InputOTPGroup, { children: [0, 1, 2].map((index) => (_jsx(InputOTPSlot, { index: index }, index))) }), _jsx(InputOTPSeparator, {}), _jsx(InputOTPGroup, { children: [3, 4, 5].map((index) => (_jsx(InputOTPSlot, { index: index }, index))) })] })),
35
+ },
36
+ {
37
+ id: 'slider-range',
38
+ title: 'Slider range with multiple thumbs',
39
+ components: ['slider'],
40
+ render: () => (_jsxs("div", { className: "grid max-w-md gap-5", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex justify-between text-sm", children: [_jsx("span", { children: "Quiet hours" }), _jsx("span", { className: "text-muted-foreground", children: "22:00\u201307:00" })] }), _jsx(Slider, { "aria-label": "Quiet hours", value: [28, 78], thumbAriaLabels: ['Quiet hours start', 'Quiet hours end'] })] }), _jsx(Slider, { "aria-label": "Disabled volume", value: [45], thumbAriaLabels: ['Volume'], disabled: true })] })),
41
+ },
42
+ {
43
+ id: 'number-input-steppers',
44
+ title: 'Number input stepper states',
45
+ components: ['number-input'],
46
+ render: () => (_jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx(NumberInput, { "aria-label": "Session duration", value: 25, min: 5, max: 60, step: 5, unit: "min", onValueChange: () => undefined, className: "w-36" }), _jsx(NumberInput, { "aria-label": "Maximum collaborators", value: 10, min: 1, max: 10, onValueChange: () => undefined, className: "w-28" }), _jsx(NumberInput, { "aria-label": "Disabled estimate", value: 3, unit: "hrs", disabled: true, className: "w-32" })] })),
47
+ },
48
+ {
49
+ id: 'color-well-values',
50
+ title: 'Color wells',
51
+ components: ['color-well'],
52
+ liveStates: ['focus'],
53
+ render: () => (_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(ColorWell, { "data-state-target": "focus", "aria-label": "Project color", value: "#ff6b4a", onValueChange: () => undefined }), _jsx(ColorWell, { "aria-label": "No color", value: null, readOnly: true }), _jsx(ColorWell, { "aria-label": "Disabled color", value: "#4f8cff", disabled: true }), _jsx(ColorWell, { "aria-label": "Large read-only color", value: "#34a853", readOnly: true, size: "lg" })] })),
54
+ },
55
+ ],
56
+ };
@@ -1,3 +1,3 @@
1
- import type { CatalogSectionDefinition } from './catalog-types';
1
+ import type { CatalogSectionDefinition } from './catalog-types.js';
2
2
  export declare const coreFoundationSection: CatalogSectionDefinition;
3
3
  //# sourceMappingURL=core-foundation-stories.d.ts.map
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ChevronLeftIcon, ChevronRightIcon, LocateFixedIcon, PlusIcon, } from 'lucide-react';
3
- import { AppFrame, AppFrameContent, AppFrameTitlebar, AppFrameToolbar, } from '../components/ui/app-frame';
4
- import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '../components/ui/card';
5
- import { IconButton } from '../components/ui/icon-button';
6
- import { Material, MaterialGroup } from '../components/ui/material';
7
- import { Panel, PanelContent, PanelGroup, PanelHeader, } from '../components/ui/panel';
8
- import { Text } from '../components/ui/text';
9
- import { Toolbar, ToolbarActions, ToolbarContent, ToolbarDescription, ToolbarTitle, } from '../components/ui/toolbar';
3
+ import { AppFrame, AppFrameContent, AppFrameTitlebar, AppFrameToolbar, } from '../components/ui/app-frame.js';
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '../components/ui/card.js';
5
+ import { IconButton } from '../components/ui/icon-button.js';
6
+ import { Material, MaterialGroup } from '../components/ui/material.js';
7
+ import { Panel, PanelContent, PanelGroup, PanelHeader, } from '../components/ui/panel.js';
8
+ import { Text } from '../components/ui/text.js';
9
+ import { Toolbar, ToolbarActions, ToolbarContent, ToolbarDescription, ToolbarTitle, } from '../components/ui/toolbar.js';
10
10
  export const coreFoundationSection = {
11
11
  id: 'window-foundations',
12
12
  title: 'Window foundations',
@@ -0,0 +1,3 @@
1
+ import type { CatalogSectionDefinition } from './catalog-types.js';
2
+ export declare const coreLayoutSection: CatalogSectionDefinition;
3
+ //# sourceMappingURL=core-layout-stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-layout-stories.d.ts","sourceRoot":"","sources":["../../src/catalog/core-layout-stories.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE/D,eAAO,MAAM,iBAAiB,EAAE,wBAkQ/B,CAAA"}
@@ -0,0 +1,78 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CalendarIcon, FolderIcon, InboxIcon, SettingsIcon } from 'lucide-react';
3
+ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from '../components/ui/accordion.js';
4
+ import { AspectRatio } from '../components/ui/aspect-ratio.js';
5
+ import { CollapsibleSection, CollapsibleSectionContent, CollapsibleSectionTrigger, } from '../components/ui/collapsible.js';
6
+ import { Input } from '../components/ui/input.js';
7
+ import { Inspector, InspectorContent, InspectorHeader, InspectorLabel, InspectorRow, InspectorSection, InspectorValue, } from '../components/ui/inspector.js';
8
+ import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from '../components/ui/resizable.js';
9
+ import { ScrollArea } from '../components/ui/scroll-area.js';
10
+ import { Separator } from '../components/ui/separator.js';
11
+ import { Sidebar, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, } from '../components/ui/sidebar.js';
12
+ import { SplitView, SplitViewHandle, SplitViewPane, } from '../components/ui/split-view.js';
13
+ export const coreLayoutSection = {
14
+ id: 'layout-and-disclosure',
15
+ title: 'Layout and disclosure',
16
+ description: 'Stable open disclosure states and fixed geometry for structural surfaces.',
17
+ stories: [
18
+ {
19
+ id: 'accordion-states',
20
+ title: 'Accordion states',
21
+ components: ['accordion'],
22
+ render: () => (_jsxs(Accordion, { type: "single", value: "storage", onValueChange: () => undefined, className: "max-w-lg", children: [_jsxs(AccordionItem, { value: "storage", children: [_jsx(AccordionTrigger, { children: "Where is app data stored?" }), _jsx(AccordionContent, { children: "App data remains inside the active local workspace." })] }), _jsxs(AccordionItem, { value: "sync", children: [_jsx(AccordionTrigger, { children: "When does sync run?" }), _jsx(AccordionContent, { children: "Sync runs after local changes." })] }), _jsx(AccordionItem, { value: "disabled", disabled: true, children: _jsx(AccordionTrigger, { children: "Managed policy" }) })] })),
23
+ },
24
+ {
25
+ id: 'collapsible-states',
26
+ title: 'Collapsible section states',
27
+ components: ['collapsible'],
28
+ render: () => (_jsxs("div", { className: "grid max-w-lg gap-3", children: [_jsxs(CollapsibleSection, { open: true, children: [_jsx(CollapsibleSectionTrigger, { children: "Advanced settings" }), _jsx(CollapsibleSectionContent, { motion: "none", children: "Local indexing is enabled for this workspace." })] }), _jsx(CollapsibleSection, { children: _jsx(CollapsibleSectionTrigger, { children: "Developer options" }) })] })),
29
+ },
30
+ {
31
+ id: 'aspect-ratio-frame',
32
+ title: 'Aspect ratio frame',
33
+ components: ['aspect-ratio'],
34
+ render: () => (_jsx("div", { className: "max-w-md overflow-hidden rounded-md border", children: _jsx(AspectRatio, { ratio: 16 / 9, className: "grid place-items-center bg-[radial-gradient(circle_at_25%_20%,var(--chart-2),transparent_35%),linear-gradient(135deg,var(--surface-recessed),var(--surface-canvas))]", children: _jsx("span", { className: "bg-background/80 rounded-md px-3 py-1.5 text-sm font-medium", children: "16:9 preview" }) }) })),
35
+ },
36
+ {
37
+ id: 'inspector-properties',
38
+ title: 'Inspector properties',
39
+ components: ['inspector'],
40
+ render: () => (_jsxs(Inspector, { className: "h-64 max-w-sm rounded-md border", children: [_jsx(InspectorHeader, { children: _jsx("strong", { className: "text-sm", children: "Inspector" }) }), _jsx(InspectorContent, { children: _jsxs(InspectorSection, { title: "Appearance", children: [_jsxs(InspectorRow, { children: [_jsx(InspectorLabel, { htmlFor: "catalog-title", children: "Title" }), _jsx(InspectorValue, { children: _jsx(Input, { id: "catalog-title", value: "Weekly plan", readOnly: true, className: "h-8" }) })] }), _jsxs(InspectorRow, { children: [_jsx(InspectorLabel, { children: "Width" }), _jsx(InspectorValue, { className: "text-muted-foreground text-sm", children: "640 px" })] })] }) })] })),
41
+ },
42
+ {
43
+ id: 'resizable-panels',
44
+ title: 'Resizable panel geometry',
45
+ components: ['resizable'],
46
+ render: () => (_jsxs(ResizablePanelGroup, { orientation: "horizontal", className: "h-52 overflow-hidden rounded-md border", children: [_jsx(ResizablePanel, { defaultSize: "35%", children: _jsx("div", { className: "bg-surface-sidebar grid size-full place-items-center text-sm", children: "Library" }) }), _jsx(ResizableHandle, { withHandle: true }), _jsx(ResizablePanel, { children: _jsx("div", { className: "grid size-full place-items-center text-sm", children: "Canvas" }) })] })),
47
+ },
48
+ {
49
+ id: 'split-view',
50
+ title: 'Split view geometry',
51
+ components: ['split-view'],
52
+ render: () => (_jsx("div", { className: "h-56 overflow-hidden rounded-md border", children: _jsxs(SplitView, { orientation: "horizontal", children: [_jsx(SplitViewPane, { id: "library", defaultSize: "34%", minSize: "25%", children: _jsxs("div", { className: "bg-surface-sidebar flex size-full flex-col", children: [_jsx("div", { className: "border-border border-b px-3 py-2 text-sm font-medium", children: "Library" }), _jsxs("div", { className: "grid gap-1 p-2 text-sm", children: [_jsx("div", { className: "bg-surface-selected rounded-control px-2 py-1.5 font-medium", children: "Today" }), _jsx("div", { className: "text-muted-foreground px-2 py-1.5", children: "Projects" }), _jsx("div", { className: "text-muted-foreground px-2 py-1.5", children: "Archive" })] })] }) }), _jsx(SplitViewHandle, { withHandle: true }), _jsx(SplitViewPane, { id: "canvas", defaultSize: "66%", minSize: "40%", children: _jsxs("div", { className: "flex size-full flex-col", children: [_jsx("div", { className: "border-border border-b px-3 py-2 text-sm font-medium", children: "Canvas" }), _jsx("div", { className: "grid flex-1 place-items-center p-4", children: _jsxs("div", { className: "bg-card rounded-card w-full max-w-sm border p-4", children: [_jsx("p", { className: "text-sm font-medium", children: "Weekly plan" }), _jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "A focused workspace for the week ahead." })] }) })] }) })] }) })),
53
+ },
54
+ {
55
+ id: 'scroll-area',
56
+ title: 'Scroll area frame',
57
+ components: ['scroll-area'],
58
+ render: () => (_jsx(ScrollArea, { className: "h-52 max-w-sm rounded-md border", scrollbars: "both", type: "always", viewportClassName: "p-3", children: _jsx("div", { className: "grid w-[32rem] gap-2", children: Array.from({ length: 8 }, (_, index) => (_jsxs("div", { className: "bg-card rounded-md border px-3 py-2 text-sm", children: ["Workspace item ", index + 1] }, index))) }) })),
59
+ },
60
+ {
61
+ id: 'separators',
62
+ title: 'Semantic separators',
63
+ components: ['separator'],
64
+ render: () => (_jsxs("div", { className: "max-w-sm rounded-md border p-4 text-sm", children: [_jsx("p", { className: "font-medium", children: "Workspace" }), _jsx(Separator, { className: "my-3" }), _jsxs("div", { className: "flex h-8 items-center gap-3", children: [_jsx("span", { children: "Local" }), _jsx(Separator, { orientation: "vertical", decorative: false }), _jsx("span", { children: "Private" }), _jsx(Separator, { orientation: "vertical" }), _jsx("span", { children: "Synced" })] })] })),
65
+ },
66
+ {
67
+ id: 'sidebar-shell',
68
+ title: 'Static sidebar shell',
69
+ components: ['sidebar'],
70
+ render: () => (_jsxs(SidebarProvider, { className: "min-h-64 overflow-hidden rounded-md border", style: { '--sidebar-width': '13rem' }, children: [_jsxs(Sidebar, { collapsible: "none", children: [_jsx(SidebarHeader, { className: "px-3 py-2 font-medium", children: "Moldable" }), _jsx(SidebarContent, { children: _jsxs(SidebarGroup, { children: [_jsx(SidebarGroupLabel, { children: "Workspace" }), _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: [
71
+ { Icon: InboxIcon, label: 'Today' },
72
+ { Icon: CalendarIcon, label: 'Calendar' },
73
+ { Icon: FolderIcon, label: 'Projects' },
74
+ { Icon: SettingsIcon, label: 'Settings' },
75
+ ].map(({ Icon, label }, index) => (_jsx(SidebarMenuItem, { children: _jsxs(SidebarMenuButton, { isActive: index === 0, children: [_jsx(Icon, {}), _jsx("span", { children: label })] }) }, label))) }) })] }) })] }), _jsx("div", { className: "grid flex-1 place-items-center text-sm", children: "App canvas" })] })),
76
+ },
77
+ ],
78
+ };
@@ -1,3 +1,3 @@
1
- import type { CatalogSectionDefinition } from './catalog-types';
1
+ import type { CatalogSectionDefinition } from './catalog-types.js';
2
2
  export declare const coreNavigationSection: CatalogSectionDefinition;
3
3
  //# sourceMappingURL=core-navigation-stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-navigation-stories.d.ts","sourceRoot":"","sources":["../../src/catalog/core-navigation-stories.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE/D,eAAO,MAAM,qBAAqB,EAAE,wBA+DnC,CAAA"}
1
+ {"version":3,"file":"core-navigation-stories.d.ts","sourceRoot":"","sources":["../../src/catalog/core-navigation-stories.tsx"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE/D,eAAO,MAAM,qBAAqB,EAAE,wBA0KnC,CAAA"}
@@ -1,7 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '../components/ui/breadcrumb';
3
- import { NavigationButtonGroup } from '../components/ui/navigation-button-group';
4
- import { Tabs, TabsContent, TabsList, TabsTrigger } from '../components/ui/tabs';
2
+ import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '../components/ui/breadcrumb.js';
3
+ import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarMenu, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, } from '../components/ui/menubar.js';
4
+ import { NavigationButtonGroup } from '../components/ui/navigation-button-group.js';
5
+ import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, } from '../components/ui/navigation-menu.js';
6
+ import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from '../components/ui/pagination.js';
7
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '../components/ui/tabs.js';
5
8
  export const coreNavigationSection = {
6
9
  id: 'navigation',
7
10
  title: 'Navigation',
@@ -21,5 +24,24 @@ export const coreNavigationSection = {
21
24
  interactions: ['rest', 'focus-visible', 'disabled'],
22
25
  render: ({ interaction }) => (_jsxs(Tabs, { defaultValue: "overview", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { "data-catalog-target": true, value: "overview", autoFocus: interaction === 'focus-visible', children: "Overview" }), _jsx(TabsTrigger, { value: "activity", disabled: interaction === 'disabled', children: "Activity" })] }), _jsx(TabsContent, { value: "overview", className: "text-muted-foreground p-2 text-sm", children: "Project summary" }), _jsx(TabsContent, { value: "activity", children: "Recent activity" })] })),
23
26
  },
27
+ {
28
+ id: 'pagination-range',
29
+ title: 'Responsive pagination',
30
+ components: ['pagination'],
31
+ render: () => (_jsx(Pagination, { children: _jsxs(PaginationContent, { children: [_jsx(PaginationItem, { children: _jsx(PaginationPrevious, { href: "#page-3" }) }), _jsx(PaginationItem, { children: _jsx(PaginationLink, { href: "#page-1", children: "1" }) }), _jsx(PaginationItem, { className: "hidden sm:list-item", children: _jsx(PaginationEllipsis, {}) }), _jsx(PaginationItem, { children: _jsx(PaginationLink, { href: "#page-4", isActive: true, children: "4" }) }), _jsx(PaginationItem, { children: _jsx(PaginationLink, { href: "#page-5", children: "5" }) }), _jsx(PaginationItem, { children: _jsx(PaginationNext, { href: "#page-5" }) })] }) })),
32
+ },
33
+ {
34
+ id: 'navigation-menu-open',
35
+ title: 'Open navigation menu',
36
+ components: ['navigation-menu'],
37
+ render: () => (_jsx("div", { className: "flex h-72 items-start justify-center pt-2", children: _jsx(NavigationMenu, { viewport: false, value: "apps", onValueChange: () => undefined, children: _jsxs(NavigationMenuList, { children: [_jsxs(NavigationMenuItem, { value: "apps", children: [_jsx(NavigationMenuTrigger, { children: "Apps" }), _jsx(NavigationMenuContent, { children: _jsxs("div", { className: "grid w-64 gap-1", children: [_jsxs(NavigationMenuLink, { href: "#calendar", active: true, children: [_jsx("span", { className: "font-medium", children: "Calendar" }), _jsx("span", { className: "text-muted-foreground text-xs", children: "Events and schedules" })] }), _jsxs(NavigationMenuLink, { href: "#meetings", children: [_jsx("span", { className: "font-medium", children: "Meetings" }), _jsx("span", { className: "text-muted-foreground text-xs", children: "Notes and recordings" })] })] }) })] }), _jsx(NavigationMenuItem, { children: _jsx(NavigationMenuLink, { href: "#settings", children: "Settings" }) })] }) }) })),
38
+ },
39
+ {
40
+ id: 'menubar-open',
41
+ title: 'Open application menubar',
42
+ components: ['menubar'],
43
+ liveStates: ['focus'],
44
+ render: () => (_jsx("div", { className: "flex h-64 items-start justify-center", children: _jsxs(Menubar, { value: "file", onValueChange: () => undefined, children: [_jsxs(MenubarMenu, { value: "file", children: [_jsx(MenubarTrigger, { children: "File" }), _jsxs(MenubarContent, { children: [_jsxs(MenubarItem, { "data-state-target": "focus", children: ["New window", _jsx(MenubarShortcut, { children: "\u2318N" })] }), _jsx(MenubarCheckboxItem, { checked: true, children: "Show in Today" }), _jsx(MenubarItem, { disabled: true, children: "Import workspace" }), _jsxs(MenubarSub, { open: true, children: [_jsx(MenubarSubTrigger, { children: "Open recent" }), _jsxs(MenubarSubContent, { children: [_jsx(MenubarItem, { children: "Personal" }), _jsx(MenubarItem, { children: "Work" })] })] }), _jsx(MenubarSeparator, {}), _jsx(MenubarItem, { variant: "destructive", children: "Close workspace" })] })] }), _jsx(MenubarMenu, { value: "edit", children: _jsx(MenubarTrigger, { children: "Edit" }) })] }) })),
45
+ },
24
46
  ],
25
47
  };
@@ -1,3 +1,3 @@
1
- import type { CatalogSectionDefinition } from './catalog-types';
1
+ import type { CatalogSectionDefinition } from './catalog-types.js';
2
2
  export declare const coreOverlaysSection: CatalogSectionDefinition;
3
3
  //# sourceMappingURL=core-overlay-stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-overlay-stories.d.ts","sourceRoot":"","sources":["../../src/catalog/core-overlay-stories.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE/D,eAAO,MAAM,mBAAmB,EAAE,wBAiCjC,CAAA"}
1
+ {"version":3,"file":"core-overlay-stories.d.ts","sourceRoot":"","sources":["../../src/catalog/core-overlay-stories.tsx"],"names":[],"mappings":"AA0HA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAqD/D,eAAO,MAAM,mBAAmB,EAAE,wBAuVjC,CAAA"}
@@ -1,20 +1,125 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button } from '../components/ui/button';
3
- import { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, } from '../components/ui/popover';
2
+ import { ArchiveIcon, FolderIcon, SearchIcon, Trash2Icon } from 'lucide-react';
3
+ import * as React from 'react';
4
+ import { AlertDialog } from '../components/ui/alert-dialog.js';
5
+ import { AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '../components/ui/alert-dialog.js';
6
+ import { Button } from '../components/ui/button.js';
7
+ import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, } from '../components/ui/combobox.js';
8
+ import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandItemContent, CommandItemDescription, CommandItemIcon, CommandItemTitle, CommandList, CommandShortcut, } from '../components/ui/command.js';
9
+ import { ConfirmDialog } from '../components/ui/confirm-dialog.js';
10
+ import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from '../components/ui/context-menu.js';
11
+ import { Dialog, DialogAction, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '../components/ui/dialog.js';
12
+ import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from '../components/ui/drawer.js';
13
+ import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from '../components/ui/dropdown-menu.js';
14
+ import { HoverCard, HoverCardContent, HoverCardTrigger, } from '../components/ui/hover-card.js';
15
+ import { Kbd } from '../components/ui/kbd.js';
16
+ import { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, } from '../components/ui/popover.js';
17
+ import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, } from '../components/ui/select.js';
18
+ import { Sheet, SheetBody, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, } from '../components/ui/sheet.js';
19
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipShortcut, TooltipTrigger, } from '../components/ui/tooltip.js';
20
+ const noop = () => undefined;
21
+ function OpenContextMenuFixture() {
22
+ const triggerRef = React.useRef(null);
23
+ React.useLayoutEffect(() => {
24
+ const trigger = triggerRef.current;
25
+ if (!trigger)
26
+ return;
27
+ const bounds = trigger.getBoundingClientRect();
28
+ trigger.dispatchEvent(new MouseEvent('contextmenu', {
29
+ bubbles: true,
30
+ button: 2,
31
+ clientX: bounds.left + Math.min(96, bounds.width / 2),
32
+ clientY: bounds.top + 56,
33
+ }));
34
+ }, []);
35
+ return (_jsxs(ContextMenu, { modal: false, onOpenChange: noop, children: [_jsx(ContextMenuTrigger, { ref: triggerRef, className: "border-border grid h-56 place-items-center rounded-md border border-dashed text-sm", children: "Right-click canvas" }), _jsxs(ContextMenuContent, { className: "w-52", children: [_jsxs(ContextMenuItem, { "data-state-target": "focus", children: [_jsx(FolderIcon, {}), "Open"] }), _jsx(ContextMenuCheckboxItem, { checked: true, children: "Pin item" }), _jsx(ContextMenuItem, { disabled: true, children: "Rename" }), _jsxs(ContextMenuSub, { open: true, children: [_jsx(ContextMenuSubTrigger, { children: "Move to" }), _jsxs(ContextMenuSubContent, { children: [_jsx(ContextMenuItem, { children: "Personal" }), _jsx(ContextMenuItem, { children: "Work" })] })] }), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { variant: "destructive", children: [_jsx(Trash2Icon, {}), "Delete"] })] })] }));
36
+ }
4
37
  export const coreOverlaysSection = {
5
38
  id: 'overlays',
6
39
  title: 'Overlays',
7
- description: 'A minimal stable portal case. Complex modal and menu surfaces remain explicitly deferred.',
40
+ description: 'Controlled open portal surfaces rendered against the host theme with motion disabled.',
8
41
  stories: [
42
+ {
43
+ id: 'dialog-open',
44
+ title: 'Open dialog',
45
+ components: ['dialog'],
46
+ render: () => (_jsxs(Dialog, { open: true, onOpenChange: noop, children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Edit workspace" }) }), _jsxs(DialogContent, { size: "sm", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Edit workspace" }), _jsx(DialogDescription, { children: "Changes apply to this local workspace." })] }), _jsx(DialogBody, { className: "text-muted-foreground text-sm", children: "Personal workspace \u00B7 Toronto" }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", children: "Cancel" }), _jsx(DialogAction, { primary: true, children: "Save changes" })] })] })] })),
47
+ },
48
+ {
49
+ id: 'alert-dialog-open',
50
+ title: 'Open alert dialog',
51
+ components: ['alert-dialog'],
52
+ render: () => (_jsx(AlertDialog, { open: true, onOpenChange: noop, children: _jsxs(AlertDialogContent, { size: "sm", children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Remove project?" }), _jsx(AlertDialogDescription, { children: "This removes the project from this workspace." })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Cancel" }), _jsx(AlertDialogAction, { primary: true, variant: "destructive", children: "Remove" })] })] }) })),
53
+ },
54
+ {
55
+ id: 'confirm-dialog-open',
56
+ title: 'Open confirmation dialog',
57
+ components: ['confirm-dialog'],
58
+ render: () => (_jsx(ConfirmDialog, { open: true, title: "Archive conversation?", description: "You can restore it later from the archive.", confirmLabel: "Archive", onConfirm: noop, onOpenChange: noop })),
59
+ },
60
+ {
61
+ id: 'sheet-open',
62
+ title: 'Open sheet',
63
+ components: ['sheet'],
64
+ render: () => (_jsxs(Sheet, { open: true, onOpenChange: noop, children: [_jsx(SheetTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Open inspector" }) }), _jsxs(SheetContent, { side: "right", size: "sm", children: [_jsxs(SheetHeader, { children: [_jsx(SheetTitle, { children: "Inspector" }), _jsx(SheetDescription, { children: "Properties for the selected item." })] }), _jsx(SheetBody, { className: "text-muted-foreground text-sm", children: "Created July 26, 2026" }), _jsx(SheetFooter, { children: _jsx(Button, { children: "Done" }) })] })] })),
65
+ },
66
+ {
67
+ id: 'drawer-open',
68
+ title: 'Open drawer',
69
+ components: ['drawer'],
70
+ render: () => (_jsxs(Drawer, { open: true, onOpenChange: noop, children: [_jsx(DrawerTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Open queue" }) }), _jsxs(DrawerContent, { children: [_jsxs(DrawerHeader, { children: [_jsx(DrawerTitle, { children: "Upload queue" }), _jsx(DrawerDescription, { children: "Two files are ready to sync." })] }), _jsxs(DrawerFooter, { children: [_jsx(Button, { children: "Upload all" }), _jsx(DrawerClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Close" }) })] })] })] })),
71
+ },
9
72
  {
10
73
  id: 'popover-open',
11
74
  title: 'Open popover',
12
75
  components: ['popover'],
13
- themes: ['light'],
14
- densities: ['regular'],
15
- viewports: ['wide'],
16
- accessibilityModes: ['standard', 'reduced-transparency'],
17
- render: () => (_jsx("div", { className: "flex h-32 items-start justify-center pt-2", children: _jsxs(Popover, { defaultOpen: true, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "View details" }) }), _jsx(PopoverContent, { size: "sm", align: "center", children: _jsxs(PopoverHeader, { children: [_jsx(PopoverTitle, { children: "Local workspace" }), _jsx(PopoverDescription, { children: "Files and app data remain on this Mac." })] }) })] }) })),
76
+ render: () => (_jsx("div", { className: "flex h-32 items-start justify-center pt-2", children: _jsxs(Popover, { open: true, onOpenChange: noop, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "View details" }) }), _jsx(PopoverContent, { size: "sm", align: "center", children: _jsxs(PopoverHeader, { children: [_jsx(PopoverTitle, { children: "Local workspace" }), _jsx(PopoverDescription, { children: "Files and app data remain on this Mac." })] }) })] }) })),
77
+ },
78
+ {
79
+ id: 'hover-card-open',
80
+ title: 'Open hover card',
81
+ components: ['hover-card'],
82
+ render: () => (_jsx("div", { className: "flex h-36 items-start justify-center pt-2", children: _jsxs(HoverCard, { open: true, onOpenChange: noop, children: [_jsx(HoverCardTrigger, { asChild: true, children: _jsx("a", { className: "text-sm underline underline-offset-4", href: "#rob", children: "@rob" }) }), _jsxs(HoverCardContent, { children: [_jsx("div", { className: "font-medium", children: "Rob McDonald" }), _jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "Building quiet, personal software." })] })] }) })),
83
+ },
84
+ {
85
+ id: 'tooltip-open',
86
+ title: 'Open tooltip',
87
+ components: ['tooltip'],
88
+ render: () => (_jsx("div", { className: "flex h-24 items-start justify-center pt-8", children: _jsx(TooltipProvider, { delayDuration: 0, children: _jsxs(Tooltip, { open: true, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Commands" }) }), _jsxs(TooltipContent, { children: ["Open commands", _jsxs(TooltipShortcut, { children: [_jsx(Kbd, { children: "\u2318" }), _jsx(Kbd, { children: "K" })] })] })] }) }) })),
89
+ },
90
+ {
91
+ id: 'dropdown-menu-open',
92
+ title: 'Open dropdown menu',
93
+ components: ['dropdown-menu'],
94
+ liveStates: ['focus'],
95
+ render: () => (_jsx("div", { className: "flex h-64 items-start justify-center pt-2", children: _jsxs(DropdownMenu, { modal: false, open: true, onOpenChange: noop, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Project actions" }) }), _jsxs(DropdownMenuContent, { align: "start", className: "w-56", children: [_jsxs(DropdownMenuItem, { "data-state-target": "focus", children: [_jsx(FolderIcon, {}), "Open project", _jsx(DropdownMenuShortcut, { children: "\u2318O" })] }), _jsx(DropdownMenuCheckboxItem, { checked: true, children: "Show in Today" }), _jsx(DropdownMenuItem, { disabled: true, children: "Duplicate" }), _jsxs(DropdownMenuSub, { open: true, children: [_jsx(DropdownMenuSubTrigger, { children: "Move to" }), _jsxs(DropdownMenuSubContent, { children: [_jsx(DropdownMenuItem, { children: "Personal" }), _jsx(DropdownMenuItem, { children: "Work" })] })] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { variant: "destructive", children: [_jsx(Trash2Icon, {}), "Delete project"] })] })] }) })),
96
+ },
97
+ {
98
+ id: 'context-menu-open',
99
+ title: 'Open context menu',
100
+ components: ['context-menu'],
101
+ liveStates: ['focus'],
102
+ render: () => _jsx(OpenContextMenuFixture, {}),
103
+ },
104
+ {
105
+ id: 'select-open',
106
+ title: 'Open select',
107
+ components: ['select'],
108
+ liveStates: ['focus'],
109
+ render: () => (_jsx("div", { className: "flex h-64 items-start justify-center pt-2", children: _jsxs(Select, { open: true, value: "balanced", onOpenChange: noop, children: [_jsx(SelectTrigger, { className: "w-52", "aria-label": "Model effort", tabIndex: -1, children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsxs(SelectGroup, { children: [_jsx(SelectLabel, { children: "Model effort" }), _jsx(SelectItem, { value: "fast", "data-state-target": "focus", children: "Fast" }), _jsx(SelectItem, { value: "balanced", children: "Balanced" }), _jsx(SelectItem, { value: "deep", disabled: true, children: "Deep (unavailable)" })] }), _jsx(SelectSeparator, {}), _jsx(SelectItem, { value: "custom", children: "Custom" })] })] }) })),
110
+ },
111
+ {
112
+ id: 'combobox-open',
113
+ title: 'Open combobox',
114
+ components: ['combobox'],
115
+ liveStates: ['focus'],
116
+ render: () => (_jsx("div", { className: "flex h-64 items-start justify-center pt-2", children: _jsxs(Combobox, { modal: false, open: true, autoHighlight: true, defaultValue: "Calendar", items: ['Calendar', 'Meetings', 'Mail'], children: [_jsx(ComboboxInput, { "data-state-target": "focus", "data-state-key": "ArrowDown", "aria-label": "Choose an app", placeholder: "Search apps", className: "w-56" }), _jsxs(ComboboxContent, { children: [_jsx(ComboboxList, { children: _jsxs(ComboboxGroup, { children: [_jsx(ComboboxLabel, { children: "Apps" }), _jsx(ComboboxItem, { value: "Calendar", children: "Calendar" }), _jsx(ComboboxItem, { value: "Meetings", children: "Meetings" }), _jsx(ComboboxItem, { value: "Mail", disabled: true, children: "Mail (offline)" })] }) }), _jsx(ComboboxEmpty, { children: "No apps found." })] })] }) })),
117
+ },
118
+ {
119
+ id: 'command-open',
120
+ title: 'Open command palette',
121
+ components: ['command'],
122
+ render: () => (_jsxs(CommandDialog, { open: true, onOpenChange: noop, children: [_jsx(CommandInput, { placeholder: "Search commands" }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No commands found." }), _jsxs(CommandGroup, { heading: "Workspace", children: [_jsxs(CommandItem, { value: "open-search", children: [_jsx(CommandItemIcon, { children: _jsx(SearchIcon, {}) }), _jsxs(CommandItemContent, { children: [_jsx(CommandItemTitle, { children: "Search workspace" }), _jsx(CommandItemDescription, { children: "Find apps, files, and conversations" })] }), _jsx(CommandShortcut, { children: "\u2318K" })] }), _jsxs(CommandItem, { value: "archive", children: [_jsx(CommandItemIcon, { children: _jsx(ArchiveIcon, {}) }), _jsx(CommandItemTitle, { children: "Open archive" })] }), _jsx(CommandItem, { value: "disabled", disabled: true, children: "Import cloud workspace" })] })] })] })),
18
123
  },
19
124
  ],
20
125
  };
@@ -1,7 +1,7 @@
1
- export { buildCatalogCases, createCatalogManifest, createCatalogSection, createCatalogStory, } from './catalog-manifest';
2
- export { assertCatalogCoverage, getCatalogCoverage, type CatalogCoverageExclusion, type CatalogCoverageReport, } from './catalog-coverage';
3
- export { CatalogCaseFrame, ComponentCatalog, type CatalogCaseFrameProps, type ComponentCatalogProps, } from './component-catalog';
4
- export { coreComponentCatalog } from './core-catalog';
5
- export { coreCatalogExclusions } from './core-catalog-exclusions';
6
- export { catalogAccessibilityModes, catalogDensities, catalogInteractions, catalogThemes, catalogViewports, type CatalogAccessibilityMode, type CatalogCase, type CatalogCaseContext, type CatalogCaseFilter, type CatalogDensity, type CatalogInteraction, type CatalogManifest, type CatalogSectionDefinition, type CatalogStoryDefinition, type CatalogTheme, type CatalogViewport, } from './catalog-types';
1
+ export { buildCatalogCases, createCatalogManifest, createCatalogSection, createCatalogStory, } from './catalog-manifest.js';
2
+ export { assertCatalogCoverage, getCatalogCoverage, type CatalogCoverageExclusion, type CatalogCoverageReport, } from './catalog-coverage.js';
3
+ export { CatalogCaseFrame, ComponentCatalog, type CatalogCaseFrameProps, type ComponentCatalogProps, } from './component-catalog.js';
4
+ export { coreComponentCatalog } from './core-catalog.js';
5
+ export { coreCatalogExclusions } from './core-catalog-exclusions.js';
6
+ export { catalogAccessibilityModes, catalogDensities, catalogInteractions, catalogThemes, catalogViewports, type CatalogAccessibilityMode, type CatalogCase, type CatalogCaseContext, type CatalogCaseFilter, type CatalogDensity, type CatalogInteraction, type CatalogManifest, type CatalogSectionDefinition, type CatalogStoryDefinition, type CatalogTheme, type CatalogViewport, } from './catalog-types.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- export { buildCatalogCases, createCatalogManifest, createCatalogSection, createCatalogStory, } from './catalog-manifest';
2
- export { assertCatalogCoverage, getCatalogCoverage, } from './catalog-coverage';
3
- export { CatalogCaseFrame, ComponentCatalog, } from './component-catalog';
4
- export { coreComponentCatalog } from './core-catalog';
5
- export { coreCatalogExclusions } from './core-catalog-exclusions';
6
- export { catalogAccessibilityModes, catalogDensities, catalogInteractions, catalogThemes, catalogViewports, } from './catalog-types';
1
+ export { buildCatalogCases, createCatalogManifest, createCatalogSection, createCatalogStory, } from './catalog-manifest.js';
2
+ export { assertCatalogCoverage, getCatalogCoverage, } from './catalog-coverage.js';
3
+ export { CatalogCaseFrame, ComponentCatalog, } from './component-catalog.js';
4
+ export { coreComponentCatalog } from './core-catalog.js';
5
+ export { coreCatalogExclusions } from './core-catalog-exclusions.js';
6
+ export { catalogAccessibilityModes, catalogDensities, catalogInteractions, catalogThemes, catalogViewports, } from './catalog-types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"app-error-boundary.d.ts","sourceRoot":"","sources":["../../src/components/app-error-boundary.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGjE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAWzE,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,cAAc,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAaD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWhE;AA0CD,qBAAa,gBAAiB,SAAQ,SAAS,CAC7C,qBAAqB,EACrB,qBAAqB,CACtB;IACC,KAAK,EAAE,qBAAqB,CAAA;IAE5B,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,qBAAqB,CAAC;gBAIrB,KAAK,EAAE,qBAAqB;IASxC,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;IAU5B,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAWtD,OAAO,CAAC,iBAAiB,CAMxB;IAED,OAAO,CAAC,wBAAwB,CAa/B;IAED,OAAO,CAAC,MAAM,CAEb;IAED,OAAO,CAAC,WAAW,CAYlB;IAED,MAAM;CA8CP"}
1
+ {"version":3,"file":"app-error-boundary.d.ts","sourceRoot":"","sources":["../../src/components/app-error-boundary.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIjE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAWzE,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,cAAc,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAaD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWhE;AA0CD,qBAAa,gBAAiB,SAAQ,SAAS,CAC7C,qBAAqB,EACrB,qBAAqB,CACtB;IACC,KAAK,EAAE,qBAAqB,CAAA;IAE5B,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,qBAAqB,CAAC;gBAIrB,KAAK,EAAE,qBAAqB;IASxC,iBAAiB,IAAI,IAAI;IAgBzB,oBAAoB,IAAI,IAAI;IAU5B,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAWtD,OAAO,CAAC,iBAAiB,CAMxB;IAED,OAAO,CAAC,wBAAwB,CAa/B;IAED,OAAO,CAAC,MAAM,CAEb;IAED,OAAO,CAAC,WAAW,CAYlB;IAED,MAAM;CAoCP"}
@@ -1,8 +1,9 @@
1
1
  'use client';
2
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { MessageSquareWarning, RefreshCw } from 'lucide-react';
4
4
  import { Component } from 'react';
5
- import { Button } from './ui/button';
5
+ import { Button } from './ui/button.js';
6
+ import { ErrorBoundaryView } from './ui/error-boundary-view.js';
6
7
  function toError(value) {
7
8
  if (value instanceof Error)
8
9
  return value;
@@ -117,6 +118,6 @@ export class AppErrorBoundary extends Component {
117
118
  if (!error)
118
119
  return this.props.children;
119
120
  const errorSummary = formatError(error, source, componentStack);
120
- return (_jsx("main", { className: "bg-background text-foreground flex min-h-screen items-center justify-center p-4 sm:p-6", children: _jsxs("section", { className: "border-border bg-card w-full max-w-xl rounded-lg border p-5 shadow-lg sm:p-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsxs("h1", { className: "text-xl font-semibold tracking-tight", children: [this.props.appName, " hit a UI error"] }), _jsx("p", { className: "text-muted-foreground text-sm leading-6", children: "Reload to recover, or send the captured client error to Moldable so it can inspect the crash." })] }), _jsx("pre", { className: "bg-muted text-muted-foreground mt-5 max-h-44 overflow-auto whitespace-pre-wrap rounded-md border p-3 font-mono text-xs", children: errorSummary }), _jsxs("div", { className: "mt-5 flex flex-col gap-2 sm:flex-row", children: [_jsxs(Button, { type: "button", className: "cursor-pointer", onClick: this.reload, children: [_jsx(RefreshCw, {}), "Reload"] }), _jsxs(Button, { type: "button", variant: "secondary", className: "cursor-pointer", onClick: this.askMoldable, children: [_jsx(MessageSquareWarning, {}), "Ask Moldable to fix this"] })] })] }) }));
121
+ return (_jsx(ErrorBoundaryView, { className: "min-h-screen", title: `${this.props.appName} hit a UI error`, message: "Reload to recover, or send the captured client error to Moldable so it can inspect the crash.", details: errorSummary, actions: _jsxs(_Fragment, { children: [_jsxs(Button, { type: "button", className: "cursor-pointer", onClick: this.reload, children: [_jsx(RefreshCw, {}), "Reload"] }), _jsxs(Button, { type: "button", variant: "secondary", className: "cursor-pointer", onClick: this.askMoldable, children: [_jsx(MessageSquareWarning, {}), "Ask Moldable to fix this"] })] }) }));
121
122
  }
122
123
  }