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.
- package/README.md +91 -0
- package/dist/cli/argv.d.ts +28 -0
- package/dist/cli/argv.d.ts.map +1 -0
- package/dist/cli/argv.js +115 -0
- package/dist/cli/argv.js.map +1 -0
- package/dist/cli/bin.d.ts +7 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +10 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/dev.d.ts +19 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +104 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/discover.d.ts +29 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +104 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/discover_project.d.ts +29 -0
- package/dist/cli/discover_project.d.ts.map +1 -0
- package/dist/cli/discover_project.js +108 -0
- package/dist/cli/discover_project.js.map +1 -0
- package/dist/cli/errors.d.ts +10 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +13 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/ffmpeg.d.ts +57 -0
- package/dist/cli/ffmpeg.d.ts.map +1 -0
- package/dist/cli/ffmpeg.js +122 -0
- package/dist/cli/ffmpeg.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +152 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/playwright_check.d.ts +44 -0
- package/dist/cli/playwright_check.d.ts.map +1 -0
- package/dist/cli/playwright_check.js +20 -0
- package/dist/cli/playwright_check.js.map +1 -0
- package/dist/cli/prompt.d.ts +13 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +47 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/render.d.ts +60 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +471 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/script_cmd.d.ts +26 -0
- package/dist/cli/script_cmd.d.ts.map +1 -0
- package/dist/cli/script_cmd.js +88 -0
- package/dist/cli/script_cmd.js.map +1 -0
- package/dist/cli/time_shim.d.ts +44 -0
- package/dist/cli/time_shim.d.ts.map +1 -0
- package/dist/cli/time_shim.js +390 -0
- package/dist/cli/time_shim.js.map +1 -0
- package/dist/cli/ts_loader.d.ts +28 -0
- package/dist/cli/ts_loader.d.ts.map +1 -0
- package/dist/cli/ts_loader.js +95 -0
- package/dist/cli/ts_loader.js.map +1 -0
- package/dist/cli/vite_helpers.d.ts +62 -0
- package/dist/cli/vite_helpers.d.ts.map +1 -0
- package/dist/cli/vite_helpers.js +273 -0
- package/dist/cli/vite_helpers.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/player/hash_router.d.ts +23 -0
- package/dist/player/hash_router.d.ts.map +1 -0
- package/dist/player/hash_router.js +49 -0
- package/dist/player/hash_router.js.map +1 -0
- package/dist/player/hud.d.ts +33 -0
- package/dist/player/hud.d.ts.map +1 -0
- package/dist/player/hud.js +357 -0
- package/dist/player/hud.js.map +1 -0
- package/dist/player/index.d.ts +123 -0
- package/dist/player/index.d.ts.map +1 -0
- package/dist/player/index.js +848 -0
- package/dist/player/index.js.map +1 -0
- package/dist/player/input.d.ts +14 -0
- package/dist/player/input.d.ts.map +1 -0
- package/dist/player/input.js +90 -0
- package/dist/player/input.js.map +1 -0
- package/dist/player/slot.d.ts +22 -0
- package/dist/player/slot.d.ts.map +1 -0
- package/dist/player/slot.js +43 -0
- package/dist/player/slot.js.map +1 -0
- package/dist/player/transitions/cut.d.ts +7 -0
- package/dist/player/transitions/cut.d.ts.map +1 -0
- package/dist/player/transitions/cut.js +9 -0
- package/dist/player/transitions/cut.js.map +1 -0
- package/dist/player/transitions/fade.d.ts +7 -0
- package/dist/player/transitions/fade.d.ts.map +1 -0
- package/dist/player/transitions/fade.js +18 -0
- package/dist/player/transitions/fade.js.map +1 -0
- package/dist/player/transitions/index.d.ts +4 -0
- package/dist/player/transitions/index.d.ts.map +1 -0
- package/dist/player/transitions/index.js +4 -0
- package/dist/player/transitions/index.js.map +1 -0
- package/dist/player/transitions/slide.d.ts +6 -0
- package/dist/player/transitions/slide.d.ts.map +1 -0
- package/dist/player/transitions/slide.js +35 -0
- package/dist/player/transitions/slide.js.map +1 -0
- package/dist/script/index.d.ts +2 -0
- package/dist/script/index.d.ts.map +1 -0
- package/dist/script/index.js +2 -0
- package/dist/script/index.js.map +1 -0
- package/dist/script/script.d.ts +10 -0
- package/dist/script/script.d.ts.map +1 -0
- package/dist/script/script.js +41 -0
- package/dist/script/script.js.map +1 -0
- package/dist/segment/SegmentRunner.d.ts +52 -0
- package/dist/segment/SegmentRunner.d.ts.map +1 -0
- package/dist/segment/SegmentRunner.js +187 -0
- package/dist/segment/SegmentRunner.js.map +1 -0
- package/dist/segment/defineConfig.d.ts +6 -0
- package/dist/segment/defineConfig.d.ts.map +1 -0
- package/dist/segment/defineConfig.js +7 -0
- package/dist/segment/defineConfig.js.map +1 -0
- package/dist/segment/defineSegment.d.ts +7 -0
- package/dist/segment/defineSegment.d.ts.map +1 -0
- package/dist/segment/defineSegment.js +25 -0
- package/dist/segment/defineSegment.js.map +1 -0
- package/dist/segment/index.d.ts +5 -0
- package/dist/segment/index.d.ts.map +1 -0
- package/dist/segment/index.js +4 -0
- package/dist/segment/index.js.map +1 -0
- package/dist/timeline/index.d.ts +73 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +142 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/timeline/loadAudioTrack.d.ts +18 -0
- package/dist/timeline/loadAudioTrack.d.ts.map +1 -0
- package/dist/timeline/loadAudioTrack.js +44 -0
- package/dist/timeline/loadAudioTrack.js.map +1 -0
- package/dist/timeline/loadVoiceover.d.ts +18 -0
- package/dist/timeline/loadVoiceover.d.ts.map +1 -0
- package/dist/timeline/loadVoiceover.js +38 -0
- package/dist/timeline/loadVoiceover.js.map +1 -0
- package/dist/timeline/resolveTiming.d.ts +28 -0
- package/dist/timeline/resolveTiming.d.ts.map +1 -0
- package/dist/timeline/resolveTiming.js +63 -0
- package/dist/timeline/resolveTiming.js.map +1 -0
- package/dist/timeline/validateTiming.d.ts +29 -0
- package/dist/timeline/validateTiming.d.ts.map +1 -0
- package/dist/timeline/validateTiming.js +62 -0
- package/dist/timeline/validateTiming.js.map +1 -0
- package/dist/types.d.ts +216 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -0
- package/skill/SKILL.md +64 -0
- package/skill/assets/hello_world/PLAN.md +31 -0
- package/skill/assets/hello_world/README.md +27 -0
- package/skill/assets/hello_world/audio/audio_plan.md +14 -0
- package/skill/assets/hello_world/segments/hello_intro.ts +69 -0
- package/skill/assets/hello_world/segments/hello_outro.ts +71 -0
- package/skill/assets/hello_world/timeline.ts +15 -0
- package/skill/assets/hello_world/voiceover_script/script.md +10 -0
- package/skill/assets/install/package.json +10 -0
- package/skill/assets/install/tsconfig.json +23 -0
- package/skill/assets/styles/editorial-mono/STYLE.md +124 -0
- package/skill/assets/styles/editorial-mono/brand.md +85 -0
- package/skill/assets/styles/editorial-mono/reference/animations.jsx +752 -0
- package/skill/assets/styles/editorial-mono/reference/scenes.html +563 -0
- package/skill/assets/styles/editorial-mono/sample/bullet.ts +101 -0
- package/skill/assets/styles/editorial-mono/sample/content.ts +104 -0
- package/skill/assets/styles/editorial-mono/sample/cta.ts +113 -0
- package/skill/assets/styles/editorial-mono/sample/feature.ts +111 -0
- package/skill/assets/styles/editorial-mono/sample/grid.ts +97 -0
- package/skill/assets/styles/editorial-mono/sample/kinetic.ts +96 -0
- package/skill/assets/styles/editorial-mono/sample/section.ts +101 -0
- package/skill/assets/styles/editorial-mono/sample/stat.ts +128 -0
- package/skill/assets/styles/editorial-mono/sample/title.ts +97 -0
- package/skill/assets/styles/editorial-mono/sample/ui-showcase.ts +159 -0
- package/skill/assets/styles/editorial-mono/tokens.css +44 -0
- package/skill/assets/styles/iso-diagram/STYLE.md +109 -0
- package/skill/assets/styles/iso-diagram/brand.md +32 -0
- package/skill/assets/styles/iso-diagram/reference/animations.jsx +673 -0
- package/skill/assets/styles/iso-diagram/reference/scenes.html +427 -0
- package/skill/assets/styles/iso-diagram/sample/bullet.ts +144 -0
- package/skill/assets/styles/iso-diagram/sample/content.ts +192 -0
- package/skill/assets/styles/iso-diagram/sample/cta.ts +162 -0
- package/skill/assets/styles/iso-diagram/sample/feature.ts +205 -0
- package/skill/assets/styles/iso-diagram/sample/grid.ts +181 -0
- package/skill/assets/styles/iso-diagram/sample/kinetic.ts +102 -0
- package/skill/assets/styles/iso-diagram/sample/section.ts +149 -0
- package/skill/assets/styles/iso-diagram/sample/stat.ts +164 -0
- package/skill/assets/styles/iso-diagram/sample/title.ts +173 -0
- package/skill/assets/styles/iso-diagram/sample/ui-showcase.ts +162 -0
- package/skill/assets/styles/iso-diagram/tokens.css +40 -0
- package/skill/assets/styles/motion-engineering/STYLE.md +106 -0
- package/skill/assets/styles/motion-engineering/brand.md +29 -0
- package/skill/assets/styles/motion-engineering/reference/animations.jsx +673 -0
- package/skill/assets/styles/motion-engineering/reference/scenes.html +513 -0
- package/skill/assets/styles/motion-engineering/sample/bullet.ts +176 -0
- package/skill/assets/styles/motion-engineering/sample/content.ts +228 -0
- package/skill/assets/styles/motion-engineering/sample/cta.ts +209 -0
- package/skill/assets/styles/motion-engineering/sample/feature.ts +299 -0
- package/skill/assets/styles/motion-engineering/sample/grid.ts +190 -0
- package/skill/assets/styles/motion-engineering/sample/kinetic.ts +159 -0
- package/skill/assets/styles/motion-engineering/sample/section.ts +196 -0
- package/skill/assets/styles/motion-engineering/sample/stat.ts +230 -0
- package/skill/assets/styles/motion-engineering/sample/title.ts +219 -0
- package/skill/assets/styles/motion-engineering/sample/ui-showcase.ts +267 -0
- package/skill/assets/styles/motion-engineering/tokens.css +40 -0
- package/skill/assets/styles/neon-terminal/STYLE.md +105 -0
- package/skill/assets/styles/neon-terminal/brand.md +27 -0
- package/skill/assets/styles/neon-terminal/reference/animations.jsx +673 -0
- package/skill/assets/styles/neon-terminal/reference/scenes.html +387 -0
- package/skill/assets/styles/neon-terminal/sample/bullet.ts +113 -0
- package/skill/assets/styles/neon-terminal/sample/content.ts +117 -0
- package/skill/assets/styles/neon-terminal/sample/cta.ts +131 -0
- package/skill/assets/styles/neon-terminal/sample/feature.ts +112 -0
- package/skill/assets/styles/neon-terminal/sample/grid.ts +128 -0
- package/skill/assets/styles/neon-terminal/sample/kinetic.ts +105 -0
- package/skill/assets/styles/neon-terminal/sample/section.ts +96 -0
- package/skill/assets/styles/neon-terminal/sample/stat.ts +123 -0
- package/skill/assets/styles/neon-terminal/sample/title.ts +122 -0
- package/skill/assets/styles/neon-terminal/sample/ui-showcase.ts +127 -0
- package/skill/assets/styles/neon-terminal/tokens.css +39 -0
- package/skill/assets/styles/risograph/STYLE.md +110 -0
- package/skill/assets/styles/risograph/brand.md +26 -0
- package/skill/assets/styles/risograph/reference/animations.jsx +673 -0
- package/skill/assets/styles/risograph/reference/scenes.html +403 -0
- package/skill/assets/styles/risograph/sample/bullet.ts +124 -0
- package/skill/assets/styles/risograph/sample/content.ts +135 -0
- package/skill/assets/styles/risograph/sample/cta.ts +149 -0
- package/skill/assets/styles/risograph/sample/feature.ts +152 -0
- package/skill/assets/styles/risograph/sample/grid.ts +123 -0
- package/skill/assets/styles/risograph/sample/kinetic.ts +125 -0
- package/skill/assets/styles/risograph/sample/section.ts +130 -0
- package/skill/assets/styles/risograph/sample/stat.ts +145 -0
- package/skill/assets/styles/risograph/sample/title.ts +132 -0
- package/skill/assets/styles/risograph/sample/ui-showcase.ts +147 -0
- package/skill/assets/styles/risograph/tokens.css +39 -0
- package/skill/assets/styles/swiss-console/STYLE.md +107 -0
- package/skill/assets/styles/swiss-console/brand.md +37 -0
- package/skill/assets/styles/swiss-console/reference/animations.jsx +673 -0
- package/skill/assets/styles/swiss-console/reference/scenes.html +420 -0
- package/skill/assets/styles/swiss-console/sample/bullet.ts +122 -0
- package/skill/assets/styles/swiss-console/sample/content.ts +137 -0
- package/skill/assets/styles/swiss-console/sample/cta.ts +109 -0
- package/skill/assets/styles/swiss-console/sample/feature.ts +163 -0
- package/skill/assets/styles/swiss-console/sample/grid.ts +145 -0
- package/skill/assets/styles/swiss-console/sample/kinetic.ts +117 -0
- package/skill/assets/styles/swiss-console/sample/section.ts +127 -0
- package/skill/assets/styles/swiss-console/sample/stat.ts +148 -0
- package/skill/assets/styles/swiss-console/sample/title.ts +148 -0
- package/skill/assets/styles/swiss-console/sample/ui-showcase.ts +198 -0
- package/skill/assets/styles/swiss-console/tokens.css +39 -0
- package/skill/install/INSTALL.md +400 -0
- package/skill/references/audio/audio_plan.md +199 -0
- package/skill/references/audio/build.md +208 -0
- package/skill/references/audio/cue_template.md +219 -0
- package/skill/references/audio/ffmpeg_cookbook.md +267 -0
- package/skill/references/audio/music/music.md +171 -0
- package/skill/references/audio/music/providers/elevenlabs.md +170 -0
- package/skill/references/audio/music/providers/manual.md +140 -0
- package/skill/references/audio/music/providers/openverse.md +265 -0
- package/skill/references/audio/sfx/providers/elevenlabs.md +152 -0
- package/skill/references/audio/sfx/providers/manual.md +117 -0
- package/skill/references/audio/sfx/providers/openverse.md +243 -0
- package/skill/references/audio/sfx/sfx.md +149 -0
- package/skill/references/audio/styles.md +102 -0
- package/skill/references/audio/sync.md +237 -0
- package/skill/references/audio/voiceover/animation_sync.md +142 -0
- package/skill/references/audio/voiceover/provider_script.md +153 -0
- package/skill/references/audio/voiceover/providers/elevenlabs.md +288 -0
- package/skill/references/audio/voiceover/providers/manual.md +100 -0
- package/skill/references/audio/voiceover/script_writing.md +100 -0
- package/skill/references/audio/voiceover/style_intake.md +56 -0
- package/skill/references/audio/voiceover/sync_algorithm.md +167 -0
- package/skill/references/audio/voiceover.md +296 -0
- package/skill/references/audio.md +135 -0
- package/skill/references/authoring_segment.md +446 -0
- package/skill/references/create_or_edit_video.md +232 -0
- package/skill/references/dev_server.md +157 -0
- package/skill/references/export.md +145 -0
- package/skill/references/new_video.md +117 -0
- package/skill/references/project_structure.md +144 -0
- package/skill/references/setup.md +109 -0
- package/skill/references/setup_new_style.md +158 -0
- package/skill/references/styles.md +154 -0
- package/skill/references/testing.md +115 -0
- package/skill/references/types.md +240 -0
- package/src/cli/entry/components/copy_button.ts +42 -0
- package/src/cli/entry/components/download_modal.ts +204 -0
- package/src/cli/entry/components/empty_state.ts +55 -0
- package/src/cli/entry/components/hide_hud_tab.ts +37 -0
- package/src/cli/entry/components/icons.ts +31 -0
- package/src/cli/entry/components/top_bar.ts +69 -0
- package/src/cli/entry/components/video_card.ts +57 -0
- package/src/cli/entry/dev_frame.ts +189 -0
- package/src/cli/entry/entry_index.ts +16 -0
- package/src/cli/entry/entry_video.ts +24 -0
- package/src/cli/entry/index.html +12 -0
- package/src/cli/entry/parse_slug.ts +14 -0
- package/src/cli/entry/render.html +17 -0
- package/src/cli/entry/render_entry.ts +121 -0
- package/src/cli/entry/styles/base.css +45 -0
- package/src/cli/entry/styles/components.css +605 -0
- package/src/cli/entry/styles/tokens.css +44 -0
- package/src/cli/entry/video.html +22 -0
- package/src/cli/entry/views/homepage.ts +66 -0
- package/src/cli/entry/views/video_view.ts +286 -0
- 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
|
+
">◢ FIG. 08 · BEACON.CONSOLE v0.4 · 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 · 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
|
+
">• Active: snap_006 · plan v3 · 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 → 12 results</div>
|
|
130
|
+
<div style="font-family: var(--font-mono); font-size: 13px; color: var(--color-muted); margin-top: 8px;">[t06] plan.revise → 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 → 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 · 0.2s</div>
|
|
146
|
+
<div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-muted); padding: 5px 0;">snap_001 · 0.6s</div>
|
|
147
|
+
<div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-muted); padding: 5px 0;">snap_002 · 1.0s</div>
|
|
148
|
+
<div style="font-family: var(--font-mono); font-size: 12px; color: var(--color-accent); padding: 5px 0;">snap_003 · 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 · 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 · 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 · 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 · 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.
|