mirror of
https://github.com/nexu-io/open-design.git
synced 2026-07-08 07:19:17 +08:00
- Replaced the `community/` directory with `spec/`, which now serves as the portable plugin specification and authoring kit, including documentation, templates, and examples for contributors. - Added new files for agent development, contributing guidelines, and a comprehensive README for the plugin spec kit. - Updated existing documentation to reflect the new structure and clarify authoring rules for plugins. - Introduced multiple example plugins under the new `spec/examples/` directory, showcasing various use cases and workflows for plugin authors. This update enhances the clarity and accessibility of the plugin development process, providing a robust framework for contributors and external agents.
174 lines
5.2 KiB
HTML
174 lines
5.2 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Example Live Ops Artifact</title>
|
|
<style>
|
|
:root {
|
|
--bg: #eef2f0;
|
|
--ink: #18201d;
|
|
--muted: #65736f;
|
|
--line: #cdd9d4;
|
|
--panel: #ffffff;
|
|
--green: #0a7b5e;
|
|
--blue: #2e5aac;
|
|
--amber: #b86f00;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
min-height: 100vh;
|
|
background: var(--bg);
|
|
color: var(--ink);
|
|
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
padding: 28px;
|
|
}
|
|
.artifact {
|
|
max-width: 1180px;
|
|
margin: 0 auto;
|
|
}
|
|
header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
align-items: start;
|
|
margin-bottom: 18px;
|
|
}
|
|
h1 {
|
|
margin: 0;
|
|
font-size: 36px;
|
|
line-height: 1.04;
|
|
letter-spacing: 0;
|
|
}
|
|
.meta {
|
|
margin-top: 8px;
|
|
color: var(--muted);
|
|
line-height: 1.45;
|
|
}
|
|
.refresh {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: #fbfdfc;
|
|
padding: 12px 14px;
|
|
min-width: 230px;
|
|
font-size: 13px;
|
|
color: var(--muted);
|
|
}
|
|
.refresh strong {
|
|
display: block;
|
|
color: var(--green);
|
|
font-size: 15px;
|
|
margin-bottom: 4px;
|
|
}
|
|
.grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 14px;
|
|
margin-bottom: 14px;
|
|
}
|
|
.card {
|
|
background: var(--panel);
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
padding: 18px;
|
|
}
|
|
.label {
|
|
color: var(--muted);
|
|
text-transform: uppercase;
|
|
letter-spacing: .08em;
|
|
font-size: 12px;
|
|
font-weight: 820;
|
|
}
|
|
.value {
|
|
margin-top: 10px;
|
|
font-size: 32px;
|
|
line-height: 1;
|
|
font-weight: 860;
|
|
}
|
|
.split {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr);
|
|
gap: 14px;
|
|
}
|
|
.source {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 14px 0;
|
|
border-bottom: 1px solid #edf1ef;
|
|
gap: 12px;
|
|
}
|
|
.source:last-child { border-bottom: 0; }
|
|
.source b { display: block; margin-bottom: 4px; }
|
|
.source span { color: var(--muted); font-size: 14px; }
|
|
.pill {
|
|
border-radius: 999px;
|
|
padding: 5px 9px;
|
|
background: #e9f6f2;
|
|
color: var(--green);
|
|
font-size: 12px;
|
|
font-weight: 820;
|
|
white-space: nowrap;
|
|
}
|
|
.pill.warn {
|
|
background: #fff2db;
|
|
color: var(--amber);
|
|
}
|
|
.actions {
|
|
display: grid;
|
|
gap: 10px;
|
|
margin-top: 14px;
|
|
}
|
|
.action {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
padding: 14px;
|
|
display: grid;
|
|
gap: 5px;
|
|
background: #fbfdfc;
|
|
}
|
|
.action strong { font-size: 15px; }
|
|
.action span { color: var(--muted); line-height: 1.4; }
|
|
@media (max-width: 860px) {
|
|
body { padding: 18px; }
|
|
header { flex-direction: column; }
|
|
.grid, .split { grid-template-columns: 1fr; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main class="artifact">
|
|
<header>
|
|
<div>
|
|
<h1>Customer success live artifact</h1>
|
|
<div class="meta">Seeded mock source for connector-ready weekly account review. Designed to refresh from Notion, Linear, or Stripe later.</div>
|
|
</div>
|
|
<div class="refresh"><strong>Fresh</strong>Updated 4 minutes ago from mock data. Refresh target: every 60 seconds.</div>
|
|
</header>
|
|
<section class="grid" aria-label="Live KPIs">
|
|
<div class="card"><div class="label">Accounts at risk</div><div class="value">9</div></div>
|
|
<div class="card"><div class="label">Expansion signals</div><div class="value">17</div></div>
|
|
<div class="card"><div class="label">Open blockers</div><div class="value">24</div></div>
|
|
<div class="card"><div class="label">Health score</div><div class="value">82</div></div>
|
|
</section>
|
|
<section class="split">
|
|
<div class="card">
|
|
<div class="label">Source health</div>
|
|
<div class="source"><div><b>Mock account table</b><span>12 rows mapped into KPI cards and action queue.</span></div><span class="pill">Ready</span></div>
|
|
<div class="source"><div><b>Linear blockers</b><span>Connector not bound. Showing seeded issue counts.</span></div><span class="pill warn">Seeded</span></div>
|
|
<div class="source"><div><b>Stripe expansion</b><span>ARR deltas use sample values until credentials are connected.</span></div><span class="pill warn">Seeded</span></div>
|
|
</div>
|
|
<div class="card">
|
|
<div class="label">Next actions</div>
|
|
<div class="actions">
|
|
<div class="action"><strong>Escalate Northstar Labs</strong><span>Renewal date moved up. Owner: Priya. Send migration plan before Friday.</span></div>
|
|
<div class="action"><strong>Unblock billing export</strong><span>Two enterprise teams are waiting on CSV field mapping.</span></div>
|
|
<div class="action"><strong>Prepare expansion brief</strong><span>Three workspaces crossed 80% active-seat utilization this week.</span></div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|