videowright 0.1.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 (306) hide show
  1. package/README.md +91 -0
  2. package/dist/cli/argv.d.ts +28 -0
  3. package/dist/cli/argv.d.ts.map +1 -0
  4. package/dist/cli/argv.js +115 -0
  5. package/dist/cli/argv.js.map +1 -0
  6. package/dist/cli/bin.d.ts +7 -0
  7. package/dist/cli/bin.d.ts.map +1 -0
  8. package/dist/cli/bin.js +10 -0
  9. package/dist/cli/bin.js.map +1 -0
  10. package/dist/cli/dev.d.ts +19 -0
  11. package/dist/cli/dev.d.ts.map +1 -0
  12. package/dist/cli/dev.js +104 -0
  13. package/dist/cli/dev.js.map +1 -0
  14. package/dist/cli/discover.d.ts +29 -0
  15. package/dist/cli/discover.d.ts.map +1 -0
  16. package/dist/cli/discover.js +104 -0
  17. package/dist/cli/discover.js.map +1 -0
  18. package/dist/cli/discover_project.d.ts +29 -0
  19. package/dist/cli/discover_project.d.ts.map +1 -0
  20. package/dist/cli/discover_project.js +108 -0
  21. package/dist/cli/discover_project.js.map +1 -0
  22. package/dist/cli/errors.d.ts +10 -0
  23. package/dist/cli/errors.d.ts.map +1 -0
  24. package/dist/cli/errors.js +13 -0
  25. package/dist/cli/errors.js.map +1 -0
  26. package/dist/cli/ffmpeg.d.ts +57 -0
  27. package/dist/cli/ffmpeg.d.ts.map +1 -0
  28. package/dist/cli/ffmpeg.js +122 -0
  29. package/dist/cli/ffmpeg.js.map +1 -0
  30. package/dist/cli/index.d.ts +7 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +152 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/cli/playwright_check.d.ts +44 -0
  35. package/dist/cli/playwright_check.d.ts.map +1 -0
  36. package/dist/cli/playwright_check.js +20 -0
  37. package/dist/cli/playwright_check.js.map +1 -0
  38. package/dist/cli/prompt.d.ts +13 -0
  39. package/dist/cli/prompt.d.ts.map +1 -0
  40. package/dist/cli/prompt.js +47 -0
  41. package/dist/cli/prompt.js.map +1 -0
  42. package/dist/cli/render.d.ts +60 -0
  43. package/dist/cli/render.d.ts.map +1 -0
  44. package/dist/cli/render.js +471 -0
  45. package/dist/cli/render.js.map +1 -0
  46. package/dist/cli/script_cmd.d.ts +26 -0
  47. package/dist/cli/script_cmd.d.ts.map +1 -0
  48. package/dist/cli/script_cmd.js +88 -0
  49. package/dist/cli/script_cmd.js.map +1 -0
  50. package/dist/cli/time_shim.d.ts +44 -0
  51. package/dist/cli/time_shim.d.ts.map +1 -0
  52. package/dist/cli/time_shim.js +390 -0
  53. package/dist/cli/time_shim.js.map +1 -0
  54. package/dist/cli/ts_loader.d.ts +28 -0
  55. package/dist/cli/ts_loader.d.ts.map +1 -0
  56. package/dist/cli/ts_loader.js +95 -0
  57. package/dist/cli/ts_loader.js.map +1 -0
  58. package/dist/cli/vite_helpers.d.ts +62 -0
  59. package/dist/cli/vite_helpers.d.ts.map +1 -0
  60. package/dist/cli/vite_helpers.js +273 -0
  61. package/dist/cli/vite_helpers.js.map +1 -0
  62. package/dist/index.d.ts +11 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +14 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/player/hash_router.d.ts +23 -0
  67. package/dist/player/hash_router.d.ts.map +1 -0
  68. package/dist/player/hash_router.js +49 -0
  69. package/dist/player/hash_router.js.map +1 -0
  70. package/dist/player/hud.d.ts +33 -0
  71. package/dist/player/hud.d.ts.map +1 -0
  72. package/dist/player/hud.js +357 -0
  73. package/dist/player/hud.js.map +1 -0
  74. package/dist/player/index.d.ts +123 -0
  75. package/dist/player/index.d.ts.map +1 -0
  76. package/dist/player/index.js +848 -0
  77. package/dist/player/index.js.map +1 -0
  78. package/dist/player/input.d.ts +14 -0
  79. package/dist/player/input.d.ts.map +1 -0
  80. package/dist/player/input.js +90 -0
  81. package/dist/player/input.js.map +1 -0
  82. package/dist/player/slot.d.ts +22 -0
  83. package/dist/player/slot.d.ts.map +1 -0
  84. package/dist/player/slot.js +43 -0
  85. package/dist/player/slot.js.map +1 -0
  86. package/dist/player/transitions/cut.d.ts +7 -0
  87. package/dist/player/transitions/cut.d.ts.map +1 -0
  88. package/dist/player/transitions/cut.js +9 -0
  89. package/dist/player/transitions/cut.js.map +1 -0
  90. package/dist/player/transitions/fade.d.ts +7 -0
  91. package/dist/player/transitions/fade.d.ts.map +1 -0
  92. package/dist/player/transitions/fade.js +18 -0
  93. package/dist/player/transitions/fade.js.map +1 -0
  94. package/dist/player/transitions/index.d.ts +4 -0
  95. package/dist/player/transitions/index.d.ts.map +1 -0
  96. package/dist/player/transitions/index.js +4 -0
  97. package/dist/player/transitions/index.js.map +1 -0
  98. package/dist/player/transitions/slide.d.ts +6 -0
  99. package/dist/player/transitions/slide.d.ts.map +1 -0
  100. package/dist/player/transitions/slide.js +35 -0
  101. package/dist/player/transitions/slide.js.map +1 -0
  102. package/dist/script/index.d.ts +2 -0
  103. package/dist/script/index.d.ts.map +1 -0
  104. package/dist/script/index.js +2 -0
  105. package/dist/script/index.js.map +1 -0
  106. package/dist/script/script.d.ts +10 -0
  107. package/dist/script/script.d.ts.map +1 -0
  108. package/dist/script/script.js +41 -0
  109. package/dist/script/script.js.map +1 -0
  110. package/dist/segment/SegmentRunner.d.ts +52 -0
  111. package/dist/segment/SegmentRunner.d.ts.map +1 -0
  112. package/dist/segment/SegmentRunner.js +187 -0
  113. package/dist/segment/SegmentRunner.js.map +1 -0
  114. package/dist/segment/defineConfig.d.ts +6 -0
  115. package/dist/segment/defineConfig.d.ts.map +1 -0
  116. package/dist/segment/defineConfig.js +7 -0
  117. package/dist/segment/defineConfig.js.map +1 -0
  118. package/dist/segment/defineSegment.d.ts +7 -0
  119. package/dist/segment/defineSegment.d.ts.map +1 -0
  120. package/dist/segment/defineSegment.js +25 -0
  121. package/dist/segment/defineSegment.js.map +1 -0
  122. package/dist/segment/index.d.ts +5 -0
  123. package/dist/segment/index.d.ts.map +1 -0
  124. package/dist/segment/index.js +4 -0
  125. package/dist/segment/index.js.map +1 -0
  126. package/dist/timeline/index.d.ts +73 -0
  127. package/dist/timeline/index.d.ts.map +1 -0
  128. package/dist/timeline/index.js +142 -0
  129. package/dist/timeline/index.js.map +1 -0
  130. package/dist/timeline/loadAudioTrack.d.ts +18 -0
  131. package/dist/timeline/loadAudioTrack.d.ts.map +1 -0
  132. package/dist/timeline/loadAudioTrack.js +44 -0
  133. package/dist/timeline/loadAudioTrack.js.map +1 -0
  134. package/dist/timeline/loadVoiceover.d.ts +18 -0
  135. package/dist/timeline/loadVoiceover.d.ts.map +1 -0
  136. package/dist/timeline/loadVoiceover.js +38 -0
  137. package/dist/timeline/loadVoiceover.js.map +1 -0
  138. package/dist/timeline/resolveTiming.d.ts +28 -0
  139. package/dist/timeline/resolveTiming.d.ts.map +1 -0
  140. package/dist/timeline/resolveTiming.js +63 -0
  141. package/dist/timeline/resolveTiming.js.map +1 -0
  142. package/dist/timeline/validateTiming.d.ts +29 -0
  143. package/dist/timeline/validateTiming.d.ts.map +1 -0
  144. package/dist/timeline/validateTiming.js +62 -0
  145. package/dist/timeline/validateTiming.js.map +1 -0
  146. package/dist/types.d.ts +216 -0
  147. package/dist/types.d.ts.map +1 -0
  148. package/dist/types.js +6 -0
  149. package/dist/types.js.map +1 -0
  150. package/package.json +47 -0
  151. package/skill/SKILL.md +64 -0
  152. package/skill/assets/hello_world/PLAN.md +31 -0
  153. package/skill/assets/hello_world/README.md +27 -0
  154. package/skill/assets/hello_world/audio/audio_plan.md +14 -0
  155. package/skill/assets/hello_world/segments/hello_intro.ts +69 -0
  156. package/skill/assets/hello_world/segments/hello_outro.ts +71 -0
  157. package/skill/assets/hello_world/timeline.ts +15 -0
  158. package/skill/assets/hello_world/voiceover_script/script.md +10 -0
  159. package/skill/assets/install/package.json +10 -0
  160. package/skill/assets/install/tsconfig.json +23 -0
  161. package/skill/assets/styles/editorial-mono/STYLE.md +124 -0
  162. package/skill/assets/styles/editorial-mono/brand.md +85 -0
  163. package/skill/assets/styles/editorial-mono/reference/animations.jsx +752 -0
  164. package/skill/assets/styles/editorial-mono/reference/scenes.html +563 -0
  165. package/skill/assets/styles/editorial-mono/sample/bullet.ts +101 -0
  166. package/skill/assets/styles/editorial-mono/sample/content.ts +104 -0
  167. package/skill/assets/styles/editorial-mono/sample/cta.ts +113 -0
  168. package/skill/assets/styles/editorial-mono/sample/feature.ts +111 -0
  169. package/skill/assets/styles/editorial-mono/sample/grid.ts +97 -0
  170. package/skill/assets/styles/editorial-mono/sample/kinetic.ts +96 -0
  171. package/skill/assets/styles/editorial-mono/sample/section.ts +101 -0
  172. package/skill/assets/styles/editorial-mono/sample/stat.ts +128 -0
  173. package/skill/assets/styles/editorial-mono/sample/title.ts +97 -0
  174. package/skill/assets/styles/editorial-mono/sample/ui-showcase.ts +159 -0
  175. package/skill/assets/styles/editorial-mono/tokens.css +44 -0
  176. package/skill/assets/styles/iso-diagram/STYLE.md +109 -0
  177. package/skill/assets/styles/iso-diagram/brand.md +32 -0
  178. package/skill/assets/styles/iso-diagram/reference/animations.jsx +673 -0
  179. package/skill/assets/styles/iso-diagram/reference/scenes.html +427 -0
  180. package/skill/assets/styles/iso-diagram/sample/bullet.ts +144 -0
  181. package/skill/assets/styles/iso-diagram/sample/content.ts +192 -0
  182. package/skill/assets/styles/iso-diagram/sample/cta.ts +162 -0
  183. package/skill/assets/styles/iso-diagram/sample/feature.ts +205 -0
  184. package/skill/assets/styles/iso-diagram/sample/grid.ts +181 -0
  185. package/skill/assets/styles/iso-diagram/sample/kinetic.ts +102 -0
  186. package/skill/assets/styles/iso-diagram/sample/section.ts +149 -0
  187. package/skill/assets/styles/iso-diagram/sample/stat.ts +164 -0
  188. package/skill/assets/styles/iso-diagram/sample/title.ts +173 -0
  189. package/skill/assets/styles/iso-diagram/sample/ui-showcase.ts +162 -0
  190. package/skill/assets/styles/iso-diagram/tokens.css +40 -0
  191. package/skill/assets/styles/motion-engineering/STYLE.md +106 -0
  192. package/skill/assets/styles/motion-engineering/brand.md +29 -0
  193. package/skill/assets/styles/motion-engineering/reference/animations.jsx +673 -0
  194. package/skill/assets/styles/motion-engineering/reference/scenes.html +513 -0
  195. package/skill/assets/styles/motion-engineering/sample/bullet.ts +176 -0
  196. package/skill/assets/styles/motion-engineering/sample/content.ts +228 -0
  197. package/skill/assets/styles/motion-engineering/sample/cta.ts +209 -0
  198. package/skill/assets/styles/motion-engineering/sample/feature.ts +299 -0
  199. package/skill/assets/styles/motion-engineering/sample/grid.ts +190 -0
  200. package/skill/assets/styles/motion-engineering/sample/kinetic.ts +159 -0
  201. package/skill/assets/styles/motion-engineering/sample/section.ts +196 -0
  202. package/skill/assets/styles/motion-engineering/sample/stat.ts +230 -0
  203. package/skill/assets/styles/motion-engineering/sample/title.ts +219 -0
  204. package/skill/assets/styles/motion-engineering/sample/ui-showcase.ts +267 -0
  205. package/skill/assets/styles/motion-engineering/tokens.css +40 -0
  206. package/skill/assets/styles/neon-terminal/STYLE.md +105 -0
  207. package/skill/assets/styles/neon-terminal/brand.md +27 -0
  208. package/skill/assets/styles/neon-terminal/reference/animations.jsx +673 -0
  209. package/skill/assets/styles/neon-terminal/reference/scenes.html +387 -0
  210. package/skill/assets/styles/neon-terminal/sample/bullet.ts +113 -0
  211. package/skill/assets/styles/neon-terminal/sample/content.ts +117 -0
  212. package/skill/assets/styles/neon-terminal/sample/cta.ts +131 -0
  213. package/skill/assets/styles/neon-terminal/sample/feature.ts +112 -0
  214. package/skill/assets/styles/neon-terminal/sample/grid.ts +128 -0
  215. package/skill/assets/styles/neon-terminal/sample/kinetic.ts +105 -0
  216. package/skill/assets/styles/neon-terminal/sample/section.ts +96 -0
  217. package/skill/assets/styles/neon-terminal/sample/stat.ts +123 -0
  218. package/skill/assets/styles/neon-terminal/sample/title.ts +122 -0
  219. package/skill/assets/styles/neon-terminal/sample/ui-showcase.ts +127 -0
  220. package/skill/assets/styles/neon-terminal/tokens.css +39 -0
  221. package/skill/assets/styles/risograph/STYLE.md +110 -0
  222. package/skill/assets/styles/risograph/brand.md +26 -0
  223. package/skill/assets/styles/risograph/reference/animations.jsx +673 -0
  224. package/skill/assets/styles/risograph/reference/scenes.html +403 -0
  225. package/skill/assets/styles/risograph/sample/bullet.ts +124 -0
  226. package/skill/assets/styles/risograph/sample/content.ts +135 -0
  227. package/skill/assets/styles/risograph/sample/cta.ts +149 -0
  228. package/skill/assets/styles/risograph/sample/feature.ts +152 -0
  229. package/skill/assets/styles/risograph/sample/grid.ts +123 -0
  230. package/skill/assets/styles/risograph/sample/kinetic.ts +125 -0
  231. package/skill/assets/styles/risograph/sample/section.ts +130 -0
  232. package/skill/assets/styles/risograph/sample/stat.ts +145 -0
  233. package/skill/assets/styles/risograph/sample/title.ts +132 -0
  234. package/skill/assets/styles/risograph/sample/ui-showcase.ts +147 -0
  235. package/skill/assets/styles/risograph/tokens.css +39 -0
  236. package/skill/assets/styles/swiss-console/STYLE.md +107 -0
  237. package/skill/assets/styles/swiss-console/brand.md +37 -0
  238. package/skill/assets/styles/swiss-console/reference/animations.jsx +673 -0
  239. package/skill/assets/styles/swiss-console/reference/scenes.html +420 -0
  240. package/skill/assets/styles/swiss-console/sample/bullet.ts +122 -0
  241. package/skill/assets/styles/swiss-console/sample/content.ts +137 -0
  242. package/skill/assets/styles/swiss-console/sample/cta.ts +109 -0
  243. package/skill/assets/styles/swiss-console/sample/feature.ts +163 -0
  244. package/skill/assets/styles/swiss-console/sample/grid.ts +145 -0
  245. package/skill/assets/styles/swiss-console/sample/kinetic.ts +117 -0
  246. package/skill/assets/styles/swiss-console/sample/section.ts +127 -0
  247. package/skill/assets/styles/swiss-console/sample/stat.ts +148 -0
  248. package/skill/assets/styles/swiss-console/sample/title.ts +148 -0
  249. package/skill/assets/styles/swiss-console/sample/ui-showcase.ts +198 -0
  250. package/skill/assets/styles/swiss-console/tokens.css +39 -0
  251. package/skill/install/INSTALL.md +400 -0
  252. package/skill/references/audio/audio_plan.md +199 -0
  253. package/skill/references/audio/build.md +208 -0
  254. package/skill/references/audio/cue_template.md +219 -0
  255. package/skill/references/audio/ffmpeg_cookbook.md +267 -0
  256. package/skill/references/audio/music/music.md +171 -0
  257. package/skill/references/audio/music/providers/elevenlabs.md +170 -0
  258. package/skill/references/audio/music/providers/manual.md +140 -0
  259. package/skill/references/audio/music/providers/openverse.md +265 -0
  260. package/skill/references/audio/sfx/providers/elevenlabs.md +152 -0
  261. package/skill/references/audio/sfx/providers/manual.md +117 -0
  262. package/skill/references/audio/sfx/providers/openverse.md +243 -0
  263. package/skill/references/audio/sfx/sfx.md +149 -0
  264. package/skill/references/audio/styles.md +102 -0
  265. package/skill/references/audio/sync.md +237 -0
  266. package/skill/references/audio/voiceover/animation_sync.md +142 -0
  267. package/skill/references/audio/voiceover/provider_script.md +153 -0
  268. package/skill/references/audio/voiceover/providers/elevenlabs.md +288 -0
  269. package/skill/references/audio/voiceover/providers/manual.md +100 -0
  270. package/skill/references/audio/voiceover/script_writing.md +100 -0
  271. package/skill/references/audio/voiceover/style_intake.md +56 -0
  272. package/skill/references/audio/voiceover/sync_algorithm.md +167 -0
  273. package/skill/references/audio/voiceover.md +296 -0
  274. package/skill/references/audio.md +135 -0
  275. package/skill/references/authoring_segment.md +446 -0
  276. package/skill/references/create_or_edit_video.md +232 -0
  277. package/skill/references/dev_server.md +157 -0
  278. package/skill/references/export.md +145 -0
  279. package/skill/references/new_video.md +117 -0
  280. package/skill/references/project_structure.md +144 -0
  281. package/skill/references/setup.md +109 -0
  282. package/skill/references/setup_new_style.md +158 -0
  283. package/skill/references/styles.md +154 -0
  284. package/skill/references/testing.md +115 -0
  285. package/skill/references/types.md +240 -0
  286. package/src/cli/entry/components/copy_button.ts +42 -0
  287. package/src/cli/entry/components/download_modal.ts +204 -0
  288. package/src/cli/entry/components/empty_state.ts +55 -0
  289. package/src/cli/entry/components/hide_hud_tab.ts +37 -0
  290. package/src/cli/entry/components/icons.ts +31 -0
  291. package/src/cli/entry/components/top_bar.ts +69 -0
  292. package/src/cli/entry/components/video_card.ts +57 -0
  293. package/src/cli/entry/dev_frame.ts +189 -0
  294. package/src/cli/entry/entry_index.ts +16 -0
  295. package/src/cli/entry/entry_video.ts +24 -0
  296. package/src/cli/entry/index.html +12 -0
  297. package/src/cli/entry/parse_slug.ts +14 -0
  298. package/src/cli/entry/render.html +17 -0
  299. package/src/cli/entry/render_entry.ts +121 -0
  300. package/src/cli/entry/styles/base.css +45 -0
  301. package/src/cli/entry/styles/components.css +605 -0
  302. package/src/cli/entry/styles/tokens.css +44 -0
  303. package/src/cli/entry/video.html +22 -0
  304. package/src/cli/entry/views/homepage.ts +66 -0
  305. package/src/cli/entry/views/video_view.ts +286 -0
  306. package/src/cli/entry/virtual.d.ts +8 -0
