mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-24 00:49:45 +00:00
e2edc6ceb8
Drop the SENCHO_EXPERIMENTAL gate from the Fleet Routing and Deployments tabs so they ship in the default UI. Both have been verified production-ready and promoted out of experimental. Routing trigger and content are now wrapped only by isAdmiral plus the existing AdmiralGate. Deployments trigger and content are wrapped by isPaid (Skipper+); Community users no longer see the tab at all, mirroring the Routing pattern. Federation and Secrets remain inside the experimental block as dev-only previews. Removes the SoonBadge component and "Coming soon" pill from the preview placeholder so the tab bar shows only ready, tier-appropriate tabs without ambiguous SOON labels.
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import type { ReactNode } from 'react';
|
|
|
|
interface FleetSoonPlaceholderProps {
|
|
icon: ReactNode;
|
|
kicker: string;
|
|
title: string;
|
|
description: string;
|
|
plannedActions: string[];
|
|
}
|
|
|
|
export function FleetSoonPlaceholder({
|
|
icon,
|
|
kicker,
|
|
title,
|
|
description,
|
|
plannedActions,
|
|
}: FleetSoonPlaceholderProps) {
|
|
return (
|
|
<div className="mx-auto max-w-3xl rounded-xl border border-card-border border-t-card-border-top bg-card shadow-card-bevel">
|
|
<div className="flex flex-col gap-5 p-8">
|
|
<div className="inline-flex items-center gap-2 text-brand">
|
|
<span className="inline-flex h-4 w-4 items-center justify-center" aria-hidden>
|
|
{icon}
|
|
</span>
|
|
<span className="font-mono text-[10px] uppercase tracking-[0.2em]">{kicker}</span>
|
|
</div>
|
|
|
|
<h3 className="font-serif text-2xl italic leading-tight tracking-[-0.01em] text-stat-value">
|
|
{title}
|
|
</h3>
|
|
|
|
<p className="font-sans text-sm leading-relaxed text-stat-subtitle">
|
|
{description}
|
|
</p>
|
|
|
|
<div className="flex flex-col gap-2 border-t border-border pt-4">
|
|
<span className="font-mono text-[10px] uppercase tracking-[0.2em] text-stat-icon">
|
|
Planned actions
|
|
</span>
|
|
<div className="flex flex-wrap gap-1.5">
|
|
{plannedActions.map((action) => (
|
|
<span
|
|
key={action}
|
|
className="rounded border border-border bg-muted/40 px-2 py-1 font-mono text-[9px] uppercase tracking-[0.14em] text-stat-subtitle"
|
|
>
|
|
{action}
|
|
</span>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|