@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,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,2 @@
1
+ export declare function EventsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EventsPage.d.ts.map
@@ -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,2 @@
1
+ export declare function HeritagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=HeritagePage.d.ts.map
@@ -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,2 @@
1
+ export declare function LearningPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=LearningPage.d.ts.map
@@ -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