@burdenoff/microfe-comradecircle 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 (54) hide show
  1. package/README.md +12 -0
  2. package/dist/comradecircle/ComradeCircleRoot.d.ts +5 -0
  3. package/dist/comradecircle/ComradeCircleRoot.d.ts.map +1 -0
  4. package/dist/comradecircle/ComradeCircleRoot.js +111 -0
  5. package/dist/comradecircle/ComradeCircleRoot.js.map +1 -0
  6. package/dist/comradecircle/ComradeCircleRoutes.d.ts +2 -0
  7. package/dist/comradecircle/ComradeCircleRoutes.d.ts.map +1 -0
  8. package/dist/comradecircle/ComradeCircleRoutes.js +43 -0
  9. package/dist/comradecircle/ComradeCircleRoutes.js.map +1 -0
  10. package/dist/comradecircle/index.d.ts +5 -0
  11. package/dist/comradecircle/index.d.ts.map +1 -0
  12. package/dist/comradecircle/index.js +3 -0
  13. package/dist/comradecircle/pages/CommunitiesPage.d.ts +2 -0
  14. package/dist/comradecircle/pages/CommunitiesPage.d.ts.map +1 -0
  15. package/dist/comradecircle/pages/CommunitiesPage.js +299 -0
  16. package/dist/comradecircle/pages/CommunitiesPage.js.map +1 -0
  17. package/dist/comradecircle/pages/CreatorPage.d.ts +2 -0
  18. package/dist/comradecircle/pages/CreatorPage.d.ts.map +1 -0
  19. package/dist/comradecircle/pages/CreatorPage.js +399 -0
  20. package/dist/comradecircle/pages/CreatorPage.js.map +1 -0
  21. package/dist/comradecircle/pages/DashboardPage.d.ts +2 -0
  22. package/dist/comradecircle/pages/DashboardPage.d.ts.map +1 -0
  23. package/dist/comradecircle/pages/DashboardPage.js +265 -0
  24. package/dist/comradecircle/pages/DashboardPage.js.map +1 -0
  25. package/dist/comradecircle/providers/ComradeCircleProvider.d.ts +6 -0
  26. package/dist/comradecircle/providers/ComradeCircleProvider.d.ts.map +1 -0
  27. package/dist/comradecircle/providers/ComradeCircleProvider.js +27 -0
  28. package/dist/comradecircle/providers/ComradeCircleProvider.js.map +1 -0
  29. package/dist/comradecircle/store/comradecircleStore.d.ts +28 -0
  30. package/dist/comradecircle/store/comradecircleStore.d.ts.map +1 -0
  31. package/dist/comradecircle/store/comradecircleStore.js +345 -0
  32. package/dist/comradecircle/store/comradecircleStore.js.map +1 -0
  33. package/dist/comradecircle/types/index.d.ts +162 -0
  34. package/dist/comradecircle/types/index.d.ts.map +1 -0
  35. package/dist/comradecircle/utils/cn.d.ts +4 -0
  36. package/dist/comradecircle/utils/cn.d.ts.map +1 -0
  37. package/dist/comradecircle/utils/navigation.d.ts +2 -0
  38. package/dist/comradecircle/utils/navigation.d.ts.map +1 -0
  39. package/dist/comradecircle/utils/navigation.js +8 -0
  40. package/dist/comradecircle/utils/navigation.js.map +1 -0
  41. package/dist/dev/main.d.ts +2 -0
  42. package/dist/dev/main.d.ts.map +1 -0
  43. package/dist/generated/global-operations.d.ts +2 -0
  44. package/dist/generated/global-operations.d.ts.map +1 -0
  45. package/dist/generated/global-types.d.ts +18199 -0
  46. package/dist/generated/global-types.d.ts.map +1 -0
  47. package/dist/generated/wspace-operations.d.ts +2 -0
  48. package/dist/generated/wspace-operations.d.ts.map +1 -0
  49. package/dist/generated/wspace-types.d.ts +43046 -0
  50. package/dist/generated/wspace-types.d.ts.map +1 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +5 -0
  54. package/package.json +107 -0
