@burdenoff/microfe-theculturepost 2026.705.2 → 2026.709.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/generated/global-operations.d.ts +2 -0
  4. package/dist/generated/global-operations.d.ts.map +1 -0
  5. package/dist/generated/global-types.d.ts +18199 -0
  6. package/dist/generated/global-types.d.ts.map +1 -0
  7. package/dist/generated/wspace-operations.d.ts +2 -0
  8. package/dist/generated/wspace-operations.d.ts.map +1 -0
  9. package/dist/generated/wspace-types.d.ts +43046 -0
  10. package/dist/generated/wspace-types.d.ts.map +1 -0
  11. package/dist/index.d.ts +9 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +8 -1
  14. package/dist/services/assistantApi.d.ts +15 -0
  15. package/dist/services/assistantApi.d.ts.map +1 -0
  16. package/dist/services/assistantApi.js +204 -0
  17. package/dist/services/assistantApi.js.map +1 -0
  18. package/dist/services/createSandboxAssistantTransport.d.ts +26 -0
  19. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  20. package/dist/services/createSandboxAssistantTransport.js +126 -0
  21. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  22. package/dist/theculturepost/TheCulturePostRoot.d.ts +5 -0
  23. package/dist/theculturepost/TheCulturePostRoot.d.ts.map +1 -0
  24. package/dist/theculturepost/TheCulturePostRoutes.d.ts +4 -0
  25. package/dist/theculturepost/TheCulturePostRoutes.d.ts.map +1 -0
  26. package/dist/theculturepost/TheCulturePostRoutes.js +73 -40
  27. package/dist/theculturepost/TheCulturePostRoutes.js.map +1 -1
  28. package/dist/theculturepost/components/AddCitationDialog.d.ts +11 -0
  29. package/dist/theculturepost/components/AddCitationDialog.d.ts.map +1 -0
  30. package/dist/theculturepost/components/ArchiveItemCard.d.ts +9 -0
  31. package/dist/theculturepost/components/ArchiveItemCard.d.ts.map +1 -0
  32. package/dist/theculturepost/components/AudioPlayer.d.ts +22 -0
  33. package/dist/theculturepost/components/AudioPlayer.d.ts.map +1 -0
  34. package/dist/theculturepost/components/AuthorLabel.d.ts +16 -0
  35. package/dist/theculturepost/components/AuthorLabel.d.ts.map +1 -0
  36. package/dist/theculturepost/components/AuthorLabel.js +1 -1
  37. package/dist/theculturepost/components/CitationList.d.ts +27 -0
  38. package/dist/theculturepost/components/CitationList.d.ts.map +1 -0
  39. package/dist/theculturepost/components/CollectionCard.d.ts +9 -0
  40. package/dist/theculturepost/components/CollectionCard.d.ts.map +1 -0
  41. package/dist/theculturepost/components/CoverImage.d.ts +13 -0
  42. package/dist/theculturepost/components/CoverImage.d.ts.map +1 -0
  43. package/dist/theculturepost/components/CreateArchiveItemDialog.d.ts +12 -0
  44. package/dist/theculturepost/components/CreateArchiveItemDialog.d.ts.map +1 -0
  45. package/dist/theculturepost/components/CreateCollectionDialog.d.ts +10 -0
  46. package/dist/theculturepost/components/CreateCollectionDialog.d.ts.map +1 -0
  47. package/dist/theculturepost/components/CreateStoryDialog.d.ts +12 -0
  48. package/dist/theculturepost/components/CreateStoryDialog.d.ts.map +1 -0
  49. package/dist/theculturepost/components/CreateTopicDialog.d.ts +10 -0
  50. package/dist/theculturepost/components/CreateTopicDialog.d.ts.map +1 -0
  51. package/dist/theculturepost/components/DecorativeCover.d.ts +17 -0
  52. package/dist/theculturepost/components/DecorativeCover.d.ts.map +1 -0
  53. package/dist/theculturepost/components/DecorativeDivider.d.ts +14 -0
  54. package/dist/theculturepost/components/DecorativeDivider.d.ts.map +1 -0
  55. package/dist/theculturepost/components/DiscussionCard.d.ts +9 -0
  56. package/dist/theculturepost/components/DiscussionCard.d.ts.map +1 -0
  57. package/dist/theculturepost/components/EmptyState.d.ts +18 -0
  58. package/dist/theculturepost/components/EmptyState.d.ts.map +1 -0
  59. package/dist/theculturepost/components/FileImage.d.ts +18 -0
  60. package/dist/theculturepost/components/FileImage.d.ts.map +1 -0
  61. package/dist/theculturepost/components/FileUploadField.d.ts +29 -0
  62. package/dist/theculturepost/components/FileUploadField.d.ts.map +1 -0
  63. package/dist/theculturepost/components/FilterTabs.d.ts +18 -0
  64. package/dist/theculturepost/components/FilterTabs.d.ts.map +1 -0
  65. package/dist/theculturepost/components/HistoryTimeline.d.ts +20 -0
  66. package/dist/theculturepost/components/HistoryTimeline.d.ts.map +1 -0
  67. package/dist/theculturepost/components/LifecycleStepper.d.ts +11 -0
  68. package/dist/theculturepost/components/LifecycleStepper.d.ts.map +1 -0
  69. package/dist/theculturepost/components/OpenDiscussionDialog.d.ts +12 -0
  70. package/dist/theculturepost/components/OpenDiscussionDialog.d.ts.map +1 -0
  71. package/dist/theculturepost/components/OralHistoryCard.d.ts +8 -0
  72. package/dist/theculturepost/components/OralHistoryCard.d.ts.map +1 -0
  73. package/dist/theculturepost/components/OverlayBadge.d.ts +15 -0
  74. package/dist/theculturepost/components/OverlayBadge.d.ts.map +1 -0
  75. package/dist/theculturepost/components/PageHero.d.ts +26 -0
  76. package/dist/theculturepost/components/PageHero.d.ts.map +1 -0
  77. package/dist/theculturepost/components/PageLayout.d.ts +16 -0
  78. package/dist/theculturepost/components/PageLayout.d.ts.map +1 -0
  79. package/dist/theculturepost/components/Pagination.d.ts +22 -0
  80. package/dist/theculturepost/components/Pagination.d.ts.map +1 -0
  81. package/dist/theculturepost/components/RecordOralHistoryDialog.d.ts +47 -0
  82. package/dist/theculturepost/components/RecordOralHistoryDialog.d.ts.map +1 -0
  83. package/dist/theculturepost/components/ReplyThread.d.ts +20 -0
  84. package/dist/theculturepost/components/ReplyThread.d.ts.map +1 -0
  85. package/dist/theculturepost/components/ReplyThread.js +1 -1
  86. package/dist/theculturepost/components/StateViews.d.ts +24 -0
  87. package/dist/theculturepost/components/StateViews.d.ts.map +1 -0
  88. package/dist/theculturepost/components/StatusBadge.d.ts +11 -0
  89. package/dist/theculturepost/components/StatusBadge.d.ts.map +1 -0
  90. package/dist/theculturepost/components/StoryCard.d.ts +11 -0
  91. package/dist/theculturepost/components/StoryCard.d.ts.map +1 -0
  92. package/dist/theculturepost/components/Tabs.d.ts +17 -0
  93. package/dist/theculturepost/components/Tabs.d.ts.map +1 -0
  94. package/dist/theculturepost/components/TagInput.d.ts +20 -0
  95. package/dist/theculturepost/components/TagInput.d.ts.map +1 -0
  96. package/dist/theculturepost/components/TopicCard.d.ts +9 -0
  97. package/dist/theculturepost/components/TopicCard.d.ts.map +1 -0
  98. package/dist/theculturepost/components/Waveform.d.ts +23 -0
  99. package/dist/theculturepost/components/Waveform.d.ts.map +1 -0
  100. package/dist/theculturepost/components/categoryMeta.d.ts +14 -0
  101. package/dist/theculturepost/components/categoryMeta.d.ts.map +1 -0
  102. package/dist/theculturepost/components/index.d.ts +43 -0
  103. package/dist/theculturepost/components/index.d.ts.map +1 -0
  104. package/dist/theculturepost/components/kindIcon.d.ts +7 -0
  105. package/dist/theculturepost/components/kindIcon.d.ts.map +1 -0
  106. package/dist/theculturepost/components/viz/BarChart.d.ts +23 -0
  107. package/dist/theculturepost/components/viz/BarChart.d.ts.map +1 -0
  108. package/dist/theculturepost/components/viz/Donut.d.ts +25 -0
  109. package/dist/theculturepost/components/viz/Donut.d.ts.map +1 -0
  110. package/dist/theculturepost/components/viz/StatTile.d.ts +14 -0
  111. package/dist/theculturepost/components/viz/StatTile.d.ts.map +1 -0
  112. package/dist/theculturepost/components/viz/index.d.ts +11 -0
  113. package/dist/theculturepost/components/viz/index.d.ts.map +1 -0
  114. package/dist/theculturepost/context/TheCulturePostContext.d.ts +16 -0
  115. package/dist/theculturepost/context/TheCulturePostContext.d.ts.map +1 -0
  116. package/dist/theculturepost/context/index.d.ts +6 -0
  117. package/dist/theculturepost/context/index.d.ts.map +1 -0
  118. package/dist/theculturepost/hooks/index.d.ts +10 -0
  119. package/dist/theculturepost/hooks/index.d.ts.map +1 -0
  120. package/dist/theculturepost/hooks/index.js +2 -0
  121. package/dist/theculturepost/hooks/useCursorPager.d.ts +32 -0
  122. package/dist/theculturepost/hooks/useCursorPager.d.ts.map +1 -0
  123. package/dist/theculturepost/hooks/useFiles.d.ts +31 -0
  124. package/dist/theculturepost/hooks/useFiles.d.ts.map +1 -0
  125. package/dist/theculturepost/hooks/usePageAnalytics.d.ts +9 -0
  126. package/dist/theculturepost/hooks/usePageAnalytics.d.ts.map +1 -0
  127. package/dist/theculturepost/hooks/usePageAnalytics.js +34 -0
  128. package/dist/theculturepost/hooks/usePageAnalytics.js.map +1 -0
  129. package/dist/theculturepost/hooks/useTcpApi.d.ts +74 -0
  130. package/dist/theculturepost/hooks/useTcpApi.d.ts.map +1 -0
  131. package/dist/theculturepost/hooks/useTr.d.ts +8 -0
  132. package/dist/theculturepost/hooks/useTr.d.ts.map +1 -0
  133. package/dist/theculturepost/hooks/useTr.js +14 -0
  134. package/dist/theculturepost/hooks/useTr.js.map +1 -0
  135. package/dist/theculturepost/index.d.ts +9 -0
  136. package/dist/theculturepost/index.d.ts.map +1 -0
  137. package/dist/theculturepost/index.js +2 -1
  138. package/dist/theculturepost/lib/graphql-cache.d.ts +26 -0
  139. package/dist/theculturepost/lib/graphql-cache.d.ts.map +1 -0
  140. package/dist/theculturepost/lib/toast.d.ts +23 -0
  141. package/dist/theculturepost/lib/toast.d.ts.map +1 -0
  142. package/dist/theculturepost/pages/HomePage.d.ts +16 -0
  143. package/dist/theculturepost/pages/HomePage.d.ts.map +1 -0
  144. package/dist/theculturepost/pages/HomePage.js +83 -68
  145. package/dist/theculturepost/pages/HomePage.js.map +1 -1
  146. package/dist/theculturepost/pages/archive/ArchiveItemDetailPage.d.ts +12 -0
  147. package/dist/theculturepost/pages/archive/ArchiveItemDetailPage.d.ts.map +1 -0
  148. package/dist/theculturepost/pages/archive/ArchiveItemDetailPage.js +21 -21
  149. package/dist/theculturepost/pages/archive/ArchivePage.d.ts +7 -0
  150. package/dist/theculturepost/pages/archive/ArchivePage.d.ts.map +1 -0
  151. package/dist/theculturepost/pages/archive/ArchivePage.js +144 -125
  152. package/dist/theculturepost/pages/archive/ArchivePage.js.map +1 -1
  153. package/dist/theculturepost/pages/archive/CollectionDetailPage.d.ts +12 -0
  154. package/dist/theculturepost/pages/archive/CollectionDetailPage.d.ts.map +1 -0
  155. package/dist/theculturepost/pages/discussions/DiscussionDetailPage.d.ts +12 -0
  156. package/dist/theculturepost/pages/discussions/DiscussionDetailPage.d.ts.map +1 -0
  157. package/dist/theculturepost/pages/discussions/DiscussionDetailPage.js +78 -70
  158. package/dist/theculturepost/pages/discussions/DiscussionDetailPage.js.map +1 -1
  159. package/dist/theculturepost/pages/discussions/DiscussionsPage.d.ts +10 -0
  160. package/dist/theculturepost/pages/discussions/DiscussionsPage.d.ts.map +1 -0
  161. package/dist/theculturepost/pages/discussions/DiscussionsPage.js +63 -56
  162. package/dist/theculturepost/pages/discussions/DiscussionsPage.js.map +1 -1
  163. package/dist/theculturepost/pages/governance/GovernancePage.d.ts +20 -0
  164. package/dist/theculturepost/pages/governance/GovernancePage.d.ts.map +1 -0
  165. package/dist/theculturepost/pages/stories/StoriesPage.d.ts +9 -0
  166. package/dist/theculturepost/pages/stories/StoriesPage.d.ts.map +1 -0
  167. package/dist/theculturepost/pages/stories/StoriesPage.js +65 -58
  168. package/dist/theculturepost/pages/stories/StoriesPage.js.map +1 -1
  169. package/dist/theculturepost/pages/stories/StoryDetailPage.d.ts +18 -0
  170. package/dist/theculturepost/pages/stories/StoryDetailPage.d.ts.map +1 -0
  171. package/dist/theculturepost/pages/stories/StoryDetailPage.js +249 -229
  172. package/dist/theculturepost/pages/stories/StoryDetailPage.js.map +1 -1
  173. package/dist/theculturepost/pages/timeline/TimelinePage.d.ts +17 -0
  174. package/dist/theculturepost/pages/timeline/TimelinePage.d.ts.map +1 -0
  175. package/dist/theculturepost/pages/topics/TopicDetailPage.d.ts +12 -0
  176. package/dist/theculturepost/pages/topics/TopicDetailPage.d.ts.map +1 -0
  177. package/dist/theculturepost/pages/topics/TopicsPage.d.ts +12 -0
  178. package/dist/theculturepost/pages/topics/TopicsPage.d.ts.map +1 -0
  179. package/dist/theculturepost/pages/topics/TopicsPage.js +61 -52
  180. package/dist/theculturepost/pages/topics/TopicsPage.js.map +1 -1
  181. package/dist/theculturepost/styles/injectDisplayFont.d.ts +14 -0
  182. package/dist/theculturepost/styles/injectDisplayFont.d.ts.map +1 -0
  183. package/dist/theculturepost/translations/ar.d.ts +50 -0
  184. package/dist/theculturepost/translations/ar.d.ts.map +1 -0
  185. package/dist/theculturepost/translations/ar.js +54 -0
  186. package/dist/theculturepost/translations/ar.js.map +1 -0
  187. package/dist/theculturepost/translations/en.d.ts +50 -0
  188. package/dist/theculturepost/translations/en.d.ts.map +1 -0
  189. package/dist/theculturepost/translations/en.js +54 -0
  190. package/dist/theculturepost/translations/en.js.map +1 -0
  191. package/dist/theculturepost/translations/es.d.ts +50 -0
  192. package/dist/theculturepost/translations/es.d.ts.map +1 -0
  193. package/dist/theculturepost/translations/es.js +54 -0
  194. package/dist/theculturepost/translations/es.js.map +1 -0
  195. package/dist/theculturepost/translations/hi.d.ts +50 -0
  196. package/dist/theculturepost/translations/hi.d.ts.map +1 -0
  197. package/dist/theculturepost/translations/hi.js +54 -0
  198. package/dist/theculturepost/translations/hi.js.map +1 -0
  199. package/dist/theculturepost/translations/index.d.ts +7 -0
  200. package/dist/theculturepost/translations/index.d.ts.map +1 -0
  201. package/dist/theculturepost/translations/ta.d.ts +50 -0
  202. package/dist/theculturepost/translations/ta.d.ts.map +1 -0
  203. package/dist/theculturepost/translations/ta.js +54 -0
  204. package/dist/theculturepost/translations/ta.js.map +1 -0
  205. package/dist/theculturepost/translations/zh.d.ts +50 -0
  206. package/dist/theculturepost/translations/zh.d.ts.map +1 -0
  207. package/dist/theculturepost/translations/zh.js +54 -0
  208. package/dist/theculturepost/translations/zh.js.map +1 -0
  209. package/dist/theculturepost/types/index.d.ts +333 -0
  210. package/dist/theculturepost/types/index.d.ts.map +1 -0
  211. package/dist/theculturepost/utils/cn.d.ts +4 -0
  212. package/dist/theculturepost/utils/cn.d.ts.map +1 -0
  213. package/dist/theculturepost/utils/formatters.d.ts +19 -0
  214. package/dist/theculturepost/utils/formatters.d.ts.map +1 -0
  215. package/dist/theculturepost/utils/i18n.d.ts +6 -0
  216. package/dist/theculturepost/utils/i18n.d.ts.map +1 -0
  217. package/dist/theculturepost/utils/index.d.ts +11 -0
  218. package/dist/theculturepost/utils/index.d.ts.map +1 -0
  219. package/dist/theculturepost/utils/index.js +6 -0
  220. package/dist/theculturepost/utils/nativeBridge.d.ts +47 -0
  221. package/dist/theculturepost/utils/nativeBridge.d.ts.map +1 -0
  222. package/dist/theculturepost/utils/nativeBridge.js +60 -0
  223. package/dist/theculturepost/utils/nativeBridge.js.map +1 -0
  224. package/dist/theculturepost/utils/navigation.d.ts +14 -0
  225. package/dist/theculturepost/utils/navigation.d.ts.map +1 -0
  226. package/dist/theculturepost/utils/slug.d.ts +6 -0
  227. package/dist/theculturepost/utils/slug.d.ts.map +1 -0
  228. package/dist/types/assistant.d.ts +56 -0
  229. package/dist/types/assistant.d.ts.map +1 -0
  230. package/dist/utils/pageContext.d.ts +27 -0
  231. package/dist/utils/pageContext.d.ts.map +1 -0
  232. package/dist/utils/pageContext.js +47 -0
  233. package/dist/utils/pageContext.js.map +1 -0
  234. package/package.json +29 -1
