summaryrefslogtreecommitdiff
path: root/apps/web/src/components/editor/media-panel/store.ts
blob: 0150c39a2d0dac157a18fa74c0a78943256e9620 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import {
	CaptionsIcon,
	ArrowLeftRightIcon,
	SparklesIcon,
	StickerIcon,
	MusicIcon,
	VideoIcon,
	BlendIcon,
	SlidersHorizontalIcon,
	LucideIcon,
	TypeIcon,
} from "lucide-react";
import { create } from "zustand";

export type Tab =
	| "media"
	| "audio"
	| "text"
	| "stickers"
	| "effects"
	| "transitions"
	| "captions"
	| "filters"
	| "adjustment";

export const tabs: { [key in Tab]: { icon: LucideIcon; label: string } } = {
	media: {
		icon: VideoIcon,
		label: "Media",
	},
	audio: {
		icon: MusicIcon,
		label: "Audio",
	},
	text: {
		icon: TypeIcon,
		label: "Text",
	},
	stickers: {
		icon: StickerIcon,
		label: "Stickers",
	},
	effects: {
		icon: SparklesIcon,
		label: "Effects",
	},
	transitions: {
		icon: ArrowLeftRightIcon,
		label: "Transitions",
	},
	captions: {
		icon: CaptionsIcon,
		label: "Captions",
	},
	filters: {
		icon: BlendIcon,
		label: "Filters",
	},
	adjustment: {
		icon: SlidersHorizontalIcon,
		label: "Adjustment",
	},
};

interface MediaPanelStore {
	activeTab: Tab;
	setActiveTab: (tab: Tab) => void;
}

export const useMediaPanelStore = create<MediaPanelStore>((set) => ({
	activeTab: "media",
	setActiveTab: (tab) => set({ activeTab: tab }),
}));