gitextract_ph6jujtc/ ├── .cursor/ │ ├── commands/ │ │ └── review.md │ ├── rules/ │ │ ├── codebase-index.mdc │ │ ├── comments.mdc │ │ ├── handling-uncertainty.mdc │ │ ├── readability.mdc │ │ ├── separation-of-concerns.mdc │ │ ├── ultracite.mdc │ │ └── writing-scannable-code.mdc │ ├── settings.json │ └── skills/ │ └── design/ │ └── SKILL.md ├── .dockerignore ├── .github/ │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── feature_request.yml │ ├── SECURITY.md │ ├── SUPPORT.md │ ├── copilot-instructions.md │ ├── pull_request_template.md │ └── workflows/ │ └── bun-ci.yml ├── .gitignore ├── .npmrc ├── .vscode/ │ └── settings.json ├── AGENTS.md ├── LICENSE ├── README.md ├── apps/ │ └── web/ │ ├── .env.example │ ├── .gitignore │ ├── Dockerfile │ ├── components.json │ ├── content/ │ │ └── changelog/ │ │ ├── 0.1.0.md │ │ └── 0.2.0.md │ ├── content-collections.ts │ ├── drizzle.config.ts │ ├── migrations/ │ │ ├── 0000_brainy_saracen.sql │ │ └── meta/ │ │ ├── 0000_snapshot.json │ │ └── _journal.json │ ├── next-env.d.ts │ ├── next.config.ts │ ├── package.json │ ├── postcss.config.mjs │ ├── public/ │ │ ├── browserconfig.xml │ │ ├── countries.json │ │ ├── ffmpeg/ │ │ │ ├── ffmpeg-core.js │ │ │ └── ffmpeg-core.wasm │ │ ├── fonts/ │ │ │ ├── font-atlas.json │ │ │ ├── font-chunk-0.avif │ │ │ ├── font-chunk-1.avif │ │ │ ├── font-chunk-10.avif │ │ │ ├── font-chunk-11.avif │ │ │ ├── font-chunk-12.avif │ │ │ ├── font-chunk-13.avif │ │ │ ├── font-chunk-14.avif │ │ │ ├── font-chunk-2.avif │ │ │ ├── font-chunk-3.avif │ │ │ ├── font-chunk-4.avif │ │ │ ├── font-chunk-5.avif │ │ │ ├── font-chunk-6.avif │ │ │ ├── font-chunk-7.avif │ │ │ ├── font-chunk-8.avif │ │ │ └── font-chunk-9.avif │ │ └── manifest.json │ ├── scripts/ │ │ └── generate-font-sprites.ts │ ├── src/ │ │ ├── app/ │ │ │ ├── api/ │ │ │ │ ├── auth/ │ │ │ │ │ └── [...all]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── health/ │ │ │ │ │ └── route.ts │ │ │ │ └── sounds/ │ │ │ │ └── search/ │ │ │ │ └── route.ts │ │ │ ├── base-page.tsx │ │ │ ├── blog/ │ │ │ │ ├── [slug]/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── brand/ │ │ │ │ └── page.tsx │ │ │ ├── changelog/ │ │ │ │ ├── [version]/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── copy-markdown-button.tsx │ │ │ │ │ └── release.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── utils.ts │ │ │ ├── contributors/ │ │ │ │ └── page.tsx │ │ │ ├── editor/ │ │ │ │ └── [project_id]/ │ │ │ │ └── page.tsx │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ ├── metadata.ts │ │ │ ├── page.tsx │ │ │ ├── privacy/ │ │ │ │ └── page.tsx │ │ │ ├── projects/ │ │ │ │ ├── page.tsx │ │ │ │ └── store.ts │ │ │ ├── roadmap/ │ │ │ │ └── page.tsx │ │ │ ├── robots.ts │ │ │ ├── rss.xml/ │ │ │ │ └── route.ts │ │ │ ├── sitemap.ts │ │ │ ├── sponsors/ │ │ │ │ └── page.tsx │ │ │ └── terms/ │ │ │ └── page.tsx │ │ ├── components/ │ │ │ ├── editable-timecode.tsx │ │ │ ├── editor/ │ │ │ │ ├── dialogs/ │ │ │ │ │ ├── delete-project-dialog.tsx │ │ │ │ │ ├── migration-dialog.tsx │ │ │ │ │ ├── project-info-dialog.tsx │ │ │ │ │ ├── rename-project-dialog.tsx │ │ │ │ │ └── shortcuts-dialog.tsx │ │ │ │ ├── editor-header.tsx │ │ │ │ ├── export-button.tsx │ │ │ │ ├── mobile-gate.tsx │ │ │ │ ├── onboarding.tsx │ │ │ │ ├── panels/ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ ├── drag-overlay.tsx │ │ │ │ │ │ ├── draggable-item.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── tabbar.tsx │ │ │ │ │ │ └── views/ │ │ │ │ │ │ ├── assets.tsx │ │ │ │ │ │ ├── base-view.tsx │ │ │ │ │ │ ├── captions.tsx │ │ │ │ │ │ ├── effects.tsx │ │ │ │ │ │ ├── settings-legacy.tsx │ │ │ │ │ │ ├── settings.tsx │ │ │ │ │ │ ├── sounds.tsx │ │ │ │ │ │ ├── stickers.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── preview/ │ │ │ │ │ │ ├── bookmark-note-overlay.tsx │ │ │ │ │ │ ├── context-menu.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── layout-guide-overlay.tsx │ │ │ │ │ │ ├── preview-interaction-overlay.tsx │ │ │ │ │ │ ├── snap-guides.tsx │ │ │ │ │ │ ├── text-edit-overlay.tsx │ │ │ │ │ │ ├── toolbar.tsx │ │ │ │ │ │ └── transform-handles.tsx │ │ │ │ │ ├── properties/ │ │ │ │ │ │ ├── audio-properties.tsx │ │ │ │ │ │ ├── clip-effects-properties.tsx │ │ │ │ │ │ ├── effect-param-field.tsx │ │ │ │ │ │ ├── effect-properties.tsx │ │ │ │ │ │ ├── empty-view.tsx │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── use-element-playhead.ts │ │ │ │ │ │ │ ├── use-keyframed-color-property.ts │ │ │ │ │ │ │ ├── use-keyframed-number-property.ts │ │ │ │ │ │ │ └── use-property-draft.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── keyframe-toggle.tsx │ │ │ │ │ │ ├── section.tsx │ │ │ │ │ │ ├── sections/ │ │ │ │ │ │ │ ├── blending.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── transform.tsx │ │ │ │ │ │ ├── text-properties.tsx │ │ │ │ │ │ └── video-properties.tsx │ │ │ │ │ └── timeline/ │ │ │ │ │ ├── audio-waveform.tsx │ │ │ │ │ ├── bookmarks.tsx │ │ │ │ │ ├── drag-line.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── snap-indicator.tsx │ │ │ │ │ ├── timeline-element.tsx │ │ │ │ │ ├── timeline-playhead.tsx │ │ │ │ │ ├── timeline-ruler.tsx │ │ │ │ │ ├── timeline-tick.tsx │ │ │ │ │ ├── timeline-toolbar.tsx │ │ │ │ │ └── timeline-track.tsx │ │ │ │ ├── scenes-view.tsx │ │ │ │ └── selection-box.tsx │ │ │ ├── footer.tsx │ │ │ ├── gitHub-contribute-section.tsx │ │ │ ├── header.tsx │ │ │ ├── landing/ │ │ │ │ ├── handlebars.tsx │ │ │ │ └── hero.tsx │ │ │ ├── providers/ │ │ │ │ └── editor-provider.tsx │ │ │ ├── storage-provider.tsx │ │ │ ├── theme-toggle.tsx │ │ │ └── ui/ │ │ │ ├── accordion.tsx │ │ │ ├── alert-dialog.tsx │ │ │ ├── alert.tsx │ │ │ ├── aspect-ratio.tsx │ │ │ ├── avatar.tsx │ │ │ ├── badge.tsx │ │ │ ├── breadcrumb.tsx │ │ │ ├── button.tsx │ │ │ ├── calendar.tsx │ │ │ ├── card.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── collapsible.tsx │ │ │ ├── color-picker.tsx │ │ │ ├── context-menu.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── font-picker.tsx │ │ │ ├── form.tsx │ │ │ ├── hover-card.tsx │ │ │ ├── input-with-back.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── menubar.tsx │ │ │ ├── navigation-menu.tsx │ │ │ ├── number-field.tsx │ │ │ ├── popover.tsx │ │ │ ├── progress.tsx │ │ │ ├── prose.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── react-markdown-wrapper.tsx │ │ │ ├── resizable.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── slider.tsx │ │ │ ├── sonner.tsx │ │ │ ├── spinner.tsx │ │ │ ├── split-button.tsx │ │ │ ├── switch.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ ├── toast.tsx │ │ │ ├── toggle-group.tsx │ │ │ ├── toggle.tsx │ │ │ └── tooltip.tsx │ │ ├── constants/ │ │ │ ├── animation-constants.ts │ │ │ ├── editor-constants.ts │ │ │ ├── export-constants.ts │ │ │ ├── font-constants.ts │ │ │ ├── language-constants.ts │ │ │ ├── project-constants.ts │ │ │ ├── site-constants.ts │ │ │ ├── sticker-constants.ts │ │ │ ├── text-constants.ts │ │ │ ├── timeline-constants.tsx │ │ │ └── transcription-constants.ts │ │ ├── core/ │ │ │ ├── index.ts │ │ │ └── managers/ │ │ │ ├── audio-manager.ts │ │ │ ├── commands.ts │ │ │ ├── media-manager.ts │ │ │ ├── playback-manager.ts │ │ │ ├── project-manager.ts │ │ │ ├── renderer-manager.ts │ │ │ ├── save-manager.ts │ │ │ ├── scenes-manager.ts │ │ │ ├── selection-manager.ts │ │ │ └── timeline-manager.ts │ │ ├── data/ │ │ │ └── colors/ │ │ │ ├── pattern-craft.ts │ │ │ ├── solid.ts │ │ │ └── syntax-ui.tsx │ │ ├── hooks/ │ │ │ ├── actions/ │ │ │ │ ├── use-action-handler.ts │ │ │ │ └── use-editor-actions.ts │ │ │ ├── storage/ │ │ │ │ └── use-local-storage.ts │ │ │ ├── timeline/ │ │ │ │ ├── element/ │ │ │ │ │ ├── use-element-interaction.ts │ │ │ │ │ ├── use-element-resize.ts │ │ │ │ │ ├── use-element-selection.ts │ │ │ │ │ ├── use-keyframe-drag.ts │ │ │ │ │ └── use-keyframe-selection.ts │ │ │ │ ├── use-bookmark-drag.ts │ │ │ │ ├── use-edge-auto-scroll.ts │ │ │ │ ├── use-scroll-position.ts │ │ │ │ ├── use-scroll-sync.ts │ │ │ │ ├── use-selection-box.ts │ │ │ │ ├── use-snap-indicator-position.ts │ │ │ │ ├── use-timeline-drag-drop.ts │ │ │ │ ├── use-timeline-playhead.ts │ │ │ │ ├── use-timeline-seek.ts │ │ │ │ └── use-timeline-zoom.ts │ │ │ ├── use-container-size.ts │ │ │ ├── use-editor.ts │ │ │ ├── use-effect-preview.ts │ │ │ ├── use-file-upload.ts │ │ │ ├── use-focus-lock.ts │ │ │ ├── use-fullscreen.ts │ │ │ ├── use-infinite-scroll.ts │ │ │ ├── use-keybindings.ts │ │ │ ├── use-keyboard-shortcuts-help.ts │ │ │ ├── use-mobile.ts │ │ │ ├── use-paste-media.ts │ │ │ ├── use-preview-interaction.ts │ │ │ ├── use-raf-loop.ts │ │ │ ├── use-reveal-item.ts │ │ │ ├── use-shift-key.ts │ │ │ ├── use-sound-search.ts │ │ │ └── use-transform-handles.ts │ │ ├── lib/ │ │ │ ├── actions/ │ │ │ │ ├── definitions.ts │ │ │ │ ├── index.ts │ │ │ │ ├── registry.ts │ │ │ │ └── types.ts │ │ │ ├── animation/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── transform-keyframes.test.ts │ │ │ │ ├── color-channel.ts │ │ │ │ ├── effect-param-channel.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interpolation.ts │ │ │ │ ├── keyframe-query.ts │ │ │ │ ├── keyframes.ts │ │ │ │ ├── number-channel.ts │ │ │ │ ├── property-registry.ts │ │ │ │ └── resolve.ts │ │ │ ├── auth/ │ │ │ │ ├── client.ts │ │ │ │ └── server.ts │ │ │ ├── blog/ │ │ │ │ └── query.ts │ │ │ ├── commands/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── keyframe-aware-commands.test.ts │ │ │ │ ├── base-command.ts │ │ │ │ ├── batch-command.ts │ │ │ │ ├── index.ts │ │ │ │ ├── media/ │ │ │ │ │ ├── add-media-asset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── remove-media-asset.ts │ │ │ │ ├── preview-tracker.ts │ │ │ │ ├── project/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── update-project-settings.ts │ │ │ │ ├── scene/ │ │ │ │ │ ├── create-scene.ts │ │ │ │ │ ├── delete-scene.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── move-bookmark.ts │ │ │ │ │ ├── remove-bookmark.ts │ │ │ │ │ ├── rename-scene.ts │ │ │ │ │ ├── toggle-bookmark.ts │ │ │ │ │ └── update-bookmark.ts │ │ │ │ └── timeline/ │ │ │ │ ├── clipboard/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── paste.ts │ │ │ │ ├── element/ │ │ │ │ │ ├── delete-elements.ts │ │ │ │ │ ├── duplicate-elements.ts │ │ │ │ │ ├── effects/ │ │ │ │ │ │ ├── add-effect.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── remove-effect.ts │ │ │ │ │ │ ├── reorder-effect.ts │ │ │ │ │ │ ├── toggle-effect.ts │ │ │ │ │ │ └── update-effect-params.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── insert-element.ts │ │ │ │ │ ├── keyframes/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── remove-effect-param-keyframe.ts │ │ │ │ │ │ ├── remove-keyframe.ts │ │ │ │ │ │ ├── retime-keyframe.ts │ │ │ │ │ │ ├── upsert-effect-param-keyframe.ts │ │ │ │ │ │ └── upsert-keyframe.ts │ │ │ │ │ ├── move-elements.ts │ │ │ │ │ ├── split-elements.ts │ │ │ │ │ ├── toggle-elements-muted.ts │ │ │ │ │ ├── toggle-elements-visibility.ts │ │ │ │ │ ├── update-element-duration.ts │ │ │ │ │ ├── update-element-start-time.ts │ │ │ │ │ ├── update-element-trim.ts │ │ │ │ │ └── update-element.ts │ │ │ │ ├── index.ts │ │ │ │ ├── track/ │ │ │ │ │ ├── add-track.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── remove-track.ts │ │ │ │ │ ├── toggle-track-mute.ts │ │ │ │ │ └── toggle-track-visibility.ts │ │ │ │ └── tracks-snapshot.ts │ │ │ ├── db/ │ │ │ │ ├── index.ts │ │ │ │ └── schema.ts │ │ │ ├── drag-data.ts │ │ │ ├── effects/ │ │ │ │ ├── definitions/ │ │ │ │ │ ├── blur.frag.glsl │ │ │ │ │ ├── blur.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── effect.vert.glsl │ │ │ │ ├── index.ts │ │ │ │ └── registry.ts │ │ │ ├── export.ts │ │ │ ├── fonts/ │ │ │ │ └── google-fonts.ts │ │ │ ├── gradients/ │ │ │ │ ├── canvas.ts │ │ │ │ ├── index.ts │ │ │ │ └── parser.ts │ │ │ ├── iconify-api.ts │ │ │ ├── media/ │ │ │ │ ├── audio.ts │ │ │ │ ├── media-utils.ts │ │ │ │ ├── mediabunny.ts │ │ │ │ └── processing.ts │ │ │ ├── preview/ │ │ │ │ ├── element-bounds.ts │ │ │ │ ├── hit-test.ts │ │ │ │ ├── preview-coords.ts │ │ │ │ └── preview-snap.ts │ │ │ ├── rate-limit.ts │ │ │ ├── scenes.ts │ │ │ ├── stickers/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── sticker-id.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── providers/ │ │ │ │ │ ├── emoji.ts │ │ │ │ │ ├── flags.ts │ │ │ │ │ ├── icons.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shapes.ts │ │ │ │ ├── registry.ts │ │ │ │ ├── resolver.ts │ │ │ │ ├── sticker-id.ts │ │ │ │ └── types.ts │ │ │ ├── text/ │ │ │ │ └── layout.ts │ │ │ ├── time.ts │ │ │ ├── timeline/ │ │ │ │ ├── bookmarks.ts │ │ │ │ ├── drag-utils.ts │ │ │ │ ├── drop-utils.ts │ │ │ │ ├── element-utils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pixel-utils.ts │ │ │ │ ├── ripple-utils.ts │ │ │ │ ├── ruler-utils.ts │ │ │ │ ├── snap-utils.ts │ │ │ │ ├── track-element-update.ts │ │ │ │ ├── track-utils.ts │ │ │ │ └── zoom-utils.ts │ │ │ └── transcription/ │ │ │ └── caption.ts │ │ ├── proxy.ts │ │ ├── services/ │ │ │ ├── renderer/ │ │ │ │ ├── canvas-renderer.ts │ │ │ │ ├── canvas-utils.ts │ │ │ │ ├── effect-preview.ts │ │ │ │ ├── nodes/ │ │ │ │ │ ├── base-node.ts │ │ │ │ │ ├── color-node.ts │ │ │ │ │ ├── composite-effect-node.ts │ │ │ │ │ ├── effect-layer-node.ts │ │ │ │ │ ├── image-node.ts │ │ │ │ │ ├── root-node.ts │ │ │ │ │ ├── sticker-node.ts │ │ │ │ │ ├── text-node.ts │ │ │ │ │ ├── video-node.ts │ │ │ │ │ └── visual-node.ts │ │ │ │ ├── scene-builder.ts │ │ │ │ ├── scene-exporter.ts │ │ │ │ ├── webgl-effect-renderer.ts │ │ │ │ └── webgl-utils.ts │ │ │ ├── storage/ │ │ │ │ ├── indexeddb-adapter.ts │ │ │ │ ├── migrations/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── v0.ts │ │ │ │ │ │ │ ├── v1.ts │ │ │ │ │ │ │ ├── v2.ts │ │ │ │ │ │ │ ├── v3.ts │ │ │ │ │ │ │ └── v5.ts │ │ │ │ │ │ ├── v0-to-v1.test.ts │ │ │ │ │ │ ├── v1-to-v2.test.ts │ │ │ │ │ │ ├── v2-to-v3.test.ts │ │ │ │ │ │ ├── v3-to-v4.test.ts │ │ │ │ │ │ ├── v4-to-v5.test.ts │ │ │ │ │ │ ├── v5-to-v6.test.ts │ │ │ │ │ │ └── v8-to-v9.test.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── runner.ts │ │ │ │ │ ├── transformers/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ ├── v0-to-v1.ts │ │ │ │ │ │ ├── v1-to-v2.ts │ │ │ │ │ │ ├── v2-to-v3.ts │ │ │ │ │ │ ├── v3-to-v4.ts │ │ │ │ │ │ ├── v4-to-v5.ts │ │ │ │ │ │ ├── v5-to-v6.ts │ │ │ │ │ │ ├── v6-to-v7.ts │ │ │ │ │ │ ├── v7-to-v8.ts │ │ │ │ │ │ └── v8-to-v9.ts │ │ │ │ │ ├── v0-to-v1.ts │ │ │ │ │ ├── v1-to-v2.ts │ │ │ │ │ ├── v2-to-v3.ts │ │ │ │ │ ├── v3-to-v4.ts │ │ │ │ │ ├── v4-to-v5.ts │ │ │ │ │ ├── v5-to-v6.ts │ │ │ │ │ ├── v6-to-v7.ts │ │ │ │ │ ├── v7-to-v8.ts │ │ │ │ │ └── v8-to-v9.ts │ │ │ │ ├── opfs-adapter.ts │ │ │ │ ├── service.ts │ │ │ │ └── types.ts │ │ │ ├── transcription/ │ │ │ │ ├── service.ts │ │ │ │ └── worker.ts │ │ │ └── video-cache/ │ │ │ └── service.ts │ │ ├── stores/ │ │ │ ├── assets-panel-store.tsx │ │ │ ├── editor-store.ts │ │ │ ├── keybindings/ │ │ │ │ └── migrations/ │ │ │ │ ├── index.ts │ │ │ │ ├── v2-to-v3.ts │ │ │ │ ├── v3-to-v4.ts │ │ │ │ └── v4-to-v5.ts │ │ │ ├── keybindings-store.ts │ │ │ ├── panel-store.ts │ │ │ ├── preview-store.ts │ │ │ ├── properties-store.ts │ │ │ ├── sounds-store.ts │ │ │ ├── stickers-store.ts │ │ │ └── timeline-store.ts │ │ ├── types/ │ │ │ ├── animation.ts │ │ │ ├── assets.ts │ │ │ ├── blog.ts │ │ │ ├── drag.ts │ │ │ ├── editor.ts │ │ │ ├── effects.ts │ │ │ ├── export.ts │ │ │ ├── eyedropper.d.ts │ │ │ ├── fonts.ts │ │ │ ├── glsl.d.ts │ │ │ ├── keybinding.ts │ │ │ ├── language.ts │ │ │ ├── project.ts │ │ │ ├── rendering.ts │ │ │ ├── sounds.ts │ │ │ ├── stickers.ts │ │ │ ├── time.ts │ │ │ ├── timeline.ts │ │ │ └── transcription.ts │ │ └── utils/ │ │ ├── browser.ts │ │ ├── color.ts │ │ ├── date.ts │ │ ├── geometry.ts │ │ ├── id.ts │ │ ├── math.ts │ │ ├── platform.ts │ │ ├── string.ts │ │ └── ui.ts │ ├── tsconfig.json │ └── tsconfig.tsbuildinfo ├── biome.json ├── docker-compose.yml ├── docs/ │ ├── actions.md │ ├── countries-search.md │ ├── effects-renderer.md │ └── keyframes.md ├── package.json ├── packages/ │ ├── env/ │ │ ├── package.json │ │ └── src/ │ │ ├── tools.ts │ │ ├── types/ │ │ │ └── node-env.d.ts │ │ └── web.ts │ └── ui/ │ ├── package.json │ ├── src/ │ │ └── icons/ │ │ ├── brand.tsx │ │ ├── index.tsx │ │ └── ui.tsx │ └── tsconfig.json ├── tsconfig.json └── turbo.json