@armoyu/ui 1.0.2 → 1.0.3

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 (116) hide show
  1. package/dist/app/Providers.d.ts +6 -0
  2. package/dist/app/Providers.d.ts.map +1 -0
  3. package/dist/app/Providers.js +37 -0
  4. package/dist/app/Providers.js.map +1 -0
  5. package/dist/app/api/proxy/[...path]/route.js +10 -2
  6. package/dist/app/api/proxy/[...path]/route.js.map +1 -1
  7. package/dist/app/layout.d.ts.map +1 -1
  8. package/dist/app/layout.js +15 -19
  9. package/dist/app/layout.js.map +1 -1
  10. package/dist/components/modules/auth/PostCard.d.ts +2 -1
  11. package/dist/components/modules/auth/PostCard.d.ts.map +1 -1
  12. package/dist/components/modules/auth/PostCard.js +115 -112
  13. package/dist/components/modules/auth/PostCard.js.map +1 -1
  14. package/dist/components/modules/auth/SidebarLeft.d.ts.map +1 -1
  15. package/dist/components/modules/auth/SidebarLeft.js +8 -40
  16. package/dist/components/modules/auth/SidebarLeft.js.map +1 -1
  17. package/dist/components/modules/auth/widgets/EconomyWidget.d.ts +2 -0
  18. package/dist/components/modules/auth/widgets/EconomyWidget.d.ts.map +1 -0
  19. package/dist/components/modules/auth/widgets/EconomyWidget.js +38 -0
  20. package/dist/components/modules/auth/widgets/EconomyWidget.js.map +1 -0
  21. package/dist/components/modules/auth/widgets/LeagueWidget.d.ts +2 -0
  22. package/dist/components/modules/auth/widgets/LeagueWidget.d.ts.map +1 -0
  23. package/dist/components/modules/auth/widgets/LeagueWidget.js +36 -0
  24. package/dist/components/modules/auth/widgets/LeagueWidget.js.map +1 -0
  25. package/dist/components/modules/auth/widgets/MinecraftWidget.d.ts +2 -0
  26. package/dist/components/modules/auth/widgets/MinecraftWidget.d.ts.map +1 -0
  27. package/dist/components/modules/auth/widgets/MinecraftWidget.js +36 -0
  28. package/dist/components/modules/auth/widgets/MinecraftWidget.js.map +1 -0
  29. package/dist/components/modules/auth/widgets/RankingWidget.d.ts +5 -0
  30. package/dist/components/modules/auth/widgets/RankingWidget.d.ts.map +1 -0
  31. package/dist/components/modules/auth/widgets/RankingWidget.js +79 -0
  32. package/dist/components/modules/auth/widgets/RankingWidget.js.map +1 -0
  33. package/dist/components/modules/forum/ForumBoard.d.ts +16 -16
  34. package/dist/components/modules/forum/ForumBoard.js +6 -6
  35. package/dist/components/modules/forum/ForumBoard.js.map +1 -1
  36. package/dist/components/modules/forum/TopicItem.d.ts +15 -15
  37. package/dist/components/modules/forum/TopicItem.js +6 -6
  38. package/dist/components/modules/forum/TopicItem.js.map +1 -1
  39. package/dist/components/modules/profile/ProfileContent.d.ts.map +1 -1
  40. package/dist/components/modules/profile/ProfileContent.js +98 -70
  41. package/dist/components/modules/profile/ProfileContent.js.map +1 -1
  42. package/dist/components/modules/profile/ProfileHeader.js +19 -19
  43. package/dist/components/modules/profile/ProfileHeader.js.map +1 -1
  44. package/dist/components/modules/profile/ProfileStats.d.ts +6 -1
  45. package/dist/components/modules/profile/ProfileStats.d.ts.map +1 -1
  46. package/dist/components/modules/profile/ProfileStats.js +19 -14
  47. package/dist/components/modules/profile/ProfileStats.js.map +1 -1
  48. package/dist/components/modules/profile/tabs/AboutTab.d.ts +10 -0
  49. package/dist/components/modules/profile/tabs/AboutTab.d.ts.map +1 -0
  50. package/dist/components/modules/profile/tabs/AboutTab.js +9 -0
  51. package/dist/components/modules/profile/tabs/AboutTab.js.map +1 -0
  52. package/dist/components/modules/profile/tabs/CareerTab.d.ts +7 -0
  53. package/dist/components/modules/profile/tabs/CareerTab.d.ts.map +1 -0
  54. package/dist/components/modules/profile/tabs/CareerTab.js +46 -0
  55. package/dist/components/modules/profile/tabs/CareerTab.js.map +1 -0
  56. package/dist/components/modules/profile/tabs/FriendsTab.d.ts +7 -0
  57. package/dist/components/modules/profile/tabs/FriendsTab.d.ts.map +1 -0
  58. package/dist/components/modules/profile/tabs/FriendsTab.js +8 -0
  59. package/dist/components/modules/profile/tabs/FriendsTab.js.map +1 -0
  60. package/dist/components/modules/profile/tabs/GamesTab.d.ts +7 -0
  61. package/dist/components/modules/profile/tabs/GamesTab.d.ts.map +1 -0
  62. package/dist/components/modules/profile/tabs/GamesTab.js +37 -0
  63. package/dist/components/modules/profile/tabs/GamesTab.js.map +1 -0
  64. package/dist/components/modules/profile/tabs/PostsTab.d.ts +7 -0
  65. package/dist/components/modules/profile/tabs/PostsTab.d.ts.map +1 -0
  66. package/dist/components/modules/profile/tabs/PostsTab.js +81 -0
  67. package/dist/components/modules/profile/tabs/PostsTab.js.map +1 -0
  68. package/dist/components/modules/profile/widgets/ProfileBadgesWidget.d.ts +2 -0
  69. package/dist/components/modules/profile/widgets/ProfileBadgesWidget.d.ts.map +1 -0
  70. package/dist/components/modules/profile/widgets/ProfileBadgesWidget.js +6 -0
  71. package/dist/components/modules/profile/widgets/ProfileBadgesWidget.js.map +1 -0
  72. package/dist/components/modules/profile/widgets/ProfileCloudWidget.d.ts +6 -0
  73. package/dist/components/modules/profile/widgets/ProfileCloudWidget.d.ts.map +1 -0
  74. package/dist/components/modules/profile/widgets/ProfileCloudWidget.js +6 -0
  75. package/dist/components/modules/profile/widgets/ProfileCloudWidget.js.map +1 -0
  76. package/dist/components/modules/profile/widgets/ProfileFriendsWidget.d.ts +8 -0
  77. package/dist/components/modules/profile/widgets/ProfileFriendsWidget.d.ts.map +1 -0
  78. package/dist/components/modules/profile/widgets/ProfileFriendsWidget.js +12 -0
  79. package/dist/components/modules/profile/widgets/ProfileFriendsWidget.js.map +1 -0
  80. package/dist/components/shared/DevTools.d.ts +2 -0
  81. package/dist/components/shared/DevTools.d.ts.map +1 -0
  82. package/dist/components/shared/DevTools.js +39 -0
  83. package/dist/components/shared/DevTools.js.map +1 -0
  84. package/dist/components/shared/Header.d.ts.map +1 -1
  85. package/dist/components/shared/Header.js +108 -97
  86. package/dist/components/shared/Header.js.map +1 -1
  87. package/dist/components/showcase/ProfileTab.d.ts.map +1 -1
  88. package/dist/components/showcase/ProfileTab.js +43 -3
  89. package/dist/components/showcase/ProfileTab.js.map +1 -1
  90. package/dist/components/showcase/SocialTab.d.ts.map +1 -1
  91. package/dist/components/showcase/SocialTab.js +64 -25
  92. package/dist/components/showcase/SocialTab.js.map +1 -1
  93. package/dist/context/ArmoyuContext.d.ts +42 -0
  94. package/dist/context/ArmoyuContext.d.ts.map +1 -0
  95. package/dist/context/ArmoyuContext.js +76 -0
  96. package/dist/context/ArmoyuContext.js.map +1 -0
  97. package/dist/context/AuthContext.d.ts.map +1 -1
  98. package/dist/context/AuthContext.js +14 -10
  99. package/dist/context/AuthContext.js.map +1 -1
  100. package/dist/context/SocketContext.d.ts.map +1 -1
  101. package/dist/context/SocketContext.js +31 -30
  102. package/dist/context/SocketContext.js.map +1 -1
  103. package/dist/index.d.ts +2 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +83 -80
  106. package/dist/index.js.map +1 -1
  107. package/dist/lib/ArmoyuUI.d.ts +18 -0
  108. package/dist/lib/ArmoyuUI.d.ts.map +1 -0
  109. package/dist/lib/ArmoyuUI.js +25 -0
  110. package/dist/lib/ArmoyuUI.js.map +1 -0
  111. package/dist/lib/constants/seedData.d.ts.map +1 -1
  112. package/dist/lib/constants/seedData.js +694 -694
  113. package/dist/lib/constants/seedData.js.map +1 -1
  114. package/dist/lib/constants/stationData.js +166 -166
  115. package/dist/lib/constants/stationData.js.map +1 -1
  116. package/package.json +3 -3
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface ProvidersProps {
3
+ children: React.ReactNode;
4
+ }
5
+ export declare function Providers({ children }: ProvidersProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=Providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/app/Providers.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAaxC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAoDrD"}
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { ArmoyuApi } from "@armoyu/core";
5
+ import { ArmoyuProvider } from "../context/ArmoyuContext";
6
+ import { ThemeProvider } from "../context/ThemeContext";
7
+ import { AuthProvider } from "../context/AuthContext";
8
+ import { SocketProvider } from "../context/SocketContext";
9
+ import { LayoutProvider } from "../context/LayoutContext";
10
+ import { CartProvider } from "../context/CartContext";
11
+ import { ChatProvider } from "../context/ChatContext";
12
+ import { ArmoyuUI } from '../lib/ArmoyuUI';
13
+ import { DevTools } from '../components/shared/DevTools';
14
+ export function Providers({ children }) {
15
+ const [ui] = useState(() => {
16
+ try {
17
+ // Use local proxy to avoid CORS issues in development
18
+ const baseUrl = typeof window !== 'undefined' ? `${window.location.origin}/api/proxy` : '/api/proxy';
19
+ const api = new ArmoyuApi("armoyu_showcase_key", {
20
+ baseUrl: baseUrl
21
+ });
22
+ return new ArmoyuUI(api);
23
+ }
24
+ catch (e) {
25
+ console.error("[ARMOYU] Initialization Error:", e);
26
+ // Fallback
27
+ return new ArmoyuUI(new ArmoyuApi("fallback", { baseUrl: "" }));
28
+ }
29
+ });
30
+ return (_jsx(ArmoyuProvider, { ui: ui, navigation: {
31
+ profilePrefix: '/p',
32
+ groupPrefix: '/g',
33
+ forumPrefix: '/topluluk/forum',
34
+ educationPrefix: '/akademi'
35
+ }, children: _jsx(ThemeProvider, { children: _jsx(AuthProvider, { children: _jsx(SocketProvider, { children: _jsx(LayoutProvider, { children: _jsx(CartProvider, { children: _jsxs(ChatProvider, { children: [_jsxs("div", { className: "fixed inset-0 pointer-events-none z-[-1]", children: [_jsx("div", { className: "absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-blue-600/20 blur-[120px] rounded-full" }), _jsx("div", { className: "absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-purple-600/20 blur-[120px] rounded-full" })] }), _jsx(DevTools, {}), children] }) }) }) }) }) }) }));
36
+ }
37
+ //# sourceMappingURL=Providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/app/Providers.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAMzD,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAkB;IACpD,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC;YACH,sDAAsD;YACtD,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;YAErG,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,qBAAqB,EAAE;gBAC/C,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;YACnD,WAAW;YACX,OAAO,IAAI,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,cAAc,IACb,EAAE,EAAE,EAAE,EACN,UAAU,EAAE;YACV,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,iBAAiB;YAC9B,eAAe,EAAE,UAAU;SAC5B,YAED,KAAC,aAAa,cACZ,KAAC,YAAY,cACX,KAAC,cAAc,cACb,KAAC,cAAc,cACb,KAAC,YAAY,cACX,MAAC,YAAY,eAEX,eAAK,SAAS,EAAC,0CAA0C,aACvD,cAAK,SAAS,EAAC,0FAA0F,GAAG,EAC5G,cAAK,SAAS,EAAC,gGAAgG,GAAG,IAC9G,EAGN,KAAC,QAAQ,KAAG,EAGX,QAAQ,IACI,GACF,GACA,GACF,GACJ,GACD,GACD,CAClB,CAAC;AACJ,CAAC"}
@@ -21,8 +21,16 @@ async function handleProxy(req, pathSegments) {
21
21
  if (!apiKey) {
22
22
  return NextResponse.json({ durum: 0, aciklama: 'X-API-KEY header missing' }, { status: 400 });
23
23
  }
24
- // Target Armoyu API
25
- const targetUrl = `https://api.armoyu.com/botlar/${apiKey}${endpoint}`;
24
+ // Target Armoyu API host
25
+ const targetHost = 'https://api.aramizdakioyuncu.com';
26
+ // Prevent double /botlar/[apiKey] prefixing
27
+ let targetUrl;
28
+ if (endpoint.startsWith(`/botlar/${apiKey}`)) {
29
+ targetUrl = `${targetHost}${endpoint}`;
30
+ }
31
+ else {
32
+ targetUrl = `${targetHost}/botlar/${apiKey}${endpoint}`;
33
+ }
26
34
  const method = req.method;
27
35
  const headers = new Headers();
28
36
  // Helper to safely set headers and avoid ISO-8859-1 errors
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/app/api/proxy/[...path]/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/app/api/proxy/[...path]/route.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/app/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,gBAAgB,CAAC;AAUxB,eAAO,MAAM,QAAQ,EAAE,QAGtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GACT,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC,2CA0CD"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/app/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGrC,OAAO,gBAAgB,CAAC;AAKxB,eAAO,MAAM,QAAQ,EAAE,QAGtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GACT,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC,2CA8BD"}
@@ -1,31 +1,27 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Inter } from 'next/font/google';
3
+ import Script from 'next/script';
3
4
  import "../globals.css";
