From f8fdff7f0c1b8efdef9093c932e28e427799d6ef Mon Sep 17 00:00:00 2001 From: cashmere Date: Mon, 27 Jul 2026 01:21:02 +0200 Subject: 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). --- apps/web/src/components/editor/panels/assets/tabbar.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'apps/web/src/components/editor/panels/assets/tabbar.tsx') 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 ( -- cgit v1.3.1