civicos-components¶
Reusable Svelte 5 UI components for rendering civic data.
Location: packages/civicos-components/
Depends on @civicos/client for types. Optional peer dependencies: chart.js (budgets), leaflet (maps).
Components¶
Leaf Components (Composable)¶
CivicMeetingCard— Meeting with date, location, agenda linkCivicAgendaItemCard— Agenda item with summary and participation guideCivicDecisionCard— Decision with outcome badge and vote breakdownCivicVoiceButtons— Support/oppose/watching stance buttonsCivicInitiativeCard— Initiative with attestation badgesCivicCommentThread— Comment displayCivicProvenancePanel— Data source attributionCivicIdentityChip— User identity display (truncated npub)CivicSynthesisBar— Synthesis visualizationCivicReadOnlyPulse— Read-only city pulse summaryCivicProcessBar— Process/progress visualization
Smart Views (Own State)¶
CivicAgendaView— Full agenda listing with filteringCivicDecisionView— Decision with full contextCivicInitiativeView— Initiative with actions
Visualization (Self-Contained)¶
CivicIssueMap— Geographic issue map (Leaflet)CivicBudgetBreakdown— Budget breakdown chart (Chart.js)
Theme System¶
import { initTheme, setTheme, applyTheme } from '@civicos/components';
initTheme(); // Apply saved theme on page load
setTheme('dark'); // Switch to dark mode
Themes use CSS custom properties (--civic-* tokens).
Utilities¶
civic-helpers.js exports: - isPastMeeting(), formatMeetingTime(), formatRelativeDate() - truncateNpub(), outcomeIcon(), outcomeClass() - googleCalendarUrl(), downloadIcs() - computeCityFocalMeetings(), urgencyClass(), meetingDaysUntil()