@@ -0,0 +1,11 @@
1
+ import { TcpStoryStatus } from '../types';
2
+
3
+ interface LifecycleStepperProps {
4
+ status: TcpStoryStatus;
5
+ className?: string;
6
+ /** Optional click handler (index into the ordered steps). Read-only if omitted. */
7
+ onStepClick?: (index: number) => void;
8
+ }
9
+ export declare function LifecycleStepper({ status, className, onStepClick }: LifecycleStepperProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=LifecycleStepper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleStepper.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/LifecycleStepper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,qBAAqB,2CAkBzF"}
@@ -0,0 +1,12 @@
1
+ import { TcpDiscussion } from '../types';
2
+
3
+ interface OpenDiscussionDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ /** Anchor the discussion to a story (e.g. from a story detail page). */
7
+ storyId?: string;
8
+ onCreated?: (discussion: TcpDiscussion) => void;
9
+ }
10
+ export declare function OpenDiscussionDialog({ open, onOpenChange, storyId, onCreated, }: OpenDiscussionDialogProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=OpenDiscussionDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenDiscussionDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/OpenDiscussionDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,UAAU,yBAAyB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE,yBAAyB,2CA+H3B"}
@@ -0,0 +1,8 @@
1
+ import { TcpOralHistory } from '../types';
2
+
3
+ interface OralHistoryCardProps {
4
+ oralHistory: TcpOralHistory;
5
+ }
6
+ export declare function OralHistoryCard({ oralHistory }: OralHistoryCardProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=OralHistoryCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OralHistoryCard.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/OralHistoryCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,oBAAoB;IAC5B,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,EAAE,oBAAoB,2CAyEpE"}
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ type OverlayPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
4
+ interface OverlayBadgeProps {
5
+ children: ReactNode;
6
+ /** Leading icon (already sized, e.g. `<Play className="h-3 w-3" />`). */
7
+ icon?: ReactNode;
8
+ position?: OverlayPosition;
9
+ /** Emphasis: `solid` uses the accent action token; `scrim` uses a frosted canvas. */
10
+ variant?: 'scrim' | 'solid';
11
+ className?: string;
12
+ }
13
+ export declare function OverlayBadge({ children, icon, position, variant, className, }: OverlayBadgeProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=OverlayBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayBadge.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/OverlayBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,KAAK,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;AAEjF,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,yEAAyE;IACzE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,IAAI,EACJ,QAAqB,EACrB,OAAiB,EACjB,SAAS,GACV,EAAE,iBAAiB,2CAcnB"}
@@ -0,0 +1,26 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface PageHeroBackAction {
4
+ label: string;
5
+ onClick: () => void;
6
+ }
7
+ interface PageHeroProps {
8
+ title: string;
9
+ description?: string;
10
+ /** CTA slot, right-aligned on desktop, full-width stack on mobile. */
11
+ actions?: ReactNode;
12
+ /** Small uppercase kicker above the title. */
13
+ eyebrow?: string;
14
+ /** Cover file id; when it resolves, the hero shows an image banner. */
15
+ coverFileId?: string | null;
16
+ /** Show the token-only aurora backdrop when there is no cover. Default true. */
17
+ decorative?: boolean;
18
+ /** Badge / meta row rendered under the description. */
19
+ meta?: ReactNode;
20
+ /** Optional back button shown above the eyebrow. */
21
+ backAction?: PageHeroBackAction;
22
+ className?: string;
23
+ }
24
+ export declare function PageHero({ title, description, actions, eyebrow, coverFileId, decorative, meta, backAction, className, }: PageHeroProps): import("react/jsx-runtime").JSX.Element;
25
+ export {};
26
+ //# sourceMappingURL=PageHero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHero.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/PageHero.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oDAAoD;IACpD,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAiB,EACjB,IAAI,EACJ,UAAU,EACV,SAAS,GACV,EAAE,aAAa,2CA8Df"}
@@ -0,0 +1,16 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface PageLayoutProps {
4
+ title: ReactNode;
5
+ description?: string;
6
+ actions?: ReactNode;
7
+ children: ReactNode;
8
+ className?: string;
9
+ /** Render the title as a gradient hero heading (reserve for the ONE primary page). */
10
+ titleGradient?: boolean;
11
+ /** Drop a subtle living-glass aurora behind the header (primary page only). */
12
+ aurora?: boolean;
13
+ }
14
+ export declare const PageLayout: FC<PageLayoutProps>;
15
+ export {};
16
+ //# sourceMappingURL=PageLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageLayout.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/PageLayout.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,eAAe;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAkC1C,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Pagination — cursor-aware Prev/Next control for Tcp* connection lists.
3
+ * @module theculturepost/components
4
+ *
5
+ * The svc list connections return `pageInfo { cursor, hasMore }` and paginate by
6
+ * cursor. Pages track a 0-indexed `page` for display and a cursor stack for
7
+ * navigation; this control exposes Prev/Next, disabling Prev on page 0 and Next
8
+ * when the server reports no more rows.
9
+ */
10
+ interface PaginationProps {
11
+ page: number;
12
+ pageSize: number;
13
+ /** Number of rows on the current page. */
14
+ itemCount: number;
15
+ /** Server flag: are there more rows after this page? */
16
+ hasMore: boolean;
17
+ onPageChange: (page: number) => void;
18
+ className?: string;
19
+ }
20
+ export declare function Pagination({ page, pageSize, itemCount, hasMore, onPageChange, className, }: PaginationProps): import("react/jsx-runtime").JSX.Element | null;
21
+ export {};
22
+ //# sourceMappingURL=Pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/Pagination.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,GACV,EAAE,eAAe,kDAuCjB"}
@@ -0,0 +1,47 @@
1
+ import { TcpOralHistory } from '../types';
2
+
3
+ /** A file uploaded to wspace-files-svc: id (persisted) + presigned url + name. */
4
+ export interface UploadedRef {
5
+ id: string;
6
+ url: string;
7
+ name: string;
8
+ }
9
+ interface MediaDropzoneProps {
10
+ /** Destination folder in wspace-files-svc (see FILE_FOLDERS). */
11
+ folder: string;
12
+ /** HTML accept attribute (e.g. 'audio/*,video/*'). */
13
+ accept: string;
14
+ /** Muted helper line under the drop prompt. */
15
+ hint: string;
16
+ /** Large prompt shown in the empty dropzone. */
17
+ promptLabel: string;
18
+ /** Current uploaded file (controlled so the parent can reset on submit). */
19
+ value: UploadedRef | null;
20
+ /** Called after a successful upload; `file` is provided for metadata probes. */
21
+ onUploaded: (ref: UploadedRef, file: File) => void;
22
+ onClear: () => void;
23
+ /** Max upload size in MB. */
24
+ maxMb?: number;
25
+ disabled?: boolean;
26
+ }
27
+ /**
28
+ * A token-only drag-and-drop file uploader with an inline preview: images show
29
+ * a thumbnail, audio/video show the {@link AudioPlayer}, everything else shows a
30
+ * filename chip. Uploads go straight to wspace-files-svc — only the id is kept.
31
+ */
32
+ export declare function MediaDropzone({ folder, accept, hint, promptLabel, value, onUploaded, onClear, maxMb, disabled, }: MediaDropzoneProps): import("react/jsx-runtime").JSX.Element;
33
+ interface RecordOralHistoryDialogProps {
34
+ open: boolean;
35
+ onOpenChange: (open: boolean) => void;
36
+ /** Pre-select a collection. */
37
+ collectionId?: string;
38
+ onCreated?: (oralHistory: TcpOralHistory) => void;
39
+ }
40
+ export declare function RecordOralHistoryDialog({ open, onOpenChange, collectionId, onCreated, }: RecordOralHistoryDialogProps): import("react/jsx-runtime").JSX.Element;
41
+ /** A right-aligned character counter shown under a text field. */
42
+ export declare function Counter({ length, max }: {
43
+ length: number;
44
+ max: number;
45
+ }): import("react/jsx-runtime").JSX.Element;
46
+ export {};
47
+ //# sourceMappingURL=RecordOralHistoryDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordOralHistoryDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/RecordOralHistoryDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+BH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,UAAU,CAAC;AAM/D,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,kBAAkB;IAC1B,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,gFAAgF;IAChF,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,UAAU,EACV,OAAO,EACP,KAAU,EACV,QAAgB,GACjB,EAAE,kBAAkB,2CAgIpB;AA2BD,UAAU,4BAA4B;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,4BAA4B,2CA+O9B;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,2CAMvE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * ReplyThread — moderated replies for a discussion.
3
+ * @module theculturepost/components
4
+ *
5
+ * Reads `tcpListReplies(discussionId)`; writes `tcpPostReply` (with an optional
6
+ * perspective label) and `tcpModerateReply` (approve / flag / remove) —
7
+ * respectful-by-design controls rendered as INLINE moderation buttons.
8
+ *
9
+ * Identity is id-only in this subgraph (no names / avatars), so each reply shows
10
+ * "You" for the current actor or a neutral "Contributor", with a role-tinted
11
+ * initial monogram — never a fabricated name or photo. There is no reactions /
12
+ * likes field, so none is rendered.
13
+ */
14
+ interface ReplyThreadProps {
15
+ discussionId: string;
16
+ isLocked: boolean;
17
+ }
18
+ export declare function ReplyThread({ discussionId, isLocked }: ReplyThreadProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=ReplyThread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplyThread.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/ReplyThread.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA6LH,UAAU,gBAAgB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAwIvE"}
@@ -1,6 +1,6 @@
1
1
  import { useTheCulturePost as e } from "../context/TheCulturePostContext.js";
2
- import { cn as t } from "../utils/cn.js";
3
2
  import "../context/index.js";
3
+ import { cn as t } from "../utils/cn.js";
4
4
  import { ErrorView as n, LoadingView as r } from "./StateViews.js";
5
5
  import { formatEnumLabel as i, formatRelativeTime as a } from "../utils/formatters.js";
6
6
  import { StatusBadge as o } from "./StatusBadge.js";
@@ -0,0 +1,24 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface LoadingViewProps {
4
+ label?: string;
5
+ className?: string;
6
+ }
7
+ export declare const LoadingView: FC<LoadingViewProps>;
8
+ interface ErrorViewProps {
9
+ title?: string;
10
+ message?: string;
11
+ onRetry?: () => void;
12
+ className?: string;
13
+ }
14
+ export declare const ErrorView: FC<ErrorViewProps>;
15
+ interface SectionProps {
16
+ title: string;
17
+ description?: string;
18
+ action?: ReactNode;
19
+ children: ReactNode;
20
+ className?: string;
21
+ }
22
+ export declare const Section: FC<SectionProps>;
23
+ export {};
24
+ //# sourceMappingURL=StateViews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateViews.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/StateViews.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK3C,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAK5C,CAAC;AAEF,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA2BxC,CAAC;AAEF,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAWpC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface StatusBadgeProps {
4
+ status: string;
5
+ className?: string;
6
+ /** Optional leading icon (already sized, e.g. `<Sparkles className="h-3 w-3" />`). */
7
+ icon?: ReactNode;
8
+ }
9
+ export declare const StatusBadge: FC<StatusBadgeProps>;
10
+ export {};
11
+ //# sourceMappingURL=StatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AA+ED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAgB5C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { TcpStory } from '../types';
2
+
3
+ interface StoryCardProps {
4
+ story: TcpStory;
5
+ onOpen: () => void;
6
+ /** Hide the status badge (e.g. on published-only surfaces). */
7
+ hideStatus?: boolean;
8
+ }
9
+ export declare function StoryCard({ story, onOpen, hideStatus }: StoryCardProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=StoryCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoryCard.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/StoryCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,UAAU,cAAc;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAkB,EAAE,EAAE,cAAc,2CAiE9E"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface TabItem<V extends string> {
4
+ value: V;
5
+ label: string;
6
+ icon?: ReactNode;
7
+ count?: number;
8
+ }
9
+ interface TabsProps<V extends string> {
10
+ items: TabItem<V>[];
11
+ value: V;
12
+ onChange: (value: V) => void;
13
+ className?: string;
14
+ }
15
+ export declare function Tabs<V extends string>({ items, value, onChange, className }: TabsProps<V>): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/Tabs.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,MAAM;IACvC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,SAAS,CAAC,CAAC,SAAS,MAAM;IAClC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,2CAyCzF"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * TagInput — a lightweight chip-based tag editor.
3
+ * @module theculturepost/components
4
+ *
5
+ * Enter or comma commits a tag; Backspace on an empty field removes the last.
6
+ * Purely controlled — the parent owns the string[] value.
7
+ */
8
+ interface TagInputProps {
9
+ value: string[];
10
+ onChange: (tags: string[]) => void;
11
+ placeholder?: string;
12
+ max?: number;
13
+ className?: string;
14
+ id?: string;
15
+ /** Preserve original casing (e.g. language codes) instead of lowercasing. */
16
+ preserveCase?: boolean;
17
+ }
18
+ export declare function TagInput({ value, onChange, placeholder, max, className, id, preserveCase, }: TagInputProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=TagInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagInput.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/TagInput.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,WAA0B,EAC1B,GAAQ,EACR,SAAS,EACT,EAAE,EACF,YAAoB,GACrB,EAAE,aAAa,2CA6Df"}
@@ -0,0 +1,9 @@
1
+ import { TcpTopic } from '../types';
2
+
3
+ interface TopicCardProps {
4
+ topic: TcpTopic;
5
+ onOpen: () => void;
6
+ }
7
+ export declare function TopicCard({ topic, onOpen }: TopicCardProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=TopicCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopicCard.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/TopicCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,UAAU,cAAc;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,cAAc,2CAwD1D"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Waveform — a decorative, deterministic audio waveform rendered as tokenized SVG.
3
+ * @module theculturepost/components
4
+ *
5
+ * fe-libs ships no audio-visualisation primitive, so this is a self-contained,
6
+ * theme-token-only bar waveform used to give oral-history recordings a warm,
7
+ * "listenable" feel. The bar heights are derived deterministically from a seed
8
+ * string (the recording id/title) so a given recording always renders the same
9
+ * shape — no randomness (which would also break SSR/hydration), no real audio
10
+ * decode. A `progress` (0–1) fills bars up to the playhead in the accent colour.
11
+ */
12
+ interface WaveformProps {
13
+ /** Stable seed so the same recording always draws the same shape. */
14
+ seed: string;
15
+ /** Number of bars to draw. */
16
+ bars?: number;
17
+ /** 0–1 playback progress; bars before it render "played". */
18
+ progress?: number;
19
+ className?: string;
20
+ }
21
+ export declare function Waveform({ seed, bars, progress, className }: WaveformProps): import("react/jsx-runtime").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=Waveform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Waveform.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/Waveform.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,UAAU,aAAa;IACrB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuBD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAS,EAAE,QAAY,EAAE,SAAS,EAAE,EAAE,aAAa,2CAsBnF"}
@@ -0,0 +1,14 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ import { TcpTopicCategory } from '../types';
3
+
4
+ /** Semantic badge/accent variant names (map to tokens in StatusBadge). */
5
+ export type CategoryAccent = 'info' | 'success' | 'warning' | 'secondary';
6
+ export declare const CATEGORY_ICON: Record<TcpTopicCategory, LucideIcon>;
7
+ /**
8
+ * Per-category semantic accent. Distinct across the palette so categories read
9
+ * apart, but every value is a semantic-token variant (never a raw hue).
10
+ */
11
+ export declare const CATEGORY_ACCENT: Record<TcpTopicCategory, CategoryAccent>;
12
+ /** Resolve a category's motif icon, falling back to a neutral Compass. */
13
+ export declare function categoryIcon(category?: TcpTopicCategory | null): LucideIcon;
14
+ //# sourceMappingURL=categoryMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categoryMeta.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/categoryMeta.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAWL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAE1E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAU9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAUpE,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,UAAU,CAE3E"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Components index
3
+ * @module theculturepost/components
4
+ */
5
+ export { PageLayout } from './PageLayout';
6
+ export { PageHero, type PageHeroBackAction } from './PageHero';
7
+ export { StatusBadge } from './StatusBadge';
8
+ export { EmptyState } from './EmptyState';
9
+ export { LoadingView, ErrorView, Section } from './StateViews';
10
+ export { FilterTabs, type FilterOption } from './FilterTabs';
11
+ export { Tabs, type TabItem } from './Tabs';
12
+ export { Pagination } from './Pagination';
13
+ export { DecorativeCover } from './DecorativeCover';
14
+ export { OverlayBadge } from './OverlayBadge';
15
+ export { DecorativeDivider } from './DecorativeDivider';
16
+ export { AudioPlayer } from './AudioPlayer';
17
+ export { Waveform } from './Waveform';
18
+ export { HistoryTimeline, type TimelineEntry } from './HistoryTimeline';
19
+ export { LifecycleStepper } from './LifecycleStepper';
20
+ export { CATEGORY_ICON, CATEGORY_ACCENT, categoryIcon, type CategoryAccent } from './categoryMeta';
21
+ export { StatTile, BarChart, type BarDatum, Donut } from './viz';
22
+ export { FileImage } from './FileImage';
23
+ export { CoverImage } from './CoverImage';
24
+ export { FileUploadField } from './FileUploadField';
25
+ export { KIND_ICON, IMAGE_KINDS } from './kindIcon';
26
+ export { AuthorLabel } from './AuthorLabel';
27
+ export { TagInput } from './TagInput';
28
+ export { StoryCard } from './StoryCard';
29
+ export { TopicCard } from './TopicCard';
30
+ export { DiscussionCard } from './DiscussionCard';
31
+ export { CollectionCard } from './CollectionCard';
32
+ export { ArchiveItemCard } from './ArchiveItemCard';
33
+ export { OralHistoryCard } from './OralHistoryCard';
34
+ export { CitationList } from './CitationList';
35
+ export { ReplyThread } from './ReplyThread';
36
+ export { CreateStoryDialog } from './CreateStoryDialog';
37
+ export { CreateTopicDialog } from './CreateTopicDialog';
38
+ export { OpenDiscussionDialog } from './OpenDiscussionDialog';
39
+ export { CreateCollectionDialog } from './CreateCollectionDialog';
40
+ export { CreateArchiveItemDialog } from './CreateArchiveItemDialog';
41
+ export { RecordOralHistoryDialog } from './RecordOralHistoryDialog';
42
+ export { AddCitationDialog } from './AddCitationDialog';
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGnG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ import { TcpArchiveItemKind } from '../types';
3
+
4
+ export declare const KIND_ICON: Record<TcpArchiveItemKind, LucideIcon>;
5
+ /** Kinds whose file is expected to be a viewable image. */
6
+ export declare const IMAGE_KINDS: Set<TcpArchiveItemKind>;
7
+ //# sourceMappingURL=kindIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kindIcon.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/kindIcon.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAQ5D,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,WAAW,yBAKtB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * BarChart — a token-only labelled vertical bar chart (pure SVG/flex, no deps).
3
+ * @module theculturepost/components/viz
4
+ *
5
+ * fe-libs ships no chart kit. This renders real values (e.g. stories per status)
6
+ * as accent bars with value labels + rotated-safe x labels. Responsive: the bar
7
+ * row scrolls horizontally on narrow screens rather than overflowing the page.
8
+ */
9
+ export interface BarDatum {
10
+ label: string;
11
+ value: number;
12
+ }
13
+ interface BarChartProps {
14
+ data: BarDatum[];
15
+ /** Accessible description of what the chart shows. */
16
+ ariaLabel: string;
17
+ /** Chart plotting height in px (bar area only). */
18
+ height?: number;
19
+ className?: string;
20
+ }
21
+ export declare function BarChart({ data, ariaLabel, height, className }: BarChartProps): import("react/jsx-runtime").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=BarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/theculturepost/components/viz/BarChart.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAY,EAAE,SAAS,EAAE,EAAE,aAAa,2CAiDnF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Donut — a token-only single-value ring gauge with a centered label.
3
+ * @module theculturepost/components/viz
4
+ *
5
+ * Draws `value / total` as an accent arc over a sunken track. Center shows the
6
+ * value (or a caller-supplied `centerLabel`). Pure SVG, no deps. Use for
7
+ * completion / share-of ratios computed from real counts.
8
+ */
9
+ interface DonutProps {
10
+ value: number;
11
+ total: number;
12
+ /** Center text; defaults to a rounded percentage. */
13
+ centerLabel?: string;
14
+ /** Small line under the center label. */
15
+ caption?: string;
16
+ /** Diameter in px. */
17
+ size?: number;
18
+ /** Ring thickness in px. */
19
+ thickness?: number;
20
+ ariaLabel?: string;
21
+ className?: string;
22
+ }
23
+ export declare function Donut({ value, total, centerLabel, caption, size, thickness, ariaLabel, className, }: DonutProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=Donut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Donut.d.ts","sourceRoot":"","sources":["../../../../src/theculturepost/components/viz/Donut.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAU,EACV,SAAc,EACd,SAAS,EACT,SAAS,GACV,EAAE,UAAU,2CAoDZ"}
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ interface StatTileProps {
4
+ label: string;
5
+ value: ReactNode;
6
+ /** Leading icon (already sized, e.g. `<BookOpen className="h-5 w-5" />`). */
7
+ icon?: ReactNode;
8
+ /** Small muted supporting line under the value. */
9
+ caption?: string;
10
+ className?: string;
11
+ }
12
+ export declare function StatTile({ label, value, icon, caption, className }: StatTileProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=StatTile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatTile.d.ts","sourceRoot":"","sources":["../../../../src/theculturepost/components/viz/StatTile.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa,2CAsBjF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * viz — a tiny, token-only SVG chart kit for TheCulturePost.
3
+ * @module theculturepost/components/viz
4
+ *
5
+ * fe-libs ships no chart primitives. These render REAL counts only — no trend
6
+ * deltas, no fabricated series.
7
+ */
8
+ export { StatTile } from './StatTile';
9
+ export { BarChart, type BarDatum } from './BarChart';
10
+ export { Donut } from './Donut';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theculturepost/components/viz/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { TheCulturePostRootProps } from '../types';
3
+
4
+ interface TheCulturePostContextValue extends Omit<TheCulturePostRootProps, 'registerNavItems' | 'registerFooterItems' | 'navigate'> {
5
+ isStandalone: boolean;
6
+ /** Shell's navigate function (only available in integrated mode). */
7
+ navigate?: (path: string) => void;
8
+ /** Navigate to a path relative to basePath. */
9
+ navigateTo: (relativePath: string) => void;
10
+ /** Get the full path for a relative path. */
11
+ getPath: (relativePath: string) => string;
12
+ }
13
+ export declare function useTheCulturePost(): TheCulturePostContextValue;
14
+ export declare const TheCulturePostProvider: FC<PropsWithChildren<TheCulturePostRootProps>>;
15
+ export {};
16
+ //# sourceMappingURL=TheCulturePostContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TheCulturePostContext.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/context/TheCulturePostContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGxD,UAAU,0BAA2B,SAAQ,IAAI,CAC/C,uBAAuB,EACvB,kBAAkB,GAAG,qBAAqB,GAAG,UAAU,CACxD;IACC,YAAY,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,+CAA+C;IAC/C,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,6CAA6C;IAC7C,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAID,wBAAgB,iBAAiB,IAAI,0BAA0B,CAM9D;AAqHD,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAmBjF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Context index
3
+ * @module theculturepost/context
4
+ */
5
+ export { TheCulturePostProvider, useTheCulturePost } from './TheCulturePostContext';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/context/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hooks index
3
+ * @module theculturepost/hooks
4
+ */
5
+ export * from './useTcpApi';
6
+ export * from './useCursorPager';
7
+ export * from './useFiles';
8
+ export * from './usePageAnalytics';
9
+ export * from './useTr';
10
+ //# sourceMappingURL=index.d.ts.map