forma-ui 0.0.5 → 0.0.7

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 (101) hide show
  1. package/dist/Interfaces/dictionary.d.ts +25 -0
  2. package/dist/Interfaces/dictionary.js +8 -0
  3. package/dist/Interfaces/global.d.ts +21 -0
  4. package/dist/Interfaces/global.js +1 -0
  5. package/dist/Interfaces/meta.d.ts +39 -0
  6. package/dist/Interfaces/meta.js +8 -0
  7. package/dist/app/[lang]/stores/LangStore.d.ts +22 -0
  8. package/dist/app/[lang]/stores/LangStore.js +125 -0
  9. package/dist/components/icon/icon.d.ts +102 -2
  10. package/dist/components/icon/icon.js +402 -9
  11. package/dist/components/ui/Accordion.d.ts +1 -0
  12. package/dist/components/ui/Accordion.js +15 -6
  13. package/dist/components/ui/Button.d.ts +0 -0
  14. package/dist/components/ui/Button.js +1 -1
  15. package/dist/components/ui/CheckBox.d.ts +0 -0
  16. package/dist/components/ui/CheckBox.js +0 -0
  17. package/dist/components/ui/Input.d.ts +11 -10
  18. package/dist/components/ui/Input.js +175 -3
  19. package/dist/components/ui/Input.types.d.ts +45 -0
  20. package/dist/components/ui/Input.types.js +1 -0
  21. package/dist/components/ui/Modal.d.ts +9 -9
  22. package/dist/components/ui/Modal.js +51 -6
  23. package/dist/components/ui/RadioButton.d.ts +0 -0
  24. package/dist/components/ui/RadioButton.js +0 -0
  25. package/dist/components/ui/Table.d.ts +0 -0
  26. package/dist/components/ui/Table.js +0 -0
  27. package/dist/components/ui/Tabs.d.ts +0 -0
  28. package/dist/components/ui/Tabs.js +0 -0
  29. package/dist/configs/language.d.ts +39 -0
  30. package/dist/configs/language.js +50 -0
  31. package/dist/configs/metadata.d.ts +69 -0
  32. package/dist/configs/metadata.js +143 -0
  33. package/dist/dictionaries/en.json +0 -0
  34. package/dist/dictionaries/fa.json +0 -0
  35. package/dist/dictionaries/index.d.ts +0 -0
  36. package/dist/dictionaries/index.js +0 -0
  37. package/dist/hooks/useDevice.d.ts +21 -0
  38. package/dist/hooks/useDevice.js +49 -0
  39. package/dist/hooks/useTranslation.d.ts +4 -0
  40. package/dist/hooks/useTranslation.js +34 -0
  41. package/dist/index.d.ts +9 -1
  42. package/dist/index.js +11 -1
  43. package/dist/libs/api/axiosClient.d.ts +9 -0
  44. package/dist/libs/api/axiosClient.js +34 -0
  45. package/dist/libs/api/cns.d.ts +16 -0
  46. package/dist/libs/api/cns.js +29 -0
  47. package/dist/libs/api/usePostFetch.d.ts +23 -0
  48. package/dist/libs/api/usePostFetch.js +17 -0
  49. package/dist/libs/cn.d.ts +1 -0
  50. package/dist/libs/cn.js +12 -0
  51. package/dist/libs/cookieUtils.d.ts +10 -0
  52. package/dist/libs/cookieUtils.js +28 -0
  53. package/dist/libs/detectComponentResponsive.d.ts +10 -0
  54. package/dist/libs/detectComponentResponsive.js +24 -0
  55. package/dist/libs/detectDeviceFromUA.d.ts +8 -0
  56. package/dist/libs/detectDeviceFromUA.js +14 -0
  57. package/dist/libs/fonts.d.ts +10 -0
  58. package/dist/libs/fonts.js +94 -0
  59. package/dist/libs/metadataHelper.d.ts +17 -0
  60. package/dist/libs/metadataHelper.js +20 -0
  61. package/dist/libs/modal/Modal.d.ts +9 -0
  62. package/dist/libs/modal/Modal.js +41 -0
  63. package/dist/libs/translation.d.ts +5 -0
  64. package/dist/libs/translation.js +30 -0
  65. package/dist/{lib → libs}/utils.d.ts +0 -0
  66. package/dist/{lib → libs}/utils.js +0 -0
  67. package/dist/locale/about/en.json +3 -0
  68. package/dist/locale/about/fa.json +3 -0
  69. package/dist/locale/coin/en.json +4 -0
  70. package/dist/locale/coin/fa.json +4 -0
  71. package/dist/locale/en.d.ts +56 -0
  72. package/dist/locale/en.js +16 -0
  73. package/dist/locale/fa.d.ts +59 -0
  74. package/dist/locale/fa.js +16 -0
  75. package/dist/locale/global/en.json +12 -0
  76. package/dist/locale/global/fa.json +16 -0
  77. package/dist/locale/home/en.json +11 -0
  78. package/dist/locale/home/fa.json +11 -0
  79. package/dist/locale/index.d.ts +201 -0
  80. package/dist/locale/index.js +7 -0
  81. package/dist/locale/meta/about/en.json +10 -0
  82. package/dist/locale/meta/about/fa.json +5 -0
  83. package/dist/locale/meta/en.json +15 -0
  84. package/dist/locale/meta/fa.json +15 -0
  85. package/dist/locale/meta/home/en.json +10 -0
  86. package/dist/locale/meta/home/fa.json +5 -0
  87. package/dist/middleware.d.ts +14 -0
  88. package/dist/middleware.js +57 -0
  89. package/dist/store/appStore.d.ts +1 -1
  90. package/dist/store/appStore.js +1 -1
  91. package/dist/tsconfig.build.tsbuildinfo +1 -1
  92. package/dist/utils/nextImageLoader.d.ts +9 -0
  93. package/dist/utils/nextImageLoader.js +15 -0
  94. package/package.json +10 -3
  95. package/README.md +0 -36
  96. package/dist/components/PostDetailPage.d.ts +0 -7
  97. package/dist/components/PostDetailPage.js +0 -47
  98. package/dist/components/PostPage.d.ts +0 -6
  99. package/dist/components/PostPage.js +0 -48
  100. package/dist/config/language.d.ts +0 -11
  101. package/dist/config/language.js +0 -6
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-08 15:28:13
6
+ * @Description: Shared metadata generator for all pages
7
+ */
8
+ import { languages } from "@/configs/language";
9
+ import { generatePageMetadata } from "@/configs/metadata";
10
+ /**
11
+ * Generate metadata dynamically based on language and source key
12
+ * @param params - Next.js dynamic route params
13
+ * @param source - Metadata source key in dictionary
14
+ */
15
+ export async function createMetadata(params, source) {
16
+ const resolvedParams = await params;
17
+ const { lang = "en" } = resolvedParams !== null && resolvedParams !== void 0 ? resolvedParams : {};
18
+ const selected = lang in languages ? lang : "en";
19
+ return generatePageMetadata(selected, source);
20
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-27 07:12:17
6
+ * @Description:
7
+ */
8
+ export declare const ShowModal: (id: string) => void;
9
+ export declare const CloseModal: (id: string) => void;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-27 07:12:17
6
+ * @Description:
7
+ */
8
+ export const ShowModal = (id) => {
9
+ document.body.style.overflow = "hidden";
10
+ const modalElement = document.getElementById(id);
11
+ if (modalElement) {
12
+ modalElement.classList.remove("hidden");
13
+ modalElement.classList.add("inline-flex");
14
+ }
15
+ const overlayIsntClickable = document.getElementById(id + "-overlayIsntClickable");
16
+ const overlayClickable = document.getElementById(id + "-overlayClickable");
17
+ if (overlayIsntClickable) {
18
+ overlayIsntClickable.classList.remove("hidden");
19
+ }
20
+ else if (overlayClickable) {
21
+ overlayClickable.classList.remove("hidden");
22
+ }
23
+ };
24
+ export const CloseModal = (id) => {
25
+ if (!id)
26
+ return;
27
+ const modalElement = document.getElementById(id);
28
+ if (modalElement) {
29
+ modalElement.classList.add("hidden");
30
+ modalElement.classList.remove("inline-flex");
31
+ }
32
+ document.body.style.overflow = "auto";
33
+ const overlayIsntClickable = document.getElementById(id + "-overlayIsntClickable");
34
+ const overlayClickable = document.getElementById(id + "-overlayClickable");
35
+ if (overlayIsntClickable) {
36
+ overlayIsntClickable.classList.add("hidden");
37
+ }
38
+ else if (overlayClickable) {
39
+ overlayClickable.classList.add("hidden");
40
+ }
41
+ };
@@ -0,0 +1,5 @@
1
+ import { type Lang } from "@/configs/language";
2
+ export declare function createTranslator(lang: Lang): {
3
+ t: (key: string, fallback?: string) => string;
4
+ lang: "en" | "fa";
5
+ };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-18 09:36:46
6
+ * @Description:
7
+ */
8
+ // utils/translation.ts
9
+ import { getDictionary } from "@/locale";
10
+ export function createTranslator(lang) {
11
+ const translations = getDictionary(lang);
12
+ function t(key, fallback) {
13
+ if (!translations) {
14
+ console.warn("Translations not loaded for language:", lang);
15
+ return fallback !== null && fallback !== void 0 ? fallback : key;
16
+ }
17
+ const keys = key.split(".");
18
+ let value = translations;
19
+ for (const k of keys) {
20
+ if (value && typeof value === "object" && k in value) {
21
+ value = value[k];
22
+ }
23
+ else {
24
+ return fallback !== null && fallback !== void 0 ? fallback : key;
25
+ }
26
+ }
27
+ return typeof value === "string" ? value : fallback !== null && fallback !== void 0 ? fallback : key;
28
+ }
29
+ return { t, lang };
30
+ }
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ {
2
+ "aimoonhub": "aimoonhub"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "aimoonhub": "آیمون‌هاب"
3
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "mood_day": "Mood day",
3
+ "mood_week": "Mood week"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "mood_day": "مود روز",
3
+ "mood_week": "مود هفته"
4
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-07 07:53:42
6
+ * @Description:
7
+ */
8
+ declare const en: {
9
+ mood_day: string;
10
+ mood_week: string;
11
+ aimoonhub: string;
12
+ welcome_title: string;
13
+ financial_markets: string;
14
+ cryptocurrencies: string;
15
+ welcome_description: string;
16
+ login_dashboard: string;
17
+ go_to_news: string;
18
+ welcome_title_2: string;
19
+ welcome_description_2: string;
20
+ loaderPage: string;
21
+ loading: string;
22
+ header: string;
23
+ home: string;
24
+ about_us: string;
25
+ contact_us: string;
26
+ features: string;
27
+ prices: string;
28
+ support: string;
29
+ login_telegram: string;
30
+ meta: {
31
+ title: string;
32
+ description: string;
33
+ keywords: string[];
34
+ openGraph: {
35
+ title: string;
36
+ description: string;
37
+ image: string;
38
+ };
39
+ twitter: {
40
+ title: string;
41
+ description: string;
42
+ image: string;
43
+ };
44
+ };
45
+ meta_home: {
46
+ title: string;
47
+ description: string;
48
+ keywords: string[];
49
+ };
50
+ meta_about: {
51
+ title: string;
52
+ description: string;
53
+ keywords: string[];
54
+ };
55
+ };
56
+ export default en;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-07 07:53:42
6
+ * @Description:
7
+ */
8
+ import meta_en from "./meta/en.json";
9
+ import meta_home_en from "./meta/home/en.json";
10
+ import meta_about_en from "./meta/about/en.json";
11
+ import global_en from "./global/en.json";
12
+ import home_en from "./home/en.json";
13
+ import coin_en from "./coin/en.json";
14
+ import about_en from "./about/en.json";
15
+ const en = Object.assign(Object.assign(Object.assign(Object.assign({ meta: meta_en, meta_home: meta_home_en, meta_about: meta_about_en }, global_en), home_en), about_en), coin_en);
16
+ export default en;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-07 07:54:08
6
+ * @Description:
7
+ */
8
+ declare const fa: {
9
+ mood_day: string;
10
+ mood_week: string;
11
+ aimoonhub: string;
12
+ welcome_title: string;
13
+ financial_markets: string;
14
+ cryptocurrencies: string;
15
+ welcome_description: string;
16
+ login_dashboard: string;
17
+ go_to_news: string;
18
+ welcome_title_2: string;
19
+ welcome_description_2: string;
20
+ loaderPage: string;
21
+ loading: string;
22
+ coin: string;
23
+ sentiment: string;
24
+ news: string;
25
+ header: string;
26
+ home: string;
27
+ about_us: string;
28
+ contact_us: string;
29
+ features: string;
30
+ prices: string;
31
+ support: string;
32
+ login_telegram: string;
33
+ meta: {
34
+ title: string;
35
+ description: string;
36
+ keywords: string[];
37
+ openGraph: {
38
+ title: string;
39
+ description: string;
40
+ image: string;
41
+ };
42
+ twitter: {
43
+ title: string;
44
+ description: string;
45
+ image: string;
46
+ };
47
+ };
48
+ meta_home: {
49
+ title: string;
50
+ description: string;
51
+ keywords: string[];
52
+ };
53
+ meta_about: {
54
+ title: string;
55
+ description: string;
56
+ keywords: string[];
57
+ };
58
+ };
59
+ export default fa;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-07 07:54:08
6
+ * @Description:
7
+ */
8
+ import meta_fa from "./meta/fa.json";
9
+ import meta_home_fa from "./meta/home/fa.json";
10
+ import meta_about_fa from "./meta/about/fa.json";
11
+ import global_fa from "./global/fa.json";
12
+ import home_fa from "./home/fa.json";
13
+ import about_fa from "./about/fa.json";
14
+ import coin_fa from "./coin/fa.json";
15
+ const fa = Object.assign(Object.assign(Object.assign(Object.assign({ meta: meta_fa, meta_home: meta_home_fa, meta_about: meta_about_fa }, global_fa), home_fa), about_fa), coin_fa);
16
+ export default fa;
@@ -0,0 +1,12 @@
1
+ {
2
+ "loaderPage": "",
3
+ "loading": "Loading",
4
+ "header": "",
5
+ "home": "Home",
6
+ "about_us": "About Us",
7
+ "contact_us": "Contact Us",
8
+ "features": "Features",
9
+ "prices": "Prices",
10
+ "support": "Support",
11
+ "login_telegram": "Launch Telegram Bot"
12
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "loaderPage": "",
3
+ "loading": "در حال بارگیری",
4
+ "aimoonhub": "ایمون هاب",
5
+ "coin": "سکه",
6
+ "sentiment": "احساسات",
7
+ "news": "اخبار",
8
+ "header": "",
9
+ "home": "صفحه اصلی",
10
+ "about_us": "درباره ما",
11
+ "contact_us": "ارتباط با ما",
12
+ "features": "ویژگی ما",
13
+ "prices": "قیمت ها",
14
+ "support": "پشتیبانی",
15
+ "login_telegram": "ورود به ربات تلگرام"
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "aimoonhub": "aimoonhub",
3
+ "welcome_title": "Breaking News Analysis <0>{{financial_markets}}</0> and <1>{{cryptocurrencies}}</1>",
4
+ "financial_markets": "Financial Markets",
5
+ "cryptocurrencies": "Cryptocurrencies",
6
+ "welcome_description": "Using artificial intelligence, AimoonHub analyzes news and market data in real time and provides you with accurate information for better decision-making",
7
+ "login_dashboard": "Login to dashboard",
8
+ "go_to_news": "Go to News",
9
+ "welcome_title_2": "Smart crypto news analysis tool!",
10
+ "welcome_description_2": "With superhuman accuracy, check out the latest news and developments in the world of cryptocurrencies. Real-time data, detailed analysis, and deep insight to make better decisions in the financial markets!"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "aimoonhub": "آیمون‌هاب",
3
+ "welcome_title": "تحلیل لحظه‌ای اخبار <0>{{financial_markets}}</0> و <1>{{cryptocurrencies}}</1>",
4
+ "financial_markets": "بازارهای مالی",
5
+ "cryptocurrencies": "رمز ارزها",
6
+ "welcome_description": "آیمون‌هاب با استفاده از هوش مصنوعی، اخبار و داده‌های بازار را در لحظه تحلیل کرده و اطلاعاتی دقیق برای تصمیم‌گیری بهتر به شما ارائه می‌دهد",
7
+ "login_dashboard": "ورود به داشبورد",
8
+ "go_to_news": "برو به اخبار",
9
+ "welcome_title_2": "ابزار هوشمند تحلیل اخبار کریپتو!",
10
+ "welcome_description_2": " با دقتی فراتر از انسان، جدیدترین اخبار و تحولات دنیای رمزارزها را بررسی کن. داده‌های لحظه‌ای، تحلیل‌های دقیق و بینشی عمیق برای تصمیم‌گیری بهتر در بازارهای مالی!"
11
+ }
@@ -0,0 +1,201 @@
1
+ declare const dictionaries: {
2
+ en: {
3
+ mood_day: string;
4
+ mood_week: string;
5
+ aimoonhub: string;
6
+ welcome_title: string;
7
+ financial_markets: string;
8
+ cryptocurrencies: string;
9
+ welcome_description: string;
10
+ login_dashboard: string;
11
+ go_to_news: string;
12
+ welcome_title_2: string;
13
+ welcome_description_2: string;
14
+ loaderPage: string;
15
+ loading: string;
16
+ header: string;
17
+ home: string;
18
+ about_us: string;
19
+ contact_us: string;
20
+ features: string;
21
+ prices: string;
22
+ support: string;
23
+ login_telegram: string;
24
+ meta: {
25
+ title: string;
26
+ description: string;
27
+ keywords: string[];
28
+ openGraph: {
29
+ title: string;
30
+ description: string;
31
+ image: string;
32
+ };
33
+ twitter: {
34
+ title: string;
35
+ description: string;
36
+ image: string;
37
+ };
38
+ };
39
+ meta_home: {
40
+ title: string;
41
+ description: string;
42
+ keywords: string[];
43
+ };
44
+ meta_about: {
45
+ title: string;
46
+ description: string;
47
+ keywords: string[];
48
+ };
49
+ };
50
+ fa: {
51
+ mood_day: string;
52
+ mood_week: string;
53
+ aimoonhub: string;
54
+ welcome_title: string;
55
+ financial_markets: string;
56
+ cryptocurrencies: string;
57
+ welcome_description: string;
58
+ login_dashboard: string;
59
+ go_to_news: string;
60
+ welcome_title_2: string;
61
+ welcome_description_2: string;
62
+ loaderPage: string;
63
+ loading: string;
64
+ coin: string;
65
+ sentiment: string;
66
+ news: string;
67
+ header: string;
68
+ home: string;
69
+ about_us: string;
70
+ contact_us: string;
71
+ features: string;
72
+ prices: string;
73
+ support: string;
74
+ login_telegram: string;
75
+ meta: {
76
+ title: string;
77
+ description: string;
78
+ keywords: string[];
79
+ openGraph: {
80
+ title: string;
81
+ description: string;
82
+ image: string;
83
+ };
84
+ twitter: {
85
+ title: string;
86
+ description: string;
87
+ image: string;
88
+ };
89
+ };
90
+ meta_home: {
91
+ title: string;
92
+ description: string;
93
+ keywords: string[];
94
+ };
95
+ meta_about: {
96
+ title: string;
97
+ description: string;
98
+ keywords: string[];
99
+ };
100
+ };
101
+ };
102
+ export type Lang = keyof typeof dictionaries;
103
+ export declare const getDictionary: (lang?: Lang) => {
104
+ mood_day: string;
105
+ mood_week: string;
106
+ aimoonhub: string;
107
+ welcome_title: string;
108
+ financial_markets: string;
109
+ cryptocurrencies: string;
110
+ welcome_description: string;
111
+ login_dashboard: string;
112
+ go_to_news: string;
113
+ welcome_title_2: string;
114
+ welcome_description_2: string;
115
+ loaderPage: string;
116
+ loading: string;
117
+ header: string;
118
+ home: string;
119
+ about_us: string;
120
+ contact_us: string;
121
+ features: string;
122
+ prices: string;
123
+ support: string;
124
+ login_telegram: string;
125
+ meta: {
126
+ title: string;
127
+ description: string;
128
+ keywords: string[];
129
+ openGraph: {
130
+ title: string;
131
+ description: string;
132
+ image: string;
133
+ };
134
+ twitter: {
135
+ title: string;
136
+ description: string;
137
+ image: string;
138
+ };
139
+ };
140
+ meta_home: {
141
+ title: string;
142
+ description: string;
143
+ keywords: string[];
144
+ };
145
+ meta_about: {
146
+ title: string;
147
+ description: string;
148
+ keywords: string[];
149
+ };
150
+ } | {
151
+ mood_day: string;
152
+ mood_week: string;
153
+ aimoonhub: string;
154
+ welcome_title: string;
155
+ financial_markets: string;
156
+ cryptocurrencies: string;
157
+ welcome_description: string;
158
+ login_dashboard: string;
159
+ go_to_news: string;
160
+ welcome_title_2: string;
161
+ welcome_description_2: string;
162
+ loaderPage: string;
163
+ loading: string;
164
+ coin: string;
165
+ sentiment: string;
166
+ news: string;
167
+ header: string;
168
+ home: string;
169
+ about_us: string;
170
+ contact_us: string;
171
+ features: string;
172
+ prices: string;
173
+ support: string;
174
+ login_telegram: string;
175
+ meta: {
176
+ title: string;
177
+ description: string;
178
+ keywords: string[];
179
+ openGraph: {
180
+ title: string;
181
+ description: string;
182
+ image: string;
183
+ };
184
+ twitter: {
185
+ title: string;
186
+ description: string;
187
+ image: string;
188
+ };
189
+ };
190
+ meta_home: {
191
+ title: string;
192
+ description: string;
193
+ keywords: string[];
194
+ };
195
+ meta_about: {
196
+ title: string;
197
+ description: string;
198
+ keywords: string[];
199
+ };
200
+ };
201
+ export {};
@@ -0,0 +1,7 @@
1
+ import { cache } from "react";
2
+ import en from "./en";
3
+ import fa from "./fa";
4
+ const dictionaries = { en, fa };
5
+ export const getDictionary = cache((lang = "en") => {
6
+ return dictionaries[lang];
7
+ });
@@ -0,0 +1,10 @@
1
+ {
2
+ "title": "About",
3
+ "description": "Description Home",
4
+ "keywords": [
5
+ "njksdfjksdhfksdjhf",
6
+ "sdfsdfsdfsd",
7
+ "mufsdfsdfsdfsdltilingual",
8
+ "dfgdfgdfgdfg"
9
+ ]
10
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "title": "درباره",
3
+ "description": "توضیح برای متای خانه",
4
+ "keywords": ["منسیابتنسیا", "سیبسیب", "سیبسیبسی", "سیبسیبسیبسی"]
5
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "title": "Mohammad Felfelani",
3
+ "description": "AimoonHub",
4
+ "keywords": ["next.js", "react", "multilingual", "website"],
5
+ "openGraph": {
6
+ "title": "My Multilingual Website",
7
+ "description": "Explore our multilingual platform built with Next.js.",
8
+ "image": "/og-en.jpg"
9
+ },
10
+ "twitter": {
11
+ "title": "My Multilingual Website",
12
+ "description": "Welcome to our multilingual website!",
13
+ "image": "/twitter-en.jpg"
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "title": "آیمون‌هاب",
3
+ "description": "به وب‌سایت چندزبانه من خوش آمدید!",
4
+ "keywords": ["نکست", "ری‌اکت", "چندزبانه", "وب‌سایت"],
5
+ "openGraph": {
6
+ "title": "وب‌سایت چندزبانه من",
7
+ "description": "پلتفرم چندزبانه ما را که با Next.js ساخته شده، کشف کنید.",
8
+ "image": "/og-fa.jpg"
9
+ },
10
+ "twitter": {
11
+ "title": "وب‌سایت چندزبانه من",
12
+ "description": "به وب‌سایت چندزبانه ما خوش آمدید!",
13
+ "image": "/twitter-fa.jpg"
14
+ }
15
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "title": "Home",
3
+ "description": "Description Home",
4
+ "keywords": [
5
+ "njksdfjksdhfksdjhf",
6
+ "sdfsdfsdfsd",
7
+ "mufsdfsdfsdfsdltilingual",
8
+ "dfgdfgdfgdfg"
9
+ ]
10
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "title": "خانه",
3
+ "description": "توضیح برای متای خانه",
4
+ "keywords": ["منسیابتنسیا", "سیبسیب", "سیبسیبسی", "سیبسیبسیبسی"]
5
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @Author: Mohammad Felfelani
3
+ * @Email: mfelfelani72@gmail.com
4
+ * @Team:
5
+ * @Date: 2025-10-19
6
+ * @Description: Middleware with language and device detection
7
+ *
8
+ */
9
+ import { NextResponse } from "next/server";
10
+ import type { NextRequest } from "next/server";
11
+ export declare function middleware(request: NextRequest): NextResponse<unknown>;
12
+ export declare const config: {
13
+ matcher: string[];
14
+ };