- Replace hand-coded skeleton CSS/JSX with boneyard-js auto-generated bones - Remove skeleton.css and @keyframes shimmer from base.css - Add <Skeleton> wrappers with fixtures to all 25+ page components - Generate 20 bone captures via boneyard CLI (CDP auth-gated capture) - Refactor data fetching from useEffect+useState to TanStack Query - Extract query hooks into src/admin/lib/queries/ and apiAdapter - Add usePaginatedQuery hook replacing useApiCall/useListData - Fix parseFloat || 0 anti-pattern in OfferDetail and OffersTemplates inputs - Fix customer_id mandatory validation on offer creation - Fix leave-requests comma-separated status filter (Prisma enum in: []) - Add cross-entity cache invalidation for orders/offers/invoices/projects - Make rate limits configurable via env vars (RATE_LIMIT_MAX, RATE_LIMIT_REFRESH, etc.) - Add boneyard.config.json with routes and breakpoints Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
export default function DashSessionsFixture() {
|
|
return (
|
|
<div className="admin-card">
|
|
<div
|
|
className="admin-card-header"
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "space-between",
|
|
gap: "0.75rem",
|
|
}}
|
|
>
|
|
<h2 className="admin-card-title">Přihlášená zařízení</h2>
|
|
<button className="admin-btn admin-btn-secondary admin-btn-sm">
|
|
Odhlásit ostatní
|
|
</button>
|
|
</div>
|
|
<div className="admin-card-body" style={{ padding: 0 }}>
|
|
<div className="dash-sessions-list">
|
|
{Array.from({ length: 3 }, (_, i) => (
|
|
<div
|
|
key={i}
|
|
className={`dash-session-item${i === 0 ? " dash-session-item-current" : ""}`}
|
|
>
|
|
<div className="dash-session-icon">
|
|
<svg
|
|
width="18"
|
|
height="18"
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
strokeWidth="2"
|
|
>
|
|
<rect x="2" y="3" width="20" height="14" rx="2" ry="2" />
|
|
<line x1="8" y1="21" x2="16" y2="21" />
|
|
<line x1="12" y1="17" x2="12" y2="21" />
|
|
</svg>
|
|
</div>
|
|
<div className="dash-session-info">
|
|
<div className="dash-session-device">
|
|
Chrome na Windows
|
|
{i === 0 && (
|
|
<span
|
|
className="admin-badge admin-badge-success"
|
|
style={{ marginLeft: "0.5rem" }}
|
|
>
|
|
Aktuální
|
|
</span>
|
|
)}
|
|
</div>
|
|
<div className="dash-session-meta">
|
|
<span>192.168.1.100</span>
|
|
<span className="dash-session-meta-separator">|</span>
|
|
<span>před 2 hodinami</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|