@burdenoff/microfe-theculturepost 2026.509.101

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 (102) hide show
  1. package/README.md +12 -0
  2. package/dist/dev/main.d.ts +2 -0
  3. package/dist/dev/main.d.ts.map +1 -0
  4. package/dist/generated/global-operations.d.ts +2 -0
  5. package/dist/generated/global-operations.d.ts.map +1 -0
  6. package/dist/generated/global-types.d.ts +18199 -0
  7. package/dist/generated/global-types.d.ts.map +1 -0
  8. package/dist/generated/wspace-operations.d.ts +2 -0
  9. package/dist/generated/wspace-operations.d.ts.map +1 -0
  10. package/dist/generated/wspace-types.d.ts +43046 -0
  11. package/dist/generated/wspace-types.d.ts.map +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +5 -0
  15. package/dist/theculturepost/TheCulturePostRoot.d.ts +5 -0
  16. package/dist/theculturepost/TheCulturePostRoot.d.ts.map +1 -0
  17. package/dist/theculturepost/TheCulturePostRoot.js +179 -0
  18. package/dist/theculturepost/TheCulturePostRoot.js.map +1 -0
  19. package/dist/theculturepost/TheCulturePostRoutes.d.ts +2 -0
  20. package/dist/theculturepost/TheCulturePostRoutes.d.ts.map +1 -0
  21. package/dist/theculturepost/TheCulturePostRoutes.js +87 -0
  22. package/dist/theculturepost/TheCulturePostRoutes.js.map +1 -0
  23. package/dist/theculturepost/index.d.ts +5 -0
  24. package/dist/theculturepost/index.d.ts.map +1 -0
  25. package/dist/theculturepost/index.js +3 -0
  26. package/dist/theculturepost/pages/AnalyticsPage.d.ts +2 -0
  27. package/dist/theculturepost/pages/AnalyticsPage.d.ts.map +1 -0
  28. package/dist/theculturepost/pages/AnalyticsPage.js +97 -0
  29. package/dist/theculturepost/pages/AnalyticsPage.js.map +1 -0
  30. package/dist/theculturepost/pages/CommunityPage.d.ts +2 -0
  31. package/dist/theculturepost/pages/CommunityPage.d.ts.map +1 -0
  32. package/dist/theculturepost/pages/CommunityPage.js +166 -0
  33. package/dist/theculturepost/pages/CommunityPage.js.map +1 -0
  34. package/dist/theculturepost/pages/ContributionsPage.d.ts +2 -0
  35. package/dist/theculturepost/pages/ContributionsPage.d.ts.map +1 -0
  36. package/dist/theculturepost/pages/ContributionsPage.js +129 -0
  37. package/dist/theculturepost/pages/ContributionsPage.js.map +1 -0
  38. package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.d.ts +2 -0
  39. package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.d.ts.map +1 -0
  40. package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.js +149 -0
  41. package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.js.map +1 -0
  42. package/dist/theculturepost/pages/CulturalRepositoryPage.d.ts +2 -0
  43. package/dist/theculturepost/pages/CulturalRepositoryPage.d.ts.map +1 -0
  44. package/dist/theculturepost/pages/CulturalRepositoryPage.js +214 -0
  45. package/dist/theculturepost/pages/CulturalRepositoryPage.js.map +1 -0
  46. package/dist/theculturepost/pages/DashboardPage.d.ts +2 -0
  47. package/dist/theculturepost/pages/DashboardPage.d.ts.map +1 -0
  48. package/dist/theculturepost/pages/DashboardPage.js +192 -0
  49. package/dist/theculturepost/pages/DashboardPage.js.map +1 -0
  50. package/dist/theculturepost/pages/DiscoveryPage.d.ts +2 -0
  51. package/dist/theculturepost/pages/DiscoveryPage.d.ts.map +1 -0
  52. package/dist/theculturepost/pages/DiscoveryPage.js +93 -0
  53. package/dist/theculturepost/pages/DiscoveryPage.js.map +1 -0
  54. package/dist/theculturepost/pages/DiscussionsPage.d.ts +2 -0
  55. package/dist/theculturepost/pages/DiscussionsPage.d.ts.map +1 -0
  56. package/dist/theculturepost/pages/DiscussionsPage.js +113 -0
  57. package/dist/theculturepost/pages/DiscussionsPage.js.map +1 -0
  58. package/dist/theculturepost/pages/EventsPage.d.ts +2 -0
  59. package/dist/theculturepost/pages/EventsPage.d.ts.map +1 -0
  60. package/dist/theculturepost/pages/EventsPage.js +90 -0
  61. package/dist/theculturepost/pages/EventsPage.js.map +1 -0
  62. package/dist/theculturepost/pages/HeritagePage.d.ts +2 -0
  63. package/dist/theculturepost/pages/HeritagePage.d.ts.map +1 -0
  64. package/dist/theculturepost/pages/HeritagePage.js +167 -0
  65. package/dist/theculturepost/pages/HeritagePage.js.map +1 -0
  66. package/dist/theculturepost/pages/LearningPage.d.ts +2 -0
  67. package/dist/theculturepost/pages/LearningPage.d.ts.map +1 -0
  68. package/dist/theculturepost/pages/LearningPage.js +191 -0
  69. package/dist/theculturepost/pages/LearningPage.js.map +1 -0
  70. package/dist/theculturepost/pages/MapPage.d.ts +2 -0
  71. package/dist/theculturepost/pages/MapPage.d.ts.map +1 -0
  72. package/dist/theculturepost/pages/MapPage.js +99 -0
  73. package/dist/theculturepost/pages/MapPage.js.map +1 -0
  74. package/dist/theculturepost/pages/MarketplacePage.d.ts +2 -0
  75. package/dist/theculturepost/pages/MarketplacePage.d.ts.map +1 -0
  76. package/dist/theculturepost/pages/MarketplacePage.js +102 -0
  77. package/dist/theculturepost/pages/MarketplacePage.js.map +1 -0
  78. package/dist/theculturepost/pages/ResourcesPage.d.ts +2 -0
  79. package/dist/theculturepost/pages/ResourcesPage.d.ts.map +1 -0
  80. package/dist/theculturepost/pages/ResourcesPage.js +90 -0
  81. package/dist/theculturepost/pages/ResourcesPage.js.map +1 -0
  82. package/dist/theculturepost/providers/TheCulturePostProvider.d.ts +6 -0
  83. package/dist/theculturepost/providers/TheCulturePostProvider.d.ts.map +1 -0
  84. package/dist/theculturepost/providers/TheCulturePostProvider.js +27 -0
  85. package/dist/theculturepost/providers/TheCulturePostProvider.js.map +1 -0
  86. package/dist/theculturepost/store/theculturepostStore.d.ts +159 -0
  87. package/dist/theculturepost/store/theculturepostStore.d.ts.map +1 -0
  88. package/dist/theculturepost/store/theculturepostStore.js +607 -0
  89. package/dist/theculturepost/store/theculturepostStore.js.map +1 -0
  90. package/dist/theculturepost/types/index.d.ts +51 -0
  91. package/dist/theculturepost/types/index.d.ts.map +1 -0
  92. package/dist/theculturepost/utils/cn.d.ts +4 -0
  93. package/dist/theculturepost/utils/cn.d.ts.map +1 -0
  94. package/dist/theculturepost/utils/i18n.d.ts +6 -0
  95. package/dist/theculturepost/utils/i18n.d.ts.map +1 -0
  96. package/dist/theculturepost/utils/i18n.js +15 -0
  97. package/dist/theculturepost/utils/i18n.js.map +1 -0
  98. package/dist/theculturepost/utils/navigation.d.ts +2 -0
  99. package/dist/theculturepost/utils/navigation.d.ts.map +1 -0
  100. package/dist/theculturepost/utils/navigation.js +8 -0
  101. package/dist/theculturepost/utils/navigation.js.map +1 -0
  102. package/package.json +107 -0
@@ -0,0 +1,214 @@
1
+ import { tWithFallback as e } from "../utils/i18n.js";
2
+ import { useState as t } from "react";
3
+ import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { Globe as r, Grid as i, List as a, Search as o, SlidersHorizontal as s } from "lucide-react";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ import { Badge as u, Button as d, Card as f, CardContent as p, CardHeader as m, CardTitle as h, Input as g } from "@burdenoff/fe-libs/ui";
7
+ //#region src/theculturepost/pages/CulturalRepositoryPage.tsx
8
+ var _ = [
9
+ {
10
+ id: "cr-1",
11
+ title: "Navajo Sand Painting Traditions",
12
+ category: "Traditional Arts",
13
+ culturalContext: "Navajo Nation",
14
+ isAccessible: !0,
15
+ tags: [
16
+ "sand-painting",
17
+ "navajo",
18
+ "sacred-art"
19
+ ]
20
+ },
21
+ {
22
+ id: "cr-2",
23
+ title: "Japanese Kintsugi Pottery Repair",
24
+ category: "Craftsmanship",
25
+ culturalContext: "Japanese",
26
+ isAccessible: !0,
27
+ tags: [
28
+ "kintsugi",
29
+ "pottery",
30
+ "wabi-sabi"
31
+ ]
32
+ },
33
+ {
34
+ id: "cr-3",
35
+ title: "Maori Haka Performance Art",
36
+ category: "Dance & Performance",
37
+ culturalContext: "Maori / New Zealand",
38
+ isAccessible: !0,
39
+ tags: [
40
+ "haka",
41
+ "maori",
42
+ "performance"
43
+ ]
44
+ },
45
+ {
46
+ id: "cr-4",
47
+ title: "Sacred Celtic Druid Ceremonies",
48
+ category: "Rituals & Ceremonies",
49
+ culturalContext: "Celtic",
50
+ isAccessible: !1,
51
+ tags: [
52
+ "druid",
53
+ "celtic",
54
+ "ceremony"
55
+ ]
56
+ },
57
+ {
58
+ id: "cr-5",
59
+ title: "Ethiopian Coffee Ceremony",
60
+ category: "Rituals & Ceremonies",
61
+ culturalContext: "Ethiopian",
62
+ isAccessible: !0,
63
+ tags: [
64
+ "coffee",
65
+ "ethiopia",
66
+ "ceremony"
67
+ ]
68
+ },
69
+ {
70
+ id: "cr-6",
71
+ title: "Aboriginal Dreamtime Stories",
72
+ category: "Oral Traditions",
73
+ culturalContext: "Indigenous Australian",
74
+ isAccessible: !1,
75
+ tags: [
76
+ "dreamtime",
77
+ "aboriginal",
78
+ "oral-history"
79
+ ]
80
+ }
81
+ ], v = [
82
+ "All",
83
+ "Traditional Arts",
84
+ "Craftsmanship",
85
+ "Dance & Performance",
86
+ "Rituals & Ceremonies",
87
+ "Oral Traditions"
88
+ ];
89
+ function y() {
90
+ let { t: y } = n(), b = (t, n, r) => e(y, t, n, r), [x, S] = t("grid"), [C, w] = t(""), [T, E] = t("All"), D = (e) => b(`theculturepost.repository.categories.${e.toLowerCase().replace(/&/g, "and").replace(/\//g, " ").replace(/[^a-z0-9]+/g, " ").trim().split(/\s+/).join("")}`, e), O = _.filter((e) => T === "All" || e.category === T).filter((e) => !C || e.title.toLowerCase().includes(C.toLowerCase()) || e.tags.some((e) => e.includes(C.toLowerCase())));
91
+ return /* @__PURE__ */ l("div", {
92
+ className: "space-y-6 p-6",
93
+ children: [
94
+ /* @__PURE__ */ l("div", {
95
+ className: "flex items-start justify-between",
96
+ children: [/* @__PURE__ */ l("div", { children: [
97
+ /* @__PURE__ */ l("h1", {
98
+ className: "text-2xl font-semibold flex items-center gap-2",
99
+ children: [
100
+ /* @__PURE__ */ c(r, { className: "h-6 w-6 text-amber-600" }),
101
+ " ",
102
+ b("theculturepost.repository.title", "Cultural Repository")
103
+ ]
104
+ }),
105
+ /* @__PURE__ */ c("p", {
106
+ className: "text-sm text-muted-foreground mt-1",
107
+ children: b("theculturepost.repository.subtitle", "Explore authentic cultural heritage with respect and understanding")
108
+ }),
109
+ /* @__PURE__ */ c("p", {
110
+ className: "text-xs text-muted-foreground mt-1",
111
+ children: b("theculturepost.repository.itemsFound", "{{count}} items found", { count: O.length })
112
+ })
113
+ ] }), /* @__PURE__ */ l("div", {
114
+ className: "flex items-center gap-2",
115
+ children: [/* @__PURE__ */ l(d, {
116
+ variant: x === "grid" ? "default" : "outline",
117
+ size: "sm",
118
+ onClick: () => S("grid"),
119
+ children: [
120
+ /* @__PURE__ */ c(i, { className: "w-4 h-4 mr-1" }),
121
+ " ",
122
+ b("theculturepost.repository.view.grid", "Grid")
123
+ ]
124
+ }), /* @__PURE__ */ l(d, {
125
+ variant: x === "list" ? "default" : "outline",
126
+ size: "sm",
127
+ onClick: () => S("list"),
128
+ children: [
129
+ /* @__PURE__ */ c(a, { className: "w-4 h-4 mr-1" }),
130
+ " ",
131
+ b("theculturepost.repository.view.list", "List")
132
+ ]
133
+ })]
134
+ })]
135
+ }),
136
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c(p, {
137
+ className: "pt-6",
138
+ children: /* @__PURE__ */ l("div", {
139
+ className: "flex gap-4",
140
+ children: [/* @__PURE__ */ l("div", {
141
+ className: "flex-1 relative",
142
+ children: [/* @__PURE__ */ c(o, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ c(g, {
143
+ placeholder: b("theculturepost.repository.search.placeholder", "Search traditional arts, ceremonies, wisdom, practices..."),
144
+ className: "pl-10",
145
+ value: C,
146
+ onChange: (e) => w(e.target.value)
147
+ })]
148
+ }), /* @__PURE__ */ l(d, {
149
+ variant: "outline",
150
+ size: "sm",
151
+ children: [
152
+ /* @__PURE__ */ c(s, { className: "h-4 w-4 mr-2" }),
153
+ " ",
154
+ b("theculturepost.repository.actions.filters", "Filters")
155
+ ]
156
+ })]
157
+ })
158
+ }) }),
159
+ /* @__PURE__ */ c("div", {
160
+ className: "flex flex-wrap gap-2",
161
+ children: v.map((e) => /* @__PURE__ */ c(u, {
162
+ variant: T === e ? "default" : "outline",
163
+ className: "cursor-pointer",
164
+ onClick: () => E(e),
165
+ children: D(e)
166
+ }, e))
167
+ }),
168
+ /* @__PURE__ */ c("div", {
169
+ className: x === "grid" ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" : "space-y-4",
170
+ children: O.map((e) => /* @__PURE__ */ l(f, {
171
+ className: "hover:shadow-md transition-shadow cursor-pointer",
172
+ children: [/* @__PURE__ */ l(m, {
173
+ className: "pb-3",
174
+ children: [/* @__PURE__ */ l("div", {
175
+ className: "flex items-start justify-between",
176
+ children: [/* @__PURE__ */ c(h, {
177
+ className: "text-lg",
178
+ children: e.title
179
+ }), !e.isAccessible && /* @__PURE__ */ c(u, {
180
+ variant: "destructive",
181
+ className: "text-xs",
182
+ children: b("theculturepost.repository.access.restricted", "Restricted")
183
+ })]
184
+ }), /* @__PURE__ */ l("p", {
185
+ className: "text-sm text-muted-foreground flex items-center gap-1",
186
+ children: [
187
+ /* @__PURE__ */ c(r, { className: "h-3 w-3" }),
188
+ " ",
189
+ e.culturalContext
190
+ ]
191
+ })]
192
+ }), /* @__PURE__ */ c(p, { children: /* @__PURE__ */ l("div", {
193
+ className: "flex items-center justify-between",
194
+ children: [/* @__PURE__ */ c("div", {
195
+ className: "flex gap-2 flex-wrap",
196
+ children: e.tags.map((e) => /* @__PURE__ */ c(u, {
197
+ variant: "secondary",
198
+ className: "text-xs",
199
+ children: e
200
+ }, e))
201
+ }), /* @__PURE__ */ c(u, {
202
+ variant: "outline",
203
+ children: D(e.category)
204
+ })]
205
+ }) })]
206
+ }, e.id))
207
+ })
208
+ ]
209
+ });
210
+ }
211
+ //#endregion
212
+ export { y as CulturalRepositoryPage };
213
+
214
+ //# sourceMappingURL=CulturalRepositoryPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CulturalRepositoryPage.js","names":[],"sources":["../../../src/theculturepost/pages/CulturalRepositoryPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Badge,\n Input,\n Button,\n} from '@burdenoff/fe-libs/ui';\nimport { Search, Grid, List, Globe, SlidersHorizontal } from 'lucide-react';\nimport { tWithFallback } from '../utils/i18n';\n\nconst mockRepositoryItems = [\n {\n id: 'cr-1',\n title: 'Navajo Sand Painting Traditions',\n category: 'Traditional Arts',\n culturalContext: 'Navajo Nation',\n isAccessible: true,\n tags: ['sand-painting', 'navajo', 'sacred-art'],\n },\n {\n id: 'cr-2',\n title: 'Japanese Kintsugi Pottery Repair',\n category: 'Craftsmanship',\n culturalContext: 'Japanese',\n isAccessible: true,\n tags: ['kintsugi', 'pottery', 'wabi-sabi'],\n },\n {\n id: 'cr-3',\n title: 'Maori Haka Performance Art',\n category: 'Dance & Performance',\n culturalContext: 'Maori / New Zealand',\n isAccessible: true,\n tags: ['haka', 'maori', 'performance'],\n },\n {\n id: 'cr-4',\n title: 'Sacred Celtic Druid Ceremonies',\n category: 'Rituals & Ceremonies',\n culturalContext: 'Celtic',\n isAccessible: false,\n tags: ['druid', 'celtic', 'ceremony'],\n },\n {\n id: 'cr-5',\n title: 'Ethiopian Coffee Ceremony',\n category: 'Rituals & Ceremonies',\n culturalContext: 'Ethiopian',\n isAccessible: true,\n tags: ['coffee', 'ethiopia', 'ceremony'],\n },\n {\n id: 'cr-6',\n title: 'Aboriginal Dreamtime Stories',\n category: 'Oral Traditions',\n culturalContext: 'Indigenous Australian',\n isAccessible: false,\n tags: ['dreamtime', 'aboriginal', 'oral-history'],\n },\n];\n\nconst quickCategories = [\n 'All',\n 'Traditional Arts',\n 'Craftsmanship',\n 'Dance & Performance',\n 'Rituals & Ceremonies',\n 'Oral Traditions',\n];\n\nexport function CulturalRepositoryPage() {\n const { t } = useI18n();\n const tr = (key: string, fallback: string, params?: Record<string, string | number>): string =>\n tWithFallback(t, key, fallback, params);\n const [viewMode, setViewMode] = useState<'grid' | 'list'>('grid');\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedCategory, setSelectedCategory] = useState('All');\n\n const categoryLabel = (category: string): string => {\n const categoryKey = category\n .toLowerCase()\n .replace(/&/g, 'and')\n .replace(/\\//g, ' ')\n .replace(/[^a-z0-9]+/g, ' ')\n .trim()\n .split(/\\s+/)\n .join('');\n\n return tr(`theculturepost.repository.categories.${categoryKey}`, category);\n };\n\n const filtered = mockRepositoryItems\n .filter((item) => selectedCategory === 'All' || item.category === selectedCategory)\n .filter(\n (item) =>\n !searchQuery ||\n item.title.toLowerCase().includes(searchQuery.toLowerCase()) ||\n item.tags.some((t) => t.includes(searchQuery.toLowerCase()))\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-start justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold flex items-center gap-2\">\n <Globe className=\"h-6 w-6 text-amber-600\" />{' '}\n {tr('theculturepost.repository.title', 'Cultural Repository')}\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {tr(\n 'theculturepost.repository.subtitle',\n 'Explore authentic cultural heritage with respect and understanding'\n )}\n </p>\n <p className=\"text-xs text-muted-foreground mt-1\">\n {tr('theculturepost.repository.itemsFound', '{{count}} items found', {\n count: filtered.length,\n })}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant={viewMode === 'grid' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setViewMode('grid')}\n >\n <Grid className=\"w-4 h-4 mr-1\" /> {tr('theculturepost.repository.view.grid', 'Grid')}\n </Button>\n <Button\n variant={viewMode === 'list' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setViewMode('list')}\n >\n <List className=\"w-4 h-4 mr-1\" /> {tr('theculturepost.repository.view.list', 'List')}\n </Button>\n </div>\n </div>\n\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex gap-4\">\n <div className=\"flex-1 relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder={tr(\n 'theculturepost.repository.search.placeholder',\n 'Search traditional arts, ceremonies, wisdom, practices...'\n )}\n className=\"pl-10\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n </div>\n <Button variant=\"outline\" size=\"sm\">\n <SlidersHorizontal className=\"h-4 w-4 mr-2\" />{' '}\n {tr('theculturepost.repository.actions.filters', 'Filters')}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"flex flex-wrap gap-2\">\n {quickCategories.map((cat) => (\n <Badge\n key={cat}\n variant={selectedCategory === cat ? 'default' : 'outline'}\n className=\"cursor-pointer\"\n onClick={() => setSelectedCategory(cat)}\n >\n {categoryLabel(cat)}\n </Badge>\n ))}\n </div>\n\n <div\n className={\n viewMode === 'grid' ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4' : 'space-y-4'\n }\n >\n {filtered.map((item) => (\n <Card key={item.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <CardTitle className=\"text-lg\">{item.title}</CardTitle>\n {!item.isAccessible && (\n <Badge variant=\"destructive\" className=\"text-xs\">\n {tr('theculturepost.repository.access.restricted', 'Restricted')}\n </Badge>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <Globe className=\"h-3 w-3\" /> {item.culturalContext}\n </p>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-2 flex-wrap\">\n {item.tags.map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </div>\n <Badge variant=\"outline\">{categoryLabel(item.category)}</Badge>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function DashboardPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DashboardPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/pages/DashboardPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,4CAqN5B"}
@@ -0,0 +1,192 @@
1
+ import { useTheCulturePostStore as e } from "../store/theculturepostStore.js";
2
+ import { tWithFallback as t } from "../utils/i18n.js";
3
+ import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { Activity as r, Award as i, BookOpen as a, Calendar as o, TrendingUp as s, Users as c } from "lucide-react";
5
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
6
+ import { Card as d, CardContent as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
7
+ //#region src/theculturepost/pages/DashboardPage.tsx
8
+ function h() {
9
+ let { t: h } = n(), g = (e, n, r) => t(h, e, n, r), { heritageSites: _, communities: v, culturalEvents: y, contributions: b } = e(), x = [
10
+ {
11
+ id: "heritageSites",
12
+ title: "Heritage Sites",
13
+ value: String(_.length),
14
+ change: "+3 this month",
15
+ icon: a,
16
+ color: "text-amber-600"
17
+ },
18
+ {
19
+ id: "communities",
20
+ title: "Communities",
21
+ value: String(v.length),
22
+ change: "+2 new",
23
+ icon: c,
24
+ color: "text-blue-600"
25
+ },
26
+ {
27
+ id: "upcomingEvents",
28
+ title: "Upcoming Events",
29
+ value: String(y.length),
30
+ change: "+4 scheduled",
31
+ icon: o,
32
+ color: "text-purple-600"
33
+ },
34
+ {
35
+ id: "contributions",
36
+ title: "Contributions",
37
+ value: String(b.length),
38
+ change: "+5 this week",
39
+ icon: i,
40
+ color: "text-emerald-600"
41
+ }
42
+ ];
43
+ return /* @__PURE__ */ u("div", {
44
+ className: "space-y-6 p-6",
45
+ children: [
46
+ /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h1", {
47
+ className: "text-2xl font-semibold",
48
+ children: g("theculturepost.dashboard.title", "Cultural Dashboard")
49
+ }), /* @__PURE__ */ l("p", {
50
+ className: "text-sm text-muted-foreground mt-1",
51
+ children: g("theculturepost.dashboard.subtitle", "Your cultural heritage journey at a glance")
52
+ })] }),
53
+ /* @__PURE__ */ l("div", {
54
+ className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
55
+ children: x.map((e) => /* @__PURE__ */ u(d, { children: [/* @__PURE__ */ u(p, {
56
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
57
+ children: [/* @__PURE__ */ l(m, {
58
+ className: "text-sm font-medium",
59
+ children: g(`theculturepost.dashboard.stats.${e.id}.title`, e.title)
60
+ }), /* @__PURE__ */ l(e.icon, { className: `h-4 w-4 ${e.color}` })]
61
+ }), /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l("div", {
62
+ className: "text-2xl font-bold",
63
+ children: e.value
64
+ }), /* @__PURE__ */ u("p", {
65
+ className: "text-xs text-muted-foreground flex items-center gap-1 mt-1",
66
+ children: [/* @__PURE__ */ l(s, { className: "h-3 w-3" }), g(`theculturepost.dashboard.stats.${e.id}.change`, e.change)]
67
+ })] })] }, e.id))
68
+ }),
69
+ /* @__PURE__ */ u("div", {
70
+ className: "grid gap-4 md:grid-cols-7",
71
+ children: [/* @__PURE__ */ u(d, {
72
+ className: "col-span-4",
73
+ children: [/* @__PURE__ */ l(p, { children: /* @__PURE__ */ l(m, { children: g("theculturepost.dashboard.sections.recentActivity", "Recent Activity") }) }), /* @__PURE__ */ l(f, {
74
+ className: "space-y-4",
75
+ children: [
76
+ {
77
+ id: 1,
78
+ key: "joinedCommunity",
79
+ action: "Joined Cherokee Heritage Keepers community",
80
+ time: "2 hours ago",
81
+ type: "community"
82
+ },
83
+ {
84
+ id: 2,
85
+ key: "completedLearning",
86
+ action: "Completed Introduction to Indigenous Art Forms",
87
+ time: "5 hours ago",
88
+ type: "learning"
89
+ },
90
+ {
91
+ id: 3,
92
+ key: "addedSitePhotos",
93
+ action: "Added Heritage Site Photos - Canyon de Chelly",
94
+ time: "1 day ago",
95
+ type: "contribution"
96
+ },
97
+ {
98
+ id: 4,
99
+ key: "registeredEvent",
100
+ action: "Registered for Winter Solstice Ceremony",
101
+ time: "2 days ago",
102
+ type: "event"
103
+ },
104
+ {
105
+ id: 5,
106
+ key: "bookmarkedNavigation",
107
+ action: "Bookmarked Polynesian Wayfinding Navigation",
108
+ time: "3 days ago",
109
+ type: "discovery"
110
+ }
111
+ ].map((e) => /* @__PURE__ */ u("div", {
112
+ className: "flex items-center gap-4 p-3 rounded-lg bg-muted/50 hover:bg-muted transition-colors",
113
+ children: [
114
+ /* @__PURE__ */ l("div", { className: "w-2 h-2 rounded-full bg-primary" }),
115
+ /* @__PURE__ */ u("div", {
116
+ className: "flex-1",
117
+ children: [/* @__PURE__ */ l("p", {
118
+ className: "text-sm font-medium",
119
+ children: g(`theculturepost.dashboard.activity.${e.key}.action`, e.action)
120
+ }), /* @__PURE__ */ l("p", {
121
+ className: "text-xs text-muted-foreground",
122
+ children: g(`theculturepost.dashboard.activity.${e.key}.time`, e.time)
123
+ })]
124
+ }),
125
+ /* @__PURE__ */ l(r, { className: "h-4 w-4 text-muted-foreground" })
126
+ ]
127
+ }, e.id))
128
+ })]
129
+ }), /* @__PURE__ */ u(d, {
130
+ className: "col-span-3",
131
+ children: [/* @__PURE__ */ l(p, { children: /* @__PURE__ */ l(m, { children: g("theculturepost.dashboard.sections.quickActions", "Quick Actions") }) }), /* @__PURE__ */ u(f, {
132
+ className: "space-y-3",
133
+ children: [
134
+ /* @__PURE__ */ l("button", {
135
+ className: "w-full p-4 text-left rounded-lg border hover:bg-muted transition-colors",
136
+ children: /* @__PURE__ */ u("div", {
137
+ className: "flex items-center gap-3",
138
+ children: [/* @__PURE__ */ l("div", {
139
+ className: "w-10 h-10 rounded-lg bg-amber-100 flex items-center justify-center",
140
+ children: /* @__PURE__ */ l(a, { className: "h-5 w-5 text-amber-600" })
141
+ }), /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
142
+ className: "font-medium text-sm",
143
+ children: g("theculturepost.dashboard.quickActions.browseHeritageSites.title", "Browse Heritage Sites")
144
+ }), /* @__PURE__ */ l("p", {
145
+ className: "text-xs text-muted-foreground",
146
+ children: g("theculturepost.dashboard.quickActions.browseHeritageSites.description", "Explore cultural landmarks")
147
+ })] })]
148
+ })
149
+ }),
150
+ /* @__PURE__ */ l("button", {
151
+ className: "w-full p-4 text-left rounded-lg border hover:bg-muted transition-colors",
152
+ children: /* @__PURE__ */ u("div", {
153
+ className: "flex items-center gap-3",
154
+ children: [/* @__PURE__ */ l("div", {
155
+ className: "w-10 h-10 rounded-lg bg-blue-100 flex items-center justify-center",
156
+ children: /* @__PURE__ */ l(c, { className: "h-5 w-5 text-blue-600" })
157
+ }), /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
158
+ className: "font-medium text-sm",
159
+ children: g("theculturepost.dashboard.quickActions.joinCommunities.title", "Join Communities")
160
+ }), /* @__PURE__ */ l("p", {
161
+ className: "text-xs text-muted-foreground",
162
+ children: g("theculturepost.dashboard.quickActions.joinCommunities.description", "Connect with cultural groups")
163
+ })] })]
164
+ })
165
+ }),
166
+ /* @__PURE__ */ l("button", {
167
+ className: "w-full p-4 text-left rounded-lg border hover:bg-muted transition-colors",
168
+ children: /* @__PURE__ */ u("div", {
169
+ className: "flex items-center gap-3",
170
+ children: [/* @__PURE__ */ l("div", {
171
+ className: "w-10 h-10 rounded-lg bg-purple-100 flex items-center justify-center",
172
+ children: /* @__PURE__ */ l(o, { className: "h-5 w-5 text-purple-600" })
173
+ }), /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
174
+ className: "font-medium text-sm",
175
+ children: g("theculturepost.dashboard.quickActions.upcomingEvents.title", "Upcoming Events")
176
+ }), /* @__PURE__ */ l("p", {
177
+ className: "text-xs text-muted-foreground",
178
+ children: g("theculturepost.dashboard.quickActions.upcomingEvents.description", "View and register")
179
+ })] })]
180
+ })
181
+ })
182
+ ]
183
+ })]
184
+ })]
185
+ })
186
+ ]
187
+ });
188
+ }
189
+ //#endregion
190
+ export { h as DashboardPage };
191
+
192
+ //# sourceMappingURL=DashboardPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/theculturepost/pages/DashboardPage.tsx"],"sourcesContent":["import { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { TrendingUp, Users, BookOpen, Calendar, Activity, Award } from 'lucide-react';\nimport { useTheCulturePostStore } from '../store/theculturepostStore';\nimport { tWithFallback } from '../utils/i18n';\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const tr = (key: string, fallback: string, params?: Record<string, string | number>): string =>\n tWithFallback(t, key, fallback, params);\n const { heritageSites, communities, culturalEvents, contributions } = useTheCulturePostStore();\n\n const stats = [\n {\n id: 'heritageSites',\n title: 'Heritage Sites',\n value: String(heritageSites.length),\n change: '+3 this month',\n icon: BookOpen,\n color: 'text-amber-600',\n },\n {\n id: 'communities',\n title: 'Communities',\n value: String(communities.length),\n change: '+2 new',\n icon: Users,\n color: 'text-blue-600',\n },\n {\n id: 'upcomingEvents',\n title: 'Upcoming Events',\n value: String(culturalEvents.length),\n change: '+4 scheduled',\n icon: Calendar,\n color: 'text-purple-600',\n },\n {\n id: 'contributions',\n title: 'Contributions',\n value: String(contributions.length),\n change: '+5 this week',\n icon: Award,\n color: 'text-emerald-600',\n },\n ];\n\n const recentActivity = [\n {\n id: 1,\n key: 'joinedCommunity',\n action: 'Joined Cherokee Heritage Keepers community',\n time: '2 hours ago',\n type: 'community',\n },\n {\n id: 2,\n key: 'completedLearning',\n action: 'Completed Introduction to Indigenous Art Forms',\n time: '5 hours ago',\n type: 'learning',\n },\n {\n id: 3,\n key: 'addedSitePhotos',\n action: 'Added Heritage Site Photos - Canyon de Chelly',\n time: '1 day ago',\n type: 'contribution',\n },\n {\n id: 4,\n key: 'registeredEvent',\n action: 'Registered for Winter Solstice Ceremony',\n time: '2 days ago',\n type: 'event',\n },\n {\n id: 5,\n key: 'bookmarkedNavigation',\n action: 'Bookmarked Polynesian Wayfinding Navigation',\n time: '3 days ago',\n type: 'discovery',\n },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {tr('theculturepost.dashboard.title', 'Cultural Dashboard')}\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {tr('theculturepost.dashboard.subtitle', 'Your cultural heritage journey at a glance')}\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n {stats.map((stat) => (\n <Card key={stat.id}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">\n {tr(`theculturepost.dashboard.stats.${stat.id}.title`, stat.title)}\n </CardTitle>\n <stat.icon className={`h-4 w-4 ${stat.color}`} />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{stat.value}</div>\n <p className=\"text-xs text-muted-foreground flex items-center gap-1 mt-1\">\n <TrendingUp className=\"h-3 w-3\" />\n {tr(`theculturepost.dashboard.stats.${stat.id}.change`, stat.change)}\n </p>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-7\">\n <Card className=\"col-span-4\">\n <CardHeader>\n <CardTitle>\n {tr('theculturepost.dashboard.sections.recentActivity', 'Recent Activity')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {recentActivity.map((item) => (\n <div\n key={item.id}\n className=\"flex items-center gap-4 p-3 rounded-lg bg-muted/50 hover:bg-muted transition-colors\"\n >\n <div className=\"w-2 h-2 rounded-full bg-primary\" />\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium\">\n {tr(`theculturepost.dashboard.activity.${item.key}.action`, item.action)}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {tr(`theculturepost.dashboard.activity.${item.key}.time`, item.time)}\n </p>\n </div>\n <Activity className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card className=\"col-span-3\">\n <CardHeader>\n <CardTitle>\n {tr('theculturepost.dashboard.sections.quickActions', 'Quick Actions')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <button className=\"w-full p-4 text-left rounded-lg border hover:bg-muted transition-colors\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-lg bg-amber-100 flex items-center justify-center\">\n <BookOpen className=\"h-5 w-5 text-amber-600\" />\n </div>\n <div>\n <p className=\"font-medium text-sm\">\n {tr(\n 'theculturepost.dashboard.quickActions.browseHeritageSites.title',\n 'Browse Heritage Sites'\n )}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'theculturepost.dashboard.quickActions.browseHeritageSites.description',\n 'Explore cultural landmarks'\n )}\n </p>\n </div>\n </div>\n </button>\n <button className=\"w-full p-4 text-left rounded-lg border hover:bg-muted transition-colors\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-lg bg-blue-100 flex items-center justify-center\">\n <Users className=\"h-5 w-5 text-blue-600\" />\n </div>\n <div>\n <p className=\"font-medium text-sm\">\n {tr(\n 'theculturepost.dashboard.quickActions.joinCommunities.title',\n 'Join Communities'\n )}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'theculturepost.dashboard.quickActions.joinCommunities.description',\n 'Connect with cultural groups'\n )}\n </p>\n </div>\n </div>\n </button>\n <button className=\"w-full p-4 text-left rounded-lg border hover:bg-muted transition-colors\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-lg bg-purple-100 flex items-center justify-center\">\n <Calendar className=\"h-5 w-5 text-purple-600\" />\n </div>\n <div>\n <p className=\"font-medium text-sm\">\n {tr(\n 'theculturepost.dashboard.quickActions.upcomingEvents.title',\n 'Upcoming Events'\n )}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'theculturepost.dashboard.quickActions.upcomingEvents.description',\n 'View and register'\n )}\n </p>\n </div>\n </div>\n </button>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function DiscoveryPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DiscoveryPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryPage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/pages/DiscoveryPage.tsx"],"names":[],"mappings":"AAYA,wBAAgB,aAAa,4CA6E5B"}
@@ -0,0 +1,93 @@
1
+ import { useTheCulturePostStore as e } from "../store/theculturepostStore.js";
2
+ import { Compass as t, Globe as n, Search as r, Sparkles as i } from "lucide-react";
3
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
+ import { Badge as s, Button as c, Card as l, CardContent as u, CardHeader as d, CardTitle as f, Input as p } from "@burdenoff/fe-libs/ui";
5
+ //#region src/theculturepost/pages/DiscoveryPage.tsx
6
+ function m() {
7
+ let { discoveryItems: m, discoverySearchQuery: h, setDiscoverySearchQuery: g } = e(), _ = h ? m.filter((e) => e.title.toLowerCase().includes(h.toLowerCase()) || e.category.toLowerCase().includes(h.toLowerCase()) || e.tags.some((e) => e.toLowerCase().includes(h.toLowerCase()))) : m;
8
+ return /* @__PURE__ */ o("div", {
9
+ className: "space-y-6 p-6",
10
+ children: [
11
+ /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ o("h1", {
12
+ className: "text-2xl font-semibold flex items-center gap-2",
13
+ children: [/* @__PURE__ */ a(t, { className: "h-6 w-6 text-purple-600" }), " Cultural Discovery"]
14
+ }), /* @__PURE__ */ a("p", {
15
+ className: "text-sm text-muted-foreground mt-1",
16
+ children: "AI-powered cultural insights and personalized recommendations"
17
+ })] }),
18
+ /* @__PURE__ */ a(l, { children: /* @__PURE__ */ a(u, {
19
+ className: "pt-6",
20
+ children: /* @__PURE__ */ o("div", {
21
+ className: "flex gap-4",
22
+ children: [/* @__PURE__ */ o("div", {
23
+ className: "flex-1 relative",
24
+ children: [/* @__PURE__ */ a(r, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ a(p, {
25
+ placeholder: "Search cultures, traditions, practices...",
26
+ className: "pl-10",
27
+ value: h,
28
+ onChange: (e) => g(e.target.value)
29
+ })]
30
+ }), /* @__PURE__ */ o(c, {
31
+ variant: "outline",
32
+ size: "sm",
33
+ children: [/* @__PURE__ */ a(i, { className: "h-4 w-4 mr-2" }), " AI Suggest"]
34
+ })]
35
+ })
36
+ }) }),
37
+ /* @__PURE__ */ a("div", {
38
+ className: "grid gap-4 md:grid-cols-2",
39
+ children: _.map((e) => /* @__PURE__ */ o(l, {
40
+ className: "hover:shadow-md transition-shadow cursor-pointer",
41
+ children: [/* @__PURE__ */ a(d, {
42
+ className: "pb-3",
43
+ children: /* @__PURE__ */ o("div", {
44
+ className: "flex items-start justify-between",
45
+ children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a(f, {
46
+ className: "text-lg",
47
+ children: e.title
48
+ }), /* @__PURE__ */ o("p", {
49
+ className: "text-sm text-muted-foreground mt-1 flex items-center gap-1",
50
+ children: [
51
+ /* @__PURE__ */ a(n, { className: "h-3 w-3" }),
52
+ " ",
53
+ e.culturalContext
54
+ ]
55
+ })] }), /* @__PURE__ */ o("div", {
56
+ className: "flex items-center gap-1 px-2 py-1 bg-purple-100 text-purple-800 rounded-full text-xs font-medium",
57
+ children: [
58
+ /* @__PURE__ */ a(i, { className: "h-3 w-3" }),
59
+ " ",
60
+ e.relevanceScore,
61
+ "%"
62
+ ]
63
+ })]
64
+ })
65
+ }), /* @__PURE__ */ o(u, {
66
+ className: "space-y-3",
67
+ children: [/* @__PURE__ */ a("p", {
68
+ className: "text-sm text-muted-foreground",
69
+ children: e.description
70
+ }), /* @__PURE__ */ o("div", {
71
+ className: "flex items-center justify-between",
72
+ children: [/* @__PURE__ */ a("div", {
73
+ className: "flex gap-2 flex-wrap",
74
+ children: e.tags.slice(0, 3).map((e) => /* @__PURE__ */ a(s, {
75
+ variant: "secondary",
76
+ className: "text-xs",
77
+ children: e
78
+ }, e))
79
+ }), /* @__PURE__ */ a(s, {
80
+ variant: "outline",
81
+ children: e.category
82
+ })]
83
+ })]
84
+ })]
85
+ }, e.id))
86
+ })
87
+ ]
88
+ });
89
+ }
90
+ //#endregion
91
+ export { m as DiscoveryPage };
92
+
93
+ //# sourceMappingURL=DiscoveryPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryPage.js","names":[],"sources":["../../../src/theculturepost/pages/DiscoveryPage.tsx"],"sourcesContent":["import {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Badge,\n Input,\n Button,\n} from '@burdenoff/fe-libs/ui';\nimport { Compass, Search, Sparkles, Globe } from 'lucide-react';\nimport { useTheCulturePostStore } from '../store/theculturepostStore';\n\nexport function DiscoveryPage() {\n const { discoveryItems, discoverySearchQuery, setDiscoverySearchQuery } =\n useTheCulturePostStore();\n\n const filtered = discoverySearchQuery\n ? discoveryItems.filter(\n (item) =>\n item.title.toLowerCase().includes(discoverySearchQuery.toLowerCase()) ||\n item.category.toLowerCase().includes(discoverySearchQuery.toLowerCase()) ||\n item.tags.some((t) => t.toLowerCase().includes(discoverySearchQuery.toLowerCase()))\n )\n : discoveryItems;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold flex items-center gap-2\">\n <Compass className=\"h-6 w-6 text-purple-600\" /> Cultural Discovery\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n AI-powered cultural insights and personalized recommendations\n </p>\n </div>\n\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex gap-4\">\n <div className=\"flex-1 relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search cultures, traditions, practices...\"\n className=\"pl-10\"\n value={discoverySearchQuery}\n onChange={(e) => setDiscoverySearchQuery(e.target.value)}\n />\n </div>\n <Button variant=\"outline\" size=\"sm\">\n <Sparkles className=\"h-4 w-4 mr-2\" /> AI Suggest\n </Button>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n {filtered.map((item) => (\n <Card key={item.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <div>\n <CardTitle className=\"text-lg\">{item.title}</CardTitle>\n <p className=\"text-sm text-muted-foreground mt-1 flex items-center gap-1\">\n <Globe className=\"h-3 w-3\" /> {item.culturalContext}\n </p>\n </div>\n <div className=\"flex items-center gap-1 px-2 py-1 bg-purple-100 text-purple-800 rounded-full text-xs font-medium\">\n <Sparkles className=\"h-3 w-3\" /> {item.relevanceScore}%\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-sm text-muted-foreground\">{item.description}</p>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-2 flex-wrap\">\n {item.tags.slice(0, 3).map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </div>\n <Badge variant=\"outline\">{item.category}</Badge>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAYA,SAAgB,IAAgB;CAC9B,IAAM,EAAE,mBAAgB,yBAAsB,+BAC5C,GAAwB,EAEpB,IAAW,IACb,EAAe,QACZ,MACC,EAAK,MAAM,aAAa,CAAC,SAAS,EAAqB,aAAa,CAAC,IACrE,EAAK,SAAS,aAAa,CAAC,SAAS,EAAqB,aAAa,CAAC,IACxE,EAAK,KAAK,MAAM,MAAM,EAAE,aAAa,CAAC,SAAS,EAAqB,aAAa,CAAC,CAAC,CACtF,GACD;AAEJ,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAS,WAAU,2BAA4B,CAAA,EAAA,sBAC5C;OACL,kBAAC,KAAD;IAAG,WAAU;cAAqC;IAE9C,CAAA,CACA,EAAA,CAAA;GAEN,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAa,WAAU;cACrB,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,0EAA2E,CAAA,EAC7F,kBAAC,GAAD;OACE,aAAY;OACZ,WAAU;OACV,OAAO;OACP,WAAW,MAAM,EAAwB,EAAE,OAAO,MAAM;OACxD,CAAA,CACE;SACN,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;gBAA/B,CACE,kBAAC,GAAD,EAAU,WAAU,gBAAiB,CAAA,EAAA,cAC9B;QACL;;IACM,CAAA,EACT,CAAA;GAEP,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAS,KAAK,MACb,kBAAC,GAAD;KAAoB,WAAU;eAA9B,CACE,kBAAC,GAAD;MAAY,WAAU;gBACpB,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;QAAW,WAAU;kBAAW,EAAK;QAAkB,CAAA,EACvD,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;;SAAE,EAAK;SAClC;UACA,EAAA,CAAA,EACN,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;;SAAE,EAAK;SAAe;SAClD;UACF;;MACK,CAAA,EACb,kBAAC,GAAD;MAAa,WAAU;gBAAvB,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAiC,EAAK;OAAgB,CAAA,EACnE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBACZ,EAAK,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK,MAC1B,kBAAC,GAAD;SAAiB,SAAQ;SAAY,WAAU;mBAC5C;SACK,EAFI,EAEJ,CACR;QACE,CAAA,EACN,kBAAC,GAAD;QAAO,SAAQ;kBAAW,EAAK;QAAiB,CAAA,CAC5C;SACM;QACT;OA3BI,EAAK,GA2BT,CACP;IACE,CAAA;GACF"}
@@ -0,0 +1,2 @@
1
+ export declare function DiscussionsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DiscussionsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscussionsPage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/pages/DiscussionsPage.tsx"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,4CAwF9B"}