/**
* ┌──────────────────────────────────────────────────────────────────┐
* │ EXAMPLE / PLACEHOLDER DASHBOARD WIDGETS — SAFE TO DELETE │
* └──────────────────────────────────────────────────────────────────┘
*
* Everything in this file is demo content to show what a Bloby workspace
* can look like. NONE of it is connected to real data.
*
* To start fresh with the user's real widgets:
* 1. Delete this entire file (deleteme_placeholders.tsx).
* 2. In DashboardPage.tsx, remove the `PlaceholderWidgets` import and the
* usage.
* The dashboard will then be empty — ready for real apps/widgets.
*
* It is intentionally fully self-contained (own data, icons, styles, and the
* dismissible "these are examples" banner) so removal is a one-file delete.
*/
import { useState } from 'react';
import { Search, TrendingUp, Sparkles, X as XIcon } from 'lucide-react';
import { AreaChart, Area, BarChart, Bar, ResponsiveContainer } from 'recharts';
const DISMISS_KEY = 'bloby_example_widgets_dismissed';
const CARD = 'relative rounded-xl overflow-hidden';
const BORDER = 'absolute inset-0 rounded-xl bg-gradient-to-b from-white/[0.08] via-white/[0.02] to-transparent pointer-events-none';
const INNER = 'relative rounded-xl bg-[#141414] m-px p-3.5 h-full';
const rev = [{ v: 82 }, { v: 89 }, { v: 94 }, { v: 101 }, { v: 108 }, { v: 112 }, { v: 125 }];
const fol = [{ v: 12 }, { v: 18 }, { v: 9 }, { v: 24 }, { v: 31 }, { v: 19 }, { v: 27 }];
function StripeSvg() {
return ;
}
function GmailSvg() {
return ;
}
function XSvg() {
return ;
}
/** Small "Example" tag shown on each placeholder card. */
function ExampleBadge() {
return (
Example
);
}
export function PlaceholderWidgets() {
const [dismissed, setDismissed] = useState(() => {
try { return localStorage.getItem(DISMISS_KEY) === '1'; } catch { return false; }
});
function dismissBanner() {
setDismissed(true);
try { localStorage.setItem(DISMISS_KEY, '1'); } catch {}
}
return (
<>
{/* "These are examples" banner — dismissible, remembers via localStorage */}
{!dismissed && (
These are example widgets
Just a preview of what your workspace can look like — none of it is real data.
Ask Bloby to replace them with your own apps.
)}
{/* Stripe — 2 cols */}
{/* X — 1 col */}
{/* Gmail — 1 col */}
{['Sarah Chen', 'Stripe', 'Alex R.'].map((n) => (
))}
{/* Research — 2 cols */}
{[
{ t: 'Competitor pricing', s: 'Done', c: 'text-emerald-500 bg-emerald-500/10' },
{ t: 'Market trends Q1', s: 'Done', c: 'text-emerald-500 bg-emerald-500/10' },
{ t: 'User feedback', s: 'Review', c: 'text-orange-400 bg-orange-400/10' },
].map((r) => (
{r.t}
{r.s}
))}
>
);
}