@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,252 @@
1
+ /* The inspector's shot context: the effects list and its add menu, the
2
+ camera's key diamond, the shader background button's glyph, and Make it
3
+ yours' field rows. Imported
4
+ right after inspector.css, in the same layer. Every field, every row of
5
+ buttons and every readout in these sections is the house's (ui
6
+ widgets.css); nothing here restates one. */
7
+
8
+ .effect-row + .effect-row {
9
+ margin-top: 1px;
10
+ }
11
+
12
+ /* The params of a switched-on effect, indented under their head so the
13
+ grouping is visible without a box around every effect. */
14
+ /* WRAPS at two per line. A single flex row put CRT's and Glitch's three
15
+ params into ~190px, which is the same squeeze that turned the camera's
16
+ Zoom / Roll / Focus into "Z…", "R…", "F…": one rule, two symptoms. The
17
+ basis is just under half so two fit and a third is pushed down. Rows and
18
+ the two of a pair sit 6px apart, the inspector's one rhythm. */
19
+ .effect-params {
20
+ display: flex;
21
+ flex-wrap: wrap;
22
+ gap: var(--space-3);
23
+ padding: var(--space-1) 0 var(--space-5) var(--space-5);
24
+ border-left: 1px solid var(--line-soft);
25
+ margin-left: var(--space-1);
26
+ }
27
+
28
+ .effect-params > * {
29
+ flex: 1 1 calc(50% - var(--space-3));
30
+ min-width: 0;
31
+ }
32
+
33
+ /* A vector param (Grade's Lift, Gamma and Gain, a ghost's shift, a ray
34
+ centre) is one labelled box across the whole line. */
35
+ .effect-params > .effect-param.is-vec {
36
+ flex-basis: 100%;
37
+ }
38
+
39
+ /* ---- effects, as a list of what is ON ----------------------------------- */
40
+ /* Sixteen permanent toggle rows made the section ~630px tall and made "which
41
+ effects does this shot have" a reading task rather than a glance. The list
42
+ is what is enabled; the rest live behind the header's add menu. */
43
+ .effect-head {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: var(--space-2);
47
+ min-height: var(--row-h);
48
+ padding-right: 1px;
49
+ }
50
+
51
+ .effect-head-label {
52
+ flex: 1;
53
+ min-width: 0;
54
+ color: var(--ink-1);
55
+ white-space: nowrap;
56
+ overflow: hidden;
57
+ text-overflow: ellipsis;
58
+ }
59
+
60
+ /* The remove (the house `.insp-key.is-danger`) stands where the diamonds in
61
+ the boxes below it stand, 5px in from the edge: a box's accessory lane ends
62
+ inside its 1px border and its 8px padding, less the lane's 4px tuck. The
63
+ head has no box, so it takes the border's 1px as padding (`.effect-head`
64
+ above) and the key takes the rest (8 less 4) as its margin. */
65
+ .effect-head > .insp-key {
66
+ margin-right: var(--space-2);
67
+ }
68
+
69
+ /* The add menu. Grouped, because sixteen effects in one flat column is the
70
+ list we just took off the panel. */
71
+ .effect-add-menu {
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: 1px;
75
+ padding: var(--space-2);
76
+ min-width: 180px;
77
+ }
78
+
79
+ .effect-add-group {
80
+ color: var(--ink-3);
81
+ text-transform: uppercase;
82
+ letter-spacing: var(--tracking-caps);
83
+ font-size: var(--type-micro);
84
+ font-weight: var(--weight-semibold);
85
+ padding: var(--space-2) var(--space-2) var(--space-1);
86
+ }
87
+
88
+ .effect-add-group:first-child {
89
+ padding-top: 0;
90
+ }
91
+
92
+ .effect-add-item {
93
+ display: flex;
94
+ align-items: center;
95
+ font: inherit;
96
+ text-align: left;
97
+ color: var(--ink-1);
98
+ background: transparent;
99
+ border: 0;
100
+ border-radius: var(--radius-xs);
101
+ padding: var(--space-2);
102
+ cursor: pointer;
103
+ }
104
+
105
+ .effect-add-item:hover {
106
+ background: var(--fill-rest);
107
+ }
108
+
109
+ /* ---- the camera's key diamond -------------------------------------------- */
110
+ /* Inside each camera field, as its accessory: the house in-field key
111
+ (`.insp-key`, ui widgets.css), the property diamond's 16px box and 10px
112
+ glyph, in the camera's own signal. The ACCENT and not `--kf`, the camera's
113
+ documented exception: `--kf` says a property has a keyframe on a track, and
114
+ a camera pose is not one (CameraSection). Its state is `data-camera-state`
115
+ rather than the property diamond's `is-keyed` / `is-tracked`, which would
116
+ set the field's value in `--kf` (ui's value-ink rule).
117
+
118
+ Static is the house key at rest (the hollow glyph in the third ink);
119
+ animated is the accent edge with a dot in it; keyed is the filled accent,
120
+ with no hover lift, as a keyed property diamond has none. */
121
+ .insp-key.is-camera[data-camera-state="animated"],
122
+ .insp-key.is-camera[data-camera-state="keyed"],
123
+ .insp-key.is-camera[data-camera-state="keyed"]:hover {
124
+ color: var(--accent);
125
+ }
126
+
127
+ .insp-key.is-camera[data-camera-state="keyed"],
128
+ .insp-key.is-camera[data-camera-state="keyed"]:hover {
129
+ background: transparent;
130
+ }
131
+
132
+ .insp-key.is-camera[data-camera-state="animated"] {
133
+ position: relative;
134
+ }
135
+
136
+ .insp-key.is-camera[data-camera-state="animated"]::after {
137
+ content: "";
138
+ position: absolute;
139
+ inset: 0;
140
+ width: 3px;
141
+ height: 3px;
142
+ margin: auto;
143
+ background: var(--accent);
144
+ transform: rotate(45deg);
145
+ }
146
+
147
+ /* A value that changes between the camera's poses reads in the accent ink,
148
+ off its own box's diamond, the way an animated property's value reads in
149
+ `--kf` off its box's diamond. It keys on `data-camera-animated`, not on the
150
+ "animated" state: on a pose the state is "keyed" for every field, and a
151
+ rule on the state dropped the ink each time the playhead crossed one. */
152
+ .numfield:has(> .field-accessory > .insp-key.is-camera[data-camera-animated]) .numfield-input,
153
+ .range-field:has(> .field-accessory > .insp-key.is-camera[data-camera-animated]) .numfield-input {
154
+ color: var(--accent-ink);
155
+ }
156
+
157
+ /* "· 2 keyed" beside the section title. */
158
+ .camera-field-key-count {
159
+ color: var(--accent-ink);
160
+ font-size: var(--type-sm);
161
+ font-weight: var(--weight-regular);
162
+ }
163
+
164
+ /* "Shader background…" under the Shot's Background rows, on the house row
165
+ of buttons (`.insp-buttons`): the sparkles glyph in secondary ink beside
166
+ its words (Paper page 27, artboard 5). */
167
+ .shot-shader-button svg {
168
+ width: 12px;
169
+ height: 12px;
170
+ flex: none;
171
+ color: var(--ink-2);
172
+ }
173
+
174
+ /* ---- Make it yours: one row per template field ------------------------------
175
+ The field's picture (media only), its name over where it lives, and its
176
+ verb; a text field's box takes the line under them. Rows sit 6px apart, the
177
+ inspector's one rhythm. */
178
+ .make-it-yours {
179
+ margin: 0;
180
+ padding: 0;
181
+ list-style: none;
182
+ display: flex;
183
+ flex-direction: column;
184
+ gap: var(--space-3);
185
+ }
186
+
187
+ .make-it-yours-row {
188
+ display: flex;
189
+ flex-direction: column;
190
+ gap: var(--space-2);
191
+ }
192
+
193
+ .make-it-yours-head {
194
+ display: flex;
195
+ align-items: center;
196
+ gap: var(--space-4);
197
+ min-height: var(--control-h);
198
+ }
199
+
200
+ .make-it-yours-thumb {
201
+ flex: none;
202
+ width: 40px;
203
+ height: var(--control-h);
204
+ border-radius: var(--radius-xs);
205
+ background: var(--surface-secondary);
206
+ overflow: hidden;
207
+ }
208
+
209
+ .make-it-yours-media {
210
+ display: block;
211
+ width: 100%;
212
+ height: 100%;
213
+ object-fit: cover;
214
+ }
215
+
216
+ /* The name is the way to the layer: a row name at rest, underlined under the
217
+ pointer like the inspector's other links, and the focus ring on keys. */
218
+ .make-it-yours-name {
219
+ flex: 1;
220
+ min-width: 0;
221
+ display: flex;
222
+ flex-direction: column;
223
+ align-items: flex-start;
224
+ padding: 0;
225
+ border: 0;
226
+ background: none;
227
+ font: inherit;
228
+ text-align: left;
229
+ cursor: pointer;
230
+ }
231
+
232
+ .make-it-yours-name:hover .make-it-yours-label { text-decoration: underline; }
233
+ .make-it-yours-name:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: var(--radius-2xs); }
234
+
235
+ .make-it-yours-label,
236
+ .make-it-yours-where {
237
+ max-width: 100%;
238
+ overflow: hidden;
239
+ text-overflow: ellipsis;
240
+ white-space: nowrap;
241
+ line-height: var(--leading-xs);
242
+ }
243
+
244
+ .make-it-yours-label {
245
+ font-size: var(--type-lg);
246
+ color: var(--ink-1);
247
+ }
248
+
249
+ .make-it-yours-where {
250
+ font-size: var(--type-sm);
251
+ color: var(--ink-3);
252
+ }
@@ -0,0 +1,360 @@
1
+ /* The inspector: the column, its head and footer, the subject line, the scroller, the sections and what every context shares. Shot-only rules are in inspector-shot.css, object-only rules in inspector-object.css. */
2
+
3
+ /* ---- inspector ---------------------------------------------------------- */
4
+ /* One right column, two occupants. The column is the cell: docked under the
5
+ top bar, down to the timeline, its seam on the left. The occupants share it
6
+ and nothing else: the inspector is a scrolling stack of sections, the agent
7
+ drawer is a flex column that scrolls only its transcript and pins its
8
+ composer to the bottom. Each fills what the column leaves it, and the
9
+ `min-height: 0` is what lets it scroll inside the column instead of
10
+ growing past it. */
11
+ .inspector-column {
12
+ grid-column: insp-l / edge-r;
13
+ grid-row: main-t / main-b;
14
+ display: flex;
15
+ flex-direction: column;
16
+ background: var(--surface-panel);
17
+ border-left: 1px solid var(--line);
18
+ }
19
+
20
+ /* THE COLUMN'S HEAD, above either occupant: the Brief | Inspector | Comments
21
+ | Agent switch. The one panel head (`.panel-head`, G1 01), so its bottom
22
+ edge is the canvas bar's and the left column's, and one hairline crosses
23
+ the window. Its one control spans it, 8 in from each side (Paper SB6). */
24
+ .inspector-column > .column-head {
25
+ padding: 0 var(--space-4);
26
+ }
27
+ /* Four words share the switch, and a chip never shrinks below its words and
28
+ padding. At the house 12px a side they need about 282px, and the column's
29
+ 264px floor leaves the track 247: Agent ran 25px off the window at 1024.
30
+ At 6px a side they need about 234px. The chips are still equal while the
31
+ track has room, so a wider column looks the same. */
32
+ .inspector-column > .column-head .segmented .segmented-item {
33
+ padding-inline: var(--space-3);
34
+ }
35
+
36
+ /* THE STATUS FOOTER (InspectorFooter), pinned under the scroller: what the
37
+ inspector is looking at, said as facts. The subject on the left, its length
38
+ and rate on the right in the numeric face. On the head's ground, at Paper's
39
+ 48: the tool footer's height, so the two bottom bands meet in one line. */
40
+ .inspector-footer {
41
+ flex: none;
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: space-between;
45
+ gap: var(--space-4);
46
+ height: var(--panel-foot-h);
47
+ padding: 0 var(--space-6);
48
+ background: var(--surface-panel);
49
+ border-top: 1px solid var(--line);
50
+ font-size: var(--type-md);
51
+ line-height: var(--leading-xs);
52
+ }
53
+
54
+ .inspector-footer-subject {
55
+ min-width: 0;
56
+ overflow: hidden;
57
+ text-overflow: ellipsis;
58
+ white-space: nowrap;
59
+ font-weight: var(--weight-semibold);
60
+ color: var(--ink-1);
61
+ }
62
+
63
+ .inspector-footer-meta {
64
+ flex: none;
65
+ font-family: var(--font-numeric);
66
+ font-variant-numeric: tabular-nums;
67
+ font-size: var(--type-sm);
68
+ color: var(--ink-3);
69
+ }
70
+
71
+ .inspector-column > .inspector,
72
+ .inspector-column > .agent-panel {
73
+ flex: 1 1 auto;
74
+ min-height: 0;
75
+ }
76
+
77
+ /* The subject line fixed on top and one scroller under it. The aside itself
78
+ neither scrolls nor pads, so the sections run edge to edge. */
79
+ .inspector {
80
+ display: flex;
81
+ flex-direction: column;
82
+ }
83
+
84
+ /* `stable` holds the gutter while the stack is short, so a section that grows
85
+ past the fold does not narrow every row under the pointer. */
86
+ .inspector-body {
87
+ flex: 1 1 auto;
88
+ min-height: 0;
89
+ overflow: auto;
90
+ scrollbar-gutter: stable;
91
+ }
92
+
93
+ /* FULL-BLEED SECTIONS, scoped to the column: `.insp-section` lives in
94
+ packages/ui and the retired editor shares it.
95
+
96
+ FLAT, NOT CARDS: Paper draws the stack as full-width rows on the panel
97
+ ground with one hairline BETWEEN sections, so the first one sits straight
98
+ under the head's own seam.
99
+
100
+ PAPER'S SECTION (page 27): 12 all round and 8 between the title row and
101
+ the rows. The title row is 16 tall (the 12/600 title on its 16 line), so a
102
+ closed section is 12 + 16 + 12 = 40. The rows themselves sit 6 apart, the
103
+ house rhythm (ui `.insp-section-body`). */
104
+ .inspector-column .insp-section {
105
+ gap: var(--space-4);
106
+ padding: var(--space-6);
107
+ border-bottom: 0;
108
+ }
109
+
110
+ .inspector-column .insp-section + .insp-section {
111
+ border-top: 1px solid var(--line);
112
+ }
113
+
114
+ /* The 16px row holds the 20px `+` too: it overflows the row by 2 each side
115
+ rather than growing every section's title row by 4. */
116
+ .inspector-column .insp-section-headrow {
117
+ height: 16px;
118
+ }
119
+
120
+ /* One title face open or closed: 12/600 on 16. No icon (Paper draws none),
121
+ the chevron on the right at 12 in the third ink. */
122
+ .inspector-column .insp-section-header,
123
+ .inspector-column .insp-section.is-collapsed .insp-section-header {
124
+ min-height: 0;
125
+ height: 16px;
126
+ gap: var(--space-4);
127
+ font-size: var(--type-md);
128
+ font-weight: var(--weight-semibold);
129
+ line-height: var(--leading-xs);
130
+ }
131
+
132
+ .inspector-column .insp-section-icon {
133
+ display: none;
134
+ }
135
+
136
+ .inspector-column .insp-section-disclosure {
137
+ width: 12px;
138
+ height: 12px;
139
+ color: var(--ink-3);
140
+ }
141
+
142
+ .inspector-column .insp-section-header:hover:not(.is-static) .insp-section-disclosure {
143
+ color: var(--ink-2);
144
+ }
145
+
146
+ /* The title and its note ("· 2 keyed") on one line, 6 apart. */
147
+ .inspector-column .insp-section-titles {
148
+ flex-direction: row;
149
+ align-items: baseline;
150
+ gap: var(--space-3);
151
+ }
152
+
153
+ .inspector-column .insp-section-note {
154
+ flex: none;
155
+ white-space: nowrap;
156
+ }
157
+
158
+ /* A closed section's facts: 11 in the third ink, before the chevron. */
159
+ .inspector-column .insp-section-summary {
160
+ font-size: var(--type-sm);
161
+ line-height: var(--leading-xs);
162
+ color: var(--ink-3);
163
+ }
164
+
165
+ /* The rows sit 8 under the title row, and that 8 is the SECTION's gap, so the
166
+ body drops the house 6px it would add on top. Between rows it keeps the
167
+ house 6 (ui `.insp-section-body`, the rhythm every panel's rows share). */
168
+ .inspector-column .insp-section-body {
169
+ padding-top: 0;
170
+ }
171
+
172
+ /* SUB-HEADINGS, not titles: "Recording sound".
173
+ Caps micro in the third ink, so none reads as a section title. Scoped for
174
+ the same reason as the sections. */
175
+ .inspector-column .insp-heading {
176
+ min-height: 24px;
177
+ font-size: var(--type-micro);
178
+ font-weight: var(--weight-semibold);
179
+ letter-spacing: var(--tracking-caps);
180
+ text-transform: uppercase;
181
+ color: var(--ink-3);
182
+ }
183
+
184
+ /* A frame range in a sub-heading keeps its case: "f12" is a frame. */
185
+ .inspector-column .insp-heading .insp-dim {
186
+ text-transform: none;
187
+ }
188
+
189
+ /* ONE EMPTY STATE for every section: what is missing and how to add it. */
190
+ .insp-empty {
191
+ margin: 0;
192
+ font-size: var(--type-md);
193
+ line-height: var(--leading-body);
194
+ color: var(--ink-2);
195
+ }
196
+
197
+ /* A section's own aside: a fact about the value above it, not a warning. */
198
+ .insp-note {
199
+ margin: 0;
200
+ font-size: var(--type-sm);
201
+ line-height: var(--leading-body);
202
+ color: var(--ink-3);
203
+ }
204
+
205
+ /* agent.css's own `.agent-panel { height: 100% }` is written for a host that
206
+ sizes it; here the column does, and `auto` lets the flex item take what the
207
+ column leaves it. The chrome layer outranks agent.css's component-sheets
208
+ layer, so this wins at any specificity. */
209
+ .inspector-column > .agent-panel {
210
+ height: auto;
211
+ overflow: hidden;
212
+ padding: 0;
213
+ }
214
+
215
+ /* agent.css leaves the title row unpadded because the motion editor wraps it
216
+ in a padded header. This drawer IS the panel, so the padding belongs here.
217
+ The column head names the panel, so the row holds only tools: Key, New and
218
+ close on the right, and the model switch WRAPPED to a full line of its own,
219
+ because the switch beside three buttons does not fit a 264px column. */
220
+ .inspector-column > .agent-panel > .agent-title {
221
+ padding: var(--space-5) var(--space-6);
222
+ border-bottom: 1px solid var(--line-soft);
223
+ flex: none;
224
+ flex-wrap: wrap;
225
+ justify-content: flex-end;
226
+ row-gap: var(--space-3);
227
+ }
228
+
229
+ .inspector-column > .agent-panel .agent-models {
230
+ flex: 1 1 100%;
231
+ order: 1;
232
+ }
233
+
234
+ .inspector-column > .agent-panel .agent-composer {
235
+ padding: var(--space-5) var(--space-6);
236
+ border-top: 1px solid var(--line-soft);
237
+ flex: none;
238
+ }
239
+
240
+
241
+ /* A button that reads as a link: the definition's name in the instance
242
+ inspector, which navigates rather than edits. */
243
+ .link-button {
244
+ padding: 0;
245
+ border: 0;
246
+ background: transparent;
247
+ color: var(--accent-ink);
248
+ cursor: pointer;
249
+ text-align: left;
250
+ }
251
+
252
+ .link-button:hover {
253
+ text-decoration: underline;
254
+ }
255
+
256
+ /* ---- the inspector's head ----------------------------------------------- */
257
+ /* What this panel is describing, said once at the top. Without it the panel
258
+ showed "Shot / Camera / Effects" in one context and "Transform / Appearance"
259
+ in another, with nothing naming the subject either set belonged to. */
260
+ /* FIXED above the scroller. Paper's title row: 48 tall, the 28px icon box,
261
+ then the name over its fact line, 12 in from the column's edge. */
262
+ .insp-head {
263
+ flex: none;
264
+ display: flex;
265
+ align-items: center;
266
+ gap: var(--space-5);
267
+ min-width: 0;
268
+ height: 48px;
269
+ padding: 0 var(--space-6);
270
+ border-bottom: 1px solid var(--line);
271
+ }
272
+
273
+ /* Every subject's glyph sits in the same 28px box on the control fill. */
274
+ .insp-head-icon {
275
+ flex: none;
276
+ display: inline-flex;
277
+ align-items: center;
278
+ justify-content: center;
279
+ width: 28px;
280
+ height: 28px;
281
+ border-radius: var(--radius-sm);
282
+ background: var(--fill-rest);
283
+ color: var(--ink-2);
284
+ }
285
+
286
+ .insp-head-icon svg {
287
+ width: 14px;
288
+ height: 14px;
289
+ }
290
+
291
+ /* The open shot and a component instance take the accent ink: the place the
292
+ author is standing in, and a link to a definition. */
293
+ .insp-head-icon.is-tile,
294
+ .insp-head-icon.is-component {
295
+ color: var(--accent-ink);
296
+ }
297
+
298
+ .insp-head-text {
299
+ display: flex;
300
+ flex-direction: column;
301
+ min-width: 0;
302
+ flex: 1;
303
+ }
304
+
305
+ /* The KIND above the name, because the kind is the stable half: it is what
306
+ tells you which set of sections you are about to read. */
307
+ .insp-head-kind {
308
+ color: var(--ink-3);
309
+ font-size: var(--type-sm);
310
+ line-height: var(--leading-tight);
311
+ }
312
+
313
+ .insp-head-name {
314
+ font-size: var(--type-lg);
315
+ font-weight: var(--weight-semibold);
316
+ color: var(--ink-1);
317
+ white-space: nowrap;
318
+ overflow: hidden;
319
+ text-overflow: ellipsis;
320
+ line-height: var(--leading-xs);
321
+ }
322
+
323
+ /* The fact line under the shot's name: "Shot 01 · 18.00s". */
324
+ .insp-head-meta {
325
+ font-size: var(--type-sm);
326
+ line-height: var(--leading-tight);
327
+ color: var(--ink-3);
328
+ white-space: nowrap;
329
+ overflow: hidden;
330
+ text-overflow: ellipsis;
331
+ }
332
+
333
+ /* The name renames in place, so the Name row could leave the Shot section
334
+ instead of restating the heading two rows below it. Transparent until it is
335
+ pointed at: a permanent input box at the top of the panel would read as a
336
+ form field rather than a title. */
337
+ .insp-head-rename {
338
+ font: inherit;
339
+ font-size: var(--type-lg);
340
+ font-weight: var(--weight-semibold);
341
+ color: var(--ink-1);
342
+ background: transparent;
343
+ border: 1px solid transparent;
344
+ border-radius: var(--radius-xs);
345
+ padding: 0 var(--space-1);
346
+ margin: 0 calc(-1 * var(--space-1));
347
+ min-width: 0;
348
+ width: 100%;
349
+ line-height: var(--leading-xs);
350
+ }
351
+
352
+ .insp-head-rename:hover {
353
+ border-color: var(--line);
354
+ }
355
+
356
+ .insp-head-rename:focus {
357
+ outline: none;
358
+ background: var(--fill-rest);
359
+ border-color: var(--accent);
360
+ }