Skip to content

Commit fa0abfd

Browse files
committed
add some highlights info to the demo page
1 parent 0621631 commit fa0abfd

File tree

1 file changed

+44
-11
lines changed

1 file changed

+44
-11
lines changed

src/App.tsx

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ export default function App() {
527527
const [editingGroupId, setEditingGroupId] = useState<string | undefined>();
528528
const [groupFormInitial, setGroupFormInitial] = useState<Record<string, string> | undefined>();
529529
const [managingMembersGroupId, setManagingMembersGroupId] = useState<string | undefined>();
530+
const [explainerExpanded, setExplainerExpanded] = useState(false);
530531

531532
const row = useRow('resources', currentUrl, store ?? undefined) as ResourceRow | undefined;
532533
const isContainer = row?.type === 'Container';
@@ -706,20 +707,45 @@ export default function App() {
706707
</div>
707708
</div>
708709

709-
{/* Agent hint: point coding agents to AGENTS.md */}
710+
{/* Agent hint bar: AGENTS.md link + explainer CTA */}
710711
<div style={styles.agentHint}>
711-
Using a coding agent? Point it to{' '}
712-
<a
713-
href="https://github.com/devalbo/tb-solid-pod/blob/main/AGENTS.md"
714-
target="_blank"
715-
rel="noopener noreferrer"
716-
style={styles.agentHintLink}
712+
<span>
713+
Using a coding agent? Point it to{' '}
714+
<a
715+
href="https://github.com/devalbo/tb-solid-pod/blob/main/AGENTS.md"
716+
target="_blank"
717+
rel="noopener noreferrer"
718+
style={styles.agentHintLink}
719+
>
720+
AGENTS.md
721+
</a>
722+
{' '}for project context.
723+
</span>
724+
<button
725+
type="button"
726+
style={styles.agentHintCta}
727+
onClick={() => setExplainerExpanded((e) => !e)}
728+
aria-expanded={explainerExpanded}
717729
>
718-
AGENTS.md
719-
</a>
720-
{' '}for project context.
730+
What the library showcases and why it helps app authors
731+
<span style={styles.explainerChevron}>{explainerExpanded ? ' ▲' : ' ▼'}</span>
732+
</button>
721733
</div>
722734

735+
{/* Explainer detail (when expanded) */}
736+
{explainerExpanded && (
737+
<div style={styles.explainer}>
738+
<div style={styles.explainerDetail}>
739+
<p style={styles.explainerLead}>
740+
<strong>What this demo showcases:</strong> Personas (WebID-style profiles), contacts, groups, and a virtual file browser; a CLI (Terminal tab); JSON Schemas. Data lives in the browser (LocalStorage) with Export/Import.
741+
</p>
742+
<p style={styles.explainerWhy}>
743+
<strong>Why it helps:</strong> If you’re building an app and want Solid-style data without running a pod server, you can use this as a library—install from GitHub, add a TinyBase store, and plug in the components and schemas. You get a ready-made data model (Zod + TypeScript + JSON Schema), so you can focus on your UI and optional sync later. See the <a href="https://github.com/devalbo/tb-solid-pod/blob/main/README.md" target="_blank" rel="noopener noreferrer" style={styles.explainerLink}>README</a> and <a href="https://github.com/devalbo/tb-solid-pod/blob/main/docs/INTEGRATION_GUIDE.md" target="_blank" rel="noopener noreferrer" style={styles.explainerLink}>Integration Guide</a> for details.
744+
</p>
745+
</div>
746+
</div>
747+
)}
748+
723749
{/* Data Browser View */}
724750
{activeView === 'data' && (
725751
<div style={styles.dataViewContainer}>
@@ -1052,8 +1078,15 @@ tryToJsonSchema(SomeZodSchema);`}</pre>
10521078
const styles: Record<string, CSSProperties> = {
10531079
app: { fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif', margin: 0, padding: 0, width: '100%', minHeight: '100vh', boxSizing: 'border-box', background: '#f8f9fa', display: 'flex', flexDirection: 'column' },
10541080
topNav: { background: '#1e1e1e', padding: '0 24px', borderBottom: '1px solid #333', display: 'flex', justifyContent: 'space-between', alignItems: 'center' },
1055-
agentHint: { padding: '8px 24px', background: '#f5e6d3', color: '#6b5344', fontSize: 13, borderBottom: '1px solid #e8d4bc' },
1081+
agentHint: { width: '100%', boxSizing: 'border-box', padding: '8px 24px', background: '#f5e6d3', color: '#6b5344', fontSize: 13, borderBottom: '1px solid #e8d4bc', display: 'flex', flexWrap: 'wrap', alignItems: 'center', justifyContent: 'space-between', gap: 12 },
10561082
agentHintLink: { color: '#c45c26', textDecoration: 'none', fontWeight: 500 },
1083+
agentHintCta: { padding: 0, border: 'none', background: 'none', color: '#6b5344', fontSize: 13, cursor: 'pointer', font: 'inherit', textAlign: 'left', textDecoration: 'underline', textUnderlineOffset: 2 },
1084+
explainerChevron: { fontSize: 12, color: '#888' },
1085+
explainer: { width: '100%', boxSizing: 'border-box', background: '#fff', borderBottom: '1px solid #eee', margin: 0 },
1086+
explainerDetail: { padding: '16px 24px 20px', borderTop: '1px solid #e8d4bc', maxWidth: 900 },
1087+
explainerLead: { margin: '12px 0 10px', fontSize: 14, lineHeight: 1.5, color: '#333' },
1088+
explainerWhy: { margin: 0, fontSize: 14, lineHeight: 1.5, color: '#444' },
1089+
explainerLink: { color: '#c45c26', textDecoration: 'none', fontWeight: 500 },
10571090
topNavTabs: { display: 'flex', gap: 0 },
10581091
topNavActions: { display: 'flex', gap: 8, alignItems: 'center' },
10591092
navExportBtn: { padding: '6px 12px', cursor: 'pointer', borderRadius: 4, border: '1px solid #444', background: '#2a2a2a', color: '#ccc', fontSize: 12, fontWeight: 500 },

0 commit comments

Comments
 (0)