@@ -0,0 +1,267 @@
1
+ import { defineSegment } from "videowright";
2
+
3
+ let host: HTMLElement | null = null;
4
+
5
+ function cornerTicks() {
6
+ return `
7
+ <div style="position: absolute; left: -1px; top: -1px; width: 24px; height: 24px;">
8
+ <div style="position: absolute; left: 0; top: 0; width: 24px; height: 1.5px; background: var(--color-accent);"></div>
9
+ <div style="position: absolute; left: 0; top: 0; width: 1.5px; height: 24px; background: var(--color-accent);"></div>
10
+ </div>
11
+ <div style="position: absolute; right: -1px; top: -1px; width: 24px; height: 24px;">
12
+ <div style="position: absolute; right: 0; top: 0; width: 24px; height: 1.5px; background: var(--color-accent);"></div>
13
+ <div style="position: absolute; right: 0; top: 0; width: 1.5px; height: 24px; background: var(--color-accent);"></div>
14
+ </div>
15
+ <div style="position: absolute; left: -1px; bottom: -1px; width: 24px; height: 24px;">
16
+ <div style="position: absolute; left: 0; bottom: 0; width: 24px; height: 1.5px; background: var(--color-accent);"></div>
17
+ <div style="position: absolute; left: 0; bottom: 0; width: 1.5px; height: 24px; background: var(--color-accent);"></div>
18
+ </div>
19
+ <div style="position: absolute; right: -1px; bottom: -1px; width: 24px; height: 24px;">
20
+ <div style="position: absolute; right: 0; bottom: 0; width: 24px; height: 1.5px; background: var(--color-accent);"></div>
21
+ <div style="position: absolute; right: 0; bottom: 0; width: 1.5px; height: 24px; background: var(--color-accent);"></div>
22
+ </div>`;
23
+ }
24
+
25
+ export default defineSegment({
26
+ id: "motion-engineering-sample-ui-showcase",
27
+ advances: [2.5, 5.0],
28
+ voiceover:
29
+ "UI showcases in Motion Engineering. A wireframe blueprint of the app with amber leader-line callouts pointing to key areas.",
30
+
31
+ mount(el) {
32
+ host = el;
33
+
34
+ const sidebarItems = ["Runs", "Memory", "Plans", "Tools", "Traces", "Evals"];
35
+ const sidebarHtml = sidebarItems
36
+ .map(
37
+ (x, i) =>
38
+ `<div style="
39
+ padding: 8px 10px;
40
+ font-family: var(--font-mono);
41
+ font-size: 14px;
42
+ color: ${i === 1 ? "var(--color-accent)" : "var(--color-muted)"};
43
+ ${i === 1 ? "background: rgba(255,136,0,0.08); border-left: 2px solid var(--color-accent);" : "border-left: 2px solid transparent;"}
44
+ ">${x}</div>`,
45
+ )
46
+ .join("");
47
+
48
+ el.innerHTML = `
49
+ <div style="
50
+ position: relative;
51
+ height: 100%;
52
+ background: var(--color-bg);
53
+ color: var(--color-fg);
54
+ font-family: var(--font-body);
55
+ overflow: hidden;
56
+ ">
57
+ <div style="
58
+ position: absolute; inset: 0; pointer-events: none;
59
+ background:
60
+ linear-gradient(var(--grid-line) 1px, transparent 1px) 0 0 / 64px 64px,
61
+ linear-gradient(90deg, var(--grid-line) 1px, transparent 1px) 0 0 / 64px 64px;
62
+ "></div>
63
+
64
+ <div data-ref="frame" style="
65
+ position: absolute;
66
+ inset: var(--safe-y) var(--safe-x);
67
+ border: 1px solid var(--color-border);
68
+ opacity: 0;
69
+ ">
70
+ ${cornerTicks()}
71
+
72
+ <div data-ref="tag" style="
73
+ position: absolute; left: 80px; top: 60px;
74
+ font-family: var(--font-mono);
75
+ font-size: 13px;
76
+ letter-spacing: 0.25em;
77
+ color: var(--color-accent);
78
+ opacity: 0;
79
+ ">&#9698; FIG. 08 &middot; BEACON.CONSOLE v0.4 &middot; ANNOTATED</div>
80
+
81
+ <div data-ref="mock" style="
82
+ position: absolute; left: 80px; top: 120px; right: 80px; bottom: 60px;
83
+ border: 1px solid var(--color-border);
84
+ background: var(--color-surface);
85
+ opacity: 0;
86
+ ">
87
+ <div style="position: absolute; left: 0; top: 0; bottom: 0; width: 220px; border-right: 1px solid var(--color-border); padding: 20px;">
88
+ <div style="
89
+ font-family: var(--font-mono);
90
+ font-size: 11px;
91
+ letter-spacing: 0.25em;
92
+ color: var(--color-muted);
93
+ margin-bottom: 16px;
94
+ ">BEACON</div>
95
+ ${sidebarHtml}
96
+ </div>
97
+
98
+ <div style="
99
+ position: absolute; left: 220px; right: 280px; top: 0; height: 55%;
100
+ padding: 24px; border-bottom: 1px solid var(--color-border);
101
+ ">
102
+ <div style="
103
+ font-family: var(--font-mono);
104
+ font-size: 11px;
105
+ letter-spacing: 0.25em;
106
+ color: var(--color-muted);
107
+ ">TIMELINE &middot; session 41ac</div>
108
+ <svg width="100%" height="80" style="margin-top: 20px;">
109
+ <line x1="0" y1="40" x2="100%" y2="40" stroke="var(--color-muted)" stroke-width="1" />
110
+ </svg>
111
+ <div style="
112
+ font-family: var(--font-mono);
113
+ font-size: 13px;
114
+ color: var(--color-fg);
115
+ margin-top: 16px;
116
+ ">&bull; Active: snap_006 &middot; plan v3 &middot; revising</div>
117
+ </div>
118
+
119
+ <div style="
120
+ position: absolute; left: 220px; right: 280px; bottom: 0; top: 55%;
121
+ padding: 24px;
122
+ ">
123
+ <div style="
124
+ font-family: var(--font-mono);
125
+ font-size: 11px;
126
+ letter-spacing: 0.25em;
127
+ color: var(--color-muted);
128
+ ">TRACE</div>
129
+ <div style="font-family: var(--font-mono); font-size: 13px; color: var(--color-muted); margin-top: 8px;">[t05] tool.search &#8594; 12 results</div>
130
+ <div style="font-family: var(--font-mono); font-size: 13px; color: var(--color-muted); margin-top: 8px;">[t06] plan.revise &#8594; step 4 dropped</div>
131
+ <div style="font-family: var(--font-mono); font-size: 13px; color: var(--color-muted); margin-top: 8px;">[t07] memory.snap &#8594; ok</div>
132
+ </div>
133
+
134
+ <div style="
135
+ position: absolute; right: 0; top: 0; bottom: 0; width: 280px;
136
+ border-left: 1px solid var(--color-border); padding: 20px;
137
+ ">
138
+ <div style="
139
+ font-family: var(--font-mono);
140
+ font-size: 11px;
141
+ letter-spacing: 0.25em;
142
+ color: var(--color-muted);
143
+ margin-bottom: 16px;
144
+ ">MEMORY</div>
145
+ <div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-muted); padding: 5px 0;">snap_000 &middot; 0.2s</div>
146
+ <div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-muted); padding: 5px 0;">snap_001 &middot; 0.6s</div>
147
+ <div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-muted); padding: 5px 0;">snap_002 &middot; 1.0s</div>
148
+ <div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-accent); padding: 5px 0;">snap_003 &middot; 1.4s</div>
149
+ </div>
150
+ </div>
151
+ </div>
152
+
153
+ <svg data-ref="callouts" style="
154
+ position: absolute; inset: 0; pointer-events: none; width: 100%; height: 100%;
155
+ opacity: 0;
156
+ ">
157
+ <line data-ref="cl0" x1="380" y1="280" x2="850" y2="140" stroke="var(--color-accent)" stroke-width="1.5" style="opacity: 0;" />
158
+ <circle cx="380" cy="280" r="5" fill="var(--color-accent)" style="opacity: 0;" data-ref="cd0" />
159
+ <text data-ref="ct0" x="855" y="136" fill="var(--color-accent)" font-family="var(--font-mono)" font-size="13" letter-spacing="0.15em" style="opacity: 0;">A &middot; TIMELINE</text>
160
+ <text x="855" y="154" fill="var(--color-muted)" font-family="var(--font-mono)" font-size="11" style="opacity: 0;" data-ref="cd0b">Live agent steps with checkpoint markers.</text>
161
+
162
+ <line data-ref="cl1" x1="1100" y1="460" x2="1450" y2="600" stroke="var(--color-accent)" stroke-width="1.5" style="opacity: 0;" />
163
+ <circle cx="1100" cy="460" r="5" fill="var(--color-accent)" style="opacity: 0;" data-ref="cd1" />
164
+ <text data-ref="ct1" x="1455" y="596" fill="var(--color-accent)" font-family="var(--font-mono)" font-size="13" letter-spacing="0.15em" style="opacity: 0;">B &middot; MEMORY</text>
165
+ <text x="1455" y="614" fill="var(--color-muted)" font-family="var(--font-mono)" font-size="11" style="opacity: 0;" data-ref="cd1b">Active snapshot ring (last 12 minutes).</text>
166
+
167
+ <line data-ref="cl2" x1="280" y1="720" x2="140" y2="820" stroke="var(--color-accent)" stroke-width="1.5" style="opacity: 0;" />
168
+ <circle cx="280" cy="720" r="5" fill="var(--color-accent)" style="opacity: 0;" data-ref="cd2" />
169
+ <text data-ref="ct2" x="145" y="816" fill="var(--color-accent)" font-family="var(--font-mono)" font-size="13" letter-spacing="0.15em" style="opacity: 0;">C &middot; CONTROLS</text>
170
+ <text x="145" y="834" fill="var(--color-muted)" font-family="var(--font-mono)" font-size="11" style="opacity: 0;" data-ref="cd2b">Rewind, pin, branch.</text>
171
+ </svg>
172
+
173
+ <div data-ref="coord" style="
174
+ position: absolute; left: var(--safe-x); right: var(--safe-x); bottom: 28px;
175
+ display: flex; gap: 32px;
176
+ font-family: var(--font-mono);
177
+ font-size: 12px;
178
+ color: var(--color-muted);
179
+ letter-spacing: 0.1em;
180
+ opacity: 0;
181
+ ">
182
+ <span>X 1240.00</span><span>Y 360.00</span><span>T 0.00s</span>
183
+ <span style="margin-left: auto;">UNIT: PX &middot; SCALE 1:1</span>
184
+ </div>
185
+ </div>
186
+ `;
187
+ },
188
+
189
+ async play(ctx) {
190
+ const frame = host?.querySelector('[data-ref="frame"]') as HTMLElement;
191
+ const tag = host?.querySelector('[data-ref="tag"]') as HTMLElement;
192
+ const mock = host?.querySelector('[data-ref="mock"]') as HTMLElement;
193
+ const callouts = host?.querySelector('[data-ref="callouts"]') as SVGElement;
194
+ const coord = host?.querySelector('[data-ref="coord"]') as HTMLElement;
195
+
196
+ const ease = "cubic-bezier(0.2, 0.8, 0.2, 1)";
197
+ const opts = { fill: "forwards" as const, easing: ease };
198
+
199
+ frame.animate([{ opacity: 0 }, { opacity: 1 }], {
200
+ ...opts,
201
+ duration: 360,
202
+ });
203
+
204
+ coord.animate([{ opacity: 0 }, { opacity: 1 }], {
205
+ ...opts,
206
+ duration: 300,
207
+ delay: 100,
208
+ });
209
+
210
+ tag.animate(
211
+ [
212
+ { opacity: 0, transform: "translateY(8px)" },
213
+ { opacity: 1, transform: "translateY(0)" },
214
+ ],
215
+ { ...opts, duration: 300, delay: 200 },
216
+ );
217
+
218
+ mock.animate([{ opacity: 0 }, { opacity: 1 }], {
219
+ ...opts,
220
+ duration: 400,
221
+ delay: 400,
222
+ });
223
+
224
+ callouts.animate([{ opacity: 0 }, { opacity: 1 }], {
225
+ ...opts,
226
+ duration: 300,
227
+ delay: 800,
228
+ });
229
+
230
+ for (let i = 0; i < 3; i++) {
231
+ const line = host?.querySelector(`[data-ref="cl${i}"]`) as SVGLineElement;
232
+ const dot = host?.querySelector(`[data-ref="cd${i}"]`) as SVGCircleElement;
233
+ const label = host?.querySelector(`[data-ref="ct${i}"]`) as SVGTextElement;
234
+ const desc = host?.querySelector(`[data-ref="cd${i}b"]`) as SVGTextElement;
235
+
236
+ line.animate([{ opacity: 0 }, { opacity: 1 }], {
237
+ ...opts,
238
+ duration: 300,
239
+ delay: 1000 + i * 250,
240
+ });
241
+
242
+ dot.animate([{ opacity: 0 }, { opacity: 1 }], {
243
+ ...opts,
244
+ duration: 200,
245
+ delay: 1000 + i * 250,
246
+ });
247
+
248
+ label.animate([{ opacity: 0 }, { opacity: 1 }], {
249
+ ...opts,
250
+ duration: 200,
251
+ delay: 1400 + i * 250,
252
+ });
253
+
254
+ desc.animate([{ opacity: 0 }, { opacity: 1 }], {
255
+ ...opts,
256
+ duration: 200,
257
+ delay: 1400 + i * 250,
258
+ });
259
+ }
260
+
261
+ await ctx.waitForNext();
262
+ },
263
+
264
+ unmount() {
265
+ host = null;
266
+ },
267
+ });
@@ -0,0 +1,40 @@
1
+ /* Motion Engineering — design tokens
2
+ * Aerospace HUD / blueprint. Charcoal canvas, cyan-white type, amber accent.
3
+ */
4
+ :root {
5
+ --color-bg: #0e141a;
6
+ --color-fg: #e8eef5;
7
+ --color-accent: #ff8800; /* HUD amber */
8
+
9
+ --color-muted: #6f8294;
10
+ --color-border: #1e2a36;
11
+ --color-surface: #131c25;
12
+
13
+ --font-display: "Space Grotesk", "Helvetica Neue", system-ui, sans-serif;
14
+ --font-body: "Space Grotesk", "Helvetica Neue", system-ui, sans-serif;
15
+ --font-mono: "JetBrains Mono", ui-monospace, monospace;
16
+
17
+ --space-sm: 12px;
18
+ --space-md: 24px;
19
+ --space-lg: 48px;
20
+ --space-xl: 96px;
21
+
22
+ --duration-fast: 180ms;
23
+ --duration-normal: 360ms;
24
+ --duration-slow: 720ms;
25
+
26
+ --radius-sm: 0px;
27
+ --radius-md: 2px;
28
+ --stagger: 50ms;
29
+ --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
30
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
31
+ --rule-weight: 1px;
32
+ --scene-hold: 4s;
33
+
34
+ --safe-x: 96px;
35
+ --safe-y: 80px;
36
+
37
+ --cyan: #4fd1e0;
38
+ --warn: #ffb800;
39
+ --grid-line: rgba(232, 238, 245, 0.06);
40
+ }
@@ -0,0 +1,105 @@
1
+ ---
2
+ title: Neon Terminal
3
+ slug: neon-terminal
4
+ picker_description: 'CRT terminal interface. Mono throughout. Phosphor-green on near-black, stepped motion.'
5
+ font_sources:
6
+ - https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap
7
+ - https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&display=swap
8
+ mood: [technical, nocturnal, precise, retro-cyber, intimate]
9
+ good_for:
10
+ - Developer tools, CLIs, SDKs
11
+ - Security and infra products
12
+ - AI products with technical audiences
13
+ - Anything that wants to feel hacker-native
14
+ bad_for:
15
+ - Consumer apps
16
+ - Non-technical audiences
17
+ - Brand/lifestyle launches
18
+ - Anything that needs warmth
19
+ tags: [terminal, mono, dark-mode, retro, cyber, technical]
20
+ references: [Warp, Linear dark, Vercel terminal launches, Mr. Robot]
21
+ ---
22
+
23
+ # Neon Terminal — STYLE.md
24
+
25
+ ## Identity
26
+
27
+ A CRT terminal interface from a near-future. Monospace at every size, phosphor-green text on near-black, blinking cursors, ASCII rules, faint scan lines. The viewer feels like they're watching someone *use* a computer, not read a polished slide.
28
+
29
+ **Mood:** technical, nocturnal, precise, retro-cyber, intimate.
30
+
31
+ ## When to use
32
+
33
+ - Developer tools, CLIs, SDKs
34
+ - Security, infra, observability products
35
+ - AI products with technical audiences
36
+ - Open-source launches
37
+
38
+ ## When to avoid
39
+
40
+ - Consumer apps, non-technical audiences
41
+ - Anything that needs warmth
42
+
43
+ ## Layout principles
44
+
45
+ - **Everything is in a frame.** The whole scene is "inside the terminal window." Top chrome shows session info; bottom chrome shows status.
46
+ - **Left-aligned, monospace columns.** No grid in the design sense — character cells.
47
+ - **ASCII rules as separators:** `────`, `═══`, `~~~~~`.
48
+ - **Headers prefixed:** `$`, `>`, `[●]`, `01 ▸`.
49
+ - **Status footers:** `[OK]`, `[··]`, `[!!]`.
50
+
51
+ ## Color application
52
+
53
+ - Near-black bg, mint-green fg.
54
+ - Accent (`--color-accent`, phosphor green) for prompts (`$`), highlights, the cursor, completed status, key numbers. Always glows softly.
55
+ - Amber `--amber` for warnings and "in-progress."
56
+ - Muted moss for secondary text and ASCII chrome.
57
+
58
+ ## Type rules
59
+
60
+ - **Mono only.** JetBrains Mono everywhere — display, body, labels.
61
+ - Sizes: micro 14, body 20–28, headline 56–96, display 120–200. Same font, different sizes.
62
+ - Headlines may be set in lowercase for terminal-output feel; ALL CAPS reserved for status badges (`[OK]`, `RUNNING`).
63
+
64
+ ## Motion principles
65
+
66
+ - **Stepped, not smooth.** Use `steps(N, end)` easing. Text *types in* character by character or word-by-word.
67
+ - **Cursors blink.** A `▍` after the latest typed text, blinking at ~500ms.
68
+ - **Scan lines breathe.** A faint horizontal scan-line layer drifts vertically over time (1px high, 1% opacity).
69
+ - **Glow on accent.** Text-shadow phosphor glow on accent text only.
70
+ - **Scene transitions:** `clear` — wipe top-to-bottom in 200ms (the screen "redraws").
71
+ - **Forbidden:** smooth fades, scale animations, bounce.
72
+ - **Ambient layer:** scan lines + occasional cursor blink + status footer ticking.
73
+
74
+ ## Pacing
75
+
76
+ Brisk-typed. Scenes hold 3.5–4.5s. Typing fills the first 1–2s, then the scene rests with the cursor blinking.
77
+
78
+ ## Per-scene recipes
79
+
80
+ | Scene | Recipe |
81
+ |---|---|
82
+ | **Title** | Boot-sequence: `$ beacon --launch` types, then ASCII logo block, then tagline, all stepped. |
83
+ | **Section** | `── CHAPTER 02 ──────────────────` then section name in big mono on a new line. |
84
+ | **Kinetic** | One sentence types word-by-word. Last word glows accent. Cursor blinks at end. |
85
+ | **Bullet** | `[01]` `[02]` … prefixes; each row types in. `[OK]` or `[··]` status on the right. |
86
+ | **Stat** | Big number types digit-by-digit with the typing sound implied. Below: `// caption` in muted. |
87
+ | **Feature** | `$ feature describe --name checkpoint-memory` prompt, then description text streams below. |
88
+ | **Grid** | Three terminal "panes" side-by-side. Each pane is its own mini-terminal with its own prompt and content. |
89
+ | **UI showcase** | A larger terminal/TUI mock — sidebar pane, main pane, status bar. Looks like a real CLI tool. |
90
+ | **Content** | A long block of typed-in body text with `> ` quote prefixes for emphasis. |
91
+ | **CTA** | `$ install beacon` types, then URL, then a glowing cursor. |
92
+
93
+ ### Connective elements
94
+
95
+ - **Lower third:** `[ ▸ narration · 00:24 ]` at bottom in muted.
96
+ - **Scene transition:** screen-clear wipe.
97
+ - **Ambient:** scan lines, cursor blink, status-bar tick.
98
+
99
+ ## Pitfalls
100
+
101
+ - **Don't use any non-mono font.** Ever.
102
+ - **Don't use color outside the palette.** No reds or blues — green and amber only.
103
+ - **Don't smooth-fade.** Stepped easing throughout.
104
+ - **Don't fill the screen.** Even though it's terminal, leave breathing room.
105
+ - **No emoji.** ASCII glyphs only: `▸ ● ▍ ░ █ →`.
@@ -0,0 +1,27 @@
1
+ # Neon Terminal — Brand
2
+
3
+ ## Color
4
+
5
+ **`--color-bg` `#0A0E0B`** — near-black with a faint green tint. Not pure black; warmer toward phosphor.
6
+
7
+ **`--color-fg` `#D8F3D8`** — mint-green-tinted white. The "rest" character color on a phosphor display.
8
+
9
+ **`--color-accent` `#4ADE80`** — phosphor green. Glowing accent for prompts, highlights, cursors, completion.
10
+
11
+ **`--amber` `#F59E0B`** — secondary accent. Warnings, in-progress, transitions between done and pending.
12
+
13
+ **`--color-muted` `#5A6F5C`** — desaturated moss, for ASCII chrome and secondary text.
14
+
15
+ **`--color-border` `#1F2A21`** — for terminal-window frames.
16
+
17
+ ## Typography
18
+
19
+ **JetBrains Mono** everywhere. The character cell is the unit of layout.
20
+
21
+ ## Motion
22
+
23
+ Stepped easing (`steps(8, end)`) gives the typing/redraw cadence of an actual terminal. Smooth cubic-beziers are forbidden.
24
+
25
+ ## Glow
26
+
27
+ `text-shadow: 0 0 12px rgba(74, 222, 128, 0.45)` on accent text only. Subtle, present.