@burdenoff/microfe-theculturepost 2026.705.2 → 2026.709.1

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 (222) 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 +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +2 -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/en.d.ts +50 -0
  186. package/dist/theculturepost/translations/en.d.ts.map +1 -0
  187. package/dist/theculturepost/translations/es.d.ts +50 -0
  188. package/dist/theculturepost/translations/es.d.ts.map +1 -0
  189. package/dist/theculturepost/translations/hi.d.ts +50 -0
  190. package/dist/theculturepost/translations/hi.d.ts.map +1 -0
  191. package/dist/theculturepost/translations/index.d.ts +7 -0
  192. package/dist/theculturepost/translations/index.d.ts.map +1 -0
  193. package/dist/theculturepost/translations/ta.d.ts +50 -0
  194. package/dist/theculturepost/translations/ta.d.ts.map +1 -0
  195. package/dist/theculturepost/translations/zh.d.ts +50 -0
  196. package/dist/theculturepost/translations/zh.d.ts.map +1 -0
  197. package/dist/theculturepost/types/index.d.ts +333 -0
  198. package/dist/theculturepost/types/index.d.ts.map +1 -0
  199. package/dist/theculturepost/utils/cn.d.ts +4 -0
  200. package/dist/theculturepost/utils/cn.d.ts.map +1 -0
  201. package/dist/theculturepost/utils/formatters.d.ts +19 -0
  202. package/dist/theculturepost/utils/formatters.d.ts.map +1 -0
  203. package/dist/theculturepost/utils/i18n.d.ts +6 -0
  204. package/dist/theculturepost/utils/i18n.d.ts.map +1 -0
  205. package/dist/theculturepost/utils/index.d.ts +11 -0
  206. package/dist/theculturepost/utils/index.d.ts.map +1 -0
  207. package/dist/theculturepost/utils/index.js +6 -0
  208. package/dist/theculturepost/utils/nativeBridge.d.ts +47 -0
  209. package/dist/theculturepost/utils/nativeBridge.d.ts.map +1 -0
  210. package/dist/theculturepost/utils/nativeBridge.js +60 -0
  211. package/dist/theculturepost/utils/nativeBridge.js.map +1 -0
  212. package/dist/theculturepost/utils/navigation.d.ts +14 -0
  213. package/dist/theculturepost/utils/navigation.d.ts.map +1 -0
  214. package/dist/theculturepost/utils/slug.d.ts +6 -0
  215. package/dist/theculturepost/utils/slug.d.ts.map +1 -0
  216. package/dist/types/assistant.d.ts +56 -0
  217. package/dist/types/assistant.d.ts.map +1 -0
  218. package/dist/utils/pageContext.d.ts +27 -0
  219. package/dist/utils/pageContext.d.ts.map +1 -0
  220. package/dist/utils/pageContext.js +47 -0
  221. package/dist/utils/pageContext.js.map +1 -0
  222. package/package.json +29 -1
@@ -1,71 +1,104 @@
1
1
  import { useTheCulturePost as e } from "./context/TheCulturePostContext.js";
2
- import { HomePage as t } from "./pages/HomePage.js";
3
- import { Suspense as n, lazy as r } from "react";
4
- import { Navigate as i, Route as a, Routes as o, useLocation as s } from "react-router-dom";
5
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
- import { Spinner as u } from "@burdenoff/fe-libs/ui";
2
+ import { usePageAnalytics as t } from "./hooks/usePageAnalytics.js";
3
+ import { HomePage as n } from "./pages/HomePage.js";
4
+ import { Suspense as r, lazy as i } from "react";
5
+ import { FeatureGate as a } from "@burdenoff/fe-libs/shared/feature-flags";
6
+ import { Navigate as o, Route as s, Routes as c, useLocation as l } from "react-router-dom";
7
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
8
+ import { Spinner as f } from "@burdenoff/fe-libs/ui";
7
9
  //#region src/theculturepost/TheCulturePostRoutes.tsx
