summaryrefslogtreecommitdiff
path: root/apps/web/src/components/editor/panels/assets
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-07-27 01:21:02 +0200
committercashmere <cashmere@autistici.org>2026-07-27 01:21:02 +0200
commitf8fdff7f0c1b8efdef9093c932e28e427799d6ef (patch)
tree742d003a1464c921e8feb9f2fd5758982a4cc0b6 /apps/web/src/components/editor/panels/assets
parent8474b96e7d5632d7bd71aef077ab9efe2e4523cc (diff)
downloadopencut-f8fdff7f0c1b8efdef9093c932e28e427799d6ef.tar.gz
feat: gate sounds/stickers/effects UI behind feature flags
FEATURES in src/features.ts (all false) hides the assets-panel tabs and views, the clip effects properties tab, and the timeline effects badge. Existing project data still renders and stays editable (standalone effect tab, sticker config, renderer nodes untouched).
Diffstat (limited to 'apps/web/src/components/editor/panels/assets')
-rw-r--r--apps/web/src/components/editor/panels/assets/index.tsx7
-rw-r--r--apps/web/src/components/editor/panels/assets/tabbar.tsx10
2 files changed, 13 insertions, 4 deletions
diff --git a/apps/web/src/components/editor/panels/assets/index.tsx b/apps/web/src/components/editor/panels/assets/index.tsx
index bae73299..09d64eed 100644
--- a/apps/web/src/components/editor/panels/assets/index.tsx
+++ b/apps/web/src/components/editor/panels/assets/index.tsx
@@ -10,16 +10,17 @@ import { SoundsView } from "@/sounds/components/assets-view";
import { StickersView } from "@/stickers/components/assets-view";
import { TextView } from "@/text/components/assets-view";
import { EffectsView } from "@/effects/components/assets-view";
+import { FEATURES } from "@/features";
export function AssetsPanel() {
const { activeTab } = useAssetsPanelStore();
const viewMap: Record<Tab, React.ReactNode> = {
media: <MediaView />,
- sounds: <SoundsView />,
+ sounds: FEATURES.sounds ? <SoundsView /> : null,
text: <TextView />,
- stickers: <StickersView />,
- effects: <EffectsView />,
+ stickers: FEATURES.stickers ? <StickersView /> : null,
+ effects: FEATURES.effects ? <EffectsView /> : null,
transitions: (
<div className="text-muted-foreground p-4">
Transitions view coming soon...
diff --git a/apps/web/src/components/editor/panels/assets/tabbar.tsx b/apps/web/src/components/editor/panels/assets/tabbar.tsx
index 3b084c0d..b468b5bb 100644
--- a/apps/web/src/components/editor/panels/assets/tabbar.tsx
+++ b/apps/web/src/components/editor/panels/assets/tabbar.tsx
@@ -13,6 +13,14 @@ import {
tabs,
useAssetsPanelStore,
} from "@/components/editor/panels/assets/assets-panel-store";
+import { FEATURES } from "@/features";
+
+const VISIBLE_TAB_KEYS = TAB_KEYS.filter((tabKey) => {
+ if (tabKey === "sounds") return FEATURES.sounds;
+ if (tabKey === "stickers") return FEATURES.stickers;
+ if (tabKey === "effects") return FEATURES.effects;
+ return true;
+});
export function TabBar() {
const { activeTab, setActiveTab } = useAssetsPanelStore();
@@ -51,7 +59,7 @@ export function TabBar() {
ref={scrollRef}
className="scrollbar-hidden relative flex size-full p-1 flex-col items-center justify-start gap-0.5 overflow-y-auto"
>
- {TAB_KEYS.map((tabKey) => {
+ {VISIBLE_TAB_KEYS.map((tabKey) => {
const tab = tabs[tabKey];
return (
<Tooltip key={tabKey} delayDuration={10}>