/* global React, Icons, Badge, Btn, Pill, Meter, Score, Stat, Eyebrow, LastVerified */ const { useState } = React; /* ========================================================================= CREATOR TOOLKIT — calculators, checklists, AI prompt packs. Featured interactive: data-usage calculator. The rest tile out as a grid of tools, each opening its own dedicated calculator in a later phase. Keeps the brief's commitment without front-loading every tool. ========================================================================= */ const TOOLS = [ { id: 'data', icon: Icons.wifi, t: 'Data usage calculator', s: 'Bitrate × hours × stream days → GB needed, plan match.', tag: 'Live demo', featured: true }, { id: 'battery', icon: Icons.battery, t: 'Battery runtime estimator', s: 'Total draw vs. capacity → realistic runtime, swap timing.', tag: 'Calculator' }, { id: 'bitrate', icon: Icons.zap, t: 'Upload bitrate calculator', s: 'Resolution + framerate → recommended encode + headroom.', tag: 'Calculator' }, { id: 'elig', icon: Icons.check, t: 'Platform eligibility tracker', s: 'Follower + watch-hour math for Twitch Affiliate, YT Live, TikTok, Kick.', tag: 'Tracker' }, { id: 'check', icon: Icons.tool, t: 'Stream checklist generator', s: 'Output the pre-flight, in-flight, and recovery checklist for your build.', tag: 'Generator' }, { id: 'compare', icon: Icons.filter, t: 'Gear comparison tables', s: 'Throw any two pieces of gear side-by-side, same six axes.', tag: 'Tool' }, { id: 'vert', icon: Icons.play, t: 'OBS vertical layout checklist', s: 'For Twitch dual-format and TikTok/Reels/Shorts simultaneously.', tag: 'Checklist' }, { id: 'prompts', icon: Icons.book, t: 'AI prompt packs', s: 'Titles, clips, sponsorship outreach, stream planning — pre-tested prompts.', tag: 'Pack' }, { id: 'sched', icon: Icons.clock, t: 'Stream-plan generator', s: 'Cadence + content-bucket scaffold for a new IRL channel.', tag: 'Generator' }, ]; const RES_OPTIONS = [ { id: '720', label: '720p · 30', mbps: 3.5 }, { id: '1080', label: '1080p · 30', mbps: 5.5 }, { id: '1080p60', label: '1080p · 60', mbps: 7.5 }, { id: '1440', label: '1440p · 60', mbps: 10.5 }, ]; const ToolkitPage = ({ onNav }) => { const [res, setRes] = useState('1080'); const [hours, setHours] = useState(3); const [days, setDays] = useState(20); const [copied, setCopied] = useState(false); const r = RES_OPTIONS.find(o => o.id === res); const perStream = (r.mbps * 0.45 * hours); // GB per stream const perMonth = perStream * days; // GB per month const promptText = `You are titling a Twitch IRL VOD clip for maximum clip-discovery surface on TikTok and YouTube Shorts simultaneously. The clip is {clip-summary}. Constraints: - 60 characters max - One concrete noun in the first three words - No emoji, no "POV:", no all-caps clickbait - Avoid words flagged by TikTok community guidelines: {list} - Match the platform tone (TikTok: punchy verb / YT Shorts: question or stat) Return 5 candidates, ranked by predicted click-through, with a one-line rationale per option grounded in {clip-summary}.`; const copyPrompt = async () => { try { await navigator.clipboard.writeText(promptText); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch {/* clipboard unavailable; user can select-and-copy from the pre */} }; return (
Calculators and checklists for every decision that should be math, not vibes. Open-source where possible. Affiliate-free by design.
How much data does your stream actually need per month? Move the controls; we match a plan from the data hub.
{t.s}
Title generation, clip selection, sponsorship outreach, stream-plan scaffolding — each prompt is run against the major models and hand-validated. No "act as a..." slop.
{`You are titling a Twitch IRL VOD clip for maximum clip-discovery surface on
TikTok and YouTube Shorts simultaneously. The clip is {clip-summary}.
Constraints:
- 60 characters max
- One concrete noun in the first three words
- No emoji, no "POV:", no all-caps clickbait
- Avoid words flagged by TikTok community guidelines: {list}
- Match the platform tone (TikTok: punchy verb / YT Shorts: question or stat)
Return 5 candidates, ranked by predicted click-through, with a one-line
rationale per option grounded in {clip-summary}.`}