4
- import { ThemeProvider } from "../context/ThemeContext";
5
- import { LayoutProvider } from "../context/LayoutContext";
6
- import { AuthProvider } from "../context/AuthContext";
7
- import { SocketProvider } from "../context/SocketContext";
8
- import { CartProvider } from "../context/CartContext";
9
- import { ChatProvider } from "../context/ChatContext";
5
+ import { Providers } from './Providers';
10
6
  const inter = Inter({ subsets: ['latin'] });
11
7
  export const metadata = {
12
8
  title: "ARMOYU UI Showcase",
13
9
  description: "Visual component gallery for Armoyu UI Library",
14
10
  };
15
11
  export default function RootLayout({ children, }) {
16
- return (_jsxs("html", { lang: "tr", className: "scroll-smooth dark", suppressHydrationWarning: true, children: [_jsx("head", { children: _jsx("script", { dangerouslySetInnerHTML: {
17
- __html: `
18
- (function() {
19
- try {
20
- var theme = localStorage.getItem('armoyu_theme');
21
- if (theme === 'light') {
22
- document.documentElement.classList.remove('dark');
23
- } else {
24
- document.documentElement.classList.add('dark');
25
- }
26
- } catch (e) {}
27
- })();
12
+ return (_jsxs("html", { lang: "tr", className: "scroll-smooth dark", suppressHydrationWarning: true, children: [_jsx("head", { children: _jsx(Script, { id: "theme-initializer", strategy: "beforeInteractive", dangerouslySetInnerHTML: {
13
+ __html: `
14
+ (function() {
15
+ try {
16
+ var theme = localStorage.getItem('armoyu_theme');
17
+ if (theme === 'light') {
18
+ document.documentElement.classList.remove('dark');
19
+ } else {
20
+ document.documentElement.classList.add('dark');
21
+ }
22
+ } catch (e) {}
23
+ })();
28
24
  `,
29
- } }) }), _jsx("body", { className: `${inter.className} bg-armoyu-bg text-armoyu-text min-h-screen flex flex-col antialiased relative transition-colors duration-500`, children: _jsx(ThemeProvider, { children: _jsx(AuthProvider, { children: _jsx(SocketProvider, { children: _jsx(LayoutProvider, { children: _jsx(CartProvider, { children: _jsxs(ChatProvider, { children: [_jsxs("div", { className: "fixed inset-0 pointer-events-none z-[-1]", children: [_jsx("div", { className: "absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-blue-600/20 blur-[120px] rounded-full" }), _jsx("div", { className: "absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-purple-600/20 blur-[120px] rounded-full" })] }), children] }) }) }) }) }) }) })] }));
25
+ } }) }), _jsx("body", { className: `${inter.className} bg-armoyu-bg text-armoyu-text min-h-screen flex flex-col antialiased relative transition-colors duration-500`, children: _jsx(Providers, { children: children }) })] }));
30
26
  }
31
27
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/app/layout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,gDAAgD;CAC9D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GAGR;IACA,OAAO,CACL,gBAAM,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,oBAAoB,EAAC,wBAAwB,mBACrE,yBACE,iBACE,uBAAuB,EAAE;wBACvB,MAAM,EAAE;;;;;;;;;;;aAWP;qBACF,GACD,GACG,EACP,eAAM,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,+GAA+G,YAChJ,KAAC,aAAa,cACZ,KAAC,YAAY,cACX,KAAC,cAAc,cACb,KAAC,cAAc,cACb,KAAC,YAAY,cACX,MAAC,YAAY,eACX,eAAK,SAAS,EAAC,0CAA0C,aACvD,cAAK,SAAS,EAAC,0FAA0F,GAAG,EAC5G,cAAK,SAAS,EAAC,gGAAgG,GAAG,IAC9G,EACL,QAAQ,IACI,GACF,GACA,GACF,GACJ,GACD,GACX,IACF,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/app/layout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,gDAAgD;CAC9D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GAGR;IACA,OAAO,CACL,gBAAM,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,oBAAoB,EAAC,wBAAwB,mBACrE,yBACE,KAAC,MAAM,IACL,EAAE,EAAC,mBAAmB,EACtB,QAAQ,EAAC,mBAAmB,EAC5B,uBAAuB,EAAE;wBACvB,MAAM,EAAE;;;;;;;;;;;aAWP;qBACF,GACD,GACG,EACP,eAAM,SAAS,EAAE,GAAG,KAAK,CAAC,SAAS,+GAA+G,YAChJ,KAAC,SAAS,cACP,QAAQ,GACC,GACP,IACF,CACR,CAAC;AACJ,CAAC"}
@@ -20,6 +20,7 @@ export interface PostCardProps {
20
20
  repostList?: User[];
21
21
  commentList?: any[];
22
22
  repostOf?: any;
23
+ profilePrefix?: string;
23
24
  }
24
- export declare function PostCard({ id, author, content, imageUrl, media, createdAt, stats, hashtags, onTagClick, isPending, likeList, repostList, commentList, repostOf }: PostCardProps): import("react/jsx-runtime").JSX.Element | null;
25
+ export declare function PostCard({ id, author, content, imageUrl, media, createdAt, stats, hashtags, onTagClick, isPending, likeList, repostList, commentList, repostOf, profilePrefix }: PostCardProps): import("react/jsx-runtime").JSX.Element | null;
25
26
  //# sourceMappingURL=PostCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../../../src/components/modules/auth/PostCard.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM3D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAcpC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,kDA0f/K"}
1
+ {"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../../../src/components/modules/auth/PostCard.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM3D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAepC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,aAAa,kDA6f9L"}
@@ -1,113 +1,116 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import React, { useState } from 'react';
4
- import { useRouter } from 'next/navigation';
5
- import { MediaLightbox } from './MediaLightbox';
6
- import { RepostModal } from './RepostModal';
7
- import { PostInteractionsModal } from './PostInteractionsModal';
8
- import { useAuth } from '../../../context/AuthContext';
9
- import { useSocket } from '../../../context/SocketContext';
10
- import { RollingNumber } from '../../RollingNumber';
11
- export function PostCard({ id, author, content, imageUrl, media, createdAt, stats, hashtags, onTagClick, isPending, likeList, repostList, commentList, repostOf }) {
12
- const { user } = useAuth(); // Oturum bilgisini çek
13
- const { emit } = useSocket();
14
- const [isMenuOpen, setIsMenuOpen] = useState(false);
15
- const router = useRouter();
16
- const [lightboxIndex, setLightboxIndex] = useState(null);
17
- if (!author)
18
- return null;
19
- // Repost Edilen Gönderinin Medyası
20
- const repostMedia = repostOf?.media || (repostOf?.imageUrl ? [{ type: 'image', url: repostOf.imageUrl }] : []);
21
- const displayMedia = media
22
- ? media
23
- : (imageUrl ? [{ type: 'image', url: imageUrl }] : []);
24
- // Interaction States
25
- const [isLiked, setIsLiked] = React.useState(false);
26
- const [likeCount, setLikeCount] = React.useState(stats.likes);
27
- // Props değiştikçe local state'i güncelle (Soket desteği için kritik)
28
- React.useEffect(() => {
29
- setLikeCount(stats.likes);
30
- }, [stats.likes]);
31
- const [isCommentOpen, setIsCommentOpen] = React.useState(false);
32
- const [isRepostModalOpen, setIsRepostModalOpen] = useState(false);
33
- const [isInteractionsModalOpen, setIsInteractionsModalOpen] = useState(false);
34
- const [interactionsTab, setInteractionsTab] = useState('likes');
35
- const [commentText, setCommentText] = React.useState('');
36
- const [commentsList, setCommentsList] = React.useState(commentList || []);
37
- const [replyingTo, setReplyingTo] = useState(null); // Hangi yoruma yanıt veriliyor
38
- const handleLike = () => {
39
- if (isPending)
40
- return;
41
- const newLiked = !isLiked;
42
- const newCount = newLiked ? likeCount + 1 : likeCount - 1;
43
- setIsLiked(newLiked);
44
- setLikeCount(newCount);
45
- // Emit live update
46
- emit('post_like', {
47
- postId: id,
48
- userId: user?.id,
49
- isLiked: newLiked,
50
- newCount: newCount
51
- });
52
- };
53
- const handleCommentSubmit = () => {
54
- if (!commentText.trim())
55
- return;
56
- const dynamicAuthorName = user?.displayName?.split(' ')[0] || 'Kullanıcı';
57
- if (replyingTo) {
58
- // Yanıtı Ana Yoruma Ekle
59
- setCommentsList(prev => prev.map(c => {
60
- if (c.id === replyingTo) {
61
- return {
62
- ...c,
63
- replies: [...(c.replies || []), {
64
- id: Date.now().toString(),
65
- author: dynamicAuthorName,
66
- text: commentText,
67
- date: 'Şimdi'
68
- }]
69
- };
70
- }
71
- return c;
72
- }));
73
- setReplyingTo(null);
74
- }
75
- else {
76
- // Normal Ana Yorum Ekle
77
- setCommentsList(prev => [...prev, {
78
- id: Date.now().toString(),
79
- author: dynamicAuthorName,
80
- text: commentText,
81
- date: 'Şimdi',
82
- replies: []
83
- }]);
84
- }
85
- setCommentText('');
86
- };
87
- const goToProfile = () => {
88
- router.push(author.getProfileUrl());
89
- };
90
- return (_jsxs("div", { className: `w-full bg-armoyu-card-bg border border-armoyu-card-border rounded-3xl overflow-hidden shadow-sm hover:shadow-md transition-all duration-300 relative ${isPending ? 'opacity-70 pointer-events-none' : ''}`, children: [isPending && (_jsxs("div", { className: "absolute top-4 right-4 z-30 bg-blue-600/90 backdrop-blur-md px-4 py-1.5 rounded-full border border-white/20 shadow-xl flex items-center gap-2 animate-pulse", children: [_jsx("div", { className: "w-2.5 h-2.5 border-2 border-white/20 border-t-white rounded-full animate-spin" }), _jsx("span", { className: "text-[10px] font-black text-white uppercase tracking-widest", children: "G\u00F6nderiliyor..." })] })), _jsxs("div", { className: "p-5 flex items-start gap-4", children: [_jsx("img", { src: author.avatar, alt: author.displayName, className: "w-12 h-12 rounded-full border-2 border-transparent hover:border-blue-500 transition-colors shadow-sm bg-black/5 dark:bg-white/5 object-cover cursor-pointer", onClick: goToProfile, title: "Profile Git" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [_jsx("h3", { className: "font-bold text-armoyu-text truncate max-w-[200px] cursor-pointer hover:text-blue-500 transition-colors", onClick: goToProfile, title: "Profile Git", children: author.displayName }), author.verified && (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", className: "text-blue-500", children: _jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) })), author.role?.name && (_jsx("span", { style: {
91
- backgroundColor: `${author.role.color}15`,
92
- color: author.role.color,
93
- borderColor: `${author.role.color}40`
94
- }, className: "text-[10px] font-bold px-2 py-0.5 rounded-md uppercase tracking-wider border", children: author.role.name }))] }), _jsxs("div", { className: "relative flex items-center gap-1", children: [user?.username === author.username && (_jsx("button", { className: "text-armoyu-text-muted hover:text-blue-500 p-1.5 transition-colors bg-blue-500/5 rounded-lg border border-blue-500/10", title: "D\u00FCzenle", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }) })), _jsx("button", { onClick: () => setIsMenuOpen(!isMenuOpen), className: "text-armoyu-text-muted hover:text-blue-500 p-1 transition-colors", title: "Se\u00E7enekler", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "12", cy: "12", r: "1" }), _jsx("circle", { cx: "19", cy: "12", r: "1" }), _jsx("circle", { cx: "5", cy: "12", r: "1" })] }) }), isMenuOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setIsMenuOpen(false) }), _jsxs("div", { className: "absolute right-0 mt-1 w-56 bg-armoyu-drawer-bg border border-gray-200 dark:border-white/10 rounded-xl shadow-xl z-50 py-1.5 animate-in fade-in zoom-in-95 duration-200", children: [user?.username === author.username && (_jsxs("button", { onClick: () => setIsMenuOpen(false), className: "w-full text-left px-4 py-2.5 text-sm font-bold text-blue-500 hover:bg-blue-500/10 transition-colors flex items-center gap-3", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }), _jsx("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })] }), "G\u00F6nderiyi D\u00FCzenle"] })), _jsxs("button", { onClick: () => setIsMenuOpen(false), className: "w-full text-left px-4 py-2.5 text-sm font-medium text-armoyu-text hover:bg-black/5 dark:hover:bg-white/5 transition-colors flex items-center gap-3", children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" }) }), "G\u00F6nderiyi Kaydet"] }), _jsxs("button", { onClick: () => setIsMenuOpen(false), className: "w-full text-left px-4 py-2.5 text-sm font-bold text-red-600 dark:text-red-500 hover:bg-red-50 dark:hover:bg-red-500/10 transition-colors flex items-center gap-3 border-t border-gray-100 dark:border-white/5 mt-1 pt-2.5", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z" }), _jsx("line", { x1: "4", y1: "22", x2: "4", y2: "15" })] }), "G\u00F6nderiyi \u015Eikayet Et"] })] })] }))] })] }), _jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-armoyu-text-muted mt-0.5", children: [_jsxs("span", { className: "text-blue-600 dark:text-blue-400 font-bold cursor-pointer hover:underline", onClick: goToProfile, children: ["@", author.username] }), _jsx("span", { children: "\u2022" }), _jsx("span", { children: createdAt })] })] })] }), _jsxs("div", { className: "px-5 pb-3", children: [_jsx("p", { className: "text-sm md:text-base text-armoyu-text leading-relaxed whitespace-pre-wrap font-medium", children: content.split(/(\s+)/).map((part, i) => {
95
- if (part.startsWith('#')) {
96
- return (_jsx("button", { onClick: (e) => {
97
- e.stopPropagation();
98
- onTagClick?.(part);
99
- }, className: "text-blue-500 hover:underline inline-block font-bold", children: part }, i));
100
- }
101
- return part;
102
- }) }), repostOf && (_jsxs("div", { className: "mt-4 rounded-2xl border border-black/10 dark:border-white/10 overflow-hidden bg-black/5 dark:bg-black/20 hover:border-blue-500/30 transition-all cursor-pointer group/repost", onClick: (e) => {
103
- e.stopPropagation();
104
- router.push(`/?post=${repostOf.id}`);
105
- }, children: [_jsxs("div", { className: "p-3 flex items-center gap-2 border-b border-black/5 dark:border-white/5", children: [_jsx("img", { src: repostOf.author?.avatar, className: "w-5 h-5 rounded-full object-cover", alt: "" }), _jsx("span", { className: "text-[11px] font-black text-armoyu-text uppercase tracking-tight", children: repostOf.author?.displayName }), _jsxs("span", { className: "text-[10px] font-bold text-armoyu-text-muted opacity-60", children: ["@", repostOf.author?.username] }), _jsx("span", { className: "text-[10px] text-armoyu-text-muted ml-auto", children: repostOf.createdAt })] }), _jsxs("div", { className: "p-4 pt-3", children: [_jsx("p", { className: "text-xs text-armoyu-text-muted line-clamp-3 leading-relaxed", children: repostOf.content }), repostMedia.length > 0 && (_jsx("div", { className: "mt-3 rounded-xl overflow-hidden grid grid-cols-2 gap-1 aspect-[21/9]", children: repostMedia.slice(0, 4).map((m, i) => (_jsxs("div", { className: `relative ${repostMedia.length === 1 ? 'col-span-2' : ''}`, children: [_jsx("img", { src: m.url, className: "w-full h-full object-cover brightness-95 group-hover/repost:scale-105 transition-transform duration-700", alt: "" }), m.type === 'video' && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/20", children: _jsx("div", { className: "w-6 h-6 rounded-full bg-white/20 backdrop-blur-sm flex items-center justify-center text-white", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }) }) }))] }, i))) }))] })] }))] }), displayMedia.length > 0 && (_jsx("div", { className: "px-5 pb-5", children: _jsx("div", { className: `grid gap-1.5 overflow-hidden rounded-2xl border border-black/5 dark:border-white/10 shadow-sm ${displayMedia.length === 1 ? 'grid-cols-1' : displayMedia.length === 2 ? 'grid-cols-2 aspect-[16/9]' : displayMedia.length === 3 ? 'grid-cols-2 aspect-[16/9]' : 'grid-cols-2 aspect-square md:aspect-[16/9]'}`, children: displayMedia.slice(0, 4).map((m, idx) => (_jsxs("div", { className: `relative cursor-pointer group bg-black/5 dark:bg-white/5 ${displayMedia.length === 3 && idx === 0 ? 'row-span-2' : ''}`, onClick: () => setLightboxIndex(idx), children: [m.type === 'video' ? (
106
- // eslint-disable-next-line jsx-a11y/media-has-caption
107
- _jsx("video", { src: m.url, className: "w-full h-full object-cover" })) : (_jsx("img", { src: m.url, alt: "Medya", className: "w-full h-full object-cover group-hover:scale-[1.03] transition-transform duration-500" })), m.type === 'video' && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/20 group-hover:bg-black/40 transition-colors z-10", children: _jsx("div", { className: "w-12 h-12 rounded-full bg-white/20 backdrop-blur-md flex items-center justify-center text-white border border-white/30 shadow-lg", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", stroke: "none", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }) }) })), displayMedia.length > 4 && idx === 3 && (_jsxs("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center text-white font-black text-2xl md:text-3xl z-20", children: ["+", displayMedia.length - 4] }))] }, idx))) }) })), likeList && likeList.length > 0 && (_jsxs("div", { className: "px-6 py-2 flex items-center gap-2.5 bg-black/5 dark:bg-white/2 border-y border-armoyu-card-border/50 transition-all hover:bg-black/10 dark:hover:bg-white/5 cursor-pointer", onClick: () => { setInteractionsTab('likes'); setIsInteractionsModalOpen(true); }, children: [_jsx("div", { className: "flex -space-x-2.5 overflow-hidden", children: likeList.slice(0, 3).map((l, i) => (_jsx("img", { src: l.avatar, alt: l.displayName, className: "inline-block h-6 w-6 rounded-full ring-2 ring-armoyu-card-bg bg-armoyu-card-bg object-cover shadow-sm transition-transform hover:scale-110 hover:z-10", title: l.displayName }, i))) }), _jsx("div", { className: "text-[11px] font-bold text-armoyu-text-muted flex items-center gap-1", children: likeCount > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-armoyu-text", children: likeList[0].displayName }), likeCount > 1 && (_jsxs(_Fragment, { children: [_jsx("span", { children: "ve" }), _jsxs("span", { className: "text-armoyu-text", children: [likeCount - 1, " di\u011Fer ki\u015Fi"] })] })), _jsx("span", { children: "be\u011Fendi" })] })) })] })), _jsxs("div", { className: "px-5 py-3.5 border-t border-armoyu-card-border flex justify-between items-center bg-black/5 dark:bg-white/5", children: [_jsxs("div", { className: "flex gap-6", children: [_jsxs("div", { className: "flex items-center", children: [_jsx("button", { onClick: handleLike, className: `flex items-center gap-2 text-sm font-bold transition-colors group ${isLiked ? 'text-blue-500' : 'text-armoyu-text-muted hover:text-blue-500'}`, children: _jsx("div", { className: `p-1.5 rounded-full transition-colors ${isLiked ? 'bg-blue-500/10' : 'group-hover:bg-blue-500/10'}`, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: isLiked ? "currentColor" : "none", stroke: "currentColor", strokeWidth: "2", className: "group-hover:-translate-y-0.5 transition-transform", children: _jsx("path", { d: "M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3" }) }) }) }), likeCount > 0 && (_jsx("button", { onClick: () => { setInteractionsTab('likes'); setIsInteractionsModalOpen(true); }, className: "text-sm font-black text-armoyu-text-muted hover:text-blue-500 transition-colors ml-1 px-1", children: _jsx(RollingNumber, { value: likeCount }) }))] }), _jsxs("button", { onClick: () => setIsCommentOpen(!isCommentOpen), className: `flex items-center gap-2 text-sm font-bold transition-colors group ${isCommentOpen ? 'text-emerald-500' : 'text-armoyu-text-muted hover:text-emerald-500'}`, title: "Yorum Yap", children: [_jsx("div", { className: `p-1.5 rounded-full transition-colors ${isCommentOpen ? 'bg-emerald-500/10' : 'group-hover:bg-emerald-500/10'}`, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "group-hover:-translate-y-0.5 transition-transform", children: _jsx("path", { d: "M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z" }) }) }), (stats.comments + commentsList.length + commentsList.reduce((acc, c) => acc + (c.replies?.length || 0), 0)) > 0 &&
108
- (stats.comments + commentsList.length + commentsList.reduce((acc, c) => acc + (c.replies?.length || 0), 0))] }), _jsxs("div", { className: "flex items-center", children: [_jsx("button", { onClick: () => setIsRepostModalOpen(true), className: "flex items-center gap-2 text-sm font-bold text-armoyu-text-muted hover:text-green-500 transition-colors group", title: "Yeniden Payla\u015F (Retweet)", children: _jsx("div", { className: "p-1.5 rounded-full group-hover:bg-green-500/10 transition-colors", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "group-hover:-translate-y-0.5 transition-transform", children: [_jsx("polyline", { points: "17 1 21 5 17 9" }), _jsx("path", { d: "M3 11V9a4 4 0 0 1 4-4h14" }), _jsx("polyline", { points: "7 23 3 19 7 15" }), _jsx("path", { d: "M21 13v2a4 4 0 0 1-4 4H3" })] }) }) }), stats.reposts && stats.reposts > 0 && (_jsx("button", { onClick: () => { setInteractionsTab('reposts'); setIsInteractionsModalOpen(true); }, className: "text-sm font-black text-armoyu-text-muted hover:text-green-500 transition-colors ml-1 px-1", children: stats.reposts }))] })] }), _jsx("button", { className: "flex items-center gap-2 text-sm font-bold text-armoyu-text-muted hover:text-purple-500 transition-colors group", children: _jsx("div", { className: "p-1.5 rounded-full group-hover:bg-purple-500/10 transition-colors", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "group-hover:-translate-y-0.5 transition-transform", children: [_jsx("circle", { cx: "18", cy: "5", r: "3" }), _jsx("circle", { cx: "6", cy: "12", r: "3" }), _jsx("circle", { cx: "18", cy: "19", r: "3" }), _jsx("line", { x1: "8.59", y1: "13.51", x2: "15.42", y2: "17.49" }), _jsx("line", { x1: "15.41", y1: "6.51", x2: "8.59", y2: "10.49" })] }) }) })] }), isCommentOpen && (_jsxs("div", { className: "bg-black/5 dark:bg-white/5 border-t border-armoyu-card-border p-4 animate-in fade-in slide-in-from-top-2 duration-200", children: [replyingTo && (_jsxs("div", { className: "flex justify-between items-center mb-2.5 px-2", children: [_jsxs("span", { className: "text-xs font-bold text-blue-500 flex items-center gap-1.5", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polyline", { points: "15 10 20 15 15 20" }), _jsx("path", { d: "M4 4v7a4 4 0 0 0 4 4h12" })] }), _jsx("span", { className: "text-armoyu-text-muted", children: "Yan\u0131tlan\u0131yor:" }), " @", (() => {
109
- const author = commentsList.find(c => c.id === replyingTo)?.author;
110
- return typeof author === 'string' ? author : author?.displayName;
111
- })()] }), _jsx("button", { onClick: () => setReplyingTo(null), className: "text-[11px] font-black uppercase tracking-wider text-armoyu-text-muted hover:text-red-500 transition-colors bg-black/5 dark:bg-white/5 px-2 py-1 rounded-md", children: "\u0130ptal Et" })] })), _jsxs("div", { className: "flex gap-3 mb-2 animate-in fade-in zoom-in-95 duration-300", children: [_jsx("img", { src: user?.avatar || "https://api.dicebear.com/7.x/avataaars/svg?seed=Berkay", alt: "Sen", className: "w-9 h-9 rounded-full bg-white/5 border border-white/10 shrink-0 shadow-sm object-cover" }), _jsxs("div", { className: "flex-1 flex items-center bg-black/5 dark:bg-white/5 border border-gray-200 dark:border-white/10 rounded-2xl px-3 py-1.5 shadow-sm focus-within:border-blue-500 focus-within:ring-1 focus-within:ring-blue-500 transition-all", children: [_jsx("input", { type: "text", value: commentText, onChange: (e) => setCommentText(e.target.value), onKeyDown: (e) => e.key === 'Enter' && handleCommentSubmit(), placeholder: replyingTo ? "Yanıtını yaz..." : "Fikrini paylaş...", className: "flex-1 bg-transparent border-none outline-none text-sm text-armoyu-text placeholder:text-armoyu-text-muted font-medium" }), _jsx("button", { onClick: handleCommentSubmit, disabled: !commentText.trim(), className: "p-2 ml-2 text-blue-500 disabled:text-gray-400 dark:disabled:text-gray-600 disabled:cursor-not-allowed hover:bg-blue-500/10 rounded-xl transition-colors shrink-0", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "22", y1: "2", x2: "11", y2: "13" }), _jsx("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })] }) })] })] }), commentsList.length > 0 && (_jsx("div", { className: "space-y-4 mt-5 px-1", children: commentsList.map((c) => (_jsxs("div", { className: "animate-in fade-in slide-in-from-left-2 zoom-in-95 duration-500", children: [_jsxs("div", { className: "flex gap-3", children: [_jsx("img", { src: `https://api.dicebear.com/7.x/avataaars/svg?seed=${typeof c.author === 'string' ? c.author : c.author?.displayName}`, alt: typeof c.author === 'string' ? c.author : c.author?.displayName, className: "w-8 h-8 rounded-full bg-white/5 border border-black/10 dark:border-white/10 shrink-0 mt-1 shadow-sm" }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "bg-armoyu-drawer-bg border border-gray-200 dark:border-white/5 rounded-2xl rounded-tl-sm px-4 py-2 shadow-sm inline-block min-w-[30%]", children: [_jsx("div", { className: "text-xs font-black text-armoyu-text mb-0.5", children: typeof c.author === 'string' ? c.author : c.author?.displayName }), _jsx("div", { className: "text-sm font-medium text-armoyu-text-muted", children: c.text || c.content })] }), _jsxs("div", { className: "flex items-center gap-4 mt-1.5 ml-2 text-[11px] font-bold text-armoyu-text-muted", children: [_jsx("span", { className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Be\u011Fen" }), _jsx("span", { onClick: () => { setReplyingTo(c.id); setCommentText(''); }, className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Yan\u0131tla" }), _jsx("span", { className: "opacity-50", children: c.date || c.createdAt })] })] })] }), c.replies && c.replies.length > 0 && (_jsx("div", { className: "mt-3 ml-11 space-y-3 border-l-2 border-black/10 dark:border-white/10 pl-4", children: c.replies.map(r => (_jsxs("div", { className: "flex gap-2.5 animate-in fade-in slide-in-from-left-2 duration-300", children: [_jsx("img", { src: `https://api.dicebear.com/7.x/avataaars/svg?seed=${typeof r.author === 'string' ? r.author : r.author?.displayName}`, alt: typeof r.author === 'string' ? r.author : r.author?.displayName, className: "w-6 h-6 rounded-full bg-white/5 border border-black/10 dark:border-white/10 shrink-0 mt-0.5 shadow-sm relative -left-[27px] ring-4 ring-black/5 dark:ring-[#0a0a0e]/60" }), _jsxs("div", { className: "flex-1 -ml-[18px]", children: [_jsxs("div", { className: "bg-armoyu-drawer-bg border border-gray-200 dark:border-white/5 rounded-2xl rounded-tl-sm px-3.5 py-1.5 shadow-sm inline-block", children: [_jsx("span", { className: "text-xs font-black text-armoyu-text mr-2", children: typeof r.author === 'string' ? r.author : r.author?.displayName }), _jsx("span", { className: "text-[13px] font-medium text-armoyu-text-muted", children: r.text || r.content })] }), _jsxs("div", { className: "flex items-center gap-4 mt-1 ml-2 text-[10px] font-bold text-armoyu-text-muted", children: [_jsx("span", { className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Be\u011Fen" }), _jsx("span", { onClick: () => { setReplyingTo(c.id); setCommentText(''); }, className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Yan\u0131tla" }), _jsx("span", { className: "opacity-50", children: r.date || r.createdAt })] })] })] }, r.id))) }))] }, c.id))) }))] })), _jsx(RepostModal, { isOpen: isRepostModalOpen, onClose: () => setIsRepostModalOpen(false), post: { id, author, content, media, createdAt, stats } }), _jsx(PostInteractionsModal, { isOpen: isInteractionsModalOpen, onClose: () => setIsInteractionsModalOpen(false), title: interactionsTab === 'likes' ? 'Beğenenler' : 'Paylaşanlar', likes: likeList, reposts: repostList, defaultTab: interactionsTab }), lightboxIndex !== null && (_jsx(MediaLightbox, { isOpen: lightboxIndex !== null, onClose: () => setLightboxIndex(null), media: displayMedia, initialIndex: lightboxIndex }))] }));
112
- }
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import React, { useState } from 'react';
4
+ import { useRouter } from 'next/navigation';
5
+ import { MediaLightbox } from './MediaLightbox';
6
+ import { RepostModal } from './RepostModal';
7
+ import { PostInteractionsModal } from './PostInteractionsModal';
8
+ import { useAuth } from '../../../context/AuthContext';
9
+ import { useSocket } from '../../../context/SocketContext';
10
+ import { RollingNumber } from '../../RollingNumber';
11
+ import { useArmoyu } from '../../../context/ArmoyuContext';
12
+ export function PostCard({ id, author, content, imageUrl, media, createdAt, stats, hashtags, onTagClick, isPending, likeList, repostList, commentList, repostOf, profilePrefix }) {
13
+ const { user } = useAuth(); // Oturum bilgisini çek
14
+ const { emit } = useSocket();
15
+ const { navigation } = useArmoyu();
16
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
17
+ const router = useRouter();
18
+ const [lightboxIndex, setLightboxIndex] = useState(null);
19
+ if (!author)
20
+ return null;
21
+ // Repost Edilen Gönderinin Medyası
22
+ const repostMedia = repostOf?.media || (repostOf?.imageUrl ? [{ type: 'image', url: repostOf.imageUrl }] : []);
23
+ const displayMedia = media
24
+ ? media
25
+ : (imageUrl ? [{ type: 'image', url: imageUrl }] : []);
26
+ // Interaction States
27
+ const [isLiked, setIsLiked] = React.useState(false);
28
+ const [likeCount, setLikeCount] = React.useState(stats.likes);
29
+ // Props değiştikçe local state'i güncelle (Soket desteği için kritik)
30
+ React.useEffect(() => {
31
+ setLikeCount(stats.likes);
32
+ }, [stats.likes]);
33
+ const [isCommentOpen, setIsCommentOpen] = React.useState(false);
34
+ const [isRepostModalOpen, setIsRepostModalOpen] = useState(false);
35
+ const [isInteractionsModalOpen, setIsInteractionsModalOpen] = useState(false);
36
+ const [interactionsTab, setInteractionsTab] = useState('likes');
37
+ const [commentText, setCommentText] = React.useState('');
38
+ const [commentsList, setCommentsList] = React.useState(commentList || []);
39
+ const [replyingTo, setReplyingTo] = useState(null); // Hangi yoruma yanıt veriliyor
40
+ const handleLike = () => {
41
+ if (isPending)
42
+ return;
43
+ const newLiked = !isLiked;
44
+ const newCount = newLiked ? likeCount + 1 : likeCount - 1;
45
+ setIsLiked(newLiked);
46
+ setLikeCount(newCount);
47
+ // Emit live update
48
+ emit('post_like', {
49
+ postId: id,
50
+ userId: user?.id,
51
+ isLiked: newLiked,
52
+ newCount: newCount
53
+ });
54
+ };
55
+ const handleCommentSubmit = () => {
56
+ if (!commentText.trim())
57
+ return;
58
+ const dynamicAuthorName = user?.displayName?.split(' ')[0] || 'Kullanıcı';
59
+ if (replyingTo) {
60
+ // Yanıtı Ana Yoruma Ekle
61
+ setCommentsList(prev => prev.map(c => {
62
+ if (c.id === replyingTo) {
63
+ return {
64
+ ...c,
65
+ replies: [...(c.replies || []), {
66
+ id: Date.now().toString(),
67
+ author: dynamicAuthorName,
68
+ text: commentText,
69
+ date: 'Şimdi'
70
+ }]
71
+ };
72
+ }
73
+ return c;
74
+ }));
75
+ setReplyingTo(null);
76
+ }
77
+ else {
78
+ // Normal Ana Yorum Ekle
79
+ setCommentsList(prev => [...prev, {
80
+ id: Date.now().toString(),
81
+ author: dynamicAuthorName,
82
+ text: commentText,
83
+ date: 'Şimdi',
84
+ replies: []
85
+ }]);
86
+ }
87
+ setCommentText('');
88
+ };
89
+ const finalProfilePrefix = profilePrefix || navigation.profilePrefix;
90
+ const goToProfile = () => {
91
+ router.push(`${finalProfilePrefix}/${author.username}`);
92
+ };
93
+ return (_jsxs("div", { className: `w-full bg-armoyu-card-bg border border-armoyu-card-border rounded-3xl overflow-hidden shadow-sm hover:shadow-md transition-all duration-300 relative ${isPending ? 'opacity-70 pointer-events-none' : ''}`, children: [isPending && (_jsxs("div", { className: "absolute top-4 right-4 z-30 bg-blue-600/90 backdrop-blur-md px-4 py-1.5 rounded-full border border-white/20 shadow-xl flex items-center gap-2 animate-pulse", children: [_jsx("div", { className: "w-2.5 h-2.5 border-2 border-white/20 border-t-white rounded-full animate-spin" }), _jsx("span", { className: "text-[10px] font-black text-white uppercase tracking-widest", children: "G\u00F6nderiliyor..." })] })), _jsxs("div", { className: "p-5 flex items-start gap-4", children: [_jsx("img", { src: author.avatar, alt: author.displayName, className: "w-12 h-12 rounded-full border-2 border-transparent hover:border-blue-500 transition-colors shadow-sm bg-black/5 dark:bg-white/5 object-cover cursor-pointer", onClick: goToProfile, title: "Profile Git" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [_jsx("h3", { className: "font-bold text-armoyu-text truncate max-w-[200px] cursor-pointer hover:text-blue-500 transition-colors", onClick: goToProfile, title: "Profile Git", children: author.displayName }), author.verified && (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", className: "text-blue-500", children: _jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) })), author.role?.name && (_jsx("span", { style: {
94
+ backgroundColor: `${author.role.color}15`,
95
+ color: author.role.color,
96
+ borderColor: `${author.role.color}40`
97
+ }, className: "text-[10px] font-bold px-2 py-0.5 rounded-md uppercase tracking-wider border", children: author.role.name }))] }), _jsxs("div", { className: "relative flex items-center gap-1", children: [user?.username === author.username && (_jsx("button", { className: "text-armoyu-text-muted hover:text-blue-500 p-1.5 transition-colors bg-blue-500/5 rounded-lg border border-blue-500/10", title: "D\u00FCzenle", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }) })), _jsx("button", { onClick: () => setIsMenuOpen(!isMenuOpen), className: "text-armoyu-text-muted hover:text-blue-500 p-1 transition-colors", title: "Se\u00E7enekler", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "12", cy: "12", r: "1" }), _jsx("circle", { cx: "19", cy: "12", r: "1" }), _jsx("circle", { cx: "5", cy: "12", r: "1" })] }) }), isMenuOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setIsMenuOpen(false) }), _jsxs("div", { className: "absolute right-0 mt-1 w-56 bg-armoyu-drawer-bg border border-gray-200 dark:border-white/10 rounded-xl shadow-xl z-50 py-1.5 animate-in fade-in zoom-in-95 duration-200", children: [user?.username === author.username && (_jsxs("button", { onClick: () => setIsMenuOpen(false), className: "w-full text-left px-4 py-2.5 text-sm font-bold text-blue-500 hover:bg-blue-500/10 transition-colors flex items-center gap-3", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }), _jsx("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })] }), "G\u00F6nderiyi D\u00FCzenle"] })), _jsxs("button", { onClick: () => setIsMenuOpen(false), className: "w-full text-left px-4 py-2.5 text-sm font-medium text-armoyu-text hover:bg-black/5 dark:hover:bg-white/5 transition-colors flex items-center gap-3", children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" }) }), "G\u00F6nderiyi Kaydet"] }), _jsxs("button", { onClick: () => setIsMenuOpen(false), className: "w-full text-left px-4 py-2.5 text-sm font-bold text-red-600 dark:text-red-500 hover:bg-red-50 dark:hover:bg-red-500/10 transition-colors flex items-center gap-3 border-t border-gray-100 dark:border-white/5 mt-1 pt-2.5", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z" }), _jsx("line", { x1: "4", y1: "22", x2: "4", y2: "15" })] }), "G\u00F6nderiyi \u015Eikayet Et"] })] })] }))] })] }), _jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-armoyu-text-muted mt-0.5", children: [_jsxs("span", { className: "text-blue-600 dark:text-blue-400 font-bold cursor-pointer hover:underline", onClick: goToProfile, children: ["@", author.username] }), _jsx("span", { children: "\u2022" }), _jsx("span", { children: createdAt })] })] })] }), _jsxs("div", { className: "px-5 pb-3", children: [_jsx("p", { className: "text-sm md:text-base text-armoyu-text leading-relaxed whitespace-pre-wrap font-medium", children: content.split(/(\s+)/).map((part, i) => {
98
+ if (part.startsWith('#')) {
99
+ return (_jsx("button", { onClick: (e) => {
100
+ e.stopPropagation();
101
+ onTagClick?.(part);
102
+ }, className: "text-blue-500 hover:underline inline-block font-bold", children: part }, i));
103
+ }
104
+ return part;
105
+ }) }), repostOf && (_jsxs("div", { className: "mt-4 rounded-2xl border border-black/10 dark:border-white/10 overflow-hidden bg-black/5 dark:bg-black/20 hover:border-blue-500/30 transition-all cursor-pointer group/repost", onClick: (e) => {
106
+ e.stopPropagation();
107
+ router.push(`/?post=${repostOf.id}`);
108
+ }, children: [_jsxs("div", { className: "p-3 flex items-center gap-2 border-b border-black/5 dark:border-white/5", children: [_jsx("img", { src: repostOf.author?.avatar, className: "w-5 h-5 rounded-full object-cover", alt: "" }), _jsx("span", { className: "text-[11px] font-black text-armoyu-text uppercase tracking-tight", children: repostOf.author?.displayName }), _jsxs("span", { className: "text-[10px] font-bold text-armoyu-text-muted opacity-60", children: ["@", repostOf.author?.username] }), _jsx("span", { className: "text-[10px] text-armoyu-text-muted ml-auto", children: repostOf.createdAt })] }), _jsxs("div", { className: "p-4 pt-3", children: [_jsx("p", { className: "text-xs text-armoyu-text-muted line-clamp-3 leading-relaxed", children: repostOf.content }), repostMedia.length > 0 && (_jsx("div", { className: "mt-3 rounded-xl overflow-hidden grid grid-cols-2 gap-1 aspect-[21/9]", children: repostMedia.slice(0, 4).map((m, i) => (_jsxs("div", { className: `relative ${repostMedia.length === 1 ? 'col-span-2' : ''}`, children: [_jsx("img", { src: m.url, className: "w-full h-full object-cover brightness-95 group-hover/repost:scale-105 transition-transform duration-700", alt: "" }), m.type === 'video' && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/20", children: _jsx("div", { className: "w-6 h-6 rounded-full bg-white/20 backdrop-blur-sm flex items-center justify-center text-white", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }) }) }))] }, i))) }))] })] }))] }), displayMedia.length > 0 && (_jsx("div", { className: "px-5 pb-5", children: _jsx("div", { className: `grid gap-1.5 overflow-hidden rounded-2xl border border-black/5 dark:border-white/10 shadow-sm ${displayMedia.length === 1 ? 'grid-cols-1' : displayMedia.length === 2 ? 'grid-cols-2 aspect-[16/9]' : displayMedia.length === 3 ? 'grid-cols-2 aspect-[16/9]' : 'grid-cols-2 aspect-square md:aspect-[16/9]'}`, children: displayMedia.slice(0, 4).map((m, idx) => (_jsxs("div", { className: `relative cursor-pointer group bg-black/5 dark:bg-white/5 ${displayMedia.length === 3 && idx === 0 ? 'row-span-2' : ''}`, onClick: () => setLightboxIndex(idx), children: [m.type === 'video' ? (
109
+ // eslint-disable-next-line jsx-a11y/media-has-caption
110
+ _jsx("video", { src: m.url, className: "w-full h-full object-cover" })) : (_jsx("img", { src: m.url, alt: "Medya", className: "w-full h-full object-cover group-hover:scale-[1.03] transition-transform duration-500" })), m.type === 'video' && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/20 group-hover:bg-black/40 transition-colors z-10", children: _jsx("div", { className: "w-12 h-12 rounded-full bg-white/20 backdrop-blur-md flex items-center justify-center text-white border border-white/30 shadow-lg", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", stroke: "none", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }) }) })), displayMedia.length > 4 && idx === 3 && (_jsxs("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center text-white font-black text-2xl md:text-3xl z-20", children: ["+", displayMedia.length - 4] }))] }, idx))) }) })), likeList && likeList.length > 0 && (_jsxs("div", { className: "px-6 py-2 flex items-center gap-2.5 bg-black/5 dark:bg-white/2 border-y border-armoyu-card-border/50 transition-all hover:bg-black/10 dark:hover:bg-white/5 cursor-pointer", onClick: () => { setInteractionsTab('likes'); setIsInteractionsModalOpen(true); }, children: [_jsx("div", { className: "flex -space-x-2.5 overflow-hidden", children: likeList.slice(0, 3).map((l, i) => (_jsx("img", { src: l.avatar, alt: l.displayName, className: "inline-block h-6 w-6 rounded-full ring-2 ring-armoyu-card-bg bg-armoyu-card-bg object-cover shadow-sm transition-transform hover:scale-110 hover:z-10", title: l.displayName }, i))) }), _jsx("div", { className: "text-[11px] font-bold text-armoyu-text-muted flex items-center gap-1", children: likeCount > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-armoyu-text", children: likeList[0].displayName }), likeCount > 1 && (_jsxs(_Fragment, { children: [_jsx("span", { children: "ve" }), _jsxs("span", { className: "text-armoyu-text", children: [likeCount - 1, " di\u011Fer ki\u015Fi"] })] })), _jsx("span", { children: "be\u011Fendi" })] })) })] })), _jsxs("div", { className: "px-5 py-3.5 border-t border-armoyu-card-border flex justify-between items-center bg-black/5 dark:bg-white/5", children: [_jsxs("div", { className: "flex gap-6", children: [_jsxs("div", { className: "flex items-center", children: [_jsx("button", { onClick: handleLike, className: `flex items-center gap-2 text-sm font-bold transition-colors group ${isLiked ? 'text-blue-500' : 'text-armoyu-text-muted hover:text-blue-500'}`, children: _jsx("div", { className: `p-1.5 rounded-full transition-colors ${isLiked ? 'bg-blue-500/10' : 'group-hover:bg-blue-500/10'}`, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: isLiked ? "currentColor" : "none", stroke: "currentColor", strokeWidth: "2", className: "group-hover:-translate-y-0.5 transition-transform", children: _jsx("path", { d: "M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3" }) }) }) }), likeCount > 0 && (_jsx("button", { onClick: () => { setInteractionsTab('likes'); setIsInteractionsModalOpen(true); }, className: "text-sm font-black text-armoyu-text-muted hover:text-blue-500 transition-colors ml-1 px-1", children: _jsx(RollingNumber, { value: likeCount }) }))] }), _jsxs("button", { onClick: () => setIsCommentOpen(!isCommentOpen), className: `flex items-center gap-2 text-sm font-bold transition-colors group ${isCommentOpen ? 'text-emerald-500' : 'text-armoyu-text-muted hover:text-emerald-500'}`, title: "Yorum Yap", children: [_jsx("div", { className: `p-1.5 rounded-full transition-colors ${isCommentOpen ? 'bg-emerald-500/10' : 'group-hover:bg-emerald-500/10'}`, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "group-hover:-translate-y-0.5 transition-transform", children: _jsx("path", { d: "M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z" }) }) }), (stats.comments + commentsList.length + commentsList.reduce((acc, c) => acc + (c.replies?.length || 0), 0)) > 0 &&
111
+ (stats.comments + commentsList.length + commentsList.reduce((acc, c) => acc + (c.replies?.length || 0), 0))] }), _jsxs("div", { className: "flex items-center", children: [_jsx("button", { onClick: () => setIsRepostModalOpen(true), className: "flex items-center gap-2 text-sm font-bold text-armoyu-text-muted hover:text-green-500 transition-colors group", title: "Yeniden Payla\u015F (Retweet)", children: _jsx("div", { className: "p-1.5 rounded-full group-hover:bg-green-500/10 transition-colors", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "group-hover:-translate-y-0.5 transition-transform", children: [_jsx("polyline", { points: "17 1 21 5 17 9" }), _jsx("path", { d: "M3 11V9a4 4 0 0 1 4-4h14" }), _jsx("polyline", { points: "7 23 3 19 7 15" }), _jsx("path", { d: "M21 13v2a4 4 0 0 1-4 4H3" })] }) }) }), stats.reposts && stats.reposts > 0 && (_jsx("button", { onClick: () => { setInteractionsTab('reposts'); setIsInteractionsModalOpen(true); }, className: "text-sm font-black text-armoyu-text-muted hover:text-green-500 transition-colors ml-1 px-1", children: stats.reposts }))] })] }), _jsx("button", { className: "flex items-center gap-2 text-sm font-bold text-armoyu-text-muted hover:text-purple-500 transition-colors group", children: _jsx("div", { className: "p-1.5 rounded-full group-hover:bg-purple-500/10 transition-colors", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "group-hover:-translate-y-0.5 transition-transform", children: [_jsx("circle", { cx: "18", cy: "5", r: "3" }), _jsx("circle", { cx: "6", cy: "12", r: "3" }), _jsx("circle", { cx: "18", cy: "19", r: "3" }), _jsx("line", { x1: "8.59", y1: "13.51", x2: "15.42", y2: "17.49" }), _jsx("line", { x1: "15.41", y1: "6.51", x2: "8.59", y2: "10.49" })] }) }) })] }), isCommentOpen && (_jsxs("div", { className: "bg-black/5 dark:bg-white/5 border-t border-armoyu-card-border p-4 animate-in fade-in slide-in-from-top-2 duration-200", children: [replyingTo && (_jsxs("div", { className: "flex justify-between items-center mb-2.5 px-2", children: [_jsxs("span", { className: "text-xs font-bold text-blue-500 flex items-center gap-1.5", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polyline", { points: "15 10 20 15 15 20" }), _jsx("path", { d: "M4 4v7a4 4 0 0 0 4 4h12" })] }), _jsx("span", { className: "text-armoyu-text-muted", children: "Yan\u0131tlan\u0131yor:" }), " @", (() => {
112
+ const author = commentsList.find(c => c.id === replyingTo)?.author;
113
+ return typeof author === 'string' ? author : author?.displayName;
114
+ })()] }), _jsx("button", { onClick: () => setReplyingTo(null), className: "text-[11px] font-black uppercase tracking-wider text-armoyu-text-muted hover:text-red-500 transition-colors bg-black/5 dark:bg-white/5 px-2 py-1 rounded-md", children: "\u0130ptal Et" })] })), _jsxs("div", { className: "flex gap-3 mb-2 animate-in fade-in zoom-in-95 duration-300", children: [_jsx("img", { src: user?.avatar || "https://api.dicebear.com/7.x/avataaars/svg?seed=Berkay", alt: "Sen", className: "w-9 h-9 rounded-full bg-white/5 border border-white/10 shrink-0 shadow-sm object-cover" }), _jsxs("div", { className: "flex-1 flex items-center bg-black/5 dark:bg-white/5 border border-gray-200 dark:border-white/10 rounded-2xl px-3 py-1.5 shadow-sm focus-within:border-blue-500 focus-within:ring-1 focus-within:ring-blue-500 transition-all", children: [_jsx("input", { type: "text", value: commentText, onChange: (e) => setCommentText(e.target.value), onKeyDown: (e) => e.key === 'Enter' && handleCommentSubmit(), placeholder: replyingTo ? "Yanıtını yaz..." : "Fikrini paylaş...", className: "flex-1 bg-transparent border-none outline-none text-sm text-armoyu-text placeholder:text-armoyu-text-muted font-medium" }), _jsx("button", { onClick: handleCommentSubmit, disabled: !commentText.trim(), className: "p-2 ml-2 text-blue-500 disabled:text-gray-400 dark:disabled:text-gray-600 disabled:cursor-not-allowed hover:bg-blue-500/10 rounded-xl transition-colors shrink-0", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "22", y1: "2", x2: "11", y2: "13" }), _jsx("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })] }) })] })] }), commentsList.length > 0 && (_jsx("div", { className: "space-y-4 mt-5 px-1", children: commentsList.map((c) => (_jsxs("div", { className: "animate-in fade-in slide-in-from-left-2 zoom-in-95 duration-500", children: [_jsxs("div", { className: "flex gap-3", children: [_jsx("img", { src: `https://api.dicebear.com/7.x/avataaars/svg?seed=${typeof c.author === 'string' ? c.author : c.author?.displayName}`, alt: typeof c.author === 'string' ? c.author : c.author?.displayName, className: "w-8 h-8 rounded-full bg-white/5 border border-black/10 dark:border-white/10 shrink-0 mt-1 shadow-sm" }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "bg-armoyu-drawer-bg border border-gray-200 dark:border-white/5 rounded-2xl rounded-tl-sm px-4 py-2 shadow-sm inline-block min-w-[30%]", children: [_jsx("div", { className: "text-xs font-black text-armoyu-text mb-0.5", children: typeof c.author === 'string' ? c.author : c.author?.displayName }), _jsx("div", { className: "text-sm font-medium text-armoyu-text-muted", children: c.text || c.content })] }), _jsxs("div", { className: "flex items-center gap-4 mt-1.5 ml-2 text-[11px] font-bold text-armoyu-text-muted", children: [_jsx("span", { className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Be\u011Fen" }), _jsx("span", { onClick: () => { setReplyingTo(c.id); setCommentText(''); }, className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Yan\u0131tla" }), _jsx("span", { className: "opacity-50", children: c.date || c.createdAt })] })] })] }), c.replies && c.replies.length > 0 && (_jsx("div", { className: "mt-3 ml-11 space-y-3 border-l-2 border-black/10 dark:border-white/10 pl-4", children: c.replies.map(r => (_jsxs("div", { className: "flex gap-2.5 animate-in fade-in slide-in-from-left-2 duration-300", children: [_jsx("img", { src: `https://api.dicebear.com/7.x/avataaars/svg?seed=${typeof r.author === 'string' ? r.author : r.author?.displayName}`, alt: typeof r.author === 'string' ? r.author : r.author?.displayName, className: "w-6 h-6 rounded-full bg-white/5 border border-black/10 dark:border-white/10 shrink-0 mt-0.5 shadow-sm relative -left-[27px] ring-4 ring-black/5 dark:ring-[#0a0a0e]/60" }), _jsxs("div", { className: "flex-1 -ml-[18px]", children: [_jsxs("div", { className: "bg-armoyu-drawer-bg border border-gray-200 dark:border-white/5 rounded-2xl rounded-tl-sm px-3.5 py-1.5 shadow-sm inline-block", children: [_jsx("span", { className: "text-xs font-black text-armoyu-text mr-2", children: typeof r.author === 'string' ? r.author : r.author?.displayName }), _jsx("span", { className: "text-[13px] font-medium text-armoyu-text-muted", children: r.text || r.content })] }), _jsxs("div", { className: "flex items-center gap-4 mt-1 ml-2 text-[10px] font-bold text-armoyu-text-muted", children: [_jsx("span", { className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Be\u011Fen" }), _jsx("span", { onClick: () => { setReplyingTo(c.id); setCommentText(''); }, className: "hover:text-blue-500 cursor-pointer transition-colors", children: "Yan\u0131tla" }), _jsx("span", { className: "opacity-50", children: r.date || r.createdAt })] })] })] }, r.id))) }))] }, c.id))) }))] })), _jsx(RepostModal, { isOpen: isRepostModalOpen, onClose: () => setIsRepostModalOpen(false), post: { id, author, content, media, createdAt, stats } }), _jsx(PostInteractionsModal, { isOpen: isInteractionsModalOpen, onClose: () => setIsInteractionsModalOpen(false), title: interactionsTab === 'likes' ? 'Beğenenler' : 'Paylaşanlar', likes: likeList, reposts: repostList, defaultTab: interactionsTab }), lightboxIndex !== null && (_jsx(MediaLightbox, { isOpen: lightboxIndex !== null, onClose: () => setLightboxIndex(null), media: displayMedia, initialIndex: lightboxIndex }))] }));
115
+ }
113
116
  //# sourceMappingURL=PostCard.js.map