@dailies-studio/shot-editor 0.1.0 → 0.2.0

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 (432) hide show
  1. package/dist/.vite/manifest.json +382 -0
  2. package/dist/assets/AgentPanel-CQejLbiX.js +2 -0
  3. package/dist/assets/AgentPanel-DJEphah0.css +1 -0
  4. package/dist/assets/AgentQuestionDialog-BqkD0kXF.js +1 -0
  5. package/dist/assets/CodeStudio-Dv4ihHpz.js +23 -0
  6. package/dist/assets/CommentsPanel-B4yhhT1T.js +1 -0
  7. package/dist/assets/ComponentLibraryRail-Ch_dsAru.js +1 -0
  8. package/dist/assets/ComponentStage-BRhRotyH.js +1 -0
  9. package/dist/assets/CurvePane-BjFVabKX.css +1 -0
  10. package/dist/assets/CurvePane-R22WzllJ.js +1 -0
  11. package/dist/assets/ExportDialog-CWLQWTmG.js +2 -0
  12. package/dist/assets/FontPicker-DWKaYL7F.js +1 -0
  13. package/dist/assets/FontPicker-v0IOIArM.css +1 -0
  14. package/dist/assets/GenerateDrawer-Bh3SqDKt.js +2 -0
  15. package/dist/assets/InsertDrawer-Ce1fod1L.js +1 -0
  16. package/dist/assets/LibraryBrowser-D9sEGz5w.js +2 -0
  17. package/dist/assets/MakeItYoursSection-CMO4319_.js +2 -0
  18. package/dist/assets/MaterialGraphCanvas-BFzl4wWR.js +23 -0
  19. package/dist/assets/MaterialGraphCanvas-BIUD59ik.css +1 -0
  20. package/dist/assets/MaterialWorkspace-CqTWqaRA.js +14 -0
  21. package/dist/assets/PreferencesDialog-CBf9_OoD.js +1 -0
  22. package/dist/assets/PresetsSection-CUEaoCVU.js +1 -0
  23. package/dist/assets/SoundHistory-BeS8EW1h.js +1 -0
  24. package/dist/assets/SoundMode-BmcZru3i.js +3 -0
  25. package/dist/assets/StockSounds-DdAUGRYK.js +1 -0
  26. package/dist/assets/TemplateFieldSection-CaeXpLFo.js +1 -0
  27. package/dist/assets/VersionHistoryPanel-CxG6XhNP.js +1 -0
  28. package/dist/assets/board-B88EPuLO.css +1 -0
  29. package/dist/assets/board-CL-he7SL.js +3 -0
  30. package/dist/assets/components-0oOSPN0l.js +1 -0
  31. package/dist/assets/googleFontRanges-gp32wJMo.js +1 -0
  32. package/dist/assets/googleFonts-BNon6M7X.js +1 -0
  33. package/dist/assets/iconsAndAliases-DL7gXP5j.js +1863 -0
  34. package/dist/assets/index-4F5NQmI8.css +1 -0
  35. package/dist/assets/index-BGHQGV5z.js +117 -0
  36. package/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  37. package/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  38. package/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  39. package/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  40. package/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  41. package/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  42. package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  43. package/dist/assets/libraryModel-CpIwfFha.js +1 -0
  44. package/dist/assets/lucide-6iK64tTB.js +9319 -0
  45. package/dist/assets/motionStamp-CH-Hew4E.js +1 -0
  46. package/dist/assets/takeMeasure-Tdg0TxEi.js +1 -0
  47. package/dist/assets/webmcp-BsB9gxWC.js +2 -0
  48. package/dist/index.html +34 -3
  49. package/package.json +12 -9
  50. package/src/addFamilies.ts +66 -0
  51. package/src/api.ts +1631 -55
  52. package/src/app/App.tsx +977 -198
  53. package/src/app/lazyPanel.tsx +137 -0
  54. package/src/app/lazySurfaces.tsx +203 -0
  55. package/src/audio/index.tsx +41 -10
  56. package/src/audio/meter.ts +485 -0
  57. package/src/audio/meterMath.ts +273 -0
  58. package/src/audio/meterStore.ts +155 -0
  59. package/src/audio/offlineMix.ts +289 -0
  60. package/src/audio/preview.ts +928 -118
  61. package/src/bridge.ts +15 -5
  62. package/src/bridgeTypes.ts +1611 -36
  63. package/src/channels.ts +17 -32
  64. package/src/fonts/googleFonts.ts +4 -0
  65. package/src/hostApi.ts +174 -0
  66. package/src/icons.tsx +770 -0
  67. package/src/layerWords.ts +61 -0
  68. package/src/main.tsx +56 -4
  69. package/src/panels/ResizeHandle.tsx +33 -43
  70. package/src/panels/agent/AgentDots.tsx +36 -0
  71. package/src/panels/agent/AgentPanel.tsx +119 -43
  72. package/src/panels/agent/AgentQuestionDialog.tsx +202 -0
  73. package/src/panels/agent/agent.css +113 -97
  74. package/src/panels/agent/agentGate.ts +35 -0
  75. package/src/panels/code/CodeDefaultsPanel.tsx +345 -0
  76. package/src/panels/code/CodeStudio.tsx +373 -0
  77. package/src/panels/code/FileTree.tsx +265 -0
  78. package/src/panels/code/codeBufferGuard.ts +52 -0
  79. package/src/panels/code/codeParts.tsx +321 -0
  80. package/src/panels/comments/CommentComposer.tsx +239 -0
  81. package/src/panels/comments/CommentThread.tsx +346 -0
  82. package/src/panels/comments/CommentsPanel.tsx +336 -0
  83. package/src/panels/comments/InboxButton.tsx +131 -0
  84. package/src/panels/comments/MentionMenu.tsx +98 -0
  85. package/src/panels/comments/parts.tsx +171 -0
  86. package/src/panels/export/ExportDialog.tsx +919 -96
  87. package/src/panels/export/ExportScrim.tsx +57 -0
  88. package/src/panels/files/AssetsTab.tsx +656 -0
  89. package/src/panels/files/FilePanel.tsx +1466 -216
  90. package/src/panels/files/LayerMarks.tsx +40 -0
  91. package/src/panels/files/LeftColumn.tsx +37 -0
  92. package/src/panels/files/McpSection.tsx +690 -47
  93. package/src/panels/files/MissingAssetsNotice.tsx +60 -0
  94. package/src/panels/files/assetDrag.ts +79 -0
  95. package/src/panels/files/resourceParts.tsx +255 -0
  96. package/src/panels/fonts/FontPicker.tsx +762 -0
  97. package/src/panels/fonts/faceCache.ts +207 -0
  98. package/src/panels/fonts/fontPicker.css +271 -0
  99. package/src/panels/fonts/pickerModel.ts +265 -0
  100. package/src/panels/fonts/pickerRequest.ts +46 -0
  101. package/src/panels/header/AccountAvatar.tsx +76 -0
  102. package/src/panels/header/AgentChip.tsx +77 -0
  103. package/src/panels/header/AppMenu.tsx +213 -0
  104. package/src/panels/header/Header.tsx +564 -84
  105. package/src/panels/header/HistoryControls.tsx +31 -5
  106. package/src/panels/header/PresenceStack.tsx +329 -0
  107. package/src/panels/header/ProjectTitle.tsx +232 -0
  108. package/src/panels/header/ShareButton.tsx +59 -0
  109. package/src/panels/header/StatusBadges.tsx +358 -27
  110. package/src/panels/header/SyncDeletedDialog.tsx +88 -0
  111. package/src/panels/header/ZoomControls.tsx +46 -15
  112. package/src/panels/header/agentHandoff.ts +52 -0
  113. package/src/panels/header/leave.ts +26 -0
  114. package/src/panels/help/HelpSection.tsx +189 -163
  115. package/src/panels/insert/InsertDrawer.tsx +723 -0
  116. package/src/panels/insert/iconSet.ts +109 -0
  117. package/src/panels/inspector/ExposeDot.tsx +117 -0
  118. package/src/panels/inspector/FramingRows.tsx +314 -44
  119. package/src/panels/inspector/InspectorFooter.tsx +91 -0
  120. package/src/panels/inspector/InspectorHead.tsx +425 -0
  121. package/src/panels/inspector/InspectorPanel.tsx +408 -124
  122. package/src/panels/inspector/KeyframeDot.tsx +373 -0
  123. package/src/panels/inspector/KeyframeSection.tsx +257 -0
  124. package/src/panels/inspector/MarkerSection.tsx +55 -11
  125. package/src/panels/inspector/ParamRow.tsx +84 -53
  126. package/src/panels/inspector/RightColumn.tsx +152 -0
  127. package/src/panels/inspector/TimeSection.tsx +866 -0
  128. package/src/panels/inspector/animate/EaseControl.tsx +244 -0
  129. package/src/panels/inspector/animate/PresetsSection.tsx +135 -0
  130. package/src/panels/inspector/animate/ShotSection.tsx +562 -48
  131. package/src/panels/inspector/design/AlignRow.tsx +95 -31
  132. package/src/panels/inspector/design/AppearanceSection.tsx +118 -9
  133. package/src/panels/inspector/design/ClonerSection.tsx +323 -62
  134. package/src/panels/inspector/design/ComponentSection.tsx +50 -43
  135. package/src/panels/inspector/design/CornerSection.tsx +45 -14
  136. package/src/panels/inspector/design/DefinitionProps.tsx +315 -0
  137. package/src/panels/inspector/design/DefinitionSection.tsx +136 -0
  138. package/src/panels/inspector/design/DeviceSection.tsx +210 -0
  139. package/src/panels/inspector/design/FillSection.tsx +83 -51
  140. package/src/panels/inspector/design/FontField.tsx +196 -0
  141. package/src/panels/inspector/design/HtmlSection.tsx +23 -12
  142. package/src/panels/inspector/design/InstanceSection.tsx +373 -154
  143. package/src/panels/inspector/design/MaskSection.tsx +84 -0
  144. package/src/panels/inspector/design/MaterialSection.tsx +177 -0
  145. package/src/panels/inspector/design/MediaSection.tsx +273 -120
  146. package/src/panels/inspector/design/MeshSection.tsx +910 -82
  147. package/src/panels/inspector/design/PaintRows.tsx +550 -0
  148. package/src/panels/inspector/design/PlateStyleSection.tsx +177 -0
  149. package/src/panels/inspector/design/ShadowSection.tsx +221 -48
  150. package/src/panels/inspector/design/SplineFollowSection.tsx +235 -0
  151. package/src/panels/inspector/design/StrokeSection.tsx +228 -43
  152. package/src/panels/inspector/design/TemplateFieldSection.tsx +57 -0
  153. package/src/panels/inspector/design/TransformSection.tsx +244 -50
  154. package/src/panels/inspector/design/TypographySection.tsx +679 -110
  155. package/src/panels/inspector/layout.ts +295 -0
  156. package/src/panels/inspector/propValue.ts +199 -0
  157. package/src/panels/inspector/scene/CameraSection.tsx +232 -22
  158. package/src/panels/inspector/scene/EffectsSection.tsx +722 -71
  159. package/src/panels/inspector/scene/MakeItYoursSection.tsx +180 -0
  160. package/src/panels/inspector/scene/SceneDocSection.tsx +191 -0
  161. package/src/panels/inspector/scene/SceneSection.tsx +219 -44
  162. package/src/panels/inspector/scene/TransitionSection.tsx +523 -72
  163. package/src/panels/inspector/storyboard/StoryboardReferenceSection.tsx +593 -0
  164. package/src/panels/inspector/storyboard/VideoStill.tsx +120 -0
  165. package/src/panels/inspector/timeModel.ts +190 -0
  166. package/src/panels/inspector/useDocWrite.ts +438 -146
  167. package/src/panels/library/LibraryBrowser.tsx +435 -0
  168. package/src/panels/library/LibraryGrid.tsx +190 -0
  169. package/src/panels/library/LibraryPreviewPanel.tsx +349 -0
  170. package/src/panels/library/LibraryRail.tsx +84 -0
  171. package/src/panels/library/LibrarySoundPanel.tsx +293 -0
  172. package/src/panels/library/SoundHistory.tsx +245 -0
  173. package/src/panels/library/StockSounds.tsx +390 -0
  174. package/src/panels/library/libraryModel.ts +147 -0
  175. package/src/panels/library/stockSearch.ts +77 -0
  176. package/src/panels/maskMarks.tsx +117 -0
  177. package/src/panels/material/MaterialCommentNode.tsx +54 -0
  178. package/src/panels/material/MaterialGraphCanvas.tsx +861 -0
  179. package/src/panels/material/MaterialGraphMenu.tsx +45 -0
  180. package/src/panels/material/MaterialGroupNode.tsx +56 -0
  181. package/src/panels/material/MaterialLibrary.tsx +253 -0
  182. package/src/panels/material/MaterialNode.tsx +453 -0
  183. package/src/panels/material/MaterialNodePalette.tsx +349 -0
  184. package/src/panels/material/MaterialParameterControls.tsx +525 -0
  185. package/src/panels/material/MaterialRerouteNode.tsx +42 -0
  186. package/src/panels/material/MaterialWorkspace.tsx +501 -0
  187. package/src/panels/material/NodePreview.tsx +70 -0
  188. package/src/panels/material/flowModel.ts +441 -0
  189. package/src/panels/material/parameterValues.ts +231 -0
  190. package/src/panels/material/previewScheduler.ts +235 -0
  191. package/src/panels/material/reactFlow.css +6 -0
  192. package/src/panels/material/socketGlyph.ts +85 -0
  193. package/src/panels/material/viewportMemory.ts +58 -0
  194. package/src/panels/preferences/PreferencesDialog.tsx +215 -0
  195. package/src/panels/share/ShareComponentDialog.tsx +247 -0
  196. package/src/panels/stage/StageMenu.tsx +35 -5
  197. package/src/panels/stage/StagePanel.tsx +338 -23
  198. package/src/panels/stage/cellSlots.tsx +70 -0
  199. package/src/panels/storyboard/BoardCanvas.tsx +739 -0
  200. package/src/panels/storyboard/BoardCursors.tsx +158 -0
  201. package/src/panels/storyboard/BoardDropDialog.tsx +161 -0
  202. package/src/panels/storyboard/BoardPlan.tsx +42 -0
  203. package/src/panels/storyboard/ComponentSheet.tsx +187 -0
  204. package/src/panels/storyboard/ComponentStage.tsx +235 -0
  205. package/src/panels/storyboard/MiniSketch.tsx +173 -0
  206. package/src/panels/storyboard/PartPicker.tsx +64 -0
  207. package/src/panels/storyboard/PlanPanel.tsx +617 -0
  208. package/src/panels/storyboard/ReferencePreview.tsx +217 -0
  209. package/src/panels/storyboard/ShotBrief.tsx +360 -0
  210. package/src/panels/storyboard/ShotCard.tsx +251 -0
  211. package/src/panels/storyboard/StagePreview.tsx +348 -0
  212. package/src/panels/storyboard/StillThumbs.tsx +162 -0
  213. package/src/panels/storyboard/StoryboardView.tsx +79 -0
  214. package/src/panels/storyboard/board.css +1065 -0
  215. package/src/panels/storyboard/board.ts +12 -0
  216. package/src/panels/storyboard/boardClipboard.ts +111 -0
  217. package/src/panels/storyboard/boardOrder.ts +68 -0
  218. package/src/panels/storyboard/boardRows.tsx +425 -0
  219. package/src/panels/storyboard/liveCap.ts +90 -0
  220. package/src/panels/storyboard/plan.css +295 -0
  221. package/src/panels/storyboard/posterCache.ts +133 -0
  222. package/src/panels/storyboard/shotboard/ComponentPicker.tsx +373 -0
  223. package/src/panels/storyboard/shotboard/ImagePicker.tsx +145 -0
  224. package/src/panels/storyboard/shotboard/ShotBoard.tsx +292 -0
  225. package/src/panels/storyboard/shotboard/SketchCanvas.tsx +443 -0
  226. package/src/panels/storyboard/shotboard/SketchInspector.tsx +471 -0
  227. package/src/panels/storyboard/shotboard/SketchItem.tsx +240 -0
  228. package/src/panels/storyboard/shotboard/SketchLayers.tsx +130 -0
  229. package/src/panels/storyboard/shotboard/SketchPlay.tsx +108 -0
  230. package/src/panels/storyboard/shotboard/SketchStrip.tsx +178 -0
  231. package/src/panels/storyboard/shotboard/SketchToolFooter.tsx +99 -0
  232. package/src/panels/storyboard/shotboard/sketch.css +1392 -0
  233. package/src/panels/storyboard/shotboard/sketchModel.ts +219 -0
  234. package/src/panels/storyboard/storyboardDrop.ts +164 -0
  235. package/src/panels/studio/ComponentLibraryRail.tsx +346 -0
  236. package/src/panels/studio/ComponentSidePanel.tsx +355 -0
  237. package/src/panels/studio/ComponentStudio.tsx +243 -0
  238. package/src/panels/studio/ComponentsHome.tsx +318 -0
  239. package/src/panels/studio/ComponentsPreview.tsx +179 -0
  240. package/src/panels/studio/EveryUse.tsx +244 -0
  241. package/src/panels/studio/ThisUsePanel.tsx +679 -0
  242. package/src/panels/studio/componentParts.tsx +341 -0
  243. package/src/panels/studio/components.ts +6 -0
  244. package/src/panels/studio/newCodeComponent.ts +66 -0
  245. package/src/panels/timeline/AudioFxButton.tsx +290 -0
  246. package/src/panels/timeline/AudioLane.tsx +674 -85
  247. package/src/panels/timeline/BlockRow.tsx +154 -85
  248. package/src/panels/timeline/ChannelRow.tsx +378 -129
  249. package/src/panels/timeline/CurvePane.tsx +508 -0
  250. package/src/panels/timeline/Filmstrip.tsx +361 -0
  251. package/src/panels/timeline/GenerateDrawer.tsx +407 -0
  252. package/src/panels/timeline/KeyStretch.tsx +115 -0
  253. package/src/panels/timeline/LifespanRow.tsx +730 -47
  254. package/src/panels/timeline/MarkerLane.tsx +46 -8
  255. package/src/panels/timeline/PlayButton.tsx +91 -0
  256. package/src/panels/timeline/PropertyPicker.tsx +254 -0
  257. package/src/panels/timeline/ShotRow.tsx +400 -0
  258. package/src/panels/timeline/SoundMode.tsx +1406 -0
  259. package/src/panels/timeline/TimelineDock.tsx +2338 -272
  260. package/src/panels/timeline/TransportVolume.tsx +163 -0
  261. package/src/panels/timeline/beatRuler.ts +74 -0
  262. package/src/panels/timeline/curveModel.ts +500 -0
  263. package/src/panels/timeline/duckUnderVoice.ts +68 -0
  264. package/src/panels/timeline/keyframeMenu.ts +138 -0
  265. package/src/panels/timeline/labelWidth.ts +49 -0
  266. package/src/panels/timeline/marquee.ts +155 -0
  267. package/src/panels/timeline/model.ts +1860 -199
  268. package/src/panels/timeline/snap.ts +125 -43
  269. package/src/panels/timeline/staggerPreview.tsx +92 -0
  270. package/src/panels/timeline/takeMeasure.ts +72 -0
  271. package/src/panels/timeline/useLive.ts +48 -0
  272. package/src/panels/timeline/viewport.ts +234 -0
  273. package/src/panels/toolbar/BackChip.tsx +116 -0
  274. package/src/panels/toolbar/CameraViewBar.tsx +118 -49
  275. package/src/panels/toolbar/CanvasBar.tsx +117 -0
  276. package/src/panels/toolbar/InsertButton.tsx +38 -0
  277. package/src/panels/toolbar/IsolationTrail.tsx +156 -0
  278. package/src/panels/toolbar/PanelToggles.tsx +86 -0
  279. package/src/panels/toolbar/ShadingBar.tsx +119 -26
  280. package/src/panels/toolbar/ToolDockBar.tsx +329 -80
  281. package/src/panels/toolbar/ToolFooter.tsx +102 -0
  282. package/src/panels/toolbar/ViewModeBar.tsx +247 -38
  283. package/src/panels/toolbar/WorkPlaneBar.tsx +94 -0
  284. package/src/panels/toolbar/useAddRows.tsx +326 -0
  285. package/src/panels/toolbar/useDismiss.ts +122 -0
  286. package/src/panels/versions/VersionHistoryPanel.tsx +274 -0
  287. package/src/panels/versions/versionModel.ts +103 -0
  288. package/src/panels/virtualWindow.ts +271 -0
  289. package/src/shotTokens.css +151 -60
  290. package/src/stage/FrustumGizmo.tsx +504 -84
  291. package/src/stage/GridPlane.tsx +225 -16
  292. package/src/stage/NodePreviews.tsx +628 -0
  293. package/src/stage/PerfHud.tsx +437 -47
  294. package/src/stage/SplitRenderer.tsx +816 -169
  295. package/src/stage/StageApp.tsx +4274 -486
  296. package/src/stage/StageRootBoundary.tsx +114 -0
  297. package/src/stage/StageTools.tsx +651 -151
  298. package/src/stage/TransformGizmo.tsx +696 -0
  299. package/src/stage/adaptivePresentation.ts +145 -0
  300. package/src/stage/bridgeClient.ts +2522 -41
  301. package/src/stage/exportWorker.ts +9 -0
  302. package/src/stage/feed.ts +305 -14
  303. package/src/stage/fontPreview.ts +176 -0
  304. package/src/stage/frustumGeometry.ts +319 -1
  305. package/src/stage/furnitureTokens.ts +33 -0
  306. package/src/stage/gizmoMath.ts +508 -16
  307. package/src/stage/gpuTimer.ts +276 -0
  308. package/src/stage/instanceModules.ts +194 -33
  309. package/src/stage/interactions/move.ts +24 -5
  310. package/src/stage/isolation.ts +291 -33
  311. package/src/stage/jsSelfProfiler.ts +325 -0
  312. package/src/stage/main.tsx +116 -16
  313. package/src/stage/modalState.ts +222 -23
  314. package/src/stage/moduleEpoch.ts +60 -0
  315. package/src/stage/motionPathStage.ts +279 -0
  316. package/src/stage/motionPreview.ts +74 -0
  317. package/src/stage/overlays/Overlays.tsx +1112 -159
  318. package/src/stage/overlays/Rulers.tsx +495 -0
  319. package/src/stage/panes.ts +159 -10
  320. package/src/stage/project.ts +68 -3
  321. package/src/stage/renderScaleController.ts +730 -0
  322. package/src/stage/rulers.ts +129 -0
  323. package/src/stage/sceneExtent.ts +75 -0
  324. package/src/stage/shading.ts +20 -0
  325. package/src/stage/splineStage.ts +632 -0
  326. package/src/stage/stagePerformanceTelemetry.ts +717 -0
  327. package/src/stage/stageTheme.ts +36 -0
  328. package/src/stage/stageWarmup.ts +11 -0
  329. package/src/stage/textAutoSize.ts +124 -0
  330. package/src/stage/tier1Export.ts +641 -0
  331. package/src/stage/tokenColor.ts +14 -9
  332. package/src/stage/view.ts +56 -9
  333. package/src/stage/workingView.ts +277 -33
  334. package/src/state/accountPrefs.ts +261 -0
  335. package/src/state/agentActions.ts +173 -15
  336. package/src/state/agentActivity.ts +198 -0
  337. package/src/state/agentQuestion.ts +239 -0
  338. package/src/state/bootOpen.ts +42 -0
  339. package/src/state/cameraVerbs.ts +139 -0
  340. package/src/state/clientId.ts +6 -1
  341. package/src/state/comments.ts +1099 -0
  342. package/src/state/context.tsx +19 -1
  343. package/src/state/editorPrefs.ts +220 -0
  344. package/src/state/errorReports.ts +121 -0
  345. package/src/state/fieldWrite.ts +161 -0
  346. package/src/state/fontRecents.ts +70 -0
  347. package/src/state/fonts.ts +656 -0
  348. package/src/state/graphClipboard.ts +414 -0
  349. package/src/state/imageThumbs.ts +216 -0
  350. package/src/state/insert.ts +444 -67
  351. package/src/state/isolationTrail.ts +92 -0
  352. package/src/state/keyMoves.ts +134 -0
  353. package/src/state/keyframeClipboard.ts +177 -0
  354. package/src/state/keymap.ts +1153 -117
  355. package/src/state/layoutPrefs.ts +272 -0
  356. package/src/state/layouts.ts +205 -0
  357. package/src/state/measureMedia.ts +167 -0
  358. package/src/state/menu.ts +2341 -28
  359. package/src/state/motionStamp.ts +7 -0
  360. package/src/state/panelSize.ts +375 -5
  361. package/src/state/pendingChanges.ts +119 -0
  362. package/src/state/playHold.ts +78 -0
  363. package/src/state/playbackPreparation.ts +562 -0
  364. package/src/state/posterCapture.ts +242 -0
  365. package/src/state/presence.ts +254 -0
  366. package/src/state/projectComponents.ts +160 -0
  367. package/src/state/renderEvents.ts +298 -18
  368. package/src/state/runtimeErrors.ts +46 -0
  369. package/src/state/selection.ts +12 -0
  370. package/src/state/shortcuts.ts +1606 -0
  371. package/src/state/sketchGuide.ts +51 -0
  372. package/src/state/splineRefs.ts +87 -0
  373. package/src/state/stageHealth.ts +259 -0
  374. package/src/state/stageWatchdog.ts +47 -0
  375. package/src/state/stillStage.ts +330 -0
  376. package/src/state/stillThumbs.ts +474 -0
  377. package/src/state/store.ts +23591 -2982
  378. package/src/state/storyboardModel.ts +528 -0
  379. package/src/state/sync.ts +1257 -0
  380. package/src/state/syncCache.ts +159 -0
  381. package/src/state/triangles.ts +13 -0
  382. package/src/state/types.ts +1698 -55
  383. package/src/state/unsavedGuard.ts +49 -0
  384. package/src/state/viewMode.ts +200 -0
  385. package/src/state/webmcp.ts +1128 -0
  386. package/src/state/workspace.ts +1147 -0
  387. package/src/styles/assets-tab.css +304 -0
  388. package/src/styles/canvas.css +545 -0
  389. package/src/styles/comments.css +1435 -0
  390. package/src/styles/controls.css +162 -0
  391. package/src/styles/dialogs.css +390 -0
  392. package/src/styles/insert-drawer.css +586 -0
  393. package/src/styles/inspector-board.css +207 -0
  394. package/src/styles/inspector-object.css +486 -0
  395. package/src/styles/inspector-shot.css +252 -0
  396. package/src/styles/inspector.css +360 -0
  397. package/src/styles/left-column.css +1628 -0
  398. package/src/styles/library-preview.css +575 -0
  399. package/src/styles/library.css +512 -0
  400. package/src/styles/modes/code.css +569 -0
  401. package/src/styles/modes/component.css +1561 -0
  402. package/src/styles/modes/material.css +1201 -0
  403. package/src/styles/modes/storyboard.css +518 -0
  404. package/src/styles/share-component.css +49 -0
  405. package/src/styles/shell.css +653 -0
  406. package/src/styles/shot-brief.css +360 -0
  407. package/src/styles/states.css +76 -0
  408. package/src/styles/sync.css +380 -0
  409. package/src/styles/timeline-graph.css +384 -0
  410. package/src/styles/timeline-meters.css +89 -0
  411. package/src/styles/timeline-rows.css +1959 -0
  412. package/src/styles/timeline-sound.css +1003 -0
  413. package/src/styles/timeline.css +754 -0
  414. package/src/styles/tool-footer.css +525 -0
  415. package/src/styles/topbar.css +886 -0
  416. package/src/styles/versions.css +262 -0
  417. package/src/styles.css +72 -2921
  418. package/src/tools.ts +108 -23
  419. package/dist/assets/index-B7notge7.css +0 -1
  420. package/dist/assets/index-BBE6Ta9L.js +0 -52
  421. package/src/panels/files/icons.tsx +0 -118
  422. package/src/panels/header/DocSwitcher.tsx +0 -85
  423. package/src/panels/header/TransportBar.tsx +0 -86
  424. package/src/panels/inspector/animate/BlockTiming.tsx +0 -341
  425. package/src/panels/inspector/animate/DuringBlocks.tsx +0 -85
  426. package/src/panels/inspector/animate/InOutPresets.tsx +0 -57
  427. package/src/panels/inspector/animate/ResolvedChannels.tsx +0 -150
  428. package/src/panels/inspector/animate/useBlocks.ts +0 -43
  429. package/src/panels/material/MaterialPicker.tsx +0 -172
  430. package/src/panels/timeline/SceneStrip.tsx +0 -145
  431. package/src/panels/toolbar/AddMenu.tsx +0 -230
  432. package/src/stage/MoveGizmo.tsx +0 -411
