quartz/quartz/components/index.ts
Soushi888 b29dc907e8 feat(components): add RecentChanges component
Adds a RecentChanges component that displays a live activity feed of
recently created and modified notes, with richer UX than RecentNotes.

Features:
- Created vs. modified distinction (badge + 1h threshold heuristic)
- Tab filter UI: All / New (by creation date) / Updated (modified only)
- Load-more pagination per tab with configurable page size
- Client-side relative timestamps via Intl.RelativeTimeFormat (locale-aware)
- Progressive enhancement: SSR initial render + JSON data island for client
- localStorage persistence of the active filter tab
- Fully i18n: all UI strings go through cfg.locale

New files:
- quartz/components/RecentChanges.tsx
- quartz/components/scripts/recentChanges.inline.ts
- quartz/components/utils/recentChanges.ts
- quartz/components/styles/recentChanges.scss

Modified:
- quartz/components/index.ts: export RecentChanges
- quartz/i18n/locales/definition.ts: add recentChanges translation block
- quartz/i18n/locales/*.ts (30 files): add English fallback translations
2026-03-17 23:10:46 -04:00

56 lines
1.3 KiB
TypeScript

import Content from "./pages/Content"
import TagContent from "./pages/TagContent"
import FolderContent from "./pages/FolderContent"
import NotFound from "./pages/404"
import ArticleTitle from "./ArticleTitle"
import Darkmode from "./Darkmode"
import ReaderMode from "./ReaderMode"
import Head from "./Head"
import PageTitle from "./PageTitle"
import ContentMeta from "./ContentMeta"
import Spacer from "./Spacer"
import TableOfContents from "./TableOfContents"
import Explorer from "./Explorer"
import TagList from "./TagList"
import Graph from "./Graph"
import Backlinks from "./Backlinks"
import Search from "./Search"
import Footer from "./Footer"
import DesktopOnly from "./DesktopOnly"
import MobileOnly from "./MobileOnly"
import RecentNotes from "./RecentNotes"
import Breadcrumbs from "./Breadcrumbs"
import Comments from "./Comments"
import Flex from "./Flex"
import ConditionalRender from "./ConditionalRender"
import RecentChanges from "./RecentChanges"
export {
ArticleTitle,
Content,
TagContent,
FolderContent,
Darkmode,
ReaderMode,
Head,
PageTitle,
ContentMeta,
Spacer,
TableOfContents,
Explorer,
TagList,
Graph,
Backlinks,
Search,
Footer,
DesktopOnly,
MobileOnly,
RecentNotes,
NotFound,
Breadcrumbs,
Comments,
Flex,
ConditionalRender,
RecentChanges,
}