diff --git a/src/app/components/AboutModal.module.css b/src/app/components/AboutModal.module.css index 7000e7b..fb587ea 100644 --- a/src/app/components/AboutModal.module.css +++ b/src/app/components/AboutModal.module.css @@ -94,7 +94,26 @@ vertical-align: top; } -/* Privacy list */ +/* Acknowledgements — a labelled group above each credit list. */ +.ackGroup { + display: flex; + flex-direction: column; + gap: var(--space-2); +} + +.ackLabel { + margin: 0; + font-size: 13px; + font-weight: 600; + color: var(--text); +} + +/* Trailing "— what it's for" gloss after the project links. */ +.ackNote { + color: var(--text-secondary); +} + +/* Privacy + acknowledgement lists */ .list { margin: 0; padding-left: var(--space-5); diff --git a/src/app/components/AboutModal.tsx b/src/app/components/AboutModal.tsx index d169784..e6bbd3e 100644 --- a/src/app/components/AboutModal.tsx +++ b/src/app/components/AboutModal.tsx @@ -3,10 +3,12 @@ * * Rendered inside ModalShell — no backdrop, close button, or focus trap here; * the shell owns all of that (docs/architecture/03 → Layer 3). This component - * is pure content: app identity, keyboard shortcuts (§01D), and privacy posture - * (SOUL.md — local-only, no accounts, no telemetry). + * is pure content: app identity, keyboard shortcuts (§01D), privacy posture + * (SOUL.md — local-only, no accounts, no telemetry), and acknowledgements of + * the projects Astrolabe is built on and shaped by. */ +import type { ReactNode } from 'react'; import { FEEDBACK_EMAIL, feedbackMailtoHref } from '../feedback'; import styles from './AboutModal.module.css'; @@ -23,6 +25,18 @@ const SHORTCUTS: readonly { keys: string; action: string }[] = [ { keys: 'Esc', action: 'Close the active modal' }, ]; +/** + * External acknowledgement link. Opens in a new tab so following a credit never + * unloads the workspace mid-edit; `rel` isolates the opened context. + */ +function Ack({ href, children }: { href: string; children: ReactNode }) { + return ( + + {children} + + ); +} + export function AboutModal() { return (
Astrolabe stands on the work of many open projects.
+ +
+ Astrolabe has a sibling: