@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.
- package/README.md +12 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/theculturepost/TheCulturePostRoot.d.ts +5 -0
- package/dist/theculturepost/TheCulturePostRoot.d.ts.map +1 -0
- package/dist/theculturepost/TheCulturePostRoot.js +179 -0
- package/dist/theculturepost/TheCulturePostRoot.js.map +1 -0
- package/dist/theculturepost/TheCulturePostRoutes.d.ts +2 -0
- package/dist/theculturepost/TheCulturePostRoutes.d.ts.map +1 -0
- package/dist/theculturepost/TheCulturePostRoutes.js +87 -0
- package/dist/theculturepost/TheCulturePostRoutes.js.map +1 -0
- package/dist/theculturepost/index.d.ts +5 -0
- package/dist/theculturepost/index.d.ts.map +1 -0
- package/dist/theculturepost/index.js +3 -0
- package/dist/theculturepost/pages/AnalyticsPage.d.ts +2 -0
- package/dist/theculturepost/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/AnalyticsPage.js +97 -0
- package/dist/theculturepost/pages/AnalyticsPage.js.map +1 -0
- package/dist/theculturepost/pages/CommunityPage.d.ts +2 -0
- package/dist/theculturepost/pages/CommunityPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/CommunityPage.js +166 -0
- package/dist/theculturepost/pages/CommunityPage.js.map +1 -0
- package/dist/theculturepost/pages/ContributionsPage.d.ts +2 -0
- package/dist/theculturepost/pages/ContributionsPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/ContributionsPage.js +129 -0
- package/dist/theculturepost/pages/ContributionsPage.js.map +1 -0
- package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.d.ts +2 -0
- package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.js +149 -0
- package/dist/theculturepost/pages/CulturalRepositoryGraphqlPage.js.map +1 -0
- package/dist/theculturepost/pages/CulturalRepositoryPage.d.ts +2 -0
- package/dist/theculturepost/pages/CulturalRepositoryPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/CulturalRepositoryPage.js +214 -0
- package/dist/theculturepost/pages/CulturalRepositoryPage.js.map +1 -0
- package/dist/theculturepost/pages/DashboardPage.d.ts +2 -0
- package/dist/theculturepost/pages/DashboardPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/DashboardPage.js +192 -0
- package/dist/theculturepost/pages/DashboardPage.js.map +1 -0
- package/dist/theculturepost/pages/DiscoveryPage.d.ts +2 -0
- package/dist/theculturepost/pages/DiscoveryPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/DiscoveryPage.js +93 -0
- package/dist/theculturepost/pages/DiscoveryPage.js.map +1 -0
- package/dist/theculturepost/pages/DiscussionsPage.d.ts +2 -0
- package/dist/theculturepost/pages/DiscussionsPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/DiscussionsPage.js +113 -0
- package/dist/theculturepost/pages/DiscussionsPage.js.map +1 -0
- package/dist/theculturepost/pages/EventsPage.d.ts +2 -0
- package/dist/theculturepost/pages/EventsPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/EventsPage.js +90 -0
- package/dist/theculturepost/pages/EventsPage.js.map +1 -0
- package/dist/theculturepost/pages/HeritagePage.d.ts +2 -0
- package/dist/theculturepost/pages/HeritagePage.d.ts.map +1 -0
- package/dist/theculturepost/pages/HeritagePage.js +167 -0
- package/dist/theculturepost/pages/HeritagePage.js.map +1 -0
- package/dist/theculturepost/pages/LearningPage.d.ts +2 -0
- package/dist/theculturepost/pages/LearningPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/LearningPage.js +191 -0
- package/dist/theculturepost/pages/LearningPage.js.map +1 -0
- package/dist/theculturepost/pages/MapPage.d.ts +2 -0
- package/dist/theculturepost/pages/MapPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/MapPage.js +99 -0
- package/dist/theculturepost/pages/MapPage.js.map +1 -0
- package/dist/theculturepost/pages/MarketplacePage.d.ts +2 -0
- package/dist/theculturepost/pages/MarketplacePage.d.ts.map +1 -0
- package/dist/theculturepost/pages/MarketplacePage.js +102 -0
- package/dist/theculturepost/pages/MarketplacePage.js.map +1 -0
- package/dist/theculturepost/pages/ResourcesPage.d.ts +2 -0
- package/dist/theculturepost/pages/ResourcesPage.d.ts.map +1 -0
- package/dist/theculturepost/pages/ResourcesPage.js +90 -0
- package/dist/theculturepost/pages/ResourcesPage.js.map +1 -0
- package/dist/theculturepost/providers/TheCulturePostProvider.d.ts +6 -0
- package/dist/theculturepost/providers/TheCulturePostProvider.d.ts.map +1 -0
- package/dist/theculturepost/providers/TheCulturePostProvider.js +27 -0
- package/dist/theculturepost/providers/TheCulturePostProvider.js.map +1 -0
- package/dist/theculturepost/store/theculturepostStore.d.ts +159 -0
- package/dist/theculturepost/store/theculturepostStore.d.ts.map +1 -0
- package/dist/theculturepost/store/theculturepostStore.js +607 -0
- package/dist/theculturepost/store/theculturepostStore.js.map +1 -0
- package/dist/theculturepost/types/index.d.ts +51 -0
- package/dist/theculturepost/types/index.d.ts.map +1 -0
- package/dist/theculturepost/utils/cn.d.ts +4 -0
- package/dist/theculturepost/utils/cn.d.ts.map +1 -0
- package/dist/theculturepost/utils/i18n.d.ts +6 -0
- package/dist/theculturepost/utils/i18n.d.ts.map +1 -0
- package/dist/theculturepost/utils/i18n.js +15 -0
- package/dist/theculturepost/utils/i18n.js.map +1 -0
- package/dist/theculturepost/utils/navigation.d.ts +2 -0
- package/dist/theculturepost/utils/navigation.d.ts.map +1 -0
- package/dist/theculturepost/utils/navigation.js +8 -0
- package/dist/theculturepost/utils/navigation.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { useTheCulturePostStore as e } from "../store/theculturepostStore.js";
|
|
2
|
+
import { Clock as t, MessageSquare as n, Plus as r, Search as i, ThumbsUp as a } from "lucide-react";
|
|
3
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
+
import { Badge as c, Button as l, Card as u, CardContent as d, Input as f } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/theculturepost/pages/DiscussionsPage.tsx
|
|
6
|
+
function p() {
|
|
7
|
+
let { discussions: p, discussionSearchQuery: m, setDiscussionSearchQuery: h } = e(), g = m ? p.filter((e) => e.title.toLowerCase().includes(m.toLowerCase()) || e.tags.some((e) => e.toLowerCase().includes(m.toLowerCase()))) : p;
|
|
8
|
+
return /* @__PURE__ */ s("div", {
|
|
9
|
+
className: "space-y-6 p-6",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ s("div", {
|
|
12
|
+
className: "flex items-center justify-between",
|
|
13
|
+
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
|
|
14
|
+
className: "text-2xl font-semibold",
|
|
15
|
+
children: "Discussions"
|
|
16
|
+
}), /* @__PURE__ */ o("p", {
|
|
17
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
18
|
+
children: "Join conversations about cultural heritage and preservation"
|
|
19
|
+
})] }), /* @__PURE__ */ s(l, {
|
|
20
|
+
size: "sm",
|
|
21
|
+
children: [/* @__PURE__ */ o(r, { className: "h-4 w-4 mr-2" }), " New Discussion"]
|
|
22
|
+
})]
|
|
23
|
+
}),
|
|
24
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(d, {
|
|
25
|
+
className: "pt-6",
|
|
26
|
+
children: /* @__PURE__ */ o("div", {
|
|
27
|
+
className: "flex gap-4",
|
|
28
|
+
children: /* @__PURE__ */ s("div", {
|
|
29
|
+
className: "flex-1 relative",
|
|
30
|
+
children: [/* @__PURE__ */ o(i, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ o(f, {
|
|
31
|
+
placeholder: "Search discussions...",
|
|
32
|
+
className: "pl-10",
|
|
33
|
+
value: m,
|
|
34
|
+
onChange: (e) => h(e.target.value)
|
|
35
|
+
})]
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
}) }),
|
|
39
|
+
/* @__PURE__ */ o("div", {
|
|
40
|
+
className: "space-y-4",
|
|
41
|
+
children: g.map((e) => /* @__PURE__ */ o(u, {
|
|
42
|
+
className: "hover:shadow-md transition-shadow cursor-pointer",
|
|
43
|
+
children: /* @__PURE__ */ o(d, {
|
|
44
|
+
className: "p-6",
|
|
45
|
+
children: /* @__PURE__ */ s("div", {
|
|
46
|
+
className: "flex gap-4",
|
|
47
|
+
children: [/* @__PURE__ */ o("div", {
|
|
48
|
+
className: "h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center font-bold text-sm shrink-0",
|
|
49
|
+
children: e.author.split(" ").map((e) => e[0]).join("")
|
|
50
|
+
}), /* @__PURE__ */ s("div", {
|
|
51
|
+
className: "flex-1 space-y-3",
|
|
52
|
+
children: [
|
|
53
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h3", {
|
|
54
|
+
className: "font-semibold text-lg hover:text-primary transition-colors",
|
|
55
|
+
children: e.title
|
|
56
|
+
}), /* @__PURE__ */ s("div", {
|
|
57
|
+
className: "flex items-center gap-2 mt-1 text-sm text-muted-foreground flex-wrap",
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ o("span", {
|
|
60
|
+
className: "font-medium",
|
|
61
|
+
children: e.author
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ s("span", { children: ["in ", e.community] }),
|
|
64
|
+
/* @__PURE__ */ s("span", {
|
|
65
|
+
className: "flex items-center gap-1",
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ o(t, { className: "h-3 w-3" }),
|
|
68
|
+
" ",
|
|
69
|
+
e.time
|
|
70
|
+
]
|
|
71
|
+
})
|
|
72
|
+
]
|
|
73
|
+
})] }),
|
|
74
|
+
/* @__PURE__ */ o("div", {
|
|
75
|
+
className: "flex items-center gap-2 flex-wrap",
|
|
76
|
+
children: e.tags.map((e) => /* @__PURE__ */ o(c, {
|
|
77
|
+
variant: "secondary",
|
|
78
|
+
children: e
|
|
79
|
+
}, e))
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ s("div", {
|
|
82
|
+
className: "flex items-center gap-4 text-sm text-muted-foreground",
|
|
83
|
+
children: [/* @__PURE__ */ s("span", {
|
|
84
|
+
className: "flex items-center gap-1",
|
|
85
|
+
children: [
|
|
86
|
+
/* @__PURE__ */ o(n, { className: "h-4 w-4" }),
|
|
87
|
+
" ",
|
|
88
|
+
e.replies,
|
|
89
|
+
" replies"
|
|
90
|
+
]
|
|
91
|
+
}), /* @__PURE__ */ s("span", {
|
|
92
|
+
className: "flex items-center gap-1",
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ o(a, { className: "h-4 w-4" }),
|
|
95
|
+
" ",
|
|
96
|
+
e.likes,
|
|
97
|
+
" likes"
|
|
98
|
+
]
|
|
99
|
+
})]
|
|
100
|
+
})
|
|
101
|
+
]
|
|
102
|
+
})]
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
}, e.id))
|
|
106
|
+
})
|
|
107
|
+
]
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
export { p as DiscussionsPage };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=DiscussionsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscussionsPage.js","names":[],"sources":["../../../src/theculturepost/pages/DiscussionsPage.tsx"],"sourcesContent":["import { Card, CardContent, Badge, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { MessageSquare, ThumbsUp, Clock, Search, Plus } from 'lucide-react';\nimport { useTheCulturePostStore } from '../store/theculturepostStore';\n\nexport function DiscussionsPage() {\n const { discussions, discussionSearchQuery, setDiscussionSearchQuery } = useTheCulturePostStore();\n\n const filtered = discussionSearchQuery\n ? discussions.filter(\n (d) =>\n d.title.toLowerCase().includes(discussionSearchQuery.toLowerCase()) ||\n d.tags.some((t) => t.toLowerCase().includes(discussionSearchQuery.toLowerCase()))\n )\n : discussions;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Discussions</h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Join conversations about cultural heritage and preservation\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-2\" /> New Discussion\n </Button>\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 discussions...\"\n className=\"pl-10\"\n value={discussionSearchQuery}\n onChange={(e) => setDiscussionSearchQuery(e.target.value)}\n />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"space-y-4\">\n {filtered.map((discussion) => (\n <Card key={discussion.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardContent className=\"p-6\">\n <div className=\"flex gap-4\">\n <div className=\"h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center font-bold text-sm shrink-0\">\n {discussion.author\n .split(' ')\n .map((n) => n[0])\n .join('')}\n </div>\n <div className=\"flex-1 space-y-3\">\n <div>\n <h3 className=\"font-semibold text-lg hover:text-primary transition-colors\">\n {discussion.title}\n </h3>\n <div className=\"flex items-center gap-2 mt-1 text-sm text-muted-foreground flex-wrap\">\n <span className=\"font-medium\">{discussion.author}</span>\n <span>in {discussion.community}</span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" /> {discussion.time}\n </span>\n </div>\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n {discussion.tags.map((tag) => (\n <Badge key={tag} variant=\"secondary\">\n {tag}\n </Badge>\n ))}\n </div>\n <div className=\"flex items-center gap-4 text-sm text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <MessageSquare className=\"h-4 w-4\" /> {discussion.replies} replies\n </span>\n <span className=\"flex items-center gap-1\">\n <ThumbsUp className=\"h-4 w-4\" /> {discussion.likes} likes\n </span>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,SAAgB,IAAkB;CAChC,IAAM,EAAE,gBAAa,0BAAuB,gCAA6B,GAAwB,EAE3F,IAAW,IACb,EAAY,QACT,MACC,EAAE,MAAM,aAAa,CAAC,SAAS,EAAsB,aAAa,CAAC,IACnE,EAAE,KAAK,MAAM,MAAM,EAAE,aAAa,CAAC,SAAS,EAAsB,aAAa,CAAC,CAAC,CACpF,GACD;AAEJ,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAAyB;KAAgB,CAAA,EACvD,kBAAC,KAAD;KAAG,WAAU;eAAqC;KAE9C,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,GAAD;KAAQ,MAAK;eAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,kBAC1B;OACL;;GAEN,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAa,WAAU;cACrB,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,0EAA2E,CAAA,EAC7F,kBAAC,GAAD;OACE,aAAY;OACZ,WAAU;OACV,OAAO;OACP,WAAW,MAAM,EAAyB,EAAE,OAAO,MAAM;OACzD,CAAA,CACE;;KACF,CAAA;IACM,CAAA,EACT,CAAA;GAEP,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAS,KAAK,MACb,kBAAC,GAAD;KAA0B,WAAU;eAClC,kBAAC,GAAD;MAAa,WAAU;gBACrB,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBACZ,EAAW,OACT,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,GAAG,CAChB,KAAK,GAAG;QACP,CAAA,EACN,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;UAAI,WAAU;oBACX,EAAW;UACT,CAAA,EACL,kBAAC,OAAD;UAAK,WAAU;oBAAf;WACE,kBAAC,QAAD;YAAM,WAAU;sBAAe,EAAW;YAAc,CAAA;WACxD,kBAAC,QAAD,EAAA,UAAA,CAAM,OAAI,EAAW,UAAiB,EAAA,CAAA;WACtC,kBAAC,QAAD;YAAM,WAAU;sBAAhB;aACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;;aAAE,EAAW;aACrC;;WACH;YACF,EAAA,CAAA;SACN,kBAAC,OAAD;UAAK,WAAU;oBACZ,EAAW,KAAK,KAAK,MACpB,kBAAC,GAAD;WAAiB,SAAQ;qBACtB;WACK,EAFI,EAEJ,CACR;UACE,CAAA;SACN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,QAAD;WAAM,WAAU;qBAAhB;YACE,kBAAC,GAAD,EAAe,WAAU,WAAY,CAAA;;YAAE,EAAW;YAAQ;YACrD;cACP,kBAAC,QAAD;WAAM,WAAU;qBAAhB;YACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;;YAAE,EAAW;YAAM;YAC9C;aACH;;SACF;UACF;;MACM,CAAA;KACT,EAxCI,EAAW,GAwCf,CACP;IACE,CAAA;GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventsPage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/pages/EventsPage.tsx"],"names":[],"mappings":"AAeA,wBAAgB,UAAU,4CA4FzB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 { Calendar as r, Clock as i, MapPin as a, Users as o } from "lucide-react";
|
|
5
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
import { Button as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
|
|
7
|
+
//#region src/theculturepost/pages/EventsPage.tsx
|
|
8
|
+
var h = {
|
|
9
|
+
"Sacred Event": "bg-purple-100 text-purple-800",
|
|
10
|
+
Workshop: "bg-amber-100 text-amber-800",
|
|
11
|
+
Conference: "bg-blue-100 text-blue-800",
|
|
12
|
+
Festival: "bg-pink-100 text-pink-800",
|
|
13
|
+
Exhibition: "bg-teal-100 text-teal-800",
|
|
14
|
+
Ceremony: "bg-indigo-100 text-indigo-800"
|
|
15
|
+
};
|
|
16
|
+
function g() {
|
|
17
|
+
let { t: g } = n(), _ = (e, n, r) => t(g, e, n, r), { culturalEvents: v } = e(), y = (e) => _(`theculturepost.events.types.${e.toLowerCase().replace(/\s+/g, "")}`, e);
|
|
18
|
+
return /* @__PURE__ */ l("div", {
|
|
19
|
+
className: "space-y-6 p-6",
|
|
20
|
+
children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
|
|
21
|
+
className: "text-2xl font-semibold",
|
|
22
|
+
children: _("theculturepost.events.title", "Cultural Events")
|
|
23
|
+
}), /* @__PURE__ */ c("p", {
|
|
24
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
25
|
+
children: _("theculturepost.events.subtitle", "Discover and participate in cultural celebrations, ceremonies, and educational events")
|
|
26
|
+
})] }), /* @__PURE__ */ c("div", {
|
|
27
|
+
className: "space-y-4",
|
|
28
|
+
children: v.map((e) => /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ l("div", {
|
|
29
|
+
className: "flex items-start justify-between",
|
|
30
|
+
children: [/* @__PURE__ */ l("div", {
|
|
31
|
+
className: "flex-1",
|
|
32
|
+
children: [/* @__PURE__ */ c(m, {
|
|
33
|
+
className: "text-xl",
|
|
34
|
+
children: e.title
|
|
35
|
+
}), /* @__PURE__ */ l("div", {
|
|
36
|
+
className: "flex items-center gap-4 mt-3 text-sm text-muted-foreground flex-wrap",
|
|
37
|
+
children: [
|
|
38
|
+
/* @__PURE__ */ l("span", {
|
|
39
|
+
className: "flex items-center gap-1",
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ c(r, { className: "w-4 h-4" }),
|
|
42
|
+
" ",
|
|
43
|
+
e.date
|
|
44
|
+
]
|
|
45
|
+
}),
|
|
46
|
+
/* @__PURE__ */ l("span", {
|
|
47
|
+
className: "flex items-center gap-1",
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ c(i, { className: "w-4 h-4" }),
|
|
50
|
+
" ",
|
|
51
|
+
e.time
|
|
52
|
+
]
|
|
53
|
+
}),
|
|
54
|
+
/* @__PURE__ */ l("span", {
|
|
55
|
+
className: "flex items-center gap-1",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ c(a, { className: "w-4 h-4" }),
|
|
58
|
+
" ",
|
|
59
|
+
e.location
|
|
60
|
+
]
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
})]
|
|
64
|
+
}), /* @__PURE__ */ c("span", {
|
|
65
|
+
className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${h[e.type] ?? "bg-gray-100 text-gray-800"}`,
|
|
66
|
+
children: y(e.type)
|
|
67
|
+
})]
|
|
68
|
+
}) }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("p", {
|
|
69
|
+
className: "text-sm text-muted-foreground mb-4",
|
|
70
|
+
children: e.description
|
|
71
|
+
}), /* @__PURE__ */ l("div", {
|
|
72
|
+
className: "flex items-center gap-3 flex-wrap",
|
|
73
|
+
children: [e.requiresInvitation ? /* @__PURE__ */ c(u, {
|
|
74
|
+
variant: "outline",
|
|
75
|
+
children: _("theculturepost.events.actions.requestInvitation", "Request Invitation")
|
|
76
|
+
}) : /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(u, { children: e.price ? _("theculturepost.events.actions.registerWithPrice", "Register - {{price}}", { price: e.price }) : _("theculturepost.events.actions.register", "Register") }), e.virtualPrice && /* @__PURE__ */ c(u, {
|
|
77
|
+
variant: "outline",
|
|
78
|
+
children: _("theculturepost.events.actions.virtualAccess", "Virtual Access - {{price}}", { price: e.virtualPrice })
|
|
79
|
+
})] }), /* @__PURE__ */ l("span", {
|
|
80
|
+
className: "text-sm text-muted-foreground flex items-center gap-1",
|
|
81
|
+
children: [/* @__PURE__ */ c(o, { className: "w-4 h-4" }), _("theculturepost.events.spotsRemaining", "{{count}} spots remaining", { count: e.spotsRemaining })]
|
|
82
|
+
})]
|
|
83
|
+
})] })] }, e.id))
|
|
84
|
+
})]
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { g as EventsPage };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=EventsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventsPage.js","names":[],"sources":["../../../src/theculturepost/pages/EventsPage.tsx"],"sourcesContent":["import { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { Calendar, MapPin, Clock, Users } from 'lucide-react';\nimport { useTheCulturePostStore } from '../store/theculturepostStore';\nimport { tWithFallback } from '../utils/i18n';\n\nconst typeColors: Record<string, string> = {\n 'Sacred Event': 'bg-purple-100 text-purple-800',\n Workshop: 'bg-amber-100 text-amber-800',\n Conference: 'bg-blue-100 text-blue-800',\n Festival: 'bg-pink-100 text-pink-800',\n Exhibition: 'bg-teal-100 text-teal-800',\n Ceremony: 'bg-indigo-100 text-indigo-800',\n};\n\nexport function EventsPage() {\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 { culturalEvents } = useTheCulturePostStore();\n const eventTypeLabel = (type: string): string =>\n tr(`theculturepost.events.types.${type.toLowerCase().replace(/\\s+/g, '')}`, type);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {tr('theculturepost.events.title', 'Cultural Events')}\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {tr(\n 'theculturepost.events.subtitle',\n 'Discover and participate in cultural celebrations, ceremonies, and educational events'\n )}\n </p>\n </div>\n\n <div className=\"space-y-4\">\n {culturalEvents.map((event) => (\n <Card key={event.id}>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle className=\"text-xl\">{event.title}</CardTitle>\n <div className=\"flex items-center gap-4 mt-3 text-sm text-muted-foreground flex-wrap\">\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"w-4 h-4\" /> {event.date}\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"w-4 h-4\" /> {event.time}\n </span>\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"w-4 h-4\" /> {event.location}\n </span>\n </div>\n </div>\n <span\n className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${typeColors[event.type] ?? 'bg-gray-100 text-gray-800'}`}\n >\n {eventTypeLabel(event.type)}\n </span>\n </div>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-muted-foreground mb-4\">{event.description}</p>\n <div className=\"flex items-center gap-3 flex-wrap\">\n {event.requiresInvitation ? (\n <Button variant=\"outline\">\n {tr('theculturepost.events.actions.requestInvitation', 'Request Invitation')}\n </Button>\n ) : (\n <>\n <Button>\n {event.price\n ? tr(\n 'theculturepost.events.actions.registerWithPrice',\n 'Register - {{price}}',\n {\n price: event.price,\n }\n )\n : tr('theculturepost.events.actions.register', 'Register')}\n </Button>\n {event.virtualPrice && (\n <Button variant=\"outline\">\n {tr(\n 'theculturepost.events.actions.virtualAccess',\n 'Virtual Access - {{price}}',\n { price: event.virtualPrice }\n )}\n </Button>\n )}\n </>\n )}\n <span className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <Users className=\"w-4 h-4\" />\n {tr('theculturepost.events.spotsRemaining', '{{count}} spots remaining', {\n count: event.spotsRemaining,\n })}\n </span>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAMA,IAAM,IAAqC;CACzC,gBAAgB;CAChB,UAAU;CACV,YAAY;CACZ,UAAU;CACV,YAAY;CACZ,UAAU;CACX;AAED,SAAgB,IAAa;CAC3B,IAAM,EAAE,SAAM,GAAS,EACjB,KAAM,GAAa,GAAkB,MACzC,EAAc,GAAG,GAAK,GAAU,EAAO,EACnC,EAAE,sBAAmB,GAAwB,EAC7C,KAAkB,MACtB,EAAG,+BAA+B,EAAK,aAAa,CAAC,QAAQ,QAAQ,GAAG,IAAI,EAAK;AAEnF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aACX,EAAG,+BAA+B,kBAAkB;GAClD,CAAA,EACL,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,kCACA,wFACD;GACC,CAAA,CACA,EAAA,CAAA,EAEN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAe,KAAK,MACnB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAW,WAAU;gBAAW,EAAM;MAAkB,CAAA,EACxD,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,QAAD;QAAM,WAAU;kBAAhB;SACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;;SAAE,EAAM;SACnC;;OACP,kBAAC,QAAD;QAAM,WAAU;kBAAhB;SACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;;SAAE,EAAM;SAChC;;OACP,kBAAC,QAAD;QAAM,WAAU;kBAAhB;SACE,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA;;SAAE,EAAM;SACjC;;OACH;QACF;QACN,kBAAC,QAAD;KACE,WAAW,2EAA2E,EAAW,EAAM,SAAS;eAE/G,EAAe,EAAM,KAAK;KACtB,CAAA,CACH;OACK,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAAsC,EAAM;IAAgB,CAAA,EACzE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,EAAM,qBACL,kBAAC,GAAD;KAAQ,SAAQ;eACb,EAAG,mDAAmD,qBAAqB;KACrE,CAAA,GAET,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACG,EAAM,QACH,EACE,mDACA,wBACA,EACE,OAAO,EAAM,OACd,CACF,GACD,EAAG,0CAA0C,WAAW,EACrD,CAAA,EACR,EAAM,gBACL,kBAAC,GAAD;KAAQ,SAAQ;eACb,EACC,+CACA,8BACA,EAAE,OAAO,EAAM,cAAc,CAC9B;KACM,CAAA,CAEV,EAAA,CAAA,EAEL,kBAAC,QAAD;KAAM,WAAU;eAAhB,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC5B,EAAG,wCAAwC,6BAA6B,EACvE,OAAO,EAAM,gBACd,CAAC,CACG;OACH;MACM,EAAA,CAAA,CACT,EAAA,EA/DI,EAAM,GA+DV,CACP;GACE,CAAA,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeritagePage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/pages/HeritagePage.tsx"],"names":[],"mappings":"AAUA,wBAAgB,YAAY,4CA4H3B"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { useTheCulturePostStore as e } from "../store/theculturepostStore.js";
|
|
2
|
+
import { AlertTriangle as t, Eye as n, Landmark as r, MapPin as i, Shield as a } from "lucide-react";
|
|
3
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
+
import { Badge as c, Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/theculturepost/pages/HeritagePage.tsx
|
|
6
|
+
var m = {
|
|
7
|
+
Active: "bg-emerald-100 text-emerald-800",
|
|
8
|
+
Preserved: "bg-blue-100 text-blue-800",
|
|
9
|
+
Endangered: "bg-red-100 text-red-800"
|
|
10
|
+
};
|
|
11
|
+
function h() {
|
|
12
|
+
let { heritageSites: h, selectedSiteId: g, setSelectedSiteId: _ } = e(), v = h.find((e) => e.id === g);
|
|
13
|
+
return v ? /* @__PURE__ */ s("div", {
|
|
14
|
+
className: "space-y-6 p-6",
|
|
15
|
+
children: [/* @__PURE__ */ o(l, {
|
|
16
|
+
variant: "outline",
|
|
17
|
+
size: "sm",
|
|
18
|
+
onClick: () => _(null),
|
|
19
|
+
children: "Back to Heritage Sites"
|
|
20
|
+
}), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o(f, { children: /* @__PURE__ */ s("div", {
|
|
21
|
+
className: "flex items-start justify-between",
|
|
22
|
+
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o(p, {
|
|
23
|
+
className: "text-2xl",
|
|
24
|
+
children: v.name
|
|
25
|
+
}), /* @__PURE__ */ s("p", {
|
|
26
|
+
className: "text-muted-foreground mt-1 flex items-center gap-1",
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ o(i, { className: "h-4 w-4" }),
|
|
29
|
+
" ",
|
|
30
|
+
v.location
|
|
31
|
+
]
|
|
32
|
+
})] }), /* @__PURE__ */ s("div", {
|
|
33
|
+
className: "flex gap-2",
|
|
34
|
+
children: [/* @__PURE__ */ o(c, {
|
|
35
|
+
variant: "secondary",
|
|
36
|
+
children: v.type
|
|
37
|
+
}), /* @__PURE__ */ s("span", {
|
|
38
|
+
className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${m[v.status]}`,
|
|
39
|
+
children: [v.status === "Endangered" && /* @__PURE__ */ o(t, { className: "h-3 w-3 mr-1" }), v.status]
|
|
40
|
+
})]
|
|
41
|
+
})]
|
|
42
|
+
}) }), /* @__PURE__ */ s(d, {
|
|
43
|
+
className: "space-y-4",
|
|
44
|
+
children: [
|
|
45
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h3", {
|
|
46
|
+
className: "font-semibold mb-2",
|
|
47
|
+
children: "Description"
|
|
48
|
+
}), /* @__PURE__ */ o("p", {
|
|
49
|
+
className: "text-sm text-muted-foreground",
|
|
50
|
+
children: v.description
|
|
51
|
+
})] }),
|
|
52
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h3", {
|
|
53
|
+
className: "font-semibold mb-2",
|
|
54
|
+
children: "Cultural Significance"
|
|
55
|
+
}), /* @__PURE__ */ o("p", {
|
|
56
|
+
className: "text-sm text-muted-foreground",
|
|
57
|
+
children: v.culturalSignificance
|
|
58
|
+
})] }),
|
|
59
|
+
/* @__PURE__ */ s("div", {
|
|
60
|
+
className: "flex items-center gap-4 text-sm text-muted-foreground",
|
|
61
|
+
children: [/* @__PURE__ */ s("span", { children: ["Coordinates: ", v.coordinates] }), /* @__PURE__ */ s("span", { children: [v.itemCount, " documented items"] })]
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
})] })]
|
|
65
|
+
}) : /* @__PURE__ */ s("div", {
|
|
66
|
+
className: "space-y-6 p-6",
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ s("h1", {
|
|
69
|
+
className: "text-2xl font-semibold flex items-center gap-2",
|
|
70
|
+
children: [/* @__PURE__ */ o(r, { className: "h-6 w-6 text-amber-600" }), " Heritage Archive"]
|
|
71
|
+
}), /* @__PURE__ */ o("p", {
|
|
72
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
73
|
+
children: "Explore and preserve cultural heritage sites from around the world"
|
|
74
|
+
})] }),
|
|
75
|
+
/* @__PURE__ */ s("div", {
|
|
76
|
+
className: "grid gap-4 md:grid-cols-3",
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
79
|
+
className: "pt-6 text-center",
|
|
80
|
+
children: [
|
|
81
|
+
/* @__PURE__ */ o(a, { className: "h-8 w-8 mx-auto text-emerald-600 mb-2" }),
|
|
82
|
+
/* @__PURE__ */ o("p", {
|
|
83
|
+
className: "text-2xl font-bold",
|
|
84
|
+
children: h.filter((e) => e.type === "UNESCO World Heritage").length
|
|
85
|
+
}),
|
|
86
|
+
/* @__PURE__ */ o("p", {
|
|
87
|
+
className: "text-xs text-muted-foreground",
|
|
88
|
+
children: "UNESCO Sites"
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}) }),
|
|
92
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
93
|
+
className: "pt-6 text-center",
|
|
94
|
+
children: [
|
|
95
|
+
/* @__PURE__ */ o(n, { className: "h-8 w-8 mx-auto text-blue-600 mb-2" }),
|
|
96
|
+
/* @__PURE__ */ o("p", {
|
|
97
|
+
className: "text-2xl font-bold",
|
|
98
|
+
children: h.filter((e) => e.status === "Active").length
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ o("p", {
|
|
101
|
+
className: "text-xs text-muted-foreground",
|
|
102
|
+
children: "Active Sites"
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
}) }),
|
|
106
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
107
|
+
className: "pt-6 text-center",
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ o(t, { className: "h-8 w-8 mx-auto text-red-600 mb-2" }),
|
|
110
|
+
/* @__PURE__ */ o("p", {
|
|
111
|
+
className: "text-2xl font-bold",
|
|
112
|
+
children: h.filter((e) => e.status === "Endangered").length
|
|
113
|
+
}),
|
|
114
|
+
/* @__PURE__ */ o("p", {
|
|
115
|
+
className: "text-xs text-muted-foreground",
|
|
116
|
+
children: "Endangered"
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
}) })
|
|
120
|
+
]
|
|
121
|
+
}),
|
|
122
|
+
/* @__PURE__ */ o("div", {
|
|
123
|
+
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
124
|
+
children: h.map((e) => /* @__PURE__ */ s(u, {
|
|
125
|
+
className: "hover:shadow-md transition-shadow cursor-pointer",
|
|
126
|
+
onClick: () => _(e.id),
|
|
127
|
+
children: [/* @__PURE__ */ s(f, {
|
|
128
|
+
className: "pb-3",
|
|
129
|
+
children: [/* @__PURE__ */ s("div", {
|
|
130
|
+
className: "flex items-start justify-between",
|
|
131
|
+
children: [/* @__PURE__ */ o(p, {
|
|
132
|
+
className: "text-lg",
|
|
133
|
+
children: e.name
|
|
134
|
+
}), /* @__PURE__ */ o("span", {
|
|
135
|
+
className: `inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${m[e.status]}`,
|
|
136
|
+
children: e.status
|
|
137
|
+
})]
|
|
138
|
+
}), /* @__PURE__ */ s("p", {
|
|
139
|
+
className: "text-sm text-muted-foreground flex items-center gap-1",
|
|
140
|
+
children: [
|
|
141
|
+
/* @__PURE__ */ o(i, { className: "h-3 w-3" }),
|
|
142
|
+
" ",
|
|
143
|
+
e.location
|
|
144
|
+
]
|
|
145
|
+
})]
|
|
146
|
+
}), /* @__PURE__ */ s(d, { children: [/* @__PURE__ */ o("p", {
|
|
147
|
+
className: "text-sm text-muted-foreground line-clamp-2 mb-3",
|
|
148
|
+
children: e.description
|
|
149
|
+
}), /* @__PURE__ */ s("div", {
|
|
150
|
+
className: "flex items-center justify-between",
|
|
151
|
+
children: [/* @__PURE__ */ o(c, {
|
|
152
|
+
variant: "outline",
|
|
153
|
+
children: e.type
|
|
154
|
+
}), /* @__PURE__ */ s("span", {
|
|
155
|
+
className: "text-xs text-muted-foreground",
|
|
156
|
+
children: [e.itemCount, " items"]
|
|
157
|
+
})]
|
|
158
|
+
})] })]
|
|
159
|
+
}, e.id))
|
|
160
|
+
})
|
|
161
|
+
]
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
//#endregion
|
|
165
|
+
export { h as HeritagePage };
|
|
166
|
+
|
|
167
|
+
//# sourceMappingURL=HeritagePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeritagePage.js","names":[],"sources":["../../../src/theculturepost/pages/HeritagePage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { Landmark, MapPin, Shield, AlertTriangle, Eye } from 'lucide-react';\nimport { useTheCulturePostStore } from '../store/theculturepostStore';\n\nconst statusColors: Record<string, string> = {\n Active: 'bg-emerald-100 text-emerald-800',\n Preserved: 'bg-blue-100 text-blue-800',\n Endangered: 'bg-red-100 text-red-800',\n};\n\nexport function HeritagePage() {\n const { heritageSites, selectedSiteId, setSelectedSiteId } = useTheCulturePostStore();\n const selectedSite = heritageSites.find((s) => s.id === selectedSiteId);\n\n if (selectedSite) {\n return (\n <div className=\"space-y-6 p-6\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setSelectedSiteId(null)}>\n Back to Heritage Sites\n </Button>\n <Card>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div>\n <CardTitle className=\"text-2xl\">{selectedSite.name}</CardTitle>\n <p className=\"text-muted-foreground mt-1 flex items-center gap-1\">\n <MapPin className=\"h-4 w-4\" /> {selectedSite.location}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Badge variant=\"secondary\">{selectedSite.type}</Badge>\n <span\n className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusColors[selectedSite.status]}`}\n >\n {selectedSite.status === 'Endangered' && (\n <AlertTriangle className=\"h-3 w-3 mr-1\" />\n )}\n {selectedSite.status}\n </span>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <h3 className=\"font-semibold mb-2\">Description</h3>\n <p className=\"text-sm text-muted-foreground\">{selectedSite.description}</p>\n </div>\n <div>\n <h3 className=\"font-semibold mb-2\">Cultural Significance</h3>\n <p className=\"text-sm text-muted-foreground\">{selectedSite.culturalSignificance}</p>\n </div>\n <div className=\"flex items-center gap-4 text-sm text-muted-foreground\">\n <span>Coordinates: {selectedSite.coordinates}</span>\n <span>{selectedSite.itemCount} documented items</span>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n }\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 <Landmark className=\"h-6 w-6 text-amber-600\" /> Heritage Archive\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Explore and preserve cultural heritage sites from around the world\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardContent className=\"pt-6 text-center\">\n <Shield className=\"h-8 w-8 mx-auto text-emerald-600 mb-2\" />\n <p className=\"text-2xl font-bold\">\n {heritageSites.filter((s) => s.type === 'UNESCO World Heritage').length}\n </p>\n <p className=\"text-xs text-muted-foreground\">UNESCO Sites</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6 text-center\">\n <Eye className=\"h-8 w-8 mx-auto text-blue-600 mb-2\" />\n <p className=\"text-2xl font-bold\">\n {heritageSites.filter((s) => s.status === 'Active').length}\n </p>\n <p className=\"text-xs text-muted-foreground\">Active Sites</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6 text-center\">\n <AlertTriangle className=\"h-8 w-8 mx-auto text-red-600 mb-2\" />\n <p className=\"text-2xl font-bold\">\n {heritageSites.filter((s) => s.status === 'Endangered').length}\n </p>\n <p className=\"text-xs text-muted-foreground\">Endangered</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {heritageSites.map((site) => (\n <Card\n key={site.id}\n className=\"hover:shadow-md transition-shadow cursor-pointer\"\n onClick={() => setSelectedSiteId(site.id)}\n >\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <CardTitle className=\"text-lg\">{site.name}</CardTitle>\n <span\n className={`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${statusColors[site.status]}`}\n >\n {site.status}\n </span>\n </div>\n <p className=\"text-sm text-muted-foreground flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" /> {site.location}\n </p>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-muted-foreground line-clamp-2 mb-3\">{site.description}</p>\n <div className=\"flex items-center justify-between\">\n <Badge variant=\"outline\">{site.type}</Badge>\n <span className=\"text-xs text-muted-foreground\">{site.itemCount} items</span>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LearningPage.d.ts","sourceRoot":"","sources":["../../../src/theculturepost/pages/LearningPage.tsx"],"names":[],"mappings":"AAUA,wBAAgB,YAAY,4CA6H3B"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { useTheCulturePostStore as e } from "../store/theculturepostStore.js";
|
|
2
|
+
import { ArrowLeft as t, BookOpen as n, Clock as r, Star as i, Users as a } from "lucide-react";
|
|
3
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
+
import { Badge as c, Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/theculturepost/pages/LearningPage.tsx
|
|
6
|
+
var m = {
|
|
7
|
+
Beginner: "bg-green-100 text-green-800",
|
|
8
|
+
Intermediate: "bg-yellow-100 text-yellow-800",
|
|
9
|
+
Advanced: "bg-red-100 text-red-800"
|
|
10
|
+
};
|
|
11
|
+
function h() {
|
|
12
|
+
let { learningCourses: h, selectedCourseId: g, setSelectedCourseId: _ } = e(), v = h.find((e) => e.id === g);
|
|
13
|
+
return v ? /* @__PURE__ */ s("div", {
|
|
14
|
+
className: "space-y-6 p-6",
|
|
15
|
+
children: [/* @__PURE__ */ s(l, {
|
|
16
|
+
variant: "outline",
|
|
17
|
+
size: "sm",
|
|
18
|
+
onClick: () => _(null),
|
|
19
|
+
children: [/* @__PURE__ */ o(t, { className: "h-4 w-4 mr-2" }), " Back to Courses"]
|
|
20
|
+
}), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o(f, { children: /* @__PURE__ */ s("div", {
|
|
21
|
+
className: "flex items-start justify-between",
|
|
22
|
+
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o(p, {
|
|
23
|
+
className: "text-2xl",
|
|
24
|
+
children: v.title
|
|
25
|
+
}), /* @__PURE__ */ s("p", {
|
|
26
|
+
className: "text-muted-foreground mt-1",
|
|
27
|
+
children: ["by ", v.instructor]
|
|
28
|
+
})] }), /* @__PURE__ */ o("span", {
|
|
29
|
+
className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${m[v.level]}`,
|
|
30
|
+
children: v.level
|
|
31
|
+
})]
|
|
32
|
+
}) }), /* @__PURE__ */ s(d, {
|
|
33
|
+
className: "space-y-4",
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ o("p", {
|
|
36
|
+
className: "text-sm text-muted-foreground",
|
|
37
|
+
children: v.description
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ s("div", {
|
|
40
|
+
className: "grid grid-cols-2 md:grid-cols-4 gap-4",
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ s("div", {
|
|
43
|
+
className: "text-center p-3 bg-muted/50 rounded-lg",
|
|
44
|
+
children: [/* @__PURE__ */ o("p", {
|
|
45
|
+
className: "text-lg font-bold",
|
|
46
|
+
children: v.lessons
|
|
47
|
+
}), /* @__PURE__ */ o("p", {
|
|
48
|
+
className: "text-xs text-muted-foreground",
|
|
49
|
+
children: "Lessons"
|
|
50
|
+
})]
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ s("div", {
|
|
53
|
+
className: "text-center p-3 bg-muted/50 rounded-lg",
|
|
54
|
+
children: [/* @__PURE__ */ o("p", {
|
|
55
|
+
className: "text-lg font-bold",
|
|
56
|
+
children: v.duration
|
|
57
|
+
}), /* @__PURE__ */ o("p", {
|
|
58
|
+
className: "text-xs text-muted-foreground",
|
|
59
|
+
children: "Duration"
|
|
60
|
+
})]
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ s("div", {
|
|
63
|
+
className: "text-center p-3 bg-muted/50 rounded-lg",
|
|
64
|
+
children: [/* @__PURE__ */ o("p", {
|
|
65
|
+
className: "text-lg font-bold",
|
|
66
|
+
children: v.enrolled
|
|
67
|
+
}), /* @__PURE__ */ o("p", {
|
|
68
|
+
className: "text-xs text-muted-foreground",
|
|
69
|
+
children: "Enrolled"
|
|
70
|
+
})]
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ s("div", {
|
|
73
|
+
className: "text-center p-3 bg-muted/50 rounded-lg",
|
|
74
|
+
children: [/* @__PURE__ */ s("p", {
|
|
75
|
+
className: "text-lg font-bold flex items-center justify-center gap-1",
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ o(i, { className: "h-4 w-4 text-yellow-500" }),
|
|
78
|
+
" ",
|
|
79
|
+
v.rating
|
|
80
|
+
]
|
|
81
|
+
}), /* @__PURE__ */ o("p", {
|
|
82
|
+
className: "text-xs text-muted-foreground",
|
|
83
|
+
children: "Rating"
|
|
84
|
+
})]
|
|
85
|
+
})
|
|
86
|
+
]
|
|
87
|
+
}),
|
|
88
|
+
v.completionRate !== void 0 && /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ s("div", {
|
|
89
|
+
className: "flex justify-between text-sm mb-1",
|
|
90
|
+
children: [/* @__PURE__ */ o("span", {
|
|
91
|
+
className: "text-muted-foreground",
|
|
92
|
+
children: "Completion"
|
|
93
|
+
}), /* @__PURE__ */ s("span", {
|
|
94
|
+
className: "font-medium",
|
|
95
|
+
children: [v.completionRate, "%"]
|
|
96
|
+
})]
|
|
97
|
+
}), /* @__PURE__ */ o("div", {
|
|
98
|
+
className: "h-2 bg-muted rounded-full overflow-hidden",
|
|
99
|
+
children: /* @__PURE__ */ o("div", {
|
|
100
|
+
className: "h-full bg-primary rounded-full",
|
|
101
|
+
style: { width: `${v.completionRate}%` }
|
|
102
|
+
})
|
|
103
|
+
})] }),
|
|
104
|
+
/* @__PURE__ */ o(l, {
|
|
105
|
+
className: "w-full",
|
|
106
|
+
children: v.completionRate ? "Continue Learning" : "Enroll Now"
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
})] })]
|
|
110
|
+
}) : /* @__PURE__ */ s("div", {
|
|
111
|
+
className: "space-y-6 p-6",
|
|
112
|
+
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ s("h1", {
|
|
113
|
+
className: "text-2xl font-semibold flex items-center gap-2",
|
|
114
|
+
children: [/* @__PURE__ */ o(n, { className: "h-6 w-6 text-blue-600" }), " Cultural Learning Hub"]
|
|
115
|
+
}), /* @__PURE__ */ o("p", {
|
|
116
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
117
|
+
children: "Discover cultural knowledge through respectful education and immersive courses"
|
|
118
|
+
})] }), /* @__PURE__ */ o("div", {
|
|
119
|
+
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-2",
|
|
120
|
+
children: h.map((e) => /* @__PURE__ */ s(u, {
|
|
121
|
+
className: "hover:shadow-md transition-shadow cursor-pointer",
|
|
122
|
+
onClick: () => _(e.id),
|
|
123
|
+
children: [/* @__PURE__ */ o(f, {
|
|
124
|
+
className: "pb-3",
|
|
125
|
+
children: /* @__PURE__ */ s("div", {
|
|
126
|
+
className: "flex items-start justify-between",
|
|
127
|
+
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o(p, {
|
|
128
|
+
className: "text-lg",
|
|
129
|
+
children: e.title
|
|
130
|
+
}), /* @__PURE__ */ s("p", {
|
|
131
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
132
|
+
children: ["by ", e.instructor]
|
|
133
|
+
})] }), /* @__PURE__ */ o("span", {
|
|
134
|
+
className: `inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${m[e.level]}`,
|
|
135
|
+
children: e.level
|
|
136
|
+
})]
|
|
137
|
+
})
|
|
138
|
+
}), /* @__PURE__ */ s(d, { children: [
|
|
139
|
+
/* @__PURE__ */ o("p", {
|
|
140
|
+
className: "text-sm text-muted-foreground line-clamp-2 mb-3",
|
|
141
|
+
children: e.description
|
|
142
|
+
}),
|
|
143
|
+
/* @__PURE__ */ s("div", {
|
|
144
|
+
className: "flex items-center gap-4 text-sm text-muted-foreground flex-wrap",
|
|
145
|
+
children: [
|
|
146
|
+
/* @__PURE__ */ s("span", {
|
|
147
|
+
className: "flex items-center gap-1",
|
|
148
|
+
children: [
|
|
149
|
+
/* @__PURE__ */ o(r, { className: "h-3 w-3" }),
|
|
150
|
+
" ",
|
|
151
|
+
e.duration
|
|
152
|
+
]
|
|
153
|
+
}),
|
|
154
|
+
/* @__PURE__ */ s("span", {
|
|
155
|
+
className: "flex items-center gap-1",
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ o(a, { className: "h-3 w-3" }),
|
|
158
|
+
" ",
|
|
159
|
+
e.enrolled,
|
|
160
|
+
" enrolled"
|
|
161
|
+
]
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ s("span", {
|
|
164
|
+
className: "flex items-center gap-1",
|
|
165
|
+
children: [
|
|
166
|
+
/* @__PURE__ */ o(i, { className: "h-3 w-3 text-yellow-500" }),
|
|
167
|
+
" ",
|
|
168
|
+
e.rating
|
|
169
|
+
]
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
}),
|
|
173
|
+
/* @__PURE__ */ s("div", {
|
|
174
|
+
className: "flex items-center justify-between mt-3",
|
|
175
|
+
children: [/* @__PURE__ */ o(c, {
|
|
176
|
+
variant: "outline",
|
|
177
|
+
children: e.category
|
|
178
|
+
}), /* @__PURE__ */ s("span", {
|
|
179
|
+
className: "text-xs text-muted-foreground",
|
|
180
|
+
children: [e.lessons, " lessons"]
|
|
181
|
+
})]
|
|
182
|
+
})
|
|
183
|
+
] })]
|
|
184
|
+
}, e.id))
|
|
185
|
+
})]
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
//#endregion
|
|
189
|
+
export { h as LearningPage };
|
|
190
|
+
|
|
191
|
+
//# sourceMappingURL=LearningPage.js.map
|