@@ -0,0 +1,162 @@
1
+ /* The chrome's own generic controls: the range-slider recipe and the bar
2
+ switch. The button, the select and the badge are house widgets, defined
3
+ once in packages/ui widgets.css; this chrome never restates them. */
4
+
5
+ /* The scrub is the Components Preview transport's progress (componentParts.tsx,
6
+ under the stage). Styled here rather than in the shared sheet because no
7
+ other chrome has one.
8
+
9
+ THE DOCK'S ZOOM RIDES THE SAME RECIPE: it is the other range input the
10
+ chrome shows at rest, and two sliders in one window that disagree about
11
+ the height of a track or the size of a thumb is the kind of difference
12
+ nobody can name and everybody sees. Only its width differs (timeline.css).
13
+ The volume takes the box here and draws its own track and thumb in
14
+ timeline-meters.css: Paper gives it a filled level and a 12x20 fader cap,
15
+ because a level is read off the slider and a zoom is not. */
16
+ .transport-scrub,
17
+ .dock-zoom,
18
+ .dock-volume {
19
+ appearance: none;
20
+ -webkit-appearance: none;
21
+ width: 240px;
22
+ height: 18px;
23
+ background: transparent;
24
+ cursor: pointer;
25
+ }
26
+
27
+ .transport-scrub::-webkit-slider-runnable-track,
28
+ .dock-zoom::-webkit-slider-runnable-track {
29
+ height: 4px;
30
+ border-radius: var(--radius-full);
31
+ background: var(--fill-rest);
32
+ }
33
+
34
+ .transport-scrub::-webkit-slider-thumb,
35
+ .dock-zoom::-webkit-slider-thumb {
36
+ appearance: none;
37
+ -webkit-appearance: none;
38
+ width: 12px;
39
+ height: 12px;
40
+ margin-top: calc(-1 * var(--space-2));
41
+ border-radius: var(--radius-full);
42
+ background: var(--timeline-ink);
43
+ border: 0;
44
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
45
+ }
46
+
47
+ .transport-scrub::-moz-range-track,
48
+ .dock-zoom::-moz-range-track {
49
+ height: 4px;
50
+ border-radius: var(--radius-full);
51
+ background: var(--fill-rest);
52
+ }
53
+
54
+ .transport-scrub::-moz-range-thumb,
55
+ .dock-zoom::-moz-range-thumb {
56
+ width: 12px;
57
+ height: 12px;
58
+ border: 0;
59
+ border-radius: var(--radius-full);
60
+ background: var(--timeline-ink);
61
+ }
62
+
63
+ .transport-scrub:focus-visible,
64
+ .dock-zoom:focus-visible,
65
+ .dock-volume:focus-visible {
66
+ outline: none;
67
+ box-shadow: var(--focus-ring);
68
+ border-radius: var(--radius-full);
69
+ }
70
+
71
+ /* A SWITCH IN A BAR is the house 28px track with 24px chips, like every
72
+ other segmented control. The docked heads (the right column's Inspector |
73
+ Agent, the timeline's Rows | Graph | Sound) pass `is-bar` so a chip that
74
+ ellipsizes keeps its text centred: by line-height, not by flex. */
75
+ .segmented.is-bar .segmented-item {
76
+ height: calc(var(--control-h) - 2 * var(--space-1));
77
+ padding-block: 0;
78
+ line-height: calc(var(--control-h) - 2 * var(--space-1));
79
+ }
80
+
81
+
82
+ /* "Use as mask"'s mode swatches (Paper page 25): a picture of what the matte
83
+ reads, so it stays white-to-clear and white-to-black in either theme. */
84
+ .mask-swatch {
85
+ display: block;
86
+ width: 20px;
87
+ height: 20px;
88
+ border: 1px solid var(--line-strong);
89
+ border-radius: var(--radius-xs);
90
+ }
91
+ .mask-swatch.is-alpha { background: linear-gradient(90deg, var(--gray-97), transparent); }
92
+ .mask-swatch.is-luma { background: linear-gradient(90deg, var(--gray-100), var(--gray-11)); }
93
+
94
+ /* A mask's mode on its row, in the outline and the timeline alike (Paper page
95
+ 25): "Alpha", "Luma", "Alpha · Inv", or "Off" on a hidden mask. In a narrow
96
+ column it gives way BEFORE the layer's name: its shrink outweighs the name's
97
+ a thousand to one, so the badge ellipses (its title keeps the words) and the
98
+ name keeps its own. A block box, because an ellipsis needs one. */
99
+ /* A placed code component whose contract moved since it was placed: it still
100
+ renders the old contract's defaults until Accept current contract. The
101
+ mask badge's box, in the warning hue. */
102
+ .layer-drift-badge {
103
+ /* Gives way before the layer's name, as the mask badge does: its title
104
+ keeps the words, and the inspector says it in full. */
105
+ flex: 0 1000 auto;
106
+ min-width: 0;
107
+ overflow: hidden;
108
+ text-overflow: ellipsis;
109
+ display: inline-block;
110
+ height: 16px;
111
+ /* The 16px box less its two hairlines, so the one line sits centred. */
112
+ line-height: calc(var(--leading-xs) - 2px);
113
+ margin-left: var(--space-2);
114
+ padding: 0 var(--space-2);
115
+ border: 1px solid color-mix(in srgb, var(--warn) 40%, transparent);
116
+ border-radius: var(--radius-xs);
117
+ font-family: var(--font-mono);
118
+ font-size: var(--type-micro);
119
+ color: var(--warn);
120
+ white-space: nowrap;
121
+ }
122
+
123
+ .mask-badge {
124
+ flex: 0 1000 auto;
125
+ min-width: 0;
126
+ display: inline-block;
127
+ overflow: hidden;
128
+ text-overflow: ellipsis;
129
+ height: 16px;
130
+ padding: 0 var(--space-2);
131
+ border: 1px solid var(--line-strong);
132
+ border-radius: var(--radius-xs);
133
+ font-family: var(--font-mono);
134
+ font-size: var(--type-micro);
135
+ /* The 16px box less its two hairlines, so the one line sits centred. */
136
+ line-height: 14px;
137
+ color: var(--ink-2);
138
+ white-space: nowrap;
139
+ }
140
+
141
+ /* One row's slice of a mask's bracket (maskMarks.tsx). `left` is inline, the
142
+ row's own inset for the bracket's depth; the line stands 4px into its 10px
143
+ column, and the row must be positioned. */
144
+ .mask-bracket {
145
+ position: absolute;
146
+ top: 0;
147
+ bottom: 0;
148
+ width: 6px;
149
+ margin-left: var(--space-2);
150
+ border-left: 1.5px solid var(--line-strong);
151
+ pointer-events: none;
152
+ }
153
+ .mask-bracket.is-top {
154
+ top: var(--space-4);
155
+ border-top: 1.5px solid var(--line-strong);
156
+ border-top-left-radius: var(--radius-2xs);
157
+ }
158
+ .mask-bracket.is-bottom {
159
+ bottom: 50%;
160
+ border-bottom: 1.5px solid var(--line-strong);
161
+ border-bottom-left-radius: var(--radius-2xs);
162
+ }
@@ -0,0 +1,390 @@
1
+ /* Dialogs: export, the manual and the material picker. The library browser lives in library.css. */
2
+
3
+ /* ---- export -------------------------------------------------------------
4
+ Paper's form dialog. The WIDTH is the shared `Dialog size="wide"` (648px,
5
+ 24px padding, 16px gaps), so this block owns only what sits inside it: a
6
+ label column, the controls, a hairline estimate and one outcome card. */
7
+
8
+ .export-dialog {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: var(--space-7);
12
+ min-width: 0;
13
+ font-size: var(--type-md);
14
+ line-height: var(--leading-md);
15
+ }
16
+
17
+ /* A FIXED 96px LABEL COLUMN, so every control starts on one edge and five
18
+ rows read as one form rather than five sentences. 32 tall: the field
19
+ height the selects take. */
20
+ .export-row {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--space-7);
24
+ min-height: var(--button-h);
25
+ }
26
+
27
+ .export-label {
28
+ flex: none;
29
+ width: 96px;
30
+ color: var(--ink-2);
31
+ }
32
+
33
+ /* The format and destination switches take the accent chip (`.is-accent`)
34
+ and size to their options, not to the row: a two-chip track stretched to
35
+ the full lane reads as a slider. A grid, so both chips are the width of the
36
+ longer label and the switch stays symmetric.
37
+ PAPER'S FORM TRACK, not the toolbar one: 32 tall like the selects beside
38
+ it, with 28px chips. That size is the shared `.segmented.is-lg`, which the
39
+ dialog passes; only the width rules live here. Every rule here is
40
+ `.segmented.export-switch` (three classes on the items): the shared
41
+ `.segmented .segmented-item` is two, and a tie would leave the answer to
42
+ whichever sheet loads last. */
43
+ .segmented.export-switch {
44
+ flex: none;
45
+ display: inline-grid;
46
+ grid-auto-flow: column;
47
+ grid-auto-columns: 1fr;
48
+ }
49
+
50
+ .segmented.export-switch .segmented-item {
51
+ min-width: 80px;
52
+ }
53
+
54
+ /* Paper's destination chips are 156 wide, so "This browser" and "Studio
55
+ server" sit in a track that reads as a place, not squeezed to their text. */
56
+ .segmented.export-switch.is-destination .segmented-item {
57
+ min-width: 156px;
58
+ }
59
+
60
+ /* PAPER'S FORM SELECT: the shared 32px `.select.is-field` at the dialog's
61
+ 12/20 type and the 8px card corner, filling its row. Its caret is the house
62
+ dropdown caret the shared select paints (widgets.css `.field-caret`). */
63
+ .export-select {
64
+ flex: 1 1 auto;
65
+ min-width: 0;
66
+ font-size: var(--type-md);
67
+ line-height: var(--leading-md);
68
+ border-radius: var(--radius-tab);
69
+ }
70
+
71
+ .export-audio {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: var(--space-4);
75
+ min-width: 0;
76
+ }
77
+
78
+ .export-audio-hint {
79
+ color: var(--ink-3);
80
+ }
81
+
82
+ /* The quiet notes (a capability, an omitted transition, a render's warning).
83
+ Dim rather than alarming: each says why the file differs from the
84
+ timeline, and none of them is a failure. */
85
+ .export-note {
86
+ margin: 0;
87
+ color: var(--ink-3);
88
+ line-height: var(--leading-body);
89
+ }
90
+
91
+ /* THE ESTIMATE IS A HAIRLINE BLOCK, not a filled tile: the same label column
92
+ as the rows above it, between two strong lines. */
93
+ .export-estimate {
94
+ display: grid;
95
+ grid-template-columns: 96px minmax(0, 1fr);
96
+ gap: var(--space-4) var(--space-7);
97
+ margin: 0;
98
+ padding-block: var(--space-7);
99
+ border-block: 1px solid var(--line-strong);
100
+ }
101
+
102
+ .export-estimate dt {
103
+ color: var(--ink-2);
104
+ }
105
+
106
+ .export-estimate dd {
107
+ margin: 0;
108
+ min-width: 0;
109
+ font-weight: var(--weight-medium);
110
+ color: var(--ink-1);
111
+ font-variant-numeric: var(--numeric);
112
+ /* Wraps rather than clips. The range strings are the whole value of the
113
+ row, and half a range is a wrong number rather than a short one. */
114
+ overflow-wrap: anywhere;
115
+ }
116
+
117
+ /* The card's slot is the dialog's polite live region (ExportDialog.tsx), so
118
+ it is in the DOM even with no card. Empty, it would still cost one 16px
119
+ flex gap under the estimate; the negative margin hands that gap back. */
120
+ .export-outcome-slot {
121
+ display: flex;
122
+ flex-direction: column;
123
+ }
124
+
125
+ .export-outcome-slot:empty {
126
+ margin-block-start: calc(-1 * var(--space-7));
127
+ }
128
+
129
+ /* ONE OUTCOME CARD: rendering, saved, cancelled or failed. Sunken, so it
130
+ reads as the dialog's report rather than as another control. */
131
+ .export-outcome {
132
+ display: flex;
133
+ flex-direction: column;
134
+ gap: var(--space-6);
135
+ padding: var(--space-7);
136
+ background: var(--surface-sunken);
137
+ border: 1px solid var(--line-strong);
138
+ border-radius: var(--radius-tab);
139
+ }
140
+
141
+ .export-outcome-head {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: space-between;
145
+ gap: var(--space-6);
146
+ }
147
+
148
+ .export-outcome-title {
149
+ font-weight: var(--weight-medium);
150
+ color: var(--ink-1);
151
+ }
152
+
153
+ /* Blue is a signal: the one live state takes the accent ink, and a finished
154
+ run (failed included) stays ink. */
155
+ .export-outcome.is-rendering .export-outcome-title {
156
+ color: var(--accent-ink);
157
+ }
158
+
159
+ /* The card's Cancel: a `.btn` at the 28px control height with the smaller
160
+ corner, so it sits inside the card's padding rather than crowding it. */
161
+ .export-outcome-cancel {
162
+ flex: none;
163
+ height: var(--control-h);
164
+ border-radius: var(--radius-sm);
165
+ font-weight: var(--weight-regular);
166
+ }
167
+
168
+ .export-outcome-copy {
169
+ margin: 0;
170
+ color: var(--ink-2);
171
+ overflow-wrap: anywhere;
172
+ }
173
+
174
+ /* The UA's marker triangle takes neither a token colour nor Paper's 12px, so
175
+ the summary draws its own chevron and hides the marker in both engines. */
176
+ .export-log summary {
177
+ display: inline-flex;
178
+ align-items: center;
179
+ gap: var(--space-4);
180
+ color: var(--ink-1);
181
+ cursor: pointer;
182
+ list-style: none;
183
+ border-radius: var(--radius-xs);
184
+ }
185
+
186
+ .export-log summary::-webkit-details-marker {
187
+ display: none;
188
+ }
189
+
190
+ .export-log summary:focus-visible {
191
+ outline: none;
192
+ box-shadow: var(--focus-ring);
193
+ }
194
+
195
+ .export-log-chevron {
196
+ flex: none;
197
+ width: 12px;
198
+ height: 12px;
199
+ fill: none;
200
+ stroke: var(--ink-2);
201
+ stroke-width: 1.5;
202
+ stroke-linecap: round;
203
+ stroke-linejoin: round;
204
+ transition: transform var(--dur-fast) var(--ease);
205
+ }
206
+
207
+ .export-log[open] .export-log-chevron {
208
+ transform: rotate(180deg);
209
+ }
210
+
211
+ .export-log pre {
212
+ max-height: 180px;
213
+ margin: var(--space-4) 0 0;
214
+ padding: var(--space-4) var(--space-5);
215
+ overflow: auto;
216
+ color: var(--ink-2);
217
+ font: var(--type-micro)/var(--leading-none) var(--font-mono);
218
+ line-height: var(--leading-body);
219
+ white-space: pre-wrap;
220
+ word-break: break-word;
221
+ background: var(--fill-rest);
222
+ border-radius: var(--radius-sm);
223
+ }
224
+
225
+ /* ---- the manual and the material picker ----------------------------------
226
+ The WIDTH GOES ON THE DIALOG, not on its body: widening the body only
227
+ overflows the box and clips its contents.
228
+
229
+ The manual: a shortcut row is a sentence plus a kbd on ONE line, and at
230
+ the shared 320px every one of the fifty-six wraps.
231
+ `.dialog-body` already carries `overflow: auto; min-height: 0`, so the
232
+ max-height is what makes the long reference scroll inside the dialog rather
233
+ than off the bottom of the viewport. */
234
+ .dialog.shot-help-dialog {
235
+ width: 560px;
236
+ max-height: 80vh;
237
+ }
238
+
239
+ /* The saved video's two actions under the Saved line (hosted only). */
240
+ .export-share-links {
241
+ display: flex;
242
+ gap: var(--space-7);
243
+ }
244
+
245
+ /* Preferences (gap 5, Paper "PreferencesDialog / dark"): 500 wide, a section
246
+ per hairline, a label and hint on the left of each row and its control on
247
+ the right. Built on the wide dialog for its close X, with its own padding. */
248
+ .dialog.is-wide.prefs-dialog {
249
+ width: 500px;
250
+ max-height: 80vh;
251
+ gap: var(--space-4);
252
+ padding: var(--space-7) var(--space-8);
253
+ }
254
+ .dialog.is-wide.prefs-dialog .dialog-title {
255
+ font-size: var(--type-title);
256
+ }
257
+ .dialog.is-wide.prefs-dialog .dialog-close {
258
+ top: var(--space-6);
259
+ right: var(--space-7);
260
+ }
261
+ .prefs-title {
262
+ display: inline-flex;
263
+ align-items: center;
264
+ gap: var(--space-4);
265
+ }
266
+ .prefs-kbd {
267
+ font: inherit;
268
+ font-size: var(--type-micro);
269
+ font-weight: var(--weight-regular);
270
+ color: var(--ink-3);
271
+ background: var(--fill-state-soft);
272
+ border-radius: var(--radius-xs);
273
+ padding: var(--space-1) var(--space-3);
274
+ }
275
+ .prefs-body {
276
+ display: flex;
277
+ flex-direction: column;
278
+ }
279
+ .prefs-section {
280
+ display: flex;
281
+ flex-direction: column;
282
+ padding: var(--space-4) 0 var(--space-2);
283
+ border-top: 1px solid var(--line);
284
+ }
285
+ .prefs-section-label {
286
+ padding-bottom: var(--space-2);
287
+ font-size: var(--type-sm);
288
+ font-weight: var(--weight-semibold);
289
+ color: var(--ink-2);
290
+ }
291
+ .prefs-row {
292
+ display: flex;
293
+ align-items: center;
294
+ justify-content: space-between;
295
+ gap: var(--space-6);
296
+ min-height: calc(var(--control-h) + var(--space-3));
297
+ padding: var(--space-2) 0;
298
+ }
299
+ .prefs-row-text {
300
+ display: flex;
301
+ flex-direction: column;
302
+ gap: var(--space-1);
303
+ min-width: 0;
304
+ }
305
+ .prefs-row-label {
306
+ font-size: var(--type-md);
307
+ color: var(--ink-1);
308
+ }
309
+ .prefs-row-hint {
310
+ font-size: var(--type-sm);
311
+ color: var(--ink-3);
312
+ }
313
+ .prefs-row-control {
314
+ flex: none;
315
+ }
316
+ /* Equal chips sized to the LONGEST label. The shared track splits a
317
+ content-sized width with `flex: 1 1 0`, which clipped "When they fit"
318
+ whenever "Off" held the semibold weight. */
319
+ .prefs-row-control .segmented {
320
+ display: inline-grid;
321
+ grid-auto-flow: column;
322
+ grid-auto-columns: 1fr;
323
+ }
324
+ .dialog.prefs-dialog .dialog-actions {
325
+ justify-content: space-between;
326
+ padding-top: var(--space-6);
327
+ border-top: 1px solid var(--line);
328
+ }
329
+ .prefs-footnote {
330
+ font-size: var(--type-sm);
331
+ color: var(--ink-3);
332
+ }
333
+
334
+ /* "THE STORYBOARD IS READY": an agent's question (AgentQuestionDialog.tsx).
335
+ The summary is the agent's lines, drawn as text: kept as written, wrapped,
336
+ and scrolled past a few lines so the actions stay in view. */
337
+ .agent-question-summary {
338
+ max-height: 240px;
339
+ margin: 0;
340
+ overflow: auto;
341
+ padding: var(--space-4);
342
+ font-family: var(--font-sans);
343
+ font-size: var(--type-sm);
344
+ color: var(--ink-1);
345
+ white-space: pre-wrap;
346
+ overflow-wrap: anywhere;
347
+ background: var(--surface-secondary);
348
+ border: 1px solid var(--line);
349
+ border-radius: var(--radius-sm);
350
+ }
351
+
352
+ .agent-question-who {
353
+ margin: 0;
354
+ font-size: var(--type-sm);
355
+ color: var(--ink-3);
356
+ }
357
+
358
+ .agent-question-stale {
359
+ margin: 0;
360
+ font-size: var(--type-sm);
361
+ color: var(--warn);
362
+ }
363
+
364
+ .agent-question-note {
365
+ resize: none;
366
+ }
367
+
368
+ /* The credits an export owes (v49): the note, then the exact lines, which
369
+ are copied as they are, so they wrap but never reflow into one line. */
370
+ .export-credits {
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: var(--space-4);
374
+ }
375
+
376
+ .export-credits-text {
377
+ margin: 0;
378
+ max-height: 120px;
379
+ overflow-y: auto;
380
+ padding: var(--space-4);
381
+ font-family: inherit;
382
+ font-size: var(--type-md);
383
+ line-height: var(--leading-sm);
384
+ color: var(--ink-2);
385
+ white-space: pre-wrap;
386
+ overflow-wrap: anywhere;
387
+ background: var(--surface-well);
388
+ border: 1px solid var(--line);
389
+ border-radius: var(--radius-sm);
390
+ }