8
- var d = r(() => import("./pages/stories/StoriesPage.js").then((e) => ({ default: e.StoriesPage }))), f = r(() => import("./pages/stories/StoryDetailPage.js").then((e) => ({ default: e.StoryDetailPage }))), p = r(() => import("./pages/topics/TopicsPage.js").then((e) => ({ default: e.TopicsPage }))), m = r(() => import("./pages/topics/TopicDetailPage.js").then((e) => ({ default: e.TopicDetailPage }))), h = r(() => import("./pages/discussions/DiscussionsPage.js").then((e) => ({ default: e.DiscussionsPage }))), g = r(() => import("./pages/discussions/DiscussionDetailPage.js").then((e) => ({ default: e.DiscussionDetailPage }))), _ = r(() => import("./pages/timeline/TimelinePage.js").then((e) => ({ default: e.TimelinePage }))), v = r(() => import("./pages/governance/GovernancePage.js").then((e) => ({ default: e.GovernancePage }))), y = r(() => import("./pages/archive/ArchivePage.js").then((e) => ({ default: e.ArchivePage }))), b = r(() => import("./pages/archive/CollectionDetailPage.js").then((e) => ({ default: e.CollectionDetailPage }))), x = r(() => import("./pages/archive/ArchiveItemDetailPage.js").then((e) => ({ default: e.ArchiveItemDetailPage }))), S = () => /* @__PURE__ */ c("div", {
10
+ var p = {
11
+ home: "theculturepost.home",
12
+ overview: "theculturepost.overview",
13
+ stories: "theculturepost.stories",
14
+ topics: "theculturepost.topics",
15
+ timeline: "theculturepost.timeline",
16
+ discussions: "theculturepost.discussions",
17
+ archive: "theculturepost.archive"
18
+ };
19
+ function m() {
20
+ return /* @__PURE__ */ d("div", {
21
+ className: "flex min-h-[400px] flex-col items-center justify-center gap-3 text-text-secondary",
22
+ children: [/* @__PURE__ */ u("span", {
23
+ className: "text-lg font-semibold text-text-primary",
24
+ children: "Feature unavailable"
25
+ }), /* @__PURE__ */ u("span", {
26
+ className: "text-sm",
27
+ children: "This page is disabled in your workspace."
28
+ })]
29
+ });
30
+ }
31
+ function h(e, t) {
32
+ return /* @__PURE__ */ u(a, {
33
+ flag: t,
34
+ defaultValue: !0,
35
+ fallback: /* @__PURE__ */ u(m, {}),
36
+ children: e
37
+ });
38
+ }
39
+ var g = i(() => import("./pages/stories/StoriesPage.js").then((e) => ({ default: e.StoriesPage }))), _ = i(() => import("./pages/stories/StoryDetailPage.js").then((e) => ({ default: e.StoryDetailPage }))), v = i(() => import("./pages/topics/TopicsPage.js").then((e) => ({ default: e.TopicsPage }))), y = i(() => import("./pages/topics/TopicDetailPage.js").then((e) => ({ default: e.TopicDetailPage }))), b = i(() => import("./pages/discussions/DiscussionsPage.js").then((e) => ({ default: e.DiscussionsPage }))), x = i(() => import("./pages/discussions/DiscussionDetailPage.js").then((e) => ({ default: e.DiscussionDetailPage }))), S = i(() => import("./pages/timeline/TimelinePage.js").then((e) => ({ default: e.TimelinePage }))), C = i(() => import("./pages/governance/GovernancePage.js").then((e) => ({ default: e.GovernancePage }))), w = i(() => import("./pages/archive/ArchivePage.js").then((e) => ({ default: e.ArchivePage }))), T = i(() => import("./pages/archive/CollectionDetailPage.js").then((e) => ({ default: e.CollectionDetailPage }))), E = i(() => import("./pages/archive/ArchiveItemDetailPage.js").then((e) => ({ default: e.ArchiveItemDetailPage }))), D = () => /* @__PURE__ */ u("div", {
9
40
  className: "flex min-h-[400px] items-center justify-center",
10
- children: /* @__PURE__ */ c(u, { size: "lg" })
11
- }), C = () => {
12
- let { basePath: r, isStandalone: u } = e(), C = s(), w = r === "/" ? "" : (r ?? "").replace(/\/$/, "");
13
- return w && !u && !(C.pathname === w || C.pathname.startsWith(w + "/")) ? null : /* @__PURE__ */ c("div", {
41
+ children: /* @__PURE__ */ u(f, { size: "lg" })
42
+ }), O = () => {
43
+ let { basePath: i, isStandalone: a } = e(), f = l();
44
+ t();
45
+ let m = i === "/" ? "" : (i ?? "").replace(/\/$/, "");
46
+ return m && !a && !(f.pathname === m || f.pathname.startsWith(m + "/")) ? null : /* @__PURE__ */ u("div", {
14
47
  className: "flex min-h-full flex-col",
15
- children: /* @__PURE__ */ c(n, {
16
- fallback: /* @__PURE__ */ c(S, {}),
17
- children: /* @__PURE__ */ l(o, { children: [
18
- /* @__PURE__ */ c(a, {
48
+ children: /* @__PURE__ */ u(r, {
49
+ fallback: /* @__PURE__ */ u(D, {}),
50
+ children: /* @__PURE__ */ d(c, { children: [
51
+ /* @__PURE__ */ u(s, {
19
52
  index: !0,
20
- element: /* @__PURE__ */ c(t, {})
53
+ element: h(/* @__PURE__ */ u(n, {}), p.home)
21
54
  }),
22
- /* @__PURE__ */ c(a, {
55
+ /* @__PURE__ */ u(s, {
23
56
  path: "overview",
24
- element: /* @__PURE__ */ c(v, {})
57
+ element: h(/* @__PURE__ */ u(C, {}), p.overview)
25
58
  }),
26
- /* @__PURE__ */ c(a, {
59
+ /* @__PURE__ */ u(s, {
27
60
  path: "stories",
28
- element: /* @__PURE__ */ c(d, {})
61
+ element: h(/* @__PURE__ */ u(g, {}), p.stories)
29
62
  }),
30
- /* @__PURE__ */ c(a, {
63
+ /* @__PURE__ */ u(s, {
31
64
  path: "stories/:id",
32
- element: /* @__PURE__ */ c(f, {})
65
+ element: h(/* @__PURE__ */ u(_, {}), p.stories)
33
66
  }),
34
- /* @__PURE__ */ c(a, {
67
+ /* @__PURE__ */ u(s, {
35
68
  path: "topics",
36
- element: /* @__PURE__ */ c(p, {})
69
+ element: h(/* @__PURE__ */ u(v, {}), p.topics)
37
70
  }),
38
- /* @__PURE__ */ c(a, {
71
+ /* @__PURE__ */ u(s, {
39
72
  path: "topics/:id",
40
- element: /* @__PURE__ */ c(m, {})
73
+ element: h(/* @__PURE__ */ u(y, {}), p.topics)
41
74
  }),
42
- /* @__PURE__ */ c(a, {
75
+ /* @__PURE__ */ u(s, {
43
76
  path: "timeline",
44
- element: /* @__PURE__ */ c(_, {})
77
+ element: h(/* @__PURE__ */ u(S, {}), p.timeline)
45
78
  }),
46
- /* @__PURE__ */ c(a, {
79
+ /* @__PURE__ */ u(s, {
47
80
  path: "discussions",
48
- element: /* @__PURE__ */ c(h, {})
81
+ element: h(/* @__PURE__ */ u(b, {}), p.discussions)
49
82
  }),
50
- /* @__PURE__ */ c(a, {
83
+ /* @__PURE__ */ u(s, {
51
84
  path: "discussions/:id",
52
- element: /* @__PURE__ */ c(g, {})
85
+ element: h(/* @__PURE__ */ u(x, {}), p.discussions)
53
86
  }),
54
- /* @__PURE__ */ c(a, {
87
+ /* @__PURE__ */ u(s, {
55
88
  path: "archive",
56
- element: /* @__PURE__ */ c(y, {})
89
+ element: h(/* @__PURE__ */ u(w, {}), p.archive)
57
90
  }),
58
- /* @__PURE__ */ c(a, {
91
+ /* @__PURE__ */ u(s, {
59
92
  path: "archive/collections/:id",
60
- element: /* @__PURE__ */ c(b, {})
93
+ element: h(/* @__PURE__ */ u(T, {}), p.archive)
61
94
  }),
62
- /* @__PURE__ */ c(a, {
95
+ /* @__PURE__ */ u(s, {
63
96
  path: "archive/items/:id",
64
- element: /* @__PURE__ */ c(x, {})
97
+ element: h(/* @__PURE__ */ u(E, {}), p.archive)
65
98
  }),
66
- /* @__PURE__ */ c(a, {
99
+ /* @__PURE__ */ u(s, {
67
100
  path: "*",
68
- element: /* @__PURE__ */ c(i, {
101
+ element: /* @__PURE__ */ u(o, {
69
102
  to: "",
70
103
  replace: !0
71
104
  })
@@ -75,6 +108,6 @@ var d = r(() => import("./pages/stories/StoriesPage.js").then((e) => ({ default:
75
108
  });
76
109
  };
77
110
  //#endregion
78
- export { C as TheCulturePostRoutes };
111
+ export { O as TheCulturePostRoutes };
79
112
 
80
113
  //# sourceMappingURL=TheCulturePostRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TheCulturePostRoutes.js","names":[],"sources":["../../src/theculturepost/TheCulturePostRoutes.tsx"],"sourcesContent":["/**\n * TheCulturePost Routes\n * @module theculturepost\n *\n * Domain routes. The editorial home page is eager-loaded (primary landing); all\n * other pages are lazy-loaded. Every route maps to a real `tcp*` backend\n * capability.\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router-dom';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { useTheCulturePost } from './context/TheCulturePostContext';\n\n// Eager — primary landing\nimport { HomePage } from './pages/HomePage';\n\n// Stories\nconst StoriesPage = lazy(() =>\n import('./pages/stories/StoriesPage').then((m) => ({ default: m.StoriesPage }))\n);\nconst StoryDetailPage = lazy(() =>\n import('./pages/stories/StoryDetailPage').then((m) => ({ default: m.StoryDetailPage }))\n);\n\n// Topics\nconst TopicsPage = lazy(() =>\n import('./pages/topics/TopicsPage').then((m) => ({ default: m.TopicsPage }))\n);\nconst TopicDetailPage = lazy(() =>\n import('./pages/topics/TopicDetailPage').then((m) => ({ default: m.TopicDetailPage }))\n);\n\n// Discussions\nconst DiscussionsPage = lazy(() =>\n import('./pages/discussions/DiscussionsPage').then((m) => ({ default: m.DiscussionsPage }))\n);\nconst DiscussionDetailPage = lazy(() =>\n import('./pages/discussions/DiscussionDetailPage').then((m) => ({\n default: m.DiscussionDetailPage,\n }))\n);\n\n// Timeline\nconst TimelinePage = lazy(() =>\n import('./pages/timeline/TimelinePage').then((m) => ({ default: m.TimelinePage }))\n);\n\n// Governance / Overview\nconst GovernancePage = lazy(() =>\n import('./pages/governance/GovernancePage').then((m) => ({ default: m.GovernancePage }))\n);\n\n// Archive\nconst ArchivePage = lazy(() =>\n import('./pages/archive/ArchivePage').then((m) => ({ default: m.ArchivePage }))\n);\nconst CollectionDetailPage = lazy(() =>\n import('./pages/archive/CollectionDetailPage').then((m) => ({ default: m.CollectionDetailPage }))\n);\nconst ArchiveItemDetailPage = lazy(() =>\n import('./pages/archive/ArchiveItemDetailPage').then((m) => ({\n default: m.ArchiveItemDetailPage,\n }))\n);\n\nconst PageLoader: FC = () => (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <Spinner size=\"lg\" />\n </div>\n);\n\nexport const TheCulturePostRoutes: FC = () => {\n const { basePath, isStandalone } = useTheCulturePost();\n const location = useLocation();\n\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: only render if the current path matches basePath (integrated mode).\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex min-h-full flex-col\">\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={<HomePage />} />\n\n <Route path=\"overview\" element={<GovernancePage />} />\n\n <Route path=\"stories\" element={<StoriesPage />} />\n <Route path=\"stories/:id\" element={<StoryDetailPage />} />\n\n <Route path=\"topics\" element={<TopicsPage />} />\n <Route path=\"topics/:id\" element={<TopicDetailPage />} />\n\n <Route path=\"timeline\" element={<TimelinePage />} />\n\n <Route path=\"discussions\" element={<DiscussionsPage />} />\n <Route path=\"discussions/:id\" element={<DiscussionDetailPage />} />\n\n <Route path=\"archive\" element={<ArchivePage />} />\n <Route path=\"archive/collections/:id\" element={<CollectionDetailPage />} />\n <Route path=\"archive/items/:id\" element={<ArchiveItemDetailPage />} />\n\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TheCulturePostRoutes.js","names":[],"sources":["../../src/theculturepost/TheCulturePostRoutes.tsx"],"sourcesContent":["/**\n * TheCulturePost Routes\n * @module theculturepost\n *\n * Domain routes. The editorial home page is eager-loaded (primary landing); all\n * other pages are lazy-loaded. Every route maps to a real `tcp*` backend\n * capability.\n */\n\nimport { type FC, lazy, Suspense, type ReactElement } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router-dom';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTheCulturePost } from './context/TheCulturePostContext';\nimport { usePageAnalytics } from './hooks/usePageAnalytics';\n\nconst FEATURE = {\n home: 'theculturepost.home',\n overview: 'theculturepost.overview',\n stories: 'theculturepost.stories',\n topics: 'theculturepost.topics',\n timeline: 'theculturepost.timeline',\n discussions: 'theculturepost.discussions',\n archive: 'theculturepost.archive',\n} as const;\n\nfunction FeatureDisabledFallback(): ReactElement {\n return (\n <div className=\"flex min-h-[400px] flex-col items-center justify-center gap-3 text-text-secondary\">\n <span className=\"text-lg font-semibold text-text-primary\">Feature unavailable</span>\n <span className=\"text-sm\">This page is disabled in your workspace.</span>\n </div>\n );\n}\n\nfunction gated(element: ReactElement, flag: string): ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\n// Eager — primary landing\nimport { HomePage } from './pages/HomePage';\n\n// Stories\nconst StoriesPage = lazy(() =>\n import('./pages/stories/StoriesPage').then((m) => ({ default: m.StoriesPage }))\n);\nconst StoryDetailPage = lazy(() =>\n import('./pages/stories/StoryDetailPage').then((m) => ({ default: m.StoryDetailPage }))\n);\n\n// Topics\nconst TopicsPage = lazy(() =>\n import('./pages/topics/TopicsPage').then((m) => ({ default: m.TopicsPage }))\n);\nconst TopicDetailPage = lazy(() =>\n import('./pages/topics/TopicDetailPage').then((m) => ({ default: m.TopicDetailPage }))\n);\n\n// Discussions\nconst DiscussionsPage = lazy(() =>\n import('./pages/discussions/DiscussionsPage').then((m) => ({ default: m.DiscussionsPage }))\n);\nconst DiscussionDetailPage = lazy(() =>\n import('./pages/discussions/DiscussionDetailPage').then((m) => ({\n default: m.DiscussionDetailPage,\n }))\n);\n\n// Timeline\nconst TimelinePage = lazy(() =>\n import('./pages/timeline/TimelinePage').then((m) => ({ default: m.TimelinePage }))\n);\n\n// Governance / Overview\nconst GovernancePage = lazy(() =>\n import('./pages/governance/GovernancePage').then((m) => ({ default: m.GovernancePage }))\n);\n\n// Archive\nconst ArchivePage = lazy(() =>\n import('./pages/archive/ArchivePage').then((m) => ({ default: m.ArchivePage }))\n);\nconst CollectionDetailPage = lazy(() =>\n import('./pages/archive/CollectionDetailPage').then((m) => ({ default: m.CollectionDetailPage }))\n);\nconst ArchiveItemDetailPage = lazy(() =>\n import('./pages/archive/ArchiveItemDetailPage').then((m) => ({\n default: m.ArchiveItemDetailPage,\n }))\n);\n\nconst PageLoader: FC = () => (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <Spinner size=\"lg\" />\n </div>\n);\n\nexport const TheCulturePostRoutes: FC = () => {\n const { basePath, isStandalone } = useTheCulturePost();\n const location = useLocation();\n\n usePageAnalytics();\n\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: only render if the current path matches basePath (integrated mode).\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex min-h-full flex-col\">\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={gated(<HomePage />, FEATURE.home)} />\n\n <Route path=\"overview\" element={gated(<GovernancePage />, FEATURE.overview)} />\n\n <Route path=\"stories\" element={gated(<StoriesPage />, FEATURE.stories)} />\n <Route path=\"stories/:id\" element={gated(<StoryDetailPage />, FEATURE.stories)} />\n\n <Route path=\"topics\" element={gated(<TopicsPage />, FEATURE.topics)} />\n <Route path=\"topics/:id\" element={gated(<TopicDetailPage />, FEATURE.topics)} />\n\n <Route path=\"timeline\" element={gated(<TimelinePage />, FEATURE.timeline)} />\n\n <Route path=\"discussions\" element={gated(<DiscussionsPage />, FEATURE.discussions)} />\n <Route\n path=\"discussions/:id\"\n element={gated(<DiscussionDetailPage />, FEATURE.discussions)}\n />\n\n <Route path=\"archive\" element={gated(<ArchivePage />, FEATURE.archive)} />\n <Route\n path=\"archive/collections/:id\"\n element={gated(<CollectionDetailPage />, FEATURE.archive)}\n />\n <Route\n path=\"archive/items/:id\"\n element={gated(<ArchiveItemDetailPage />, FEATURE.archive)}\n />\n\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TcpCitation } from '../types';
2
+
3
+ interface AddCitationDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ storyId: string;
7
+ onCreated?: (citation: TcpCitation) => void;
8
+ }
9
+ export declare function AddCitationDialog({ open, onOpenChange, storyId, onCreated, }: AddCitationDialogProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=AddCitationDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddCitationDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/AddCitationDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0BH,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,UAAU,CAAC;AAmB3D,UAAU,sBAAsB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE,sBAAsB,2CAmMxB"}
@@ -0,0 +1,9 @@
1
+ import { TcpArchiveItem } from '../types';
2
+
3
+ interface ArchiveItemCardProps {
4
+ item: TcpArchiveItem;
5
+ onOpen: () => void;
6
+ }
7
+ export declare function ArchiveItemCard({ item, onOpen }: ArchiveItemCardProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=ArchiveItemCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchiveItemCard.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/ArchiveItemCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,oBAAoB;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAwDrE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * AudioPlayer — a token-only HTML5 <audio> player for oral-history recordings.
3
+ * @module theculturepost/components
4
+ *
5
+ * fe-libs ships no audio player, so this wraps a native <audio> element with a
6
+ * play/pause control, the deterministic {@link Waveform} as a clickable seek bar
7
+ * (click position → seek), and current / duration timers. Degrades gracefully
8
+ * when `src` is null (renders a muted, disabled shell). No external audio decode
9
+ * — the waveform is decorative and driven by real playback progress.
10
+ */
11
+ interface AudioPlayerProps {
12
+ /** Resolved playable URL, or null when the recording is unavailable. */
13
+ src?: string | null;
14
+ /** Stable seed so the waveform shape is stable for a given recording. */
15
+ seed: string;
16
+ /** Fallback duration (secs) shown before metadata loads. */
17
+ durationSecs?: number;
18
+ className?: string;
19
+ }
20
+ export declare function AudioPlayer({ src, seed, durationSecs, className }: AudioPlayerProps): import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=AudioPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioPlayer.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/AudioPlayer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,UAAU,gBAAgB;IACxB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,YAAgB,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAgHvF"}
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+
3
+ interface AuthorLabelProps {
4
+ actorId?: string | null;
5
+ /** Prefix, e.g. "By" or "Opened by". */
6
+ prefix?: string;
7
+ /** Label to use for a non-self, present id. */
8
+ otherLabel?: string;
9
+ /** Label to use when no id is present. */
10
+ emptyLabel?: string;
11
+ withIcon?: boolean;
12
+ className?: string;
13
+ }
14
+ export declare const AuthorLabel: FC<AuthorLabelProps>;
15
+ export {};
16
+ //# sourceMappingURL=AuthorLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorLabel.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/AuthorLabel.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmB5C,CAAC"}
@@ -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 { UserRound as n } from "lucide-react";
5
5
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
6
  //#region src/theculturepost/components/AuthorLabel.tsx
@@ -0,0 +1,27 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ import { TcpSourceType, TcpVerificationStatus } from '../types';
3
+
4
+ /** A distinct lucide motif per source type (icon, not hue — per the design rules). */
5
+ export declare const SOURCE_TYPE_ICON: Record<TcpSourceType, LucideIcon>;
6
+ /** Resolve a source-type's motif icon, falling back to a neutral document. */
7
+ export declare function sourceTypeIcon(type: TcpSourceType): LucideIcon;
8
+ type VerificationAccent = 'success' | 'warning' | 'destructive' | 'secondary';
9
+ interface VerificationMetaEntry {
10
+ icon: LucideIcon;
11
+ accent: VerificationAccent;
12
+ label: string;
13
+ /** Static, factual description of what the state means — shown in the legend. */
14
+ blurb: string;
15
+ }
16
+ /** Ordered, tone-mapped metadata for each verification state. */
17
+ export declare const VERIFICATION_META: Record<TcpVerificationStatus, VerificationMetaEntry>;
18
+ /** The order the segmented control presents states in. */
19
+ export declare const VERIFICATIONS: TcpVerificationStatus[];
20
+ interface CitationListProps {
21
+ storyId: string;
22
+ /** Narrow reading-rail rendering: smaller cards, icon-only segments, no legend. */
23
+ compact?: boolean;
24
+ }
25
+ export declare function CitationList({ storyId, compact }: CitationListProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
27
+ //# sourceMappingURL=CitationList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CitationList.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CitationList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAiBL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAUtB,OAAO,KAAK,EAAe,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAMlF,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,aAAa,EAAE,UAAU,CAS9D,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAE9D;AAED,KAAK,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAE9E,UAAU,qBAAqB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAyBlF,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,aAAa,EAAE,qBAAqB,EAKhD,CAAC;AAyOF,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,OAAe,EAAE,EAAE,iBAAiB,2CA0B3E"}
@@ -0,0 +1,9 @@
1
+ import { TcpCollection } from '../types';
2
+
3
+ interface CollectionCardProps {
4
+ collection: TcpCollection;
5
+ onOpen: () => void;
6
+ }
7
+ export declare function CollectionCard({ collection, onOpen }: CollectionCardProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=CollectionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionCard.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CollectionCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,UAAU,mBAAmB;IAC3B,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CAsCzE"}
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ interface CoverImageProps {
4
+ fileId?: string | null;
5
+ alt: string;
6
+ className?: string;
7
+ /** Icon shown centered in the placeholder when no image resolves. */
8
+ icon?: ReactNode;
9
+ rounded?: string;
10
+ }
11
+ export declare function CoverImage({ fileId, alt, className, icon, rounded, }: CoverImageProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=CoverImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoverImage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CoverImage.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,GAAG,EACH,SAAS,EACT,IAAI,EACJ,OAAsB,GACvB,EAAE,eAAe,2CAuBjB"}
@@ -0,0 +1,12 @@
1
+ import { TcpArchiveItem } from '../types';
2
+
3
+ interface CreateArchiveItemDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ /** Pre-select a collection (e.g. from a collection detail page). */
7
+ collectionId?: string;
8
+ onCreated?: (item: TcpArchiveItem) => void;
9
+ }
10
+ export declare function CreateArchiveItemDialog({ open, onOpenChange, collectionId, onCreated, }: CreateArchiveItemDialogProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=CreateArchiveItemDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateArchiveItemDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CreateArchiveItemDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyBH,OAAO,KAAK,EAAE,cAAc,EAAsC,MAAM,UAAU,CAAC;AAgCnF,UAAU,4BAA4B;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,4BAA4B,2CAuO9B"}
@@ -0,0 +1,10 @@
1
+ import { TcpCollection } from '../types';
2
+
3
+ interface CreateCollectionDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ onCreated?: (collection: TcpCollection) => void;
7
+ }
8
+ export declare function CreateCollectionDialog({ open, onOpenChange, onCreated, }: CreateCollectionDialogProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=CreateCollectionDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCollectionDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CreateCollectionDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM9C,UAAU,2BAA2B;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,YAAY,EACZ,SAAS,GACV,EAAE,2BAA2B,2CAyI7B"}
@@ -0,0 +1,12 @@
1
+ import { TcpStory } from '../types';
2
+
3
+ interface CreateStoryDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ /** Pre-select a topic (e.g. from a topic detail page). */
7
+ topicId?: string;
8
+ onCreated?: (story: TcpStory) => void;
9
+ }
10
+ export declare function CreateStoryDialog({ open, onOpenChange, topicId, onCreated, }: CreateStoryDialogProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=CreateStoryDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateStoryDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CreateStoryDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA2BH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAkLzD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE,sBAAsB,2CAwPxB"}
@@ -0,0 +1,10 @@
1
+ import { TcpTopic } from '../types';
2
+
3
+ interface CreateTopicDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ onCreated?: (topic: TcpTopic) => void;
7
+ }
8
+ export declare function CreateTopicDialog({ open, onOpenChange, onCreated }: CreateTopicDialogProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=CreateTopicDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateTopicDialog.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/CreateTopicDialog.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,UAAU,CAAC;AAc3D,UAAU,sBAAsB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,sBAAsB,2CAmJ1F"}
@@ -0,0 +1,17 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ import { TcpTopicCategory } from '../types';
3
+
4
+ interface DecorativeCoverProps {
5
+ /** Stable seed (id / slug / name) — same seed → same backdrop. */
6
+ seed: string;
7
+ /** Explicit motif icon; overrides the category icon. */
8
+ icon?: LucideIcon;
9
+ /** Category to derive the motif icon from when no explicit icon is given. */
10
+ category?: TcpTopicCategory | null;
11
+ className?: string;
12
+ /** Tailwind aspect-ratio utility (e.g. 'aspect-[16/9]'). Omit if the parent sizes it. */
13
+ aspect?: string;
14
+ }
15
+ export declare function DecorativeCover({ seed, icon, category, className, aspect }: DecorativeCoverProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=DecorativeCover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecorativeCover.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/DecorativeCover.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,UAAU,oBAAoB;IAC5B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmBD,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAmDhG"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * DecorativeDivider — a small ornamental section break for reading views.
3
+ * @module theculturepost/components
4
+ *
5
+ * A token-only SVG flourish (a centered diamond/knot between two hairlines),
6
+ * used between passages in story/essay reading surfaces for an editorial feel.
7
+ * Purely decorative — hidden from assistive tech.
8
+ */
9
+ interface DecorativeDividerProps {
10
+ className?: string;
11
+ }
12
+ export declare function DecorativeDivider({ className }: DecorativeDividerProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=DecorativeDivider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecorativeDivider.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/DecorativeDivider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,sBAAsB,2CAqBtE"}
@@ -0,0 +1,9 @@
1
+ import { TcpDiscussion } from '../types';
2
+
3
+ interface DiscussionCardProps {
4
+ discussion: TcpDiscussion;
5
+ onOpen: () => void;
6
+ }
7
+ export declare function DiscussionCard({ discussion, onOpen }: DiscussionCardProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=DiscussionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscussionCard.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/DiscussionCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,UAAU,mBAAmB;IAC3B,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CAsEzE"}
@@ -0,0 +1,18 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface EmptyStateProps {
4
+ icon?: ReactNode;
5
+ /**
6
+ * On-brand illustration name → `/illustrations/<name>.webp`. Standard names:
7
+ * empty-data, empty-search, empty-files, empty-people, empty-notifications,
8
+ * onboarding, empty-generic.
9
+ */
10
+ illustration?: string;
11
+ title: string;
12
+ description?: string;
13
+ action?: ReactNode;
14
+ className?: string;
15
+ }
16
+ export declare const EmptyState: FC<EmptyStateProps>;
17
+ export {};
18
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/EmptyState.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA8B1C,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * FileImage — render a wspace-files-svc file id as an image.
3
+ * @module theculturepost/components
4
+ *
5
+ * Resolves the id to a presigned URL via {@link useFileUrl}. Shows a skeleton
6
+ * while resolving and renders the fallback (so the caller's placeholder shows) if
7
+ * the id is absent or the URL fails to resolve.
8
+ */
9
+ interface FileImageProps {
10
+ fileId?: string | null;
11
+ alt: string;
12
+ className?: string;
13
+ /** Rendered when there is no fileId, resolution fails, or the image errors. */
14
+ fallback?: React.ReactNode;
15
+ }
16
+ export declare function FileImage({ fileId, alt, className, fallback }: FileImageProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=FileImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileImage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/FileImage.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAe,EAAE,EAAE,cAAc,2CAiBpF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * FileUploadField — upload a cover / artifact / recording / source scan to
3
+ * wspace-files-svc and hand the resulting file id back to the caller.
4
+ * @module theculturepost/components
5
+ *
6
+ * On select, uploads via {@link uploadImageToFiles} (a generic blob upload) and
7
+ * returns the file id (persisted as coverFileId / fileId / recordingFileId /
8
+ * sourceFileId). Image uploads show a thumbnail preview; other kinds show a
9
+ * filename chip. `File` blobs live in wspace-files-svc — we only store ids here.
10
+ */
11
+ interface FileUploadFieldProps {
12
+ /** Destination folder in wspace-files-svc (see FILE_FOLDERS). */
13
+ folder: string;
14
+ /** Called with the new file id after a successful upload. */
15
+ onUploaded: (fileId: string) => void;
16
+ /** Currently selected file id (for the cleared/preview state). */
17
+ fileId?: string | null;
18
+ /** HTML accept attribute (e.g. "image/*", "audio/*,video/*"). */
19
+ accept?: string;
20
+ label?: string;
21
+ hint?: string;
22
+ /** Max upload size in MB. */
23
+ maxMb?: number;
24
+ disabled?: boolean;
25
+ onCleared?: () => void;
26
+ }
27
+ export declare function FileUploadField({ folder, onUploaded, fileId, accept, label, hint, maxMb, disabled, onCleared, }: FileUploadFieldProps): import("react/jsx-runtime").JSX.Element;
28
+ export {};
29
+ //# sourceMappingURL=FileUploadField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploadField.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/FileUploadField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,UAAU,oBAAoB;IAC5B,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAkB,EAClB,KAAqB,EACrB,IAAI,EACJ,KAAU,EACV,QAAgB,EAChB,SAAS,GACV,EAAE,oBAAoB,2CAiHtB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * FilterTabs — a segmented status/enum filter control.
3
+ * @module theculturepost/components
4
+ */
5
+ export interface FilterOption<V extends string> {
6
+ value: V;
7
+ label: string;
8
+ count?: number;
9
+ }
10
+ interface FilterTabsProps<V extends string> {
11
+ options: FilterOption<V>[];
12
+ value: V;
13
+ onChange: (value: V) => void;
14
+ className?: string;
15
+ }
16
+ export declare function FilterTabs<V extends string>({ options, value, onChange, className, }: FilterTabsProps<V>): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=FilterTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterTabs.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/FilterTabs.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe,CAAC,CAAC,SAAS,MAAM;IACxC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAC3C,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,eAAe,CAAC,CAAC,CAAC,2CAyCpB"}
@@ -0,0 +1,20 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+
3
+ export interface TimelineEntry {
4
+ id: string;
5
+ /** Verbatim date/era label (e.g. "1054 CE", "c. 2000 BCE"). */
6
+ date: string;
7
+ title: string;
8
+ subtitle?: string;
9
+ /** Small kind/category chip shown on the card. */
10
+ kind?: string;
11
+ icon?: LucideIcon;
12
+ onOpen?: () => void;
13
+ }
14
+ interface HistoryTimelineProps {
15
+ entries: TimelineEntry[];
16
+ className?: string;
17
+ }
18
+ export declare function HistoryTimeline({ entries, className }: HistoryTimelineProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=HistoryTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistoryTimeline.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/components/HistoryTimeline.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsCD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CA2D3E"}