summaryrefslogtreecommitdiff
path: root/apps/web/src/components/editor/media-panel/views/text.tsx
blob: b47edd8dc580d38b799384281313467fd49873ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { DraggableMediaItem } from "@/components/ui/draggable-item";
import { TIMELINE_CONSTANTS } from "@/constants/timeline-constants";
import { useTimelineStore } from "@/stores/timeline-store";
import { type TextElement } from "@/types/timeline";

let textData: TextElement = {
	id: "default-text",
	type: "text",
	name: "Default text",
	content: "Default text",
	fontSize: 48,
	fontFamily: "Arial",
	color: "#ffffff",
	backgroundColor: "transparent",
	textAlign: "center" as const,
	fontWeight: "normal" as const,
	fontStyle: "normal" as const,
	textDecoration: "none" as const,
	x: 0,
	y: 0,
	rotation: 0,
	opacity: 1,
	duration: TIMELINE_CONSTANTS.DEFAULT_TEXT_DURATION,
	startTime: 0,
	trimStart: 0,
	trimEnd: 0,
};

export function TextView() {
	return (
		<div className="p-4">
			<DraggableMediaItem
				name="Default text"
				preview={
					<div className="flex items-center justify-center w-full h-full bg-accent rounded">
						<span className="text-xs select-none">Default text</span>
					</div>
				}
				dragData={{
					id: textData.id,
					type: textData.type,
					name: textData.name,
					content: textData.content,
				}}
				aspectRatio={1}
				onAddToTimeline={(currentTime) =>
					useTimelineStore.getState().addTextAtTime(textData, currentTime)
				}
				showLabel={false}
			/>
		</div>
	);
}