"use client"; import { useMemo, useState } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Input } from "@/components/ui/input"; import { Search, MoreHorizontal } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useRouter } from "next/navigation"; import { useEnv } from "@/components/env-provider"; export default function FeatureFlagsPage() { const router = useRouter(); const [searchQuery, setSearchQuery] = useState(""); const { state } = useEnv(); const backendFlag = useMemo(() => { const lastObs = state?.history?.[state.history.length - 1]?.observation; if (!lastObs) return null; return { id: lastObs.feature_name, name: lastObs.feature_name.replace(/_/g, " "), rollout: lastObs.current_rollout_percentage, status: !(state?.is_done ?? false), scenario: state?.scenario_name ?? "unknown", difficulty: state?.difficulty ?? "unknown", lastUpdated: `Step ${state?.step_count ?? 0}`, }; }, [state]); const filtered = useMemo(() => { if (!backendFlag) return []; const q = searchQuery.trim().toLowerCase(); if (!q) return [backendFlag]; if (backendFlag.id.toLowerCase().includes(q) || backendFlag.name.toLowerCase().includes(q)) { return [backendFlag]; } return []; }, [backendFlag, searchQuery]); return (
The UI reflects only what the backend supports.
Scenario: {flag.scenario} ({flag.difficulty})