package/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # microfe-comradecircle
2
+
3
+ Part of the [Burdenoff](https://burdenoff.com) platform by
4
+ [AlgoShred](https://github.com/algoshred).
5
+
6
+ ## Getting Started
7
+
8
+ See `AGENTS.md` for development commands and architecture details.
9
+
10
+ ## License
11
+
12
+ Proprietary — Copyright Burdenoff Consultancy Services Pvt. Ltd.
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { ComradeCircleRootProps } from './types';
3
+
4
+ export declare const ComradeCircleRoot: FC<ComradeCircleRootProps>;
5
+ //# sourceMappingURL=ComradeCircleRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComradeCircleRoot.d.ts","sourceRoot":"","sources":["../../src/comradecircle/ComradeCircleRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAgBhC,OAAO,KAAK,EAAW,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAI/D,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAsGxD,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { ComradeCircleProvider as e } from "./providers/ComradeCircleProvider.js";
2
+ import { ComradeCircleRoutes as t } from "./ComradeCircleRoutes.js";
3
+ import { joinPath as n } from "./utils/navigation.js";
4
+ import { useEffect as r } from "react";
5
+ import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
6
+ import { Cookie as a, FileText as o, Home as s, LayoutDashboard as c, LogIn as l, Palette as u, ShieldCheck as d, UserPlus as f, Users as p } from "lucide-react";
7
+ import { jsx as m } from "react/jsx-runtime";
8
+ import { FeatureFlagProvider as h } from "@burdenoff/fe-libs/shared/feature-flags";
9
+ //#region src/comradecircle/ComradeCircleRoot.tsx
10
+ var g = (g) => {
11
+ let { registerNavItems: _, registerFooterItems: v, basePath: y = "/" } = g, { t: b } = i();
12
+ return r(() => {
13
+ if (_) return _({
14
+ id: "comradecircle",
15
+ label: b("comradecircle.nav.root", { defaultValue: "ComradeCircle" }),
16
+ path: y,
17
+ icon: /* @__PURE__ */ m(p, { size: 20 }),
18
+ order: 80,
19
+ group: "products",
20
+ children: [
21
+ {
22
+ id: "comradecircle-dashboard",
23
+ label: b("comradecircle.nav.dashboard", { defaultValue: "Dashboard" }),
24
+ path: y,
25
+ icon: /* @__PURE__ */ m(c, { size: 16 }),
26
+ order: 0
27
+ },
28
+ {
29
+ id: "comradecircle-home",
30
+ label: b("comradecircle.nav.home", { defaultValue: "Home" }),
31
+ path: n(y, "home"),
32
+ icon: /* @__PURE__ */ m(s, { size: 16 }),
33
+ order: 1
34
+ },
35
+ {
36
+ id: "comradecircle-communities",
37
+ label: b("comradecircle.nav.communities", { defaultValue: "Communities" }),
38
+ path: n(y, "communities"),
39
+ icon: /* @__PURE__ */ m(p, { size: 16 }),
40
+ order: 2
41
+ },
42
+ {
43
+ id: "comradecircle-creator",
44
+ label: b("comradecircle.nav.creatorHub", { defaultValue: "Creator Hub" }),
45
+ path: n(y, "creator"),
46
+ icon: /* @__PURE__ */ m(u, { size: 16 }),
47
+ order: 3
48
+ },
49
+ {
50
+ id: "comradecircle-login",
51
+ label: b("comradecircle.nav.login", { defaultValue: "Login" }),
52
+ path: n(y, "login"),
53
+ icon: /* @__PURE__ */ m(l, { size: 16 }),
54
+ order: 4
55
+ },
56
+ {
57
+ id: "comradecircle-signup",
58
+ label: b("comradecircle.nav.signup", { defaultValue: "Signup" }),
59
+ path: n(y, "signup"),
60
+ icon: /* @__PURE__ */ m(f, { size: 16 }),
61
+ order: 5
62
+ },
63
+ {
64
+ id: "comradecircle-privacy",
65
+ label: b("comradecircle.nav.privacy", { defaultValue: "Privacy" }),
66
+ path: n(y, "privacy"),
67
+ icon: /* @__PURE__ */ m(d, { size: 16 }),
68
+ order: 6
69
+ },
70
+ {
71
+ id: "comradecircle-terms",
72
+ label: b("comradecircle.nav.terms", { defaultValue: "Terms" }),
73
+ path: n(y, "terms"),
74
+ icon: /* @__PURE__ */ m(o, { size: 16 }),
75
+ order: 7
76
+ },
77
+ {
78
+ id: "comradecircle-cookies",
79
+ label: b("comradecircle.nav.cookies", { defaultValue: "Cookies" }),
80
+ path: n(y, "cookies"),
81
+ icon: /* @__PURE__ */ m(a, { size: 16 }),
82
+ order: 8
83
+ }
84
+ ]
85
+ });
86
+ }, [
87
+ _,
88
+ y,
89
+ b
90
+ ]), r(() => {
91
+ if (v) return v([{
92
+ id: "comradecircle-status",
93
+ label: b("comradecircle.footer.ready", { defaultValue: "ComradeCircle Ready" }),
94
+ type: "status",
95
+ section: "left",
96
+ order: 10
97
+ }]);
98
+ }, [v, b]), /* @__PURE__ */ m(h, {
99
+ workspaceId: null,
100
+ gateway: "global",
101
+ defaultEnabled: !0,
102
+ children: /* @__PURE__ */ m(e, {
103
+ ...g,
104
+ children: /* @__PURE__ */ m(t, {})
105
+ })
106
+ });
107
+ };
108
+ //#endregion
109
+ export { g as ComradeCircleRoot };
110
+
111
+ //# sourceMappingURL=ComradeCircleRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComradeCircleRoot.js","names":[],"sources":["../../src/comradecircle/ComradeCircleRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n LayoutDashboard,\n Home,\n Users,\n Palette,\n LogIn,\n UserPlus,\n ShieldCheck,\n FileText,\n Cookie,\n} from 'lucide-react';\nimport { ComradeCircleProvider } from './providers/ComradeCircleProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, ComradeCircleRootProps } from './types';\nimport { ComradeCircleRoutes } from './ComradeCircleRoutes';\nimport { joinPath } from './utils/navigation';\n\nexport const ComradeCircleRoot: FC<ComradeCircleRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'comradecircle',\n label: t('comradecircle.nav.root', { defaultValue: 'ComradeCircle' }),\n path: basePath,\n icon: <Users size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'comradecircle-dashboard',\n label: t('comradecircle.nav.dashboard', { defaultValue: 'Dashboard' }),\n path: basePath,\n icon: <LayoutDashboard size={16} />,\n order: 0,\n },\n {\n id: 'comradecircle-home',\n label: t('comradecircle.nav.home', { defaultValue: 'Home' }),\n path: joinPath(basePath, 'home'),\n icon: <Home size={16} />,\n order: 1,\n },\n {\n id: 'comradecircle-communities',\n label: t('comradecircle.nav.communities', { defaultValue: 'Communities' }),\n path: joinPath(basePath, 'communities'),\n icon: <Users size={16} />,\n order: 2,\n },\n {\n id: 'comradecircle-creator',\n label: t('comradecircle.nav.creatorHub', { defaultValue: 'Creator Hub' }),\n path: joinPath(basePath, 'creator'),\n icon: <Palette size={16} />,\n order: 3,\n },\n {\n id: 'comradecircle-login',\n label: t('comradecircle.nav.login', { defaultValue: 'Login' }),\n path: joinPath(basePath, 'login'),\n icon: <LogIn size={16} />,\n order: 4,\n },\n {\n id: 'comradecircle-signup',\n label: t('comradecircle.nav.signup', { defaultValue: 'Signup' }),\n path: joinPath(basePath, 'signup'),\n icon: <UserPlus size={16} />,\n order: 5,\n },\n {\n id: 'comradecircle-privacy',\n label: t('comradecircle.nav.privacy', { defaultValue: 'Privacy' }),\n path: joinPath(basePath, 'privacy'),\n icon: <ShieldCheck size={16} />,\n order: 6,\n },\n {\n id: 'comradecircle-terms',\n label: t('comradecircle.nav.terms', { defaultValue: 'Terms' }),\n path: joinPath(basePath, 'terms'),\n icon: <FileText size={16} />,\n order: 7,\n },\n {\n id: 'comradecircle-cookies',\n label: t('comradecircle.nav.cookies', { defaultValue: 'Cookies' }),\n path: joinPath(basePath, 'cookies'),\n icon: <Cookie size={16} />,\n order: 8,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'comradecircle-status',\n label: t('comradecircle.footer.ready', { defaultValue: 'ComradeCircle Ready' }),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <ComradeCircleProvider {...props}>\n <ComradeCircleRoutes />\n </ComradeCircleProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;;AAoBA,IAAa,KAAiD,MAAU;CACtE,IAAM,EAAE,qBAAkB,wBAAqB,cAAW,QAAQ,GAC5D,EAAE,SAAM,GAAS;AA6FvB,QA3FA,QAAgB;AACT,QA0EL,QAAO,EAzEkB;GACvB,IAAI;GACJ,OAAO,EAAE,0BAA0B,EAAE,cAAc,iBAAiB,CAAC;GACrE,MAAM;GACN,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;GACzB,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO,EAAE,+BAA+B,EAAE,cAAc,aAAa,CAAC;KACtE,MAAM;KACN,MAAM,kBAAC,GAAD,EAAiB,MAAM,IAAM,CAAA;KACnC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,0BAA0B,EAAE,cAAc,QAAQ,CAAC;KAC5D,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,iCAAiC,EAAE,cAAc,eAAe,CAAC;KAC1E,MAAM,EAAS,GAAU,cAAc;KACvC,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,gCAAgC,EAAE,cAAc,eAAe,CAAC;KACzE,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA;KAC3B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,2BAA2B,EAAE,cAAc,SAAS,CAAC;KAC9D,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,4BAA4B,EAAE,cAAc,UAAU,CAAC;KAChE,MAAM,EAAS,GAAU,SAAS;KAClC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,6BAA6B,EAAE,cAAc,WAAW,CAAC;KAClE,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA;KAC/B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,2BAA2B,EAAE,cAAc,SAAS,CAAC;KAC9D,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAE,6BAA6B,EAAE,cAAc,WAAW,CAAC;KAClE,MAAM,EAAS,GAAU,UAAU;KACnC,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;KAC1B,OAAO;KACR;IACF;GACF,CAC+B;IAC/B;EAAC;EAAkB;EAAU;EAAE,CAAC,EAEnC,QAAgB;AACT,QACL,QAAO,EAAoB,CACzB;GACE,IAAI;GACJ,OAAO,EAAE,8BAA8B,EAAE,cAAc,uBAAuB,CAAC;GAC/E,MAAM;GACN,SAAS;GACT,OAAO;GACR,CACF,CAAC;IACD,CAAC,GAAqB,EAAE,CAAC,EAG1B,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAuB,GAAI;aACzB,kBAAC,GAAD,EAAuB,CAAA;GACD,CAAA;EACJ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function ComradeCircleRoutes(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ComradeCircleRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComradeCircleRoutes.d.ts","sourceRoot":"","sources":["../../src/comradecircle/ComradeCircleRoutes.tsx"],"names":[],"mappings":"AAoBA,wBAAgB,mBAAmB,4CAWlC"}
@@ -0,0 +1,43 @@
1
+ import { DashboardPage as e } from "./pages/DashboardPage.js";
2
+ import { Suspense as t, lazy as n } from "react";
3
+ import { Loader2 as r } from "lucide-react";
4
+ import { Navigate as i, Route as a, Routes as o } from "react-router-dom";
5
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
+ //#region src/comradecircle/ComradeCircleRoutes.tsx
7
+ var l = n(() => import("./pages/CreatorPage.js").then((e) => ({ default: e.CreatorPage }))), u = n(() => import("./pages/CommunitiesPage.js").then((e) => ({ default: e.CommunitiesPage })));
8
+ function d() {
9
+ return /* @__PURE__ */ s("div", {
10
+ className: "flex min-h-[320px] items-center justify-center",
11
+ children: /* @__PURE__ */ s(r, { className: "h-8 w-8 animate-spin text-primary" })
12
+ });
13
+ }
14
+ function f() {
15
+ return /* @__PURE__ */ s(t, {
16
+ fallback: /* @__PURE__ */ s(d, {}),
17
+ children: /* @__PURE__ */ c(o, { children: [
18
+ /* @__PURE__ */ s(a, {
19
+ index: !0,
20
+ element: /* @__PURE__ */ s(e, {})
21
+ }),
22
+ /* @__PURE__ */ s(a, {
23
+ path: "creator",
24
+ element: /* @__PURE__ */ s(l, {})
25
+ }),
26
+ /* @__PURE__ */ s(a, {
27
+ path: "communities",
28
+ element: /* @__PURE__ */ s(u, {})
29
+ }),
30
+ /* @__PURE__ */ s(a, {
31
+ path: "*",
32
+ element: /* @__PURE__ */ s(i, {
33
+ to: "",
34
+ replace: !0
35
+ })
36
+ })
37
+ ] })
38
+ });
39
+ }
40
+ //#endregion
41
+ export { f as ComradeCircleRoutes };
42
+
43
+ //# sourceMappingURL=ComradeCircleRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComradeCircleRoutes.js","names":[],"sources":["../../src/comradecircle/ComradeCircleRoutes.tsx"],"sourcesContent":["import { lazy, Suspense } from 'react';\nimport { Navigate, Route, Routes } from 'react-router-dom';\nimport { Loader2 } from 'lucide-react';\nimport { DashboardPage as IndexPage } from './pages/DashboardPage';\n\nconst CreatorPage = lazy(() =>\n import('./pages/CreatorPage').then((m) => ({ default: m.CreatorPage }))\n);\nconst CommunitiesPage = lazy(() =>\n import('./pages/CommunitiesPage').then((m) => ({ default: m.CommunitiesPage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[320px] items-center justify-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-primary\" />\n </div>\n );\n}\n\nexport function ComradeCircleRoutes() {\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route index element={<IndexPage />} />\n <Route path=\"creator\" element={<CreatorPage />} />\n <Route path=\"communities\" element={<CommunitiesPage />} />\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":";;;;;;AAKA,IAAM,IAAc,QAClB,OAAO,0BAAuB,MAAM,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CACxE,EACK,IAAkB,QACtB,OAAO,8BAA2B,MAAM,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAChF;AAED,SAAS,IAAa;AACpB,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,WAAU,qCAAsC,CAAA;EACrD,CAAA;;AAIV,SAAgB,IAAsB;AACpC,QACE,kBAAC,GAAD;EAAU,UAAU,kBAAC,GAAD,EAAc,CAAA;YAChC,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IAAO,OAAA;IAAM,SAAS,kBAAC,GAAD,EAAa,CAAA;IAAI,CAAA;GACvC,kBAAC,GAAD;IAAO,MAAK;IAAU,SAAS,kBAAC,GAAD,EAAe,CAAA;IAAI,CAAA;GAClD,kBAAC,GAAD;IAAO,MAAK;IAAc,SAAS,kBAAC,GAAD,EAAmB,CAAA;IAAI,CAAA;GAC1D,kBAAC,GAAD;IAAO,MAAK;IAAI,SAAS,kBAAC,GAAD;KAAU,IAAG;KAAG,SAAA;KAAU,CAAA;IAAI,CAAA;GAChD,EAAA,CAAA;EACA,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { ComradeCircleRoot } from './ComradeCircleRoot';
2
+ export type { ComradeCircleRootProps, NavItem, FooterItem } from './types';
3
+ export { useComradeCircle } from './providers/ComradeCircleProvider';
4
+ export { useComradeCircleStore } from './store/comradecircleStore';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/comradecircle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import "./providers/ComradeCircleProvider.js";
2
+ import "./store/comradecircleStore.js";
3
+ import "./ComradeCircleRoot.js";
@@ -0,0 +1,2 @@
1
+ export declare function CommunitiesPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CommunitiesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommunitiesPage.d.ts","sourceRoot":"","sources":["../../../src/comradecircle/pages/CommunitiesPage.tsx"],"names":[],"mappings":"AAkDA,wBAAgB,eAAe,4CA6S9B"}
@@ -0,0 +1,299 @@
1
+ import { useComradeCircleStore as e } from "../store/comradecircleStore.js";
2
+ import { useI18n as t } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { Crown as n, Eye as r, Globe as i, Lock as a, MessageCircle as o, MoreVertical as s, Plus as c, Search as l, Shield as u, TrendingUp as d, UserPlus as f, Users as p } from "lucide-react";
4
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
5
+ import { Badge as g, Button as _, Card as v, CardContent as y, CardDescription as b, CardHeader as x, CardTitle as S, Input as C } from "@burdenoff/fe-libs/ui";
6
+ //#region src/comradecircle/pages/CommunitiesPage.tsx
7
+ function w(e) {
8
+ switch (e) {
9
+ case "private": return a;
10
+ case "premium": return n;
11
+ default: return i;
12
+ }
13
+ }
14
+ function T(e) {
15
+ switch (e) {
16
+ case "private": return "bg-red-500/10 text-red-600";
17
+ case "premium": return "bg-amber-500/10 text-amber-600";
18
+ default: return "bg-emerald-500/10 text-emerald-600";
19
+ }
20
+ }
21
+ function E() {
22
+ let { t: i } = t(), { communities: a, communityStats: E, communityFilter: D, communitySearchQuery: O, setCommunityFilter: k, setCommunitySearchQuery: A } = e(), j = a.filter((e) => {
23
+ if (O && !e.name.toLowerCase().includes(O.toLowerCase()) && !e.description.toLowerCase().includes(O.toLowerCase())) return !1;
24
+ switch (D) {
25
+ case "owned": return e.isOwner;
26
+ case "moderated": return e.isModerator;
27
+ case "member": return e.isMember && !e.isOwner && !e.isModerator;
28
+ default: return !0;
29
+ }
30
+ }), M = {
31
+ all: i("comradecircle.communities.filters.all", { defaultValue: "All" }),
32
+ owned: i("comradecircle.communities.filters.owned", { defaultValue: "Owned" }),
33
+ moderated: i("comradecircle.communities.filters.moderated", { defaultValue: "Moderated" }),
34
+ member: i("comradecircle.communities.filters.member", { defaultValue: "Member" })
35
+ };
36
+ return /* @__PURE__ */ h("div", {
37
+ className: "space-y-6 p-6",
38
+ children: [
39
+ /* @__PURE__ */ h("div", {
40
+ className: "flex flex-col sm:flex-row sm:items-center sm:justify-between",
41
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
42
+ className: "text-3xl font-bold",
43
+ children: i("comradecircle.communities.title", { defaultValue: "Communities" })
44
+ }), /* @__PURE__ */ m("p", {
45
+ className: "text-muted-foreground mt-1",
46
+ children: i("comradecircle.communities.subtitle", { defaultValue: "Manage and discover communities that match your interests" })
47
+ })] }), /* @__PURE__ */ h(_, { children: [/* @__PURE__ */ m(c, { className: "w-4 h-4 mr-2" }), i("comradecircle.communities.actions.createCommunity", { defaultValue: "Create Community" })] })]
48
+ }),
49
+ /* @__PURE__ */ h("div", {
50
+ className: "grid grid-cols-1 md:grid-cols-4 gap-4",
51
+ children: [
52
+ /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
53
+ className: "p-4",
54
+ children: /* @__PURE__ */ h("div", {
55
+ className: "flex items-center justify-between",
56
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
57
+ className: "text-sm font-medium text-muted-foreground",
58
+ children: i("comradecircle.communities.stats.totalCommunities", { defaultValue: "Total Communities" })
59
+ }), /* @__PURE__ */ m("p", {
60
+ className: "text-2xl font-bold",
61
+ children: E.totalCommunities
62
+ })] }), /* @__PURE__ */ m(p, { className: "h-8 w-8 text-blue-600" })]
63
+ })
64
+ }) }),
65
+ /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
66
+ className: "p-4",
67
+ children: /* @__PURE__ */ h("div", {
68
+ className: "flex items-center justify-between",
69
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
70
+ className: "text-sm font-medium text-muted-foreground",
71
+ children: i("comradecircle.communities.stats.communitiesOwned", { defaultValue: "Communities Owned" })
72
+ }), /* @__PURE__ */ m("p", {
73
+ className: "text-2xl font-bold",
74
+ children: E.ownedCommunities
75
+ })] }), /* @__PURE__ */ m(n, { className: "h-8 w-8 text-amber-500" })]
76
+ })
77
+ }) }),
78
+ /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
79
+ className: "p-4",
80
+ children: /* @__PURE__ */ h("div", {
81
+ className: "flex items-center justify-between",
82
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
83
+ className: "text-sm font-medium text-muted-foreground",
84
+ children: i("comradecircle.communities.stats.totalMembers", { defaultValue: "Total Members" })
85
+ }), /* @__PURE__ */ m("p", {
86
+ className: "text-2xl font-bold",
87
+ children: E.totalMembers.toLocaleString()
88
+ })] }), /* @__PURE__ */ m(f, { className: "h-8 w-8 text-emerald-600" })]
89
+ })
90
+ }) }),
91
+ /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
92
+ className: "p-4",
93
+ children: /* @__PURE__ */ h("div", {
94
+ className: "flex items-center justify-between",
95
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
96
+ className: "text-sm font-medium text-muted-foreground",
97
+ children: i("comradecircle.communities.stats.weeklyGrowth", { defaultValue: "Weekly Growth" })
98
+ }), /* @__PURE__ */ h("p", {
99
+ className: "text-2xl font-bold",
100
+ children: [
101
+ "+",
102
+ E.weeklyGrowth,
103
+ "%"
104
+ ]
105
+ })] }), /* @__PURE__ */ m(d, { className: "h-8 w-8 text-violet-600" })]
106
+ })
107
+ }) })
108
+ ]
109
+ }),
110
+ /* @__PURE__ */ h("div", {
111
+ className: "flex flex-col sm:flex-row gap-4",
112
+ children: [/* @__PURE__ */ h("div", {
113
+ className: "flex-1 relative",
114
+ children: [/* @__PURE__ */ m(l, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ m(C, {
115
+ placeholder: i("comradecircle.communities.search.placeholder", { defaultValue: "Search communities..." }),
116
+ className: "pl-10",
117
+ value: O,
118
+ onChange: (e) => A(e.target.value)
119
+ })]
120
+ }), /* @__PURE__ */ m("div", {
121
+ className: "flex items-center space-x-2",
122
+ children: [
123
+ "all",
124
+ "owned",
125
+ "moderated",
126
+ "member"
127
+ ].map((e) => /* @__PURE__ */ h(_, {
128
+ variant: D === e ? "default" : "outline",
129
+ size: "sm",
130
+ onClick: () => k(e),
131
+ children: [
132
+ e === "owned" && /* @__PURE__ */ m(n, { className: "w-3 h-3 mr-1" }),
133
+ e === "moderated" && /* @__PURE__ */ m(u, { className: "w-3 h-3 mr-1" }),
134
+ e === "member" && /* @__PURE__ */ m(p, { className: "w-3 h-3 mr-1" }),
135
+ M[e]
136
+ ]
137
+ }, e))
138
+ })]
139
+ }),
140
+ /* @__PURE__ */ m("div", {
141
+ className: "grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6",
142
+ children: j.map((e) => {
143
+ let t = w(e.type);
144
+ return /* @__PURE__ */ h(v, {
145
+ className: "hover:shadow-lg transition-shadow",
146
+ children: [/* @__PURE__ */ m(x, {
147
+ className: "pb-3",
148
+ children: /* @__PURE__ */ h("div", {
149
+ className: "flex items-start justify-between",
150
+ children: [/* @__PURE__ */ h("div", {
151
+ className: "flex items-center space-x-3",
152
+ children: [/* @__PURE__ */ m("div", {
153
+ className: "w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center text-lg font-bold text-primary",
154
+ children: e.name.charAt(0)
155
+ }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m(S, {
156
+ className: "text-lg",
157
+ children: e.name
158
+ }), /* @__PURE__ */ h("div", {
159
+ className: "flex items-center space-x-2 mt-1",
160
+ children: [/* @__PURE__ */ m(g, {
161
+ variant: "secondary",
162
+ className: "text-xs",
163
+ children: e.category
164
+ }), /* @__PURE__ */ m("div", {
165
+ className: `p-1 rounded-full ${T(e.type)}`,
166
+ children: /* @__PURE__ */ m(t, { className: "h-3 w-3" })
167
+ })]
168
+ })] })]
169
+ }), /* @__PURE__ */ h("div", {
170
+ className: "flex items-center space-x-2",
171
+ children: [
172
+ e.isOwner && /* @__PURE__ */ m(n, { className: "h-4 w-4 text-amber-500" }),
173
+ e.isModerator && /* @__PURE__ */ m(u, { className: "h-4 w-4 text-blue-600" }),
174
+ /* @__PURE__ */ m(_, {
175
+ variant: "ghost",
176
+ size: "sm",
177
+ children: /* @__PURE__ */ m(s, { className: "h-4 w-4" })
178
+ })
179
+ ]
180
+ })]
181
+ })
182
+ }), /* @__PURE__ */ h(y, { children: [
183
+ /* @__PURE__ */ m(b, {
184
+ className: "text-sm mb-4 line-clamp-2",
185
+ children: e.description
186
+ }),
187
+ /* @__PURE__ */ h("div", {
188
+ className: "grid grid-cols-2 gap-3 mb-4",
189
+ children: [
190
+ /* @__PURE__ */ h("div", {
191
+ className: "flex items-center space-x-2 text-sm text-muted-foreground",
192
+ children: [/* @__PURE__ */ m(p, { className: "h-4 w-4" }), /* @__PURE__ */ m("span", { children: e.memberCount.toLocaleString() })]
193
+ }),
194
+ /* @__PURE__ */ h("div", {
195
+ className: "flex items-center space-x-2 text-sm text-muted-foreground",
196
+ children: [/* @__PURE__ */ m(r, { className: "h-4 w-4" }), /* @__PURE__ */ h("span", { children: [
197
+ e.stats.onlineMembers,
198
+ " ",
199
+ i("comradecircle.communities.community.online", { defaultValue: "online" })
200
+ ] })]
201
+ }),
202
+ /* @__PURE__ */ h("div", {
203
+ className: "flex items-center space-x-2 text-sm text-muted-foreground",
204
+ children: [/* @__PURE__ */ m(o, { className: "h-4 w-4" }), /* @__PURE__ */ m("span", { children: e.stats.totalMessages.toLocaleString() })]
205
+ }),
206
+ /* @__PURE__ */ h("div", {
207
+ className: "flex items-center space-x-2 text-sm text-muted-foreground",
208
+ children: [/* @__PURE__ */ m(d, { className: "h-4 w-4" }), /* @__PURE__ */ h("span", { children: [
209
+ "+",
210
+ e.stats.weeklyGrowth,
211
+ "%",
212
+ " ",
213
+ i("comradecircle.communities.community.week", { defaultValue: "week" })
214
+ ] })]
215
+ })
216
+ ]
217
+ }),
218
+ /* @__PURE__ */ h("div", {
219
+ className: "flex flex-wrap gap-1 mb-4",
220
+ children: [e.features.slice(0, 3).map((e) => /* @__PURE__ */ m(g, {
221
+ variant: "outline",
222
+ className: "text-xs",
223
+ children: e
224
+ }, e)), e.features.length > 3 && /* @__PURE__ */ h(g, {
225
+ variant: "outline",
226
+ className: "text-xs",
227
+ children: [
228
+ "+",
229
+ e.features.length - 3,
230
+ " ",
231
+ i("comradecircle.communities.community.more", { defaultValue: "more" })
232
+ ]
233
+ })]
234
+ }),
235
+ /* @__PURE__ */ h("div", {
236
+ className: "flex items-center justify-between",
237
+ children: [/* @__PURE__ */ h("div", {
238
+ className: "flex items-center space-x-2",
239
+ children: [e.price && /* @__PURE__ */ m(g, {
240
+ className: "text-xs",
241
+ children: e.price
242
+ }), e.unreadMessages && /* @__PURE__ */ h(g, {
243
+ variant: "destructive",
244
+ className: "text-xs",
245
+ children: [
246
+ e.unreadMessages,
247
+ " ",
248
+ i("comradecircle.communities.community.new", { defaultValue: "new" })
249
+ ]
250
+ })]
251
+ }), /* @__PURE__ */ h("div", {
252
+ className: "flex space-x-2",
253
+ children: [/* @__PURE__ */ h(_, {
254
+ size: "sm",
255
+ variant: "outline",
256
+ children: [/* @__PURE__ */ m(o, { className: "h-3 w-3 mr-1" }), i("comradecircle.communities.actions.chat", { defaultValue: "Chat" })]
257
+ }), /* @__PURE__ */ m(_, {
258
+ size: "sm",
259
+ children: e.isOwner ? i("comradecircle.communities.actions.manage", { defaultValue: "Manage" }) : i("comradecircle.communities.actions.join", { defaultValue: "Join" })
260
+ })]
261
+ })]
262
+ }),
263
+ /* @__PURE__ */ m("div", {
264
+ className: "mt-3 pt-3 border-t border-border",
265
+ children: /* @__PURE__ */ h("p", {
266
+ className: "text-xs text-muted-foreground",
267
+ children: [
268
+ i("comradecircle.communities.community.lastActivity", { defaultValue: "Last activity:" }),
269
+ " ",
270
+ e.lastActivity
271
+ ]
272
+ })
273
+ })
274
+ ] })]
275
+ }, e.id);
276
+ })
277
+ }),
278
+ j.length === 0 && /* @__PURE__ */ h("div", {
279
+ className: "text-center py-12",
280
+ children: [
281
+ /* @__PURE__ */ m(p, { className: "h-12 w-12 text-muted-foreground mx-auto mb-4" }),
282
+ /* @__PURE__ */ m("h3", {
283
+ className: "text-lg font-semibold mb-2",
284
+ children: i("comradecircle.communities.empty.title", { defaultValue: "No communities found" })
285
+ }),
286
+ /* @__PURE__ */ m("p", {
287
+ className: "text-muted-foreground mb-4",
288
+ children: O ? `${i("comradecircle.communities.empty.noMatchPrefix", { defaultValue: "No communities match" })} "${O}"` : i("comradecircle.communities.empty.noFilter", { defaultValue: "No communities in this filter" })
289
+ }),
290
+ /* @__PURE__ */ h(_, { children: [/* @__PURE__ */ m(c, { className: "w-4 h-4 mr-2" }), i("comradecircle.communities.empty.createFirst", { defaultValue: "Create Your First Community" })] })
291
+ ]
292
+ })
293
+ ]
294
+ });
295
+ }
296
+ //#endregion
297
+ export { E as CommunitiesPage };
298
+
299
+ //# sourceMappingURL=CommunitiesPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommunitiesPage.js","names":[],"sources":["../../../src/comradecircle/pages/CommunitiesPage.tsx"],"sourcesContent":["import {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Badge,\n Button,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Plus,\n Users,\n MessageCircle,\n Crown,\n TrendingUp,\n Shield,\n Globe,\n Lock,\n MoreVertical,\n UserPlus,\n Eye,\n Search,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useComradeCircleStore } from '../store/comradecircleStore';\nimport type { CommunityType } from '../types';\n\nfunction getTypeIcon(type: CommunityType) {\n switch (type) {\n case 'private':\n return Lock;\n case 'premium':\n return Crown;\n default:\n return Globe;\n }\n}\n\nfunction getTypeColor(type: CommunityType) {\n switch (type) {\n case 'private':\n return 'bg-red-500/10 text-red-600';\n case 'premium':\n return 'bg-amber-500/10 text-amber-600';\n default:\n return 'bg-emerald-500/10 text-emerald-600';\n }\n}\n\nexport function CommunitiesPage() {\n const { t } = useI18n();\n const {\n communities,\n communityStats,\n communityFilter,\n communitySearchQuery,\n setCommunityFilter,\n setCommunitySearchQuery,\n } = useComradeCircleStore();\n\n const filteredCommunities = communities.filter((community) => {\n if (\n communitySearchQuery &&\n !community.name.toLowerCase().includes(communitySearchQuery.toLowerCase()) &&\n !community.description.toLowerCase().includes(communitySearchQuery.toLowerCase())\n ) {\n return false;\n }\n switch (communityFilter) {\n case 'owned':\n return community.isOwner;\n case 'moderated':\n return community.isModerator;\n case 'member':\n return community.isMember && !community.isOwner && !community.isModerator;\n default:\n return true;\n }\n });\n\n const filterLabelByValue = {\n all: t('comradecircle.communities.filters.all', { defaultValue: 'All' }),\n owned: t('comradecircle.communities.filters.owned', { defaultValue: 'Owned' }),\n moderated: t('comradecircle.communities.filters.moderated', { defaultValue: 'Moderated' }),\n member: t('comradecircle.communities.filters.member', { defaultValue: 'Member' }),\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Header */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold\">\n {t('comradecircle.communities.title', { defaultValue: 'Communities' })}\n </h1>\n <p className=\"text-muted-foreground mt-1\">\n {t('comradecircle.communities.subtitle', {\n defaultValue: 'Manage and discover communities that match your interests',\n })}\n </p>\n </div>\n <Button>\n <Plus className=\"w-4 h-4 mr-2\" />\n {t('comradecircle.communities.actions.createCommunity', {\n defaultValue: 'Create Community',\n })}\n </Button>\n </div>\n\n {/* Stats Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('comradecircle.communities.stats.totalCommunities', {\n defaultValue: 'Total Communities',\n })}\n </p>\n <p className=\"text-2xl font-bold\">{communityStats.totalCommunities}</p>\n </div>\n <Users className=\"h-8 w-8 text-blue-600\" />\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('comradecircle.communities.stats.communitiesOwned', {\n defaultValue: 'Communities Owned',\n })}\n </p>\n <p className=\"text-2xl font-bold\">{communityStats.ownedCommunities}</p>\n </div>\n <Crown className=\"h-8 w-8 text-amber-500\" />\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('comradecircle.communities.stats.totalMembers', {\n defaultValue: 'Total Members',\n })}\n </p>\n <p className=\"text-2xl font-bold\">{communityStats.totalMembers.toLocaleString()}</p>\n </div>\n <UserPlus className=\"h-8 w-8 text-emerald-600\" />\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('comradecircle.communities.stats.weeklyGrowth', {\n defaultValue: 'Weekly Growth',\n })}\n </p>\n <p className=\"text-2xl font-bold\">+{communityStats.weeklyGrowth}%</p>\n </div>\n <TrendingUp className=\"h-8 w-8 text-violet-600\" />\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Search and Filters */}\n <div className=\"flex flex-col sm:flex-row 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={t('comradecircle.communities.search.placeholder', {\n defaultValue: 'Search communities...',\n })}\n className=\"pl-10\"\n value={communitySearchQuery}\n onChange={(e) => setCommunitySearchQuery(e.target.value)}\n />\n </div>\n <div className=\"flex items-center space-x-2\">\n {(['all', 'owned', 'moderated', 'member'] as const).map((f) => (\n <Button\n key={f}\n variant={communityFilter === f ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setCommunityFilter(f)}\n >\n {f === 'owned' && <Crown className=\"w-3 h-3 mr-1\" />}\n {f === 'moderated' && <Shield className=\"w-3 h-3 mr-1\" />}\n {f === 'member' && <Users className=\"w-3 h-3 mr-1\" />}\n {filterLabelByValue[f]}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Communities Grid */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6\">\n {filteredCommunities.map((community) => {\n const TypeIcon = getTypeIcon(community.type);\n return (\n <Card key={community.id} className=\"hover:shadow-lg transition-shadow\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center text-lg font-bold text-primary\">\n {community.name.charAt(0)}\n </div>\n <div>\n <CardTitle className=\"text-lg\">{community.name}</CardTitle>\n <div className=\"flex items-center space-x-2 mt-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {community.category}\n </Badge>\n <div className={`p-1 rounded-full ${getTypeColor(community.type)}`}>\n <TypeIcon className=\"h-3 w-3\" />\n </div>\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-2\">\n {community.isOwner && <Crown className=\"h-4 w-4 text-amber-500\" />}\n {community.isModerator && <Shield className=\"h-4 w-4 text-blue-600\" />}\n <Button variant=\"ghost\" size=\"sm\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </CardHeader>\n\n <CardContent>\n <CardDescription className=\"text-sm mb-4 line-clamp-2\">\n {community.description}\n </CardDescription>\n\n {/* Community Stats */}\n <div className=\"grid grid-cols-2 gap-3 mb-4\">\n <div className=\"flex items-center space-x-2 text-sm text-muted-foreground\">\n <Users className=\"h-4 w-4\" />\n <span>{community.memberCount.toLocaleString()}</span>\n </div>\n <div className=\"flex items-center space-x-2 text-sm text-muted-foreground\">\n <Eye className=\"h-4 w-4\" />\n <span>\n {community.stats.onlineMembers}{' '}\n {t('comradecircle.communities.community.online', { defaultValue: 'online' })}\n </span>\n </div>\n <div className=\"flex items-center space-x-2 text-sm text-muted-foreground\">\n <MessageCircle className=\"h-4 w-4\" />\n <span>{community.stats.totalMessages.toLocaleString()}</span>\n </div>\n <div className=\"flex items-center space-x-2 text-sm text-muted-foreground\">\n <TrendingUp className=\"h-4 w-4\" />\n <span>\n +{community.stats.weeklyGrowth}%{' '}\n {t('comradecircle.communities.community.week', { defaultValue: 'week' })}\n </span>\n </div>\n </div>\n\n {/* Features */}\n <div className=\"flex flex-wrap gap-1 mb-4\">\n {community.features.slice(0, 3).map((feature) => (\n <Badge key={feature} variant=\"outline\" className=\"text-xs\">\n {feature}\n </Badge>\n ))}\n {community.features.length > 3 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n +{community.features.length - 3}{' '}\n {t('comradecircle.communities.community.more', { defaultValue: 'more' })}\n </Badge>\n )}\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-2\">\n {community.price && <Badge className=\"text-xs\">{community.price}</Badge>}\n {community.unreadMessages && (\n <Badge variant=\"destructive\" className=\"text-xs\">\n {community.unreadMessages}{' '}\n {t('comradecircle.communities.community.new', { defaultValue: 'new' })}\n </Badge>\n )}\n </div>\n <div className=\"flex space-x-2\">\n <Button size=\"sm\" variant=\"outline\">\n <MessageCircle className=\"h-3 w-3 mr-1\" />\n {t('comradecircle.communities.actions.chat', { defaultValue: 'Chat' })}\n </Button>\n <Button size=\"sm\">\n {community.isOwner\n ? t('comradecircle.communities.actions.manage', { defaultValue: 'Manage' })\n : t('comradecircle.communities.actions.join', { defaultValue: 'Join' })}\n </Button>\n </div>\n </div>\n\n <div className=\"mt-3 pt-3 border-t border-border\">\n <p className=\"text-xs text-muted-foreground\">\n {t('comradecircle.communities.community.lastActivity', {\n defaultValue: 'Last activity:',\n })}{' '}\n {community.lastActivity}\n </p>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n\n {/* Empty State */}\n {filteredCommunities.length === 0 && (\n <div className=\"text-center py-12\">\n <Users className=\"h-12 w-12 text-muted-foreground mx-auto mb-4\" />\n <h3 className=\"text-lg font-semibold mb-2\">\n {t('comradecircle.communities.empty.title', { defaultValue: 'No communities found' })}\n </h3>\n <p className=\"text-muted-foreground mb-4\">\n {communitySearchQuery\n ? `${t('comradecircle.communities.empty.noMatchPrefix', {\n defaultValue: 'No communities match',\n })} \"${communitySearchQuery}\"`\n : t('comradecircle.communities.empty.noFilter', {\n defaultValue: 'No communities in this filter',\n })}\n </p>\n <Button>\n <Plus className=\"w-4 h-4 mr-2\" />\n {t('comradecircle.communities.empty.createFirst', {\n defaultValue: 'Create Your First Community',\n })}\n </Button>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function CreatorPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CreatorPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreatorPage.d.ts","sourceRoot":"","sources":["../../../src/comradecircle/pages/CreatorPage.tsx"],"names":[],"mappings":"AAmDA,wBAAgB,WAAW,4CA0a1B"}