@monetize.software/sdk-extension 3.0.0-alpha.1 → 3.0.0-alpha.10

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 (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -20
  3. package/dist/chunks/ar-7cgIM-Vl.js +2 -0
  4. package/dist/chunks/ar-7cgIM-Vl.js.map +1 -0
  5. package/dist/chunks/ar-B2Wg_IrC.js +126 -0
  6. package/dist/chunks/ar-B2Wg_IrC.js.map +1 -0
  7. package/dist/chunks/{chrome-port-BXHR4SOG.js → chrome-port-CB1NEZOC.js} +367 -216
  8. package/dist/chunks/chrome-port-CB1NEZOC.js.map +1 -0
  9. package/dist/chunks/chrome-port-DptrBLez.js +2 -0
  10. package/dist/chunks/chrome-port-DptrBLez.js.map +1 -0
  11. package/dist/chunks/cs-BNo9Dx0Q.js +122 -0
  12. package/dist/chunks/cs-BNo9Dx0Q.js.map +1 -0
  13. package/dist/chunks/cs-S05PC5AC.js +2 -0
  14. package/dist/chunks/cs-S05PC5AC.js.map +1 -0
  15. package/dist/chunks/da-Bi4zBG14.js +2 -0
  16. package/dist/chunks/da-Bi4zBG14.js.map +1 -0
  17. package/dist/chunks/da-Do9Lq6En.js +122 -0
  18. package/dist/chunks/da-Do9Lq6En.js.map +1 -0
  19. package/dist/chunks/de-C8pDZNvx.js +141 -0
  20. package/dist/chunks/de-C8pDZNvx.js.map +1 -0
  21. package/dist/chunks/de-nCDB6D2W.js +2 -0
  22. package/dist/chunks/de-nCDB6D2W.js.map +1 -0
  23. package/dist/chunks/el-BrKaa978.js +2 -0
  24. package/dist/chunks/el-BrKaa978.js.map +1 -0
  25. package/dist/chunks/el-DzMNX-_P.js +126 -0
  26. package/dist/chunks/el-DzMNX-_P.js.map +1 -0
  27. package/dist/chunks/es-B-Wtyzrl.js +2 -0
  28. package/dist/chunks/es-B-Wtyzrl.js.map +1 -0
  29. package/dist/chunks/es-YrKt-q4w.js +141 -0
  30. package/dist/chunks/es-YrKt-q4w.js.map +1 -0
  31. package/dist/chunks/fi-Bh44pwZ4.js +122 -0
  32. package/dist/chunks/fi-Bh44pwZ4.js.map +1 -0
  33. package/dist/chunks/fi-D1SGXjnO.js +2 -0
  34. package/dist/chunks/fi-D1SGXjnO.js.map +1 -0
  35. package/dist/chunks/fr-Bc0pw4ws.js +141 -0
  36. package/dist/chunks/fr-Bc0pw4ws.js.map +1 -0
  37. package/dist/chunks/fr-BhYf-iKk.js +2 -0
  38. package/dist/chunks/fr-BhYf-iKk.js.map +1 -0
  39. package/dist/chunks/he-BXAaFv6Y.js +2 -0
  40. package/dist/chunks/he-BXAaFv6Y.js.map +1 -0
  41. package/dist/chunks/he-Bfm-bhe3.js +126 -0
  42. package/dist/chunks/he-Bfm-bhe3.js.map +1 -0
  43. package/dist/chunks/hi-D-O-B9Dn.js +126 -0
  44. package/dist/chunks/hi-D-O-B9Dn.js.map +1 -0
  45. package/dist/chunks/hi-xblDO0O7.js +2 -0
  46. package/dist/chunks/hi-xblDO0O7.js.map +1 -0
  47. package/dist/chunks/hu-CmIuAbLL.js +122 -0
  48. package/dist/chunks/hu-CmIuAbLL.js.map +1 -0
  49. package/dist/chunks/hu-Wa46p0y4.js +2 -0
  50. package/dist/chunks/hu-Wa46p0y4.js.map +1 -0
  51. package/dist/chunks/id-CQEo5X94.js +2 -0
  52. package/dist/chunks/id-CQEo5X94.js.map +1 -0
  53. package/dist/chunks/id-DN7IES-A.js +122 -0
  54. package/dist/chunks/id-DN7IES-A.js.map +1 -0
  55. package/dist/chunks/it-8AYCm0xz.js +2 -0
  56. package/dist/chunks/it-8AYCm0xz.js.map +1 -0
  57. package/dist/chunks/it-Cz5Nmqx5.js +141 -0
  58. package/dist/chunks/it-Cz5Nmqx5.js.map +1 -0
  59. package/dist/chunks/ja-BH9BlBh2.js +145 -0
  60. package/dist/chunks/ja-BH9BlBh2.js.map +1 -0
  61. package/dist/chunks/ja-q-COVayn.js +2 -0
  62. package/dist/chunks/ja-q-COVayn.js.map +1 -0
  63. package/dist/chunks/ko-B6HRCscZ.js +2 -0
  64. package/dist/chunks/ko-B6HRCscZ.js.map +1 -0
  65. package/dist/chunks/ko-CYV9QuYs.js +145 -0
  66. package/dist/chunks/ko-CYV9QuYs.js.map +1 -0
  67. package/dist/chunks/nl-BvkB900D.js +141 -0
  68. package/dist/chunks/nl-BvkB900D.js.map +1 -0
  69. package/dist/chunks/nl-CAd6_xlm.js +2 -0
  70. package/dist/chunks/nl-CAd6_xlm.js.map +1 -0
  71. package/dist/chunks/no-3s9_ormb.js +122 -0
  72. package/dist/chunks/no-3s9_ormb.js.map +1 -0
  73. package/dist/chunks/no-CAmz6bz6.js +2 -0
  74. package/dist/chunks/no-CAmz6bz6.js.map +1 -0
  75. package/dist/chunks/pl-C9WTGQtb.js +122 -0
  76. package/dist/chunks/pl-C9WTGQtb.js.map +1 -0
  77. package/dist/chunks/pl-DqUSTCaF.js +2 -0
  78. package/dist/chunks/pl-DqUSTCaF.js.map +1 -0
  79. package/dist/chunks/port-name-CF4WQQ3-.js +2 -0
  80. package/dist/chunks/port-name-CF4WQQ3-.js.map +1 -0
  81. package/dist/chunks/port-name-ervLBWAQ.js +6 -0
  82. package/dist/chunks/port-name-ervLBWAQ.js.map +1 -0
  83. package/dist/chunks/pt-8ARZnH0_.js +2 -0
  84. package/dist/chunks/pt-8ARZnH0_.js.map +1 -0
  85. package/dist/chunks/pt-uFVUv_Op.js +141 -0
  86. package/dist/chunks/pt-uFVUv_Op.js.map +1 -0
  87. package/dist/chunks/ro-BrqQ8Au-.js +122 -0
  88. package/dist/chunks/ro-BrqQ8Au-.js.map +1 -0
  89. package/dist/chunks/ro-D-NMbp2F.js +2 -0
  90. package/dist/chunks/ro-D-NMbp2F.js.map +1 -0
  91. package/dist/chunks/ru-8gbHPh0g.js +2 -0
  92. package/dist/chunks/ru-8gbHPh0g.js.map +1 -0
  93. package/dist/chunks/ru-DK594dA8.js +144 -0
  94. package/dist/chunks/ru-DK594dA8.js.map +1 -0
  95. package/dist/chunks/sv-CHNH8-mq.js +122 -0
  96. package/dist/chunks/sv-CHNH8-mq.js.map +1 -0
  97. package/dist/chunks/sv-D8a8hmx9.js +2 -0
  98. package/dist/chunks/sv-D8a8hmx9.js.map +1 -0
  99. package/dist/chunks/th-DfjUK0Y7.js +2 -0
  100. package/dist/chunks/th-DfjUK0Y7.js.map +1 -0
  101. package/dist/chunks/th-l24Pm5q-.js +126 -0
  102. package/dist/chunks/th-l24Pm5q-.js.map +1 -0
  103. package/dist/chunks/tr-ADpigSY5.js +122 -0
  104. package/dist/chunks/tr-ADpigSY5.js.map +1 -0
  105. package/dist/chunks/tr-BdBpz4tL.js +2 -0
  106. package/dist/chunks/tr-BdBpz4tL.js.map +1 -0
  107. package/dist/chunks/uk-CGqo4jek.js +144 -0
  108. package/dist/chunks/uk-CGqo4jek.js.map +1 -0
  109. package/dist/chunks/uk-Cx1zv1ao.js +2 -0
  110. package/dist/chunks/uk-Cx1zv1ao.js.map +1 -0
  111. package/dist/chunks/vi-Dk9bTu6f.js +122 -0
  112. package/dist/chunks/vi-Dk9bTu6f.js.map +1 -0
  113. package/dist/chunks/vi-oe2dW21I.js +2 -0
  114. package/dist/chunks/vi-oe2dW21I.js.map +1 -0
  115. package/dist/chunks/zh-CwczPMPp.js +2 -0
  116. package/dist/chunks/zh-CwczPMPp.js.map +1 -0
  117. package/dist/chunks/zh-LDkEV2D9.js +145 -0
  118. package/dist/chunks/zh-LDkEV2D9.js.map +1 -0
  119. package/dist/content/RemoteAuthClient.d.ts +8 -4
  120. package/dist/content/RemoteAuthClient.d.ts.map +1 -1
  121. package/dist/content/RemoteAuthClient.test-d.d.ts +2 -0
  122. package/dist/content/RemoteAuthClient.test-d.d.ts.map +1 -0
  123. package/dist/content/RemoteBillingClient.d.ts +29 -0
  124. package/dist/content/RemoteBillingClient.d.ts.map +1 -1
  125. package/dist/content/RemoteBillingClient.test-d.d.ts +2 -0
  126. package/dist/content/RemoteBillingClient.test-d.d.ts.map +1 -0
  127. package/dist/content.cjs +3 -3
  128. package/dist/content.cjs.map +1 -1
  129. package/dist/content.js +2106 -1040
  130. package/dist/content.js.map +1 -1
  131. package/dist/offscreen/server.d.ts.map +1 -1
  132. package/dist/offscreen.cjs +1 -1
  133. package/dist/offscreen.cjs.map +1 -1
  134. package/dist/offscreen.js +18 -15
  135. package/dist/offscreen.js.map +1 -1
  136. package/dist/shared/messages.d.ts +27 -4
  137. package/dist/shared/messages.d.ts.map +1 -1
  138. package/dist/shared/port-name.d.ts +1 -0
  139. package/dist/shared/port-name.d.ts.map +1 -1
  140. package/dist/shared/protocol.d.ts +1 -1
  141. package/dist/shared/protocol.d.ts.map +1 -1
  142. package/dist/sw.cjs +1 -1
  143. package/dist/sw.cjs.map +1 -1
  144. package/dist/sw.js +14 -14
  145. package/dist/sw.js.map +1 -1
  146. package/package.json +39 -21
  147. package/dist/chunks/chrome-port-BXHR4SOG.js.map +0 -1
  148. package/dist/chunks/chrome-port-EtYqHf3p.js +0 -2
  149. package/dist/chunks/chrome-port-EtYqHf3p.js.map +0 -1
  150. package/dist/chunks/port-name-BPfQKtdb.js +0 -5
  151. package/dist/chunks/port-name-BPfQKtdb.js.map +0 -1
  152. package/dist/chunks/port-name-qwB109u9.js +0 -2
  153. package/dist/chunks/port-name-qwB109u9.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 monetize.software
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -8,6 +8,9 @@ The content-script public API is **drop-in compatible** with `@monetize.software
8
8
  the host writes `import { PaywallUI } from '@monetize.software/sdk-extension'` and
9
9
  gets the same class with the same method set.
10
10
 
11
+ > ⚠️ **Bundle as an npm dependency. Do not load from a CDN.**
12
+ > Chrome Web Store [MV3 policy](https://developer.chrome.com/docs/webstore/program-policies/mv3-requirements) forbids remote code execution — every line of JS your extension runs must be reviewable at submission time and ship inside the extension package. `pnpm add @monetize.software/sdk-extension` and bundle it with Vite/Rollup/webpack like any other npm dep. Loading this package (or `@monetize.software/sdk`, or `@monetize.software/sdk-react`) from `esm.sh`/`unpkg`/`jsDelivr` from a content script, popup, or service worker will get the extension rejected by review, or removed retroactively if the policy violation is spotted later. This is also why we publish `sdk-extension` as a separate package — its content-script bundle has all dependencies inlined, no runtime fetch of code.
13
+
11
14
  ## Architecture
12
15
 
13
16
  ```
@@ -20,20 +23,12 @@ content script (per tab) ──port──▶ service worker ──port──▶
20
23
  ```
21
24
 
22
25
  - **content-script:** UI + RemoteBillingClient (proxy over a port into offscreen).
23
- - **service worker:** content↔offscreen router; OAuth flow via `chrome.identity`
24
- (offscreen can't access it directly).
26
+ - **service worker:** content↔offscreen router. OAuth uses a popup window opened
27
+ against your `apiOrigin` (custom_domain) `chrome.identity` is **not** used.
25
28
  - **offscreen:** the real SDK state, survives tab closes, the sole coordination
26
29
  point for auth refresh / trial counter / analytics batching.
27
30
 
28
- ## Status
29
-
30
- Phase 0 — skeleton: package.json, vite multi-entry, wire-protocol types,
31
- stubs for content/offscreen/sw and a demo-extension manifest. Actual routing
32
- and `RemoteBillingClient` come in the next phases.
33
-
34
- See TODO in the repo and `src/shared/protocol.ts` for the message contract.
35
-
36
- ## Usage (target shape, when complete)
31
+ ## Usage
37
32
 
38
33
  **In the extension:**
39
34
 
@@ -66,18 +61,24 @@ permissions to match its own UX. Minimum for the SDK to work:
66
61
  ```json
67
62
  {
68
63
  "permissions": ["offscreen", "storage"],
69
- "host_permissions": ["https://api.monetize.software/*"],
64
+ "host_permissions": ["https://your-paywall-domain.com/*"],
70
65
  "background": { "service_worker": "sw.js", "type": "module" }
71
66
  }
72
67
  ```
73
68
 
74
- Optional:
69
+ `host_permissions` must list **your `apiOrigin`** — the `custom_domain` configured
70
+ for your paywall in the platform (the same value you pass to `new PaywallUI({ apiOrigin })`).
71
+ This is the only origin the SDK calls from offscreen / SW / content-script (bootstrap,
72
+ checkout, billing, auth). There is no `api.monetize.software` — every customer ships
73
+ their own custom domain.
74
+
75
+ `web_accessible_resources` for `offscreen.html` is **not required** — the document
76
+ is created by the service worker via `chrome.offscreen.createDocument`, a Chrome API
77
+ that doesn't need WAR. Listing it adds attack surface (any site could `<iframe>` your
78
+ offscreen, plus it fingerprints your extension ID).
75
79
 
76
- - `"permissions": ["identity"]` — if you enable OAuth flows (`auth: true` + Google/etc.).
77
- - `web_accessible_resources` for `offscreen.html` is **not required** — the
78
- document is created by the service worker via `chrome.offscreen.createDocument`,
79
- that's a Chrome API and doesn't need WAR. Listing it adds attack surface (any
80
- site could `<iframe>` your offscreen, plus it fingerprints your extension ID).
80
+ The SDK does **not** use `chrome.identity` — OAuth runs via a popup window opened
81
+ against your `apiOrigin`, so no `"identity"` permission is needed.
81
82
 
82
83
  ### `host_permissions` — what to pick
83
84
 
@@ -88,8 +89,8 @@ injected into (together with `content_scripts.matches`).
88
89
  | Scenario | Recommendation |
89
90
  |---|---|
90
91
  | **Host extension already needs `<all_urls>`** (recorder, all-sites tool, assistant) | Keep `<all_urls>`. SDK works as-is. **Risk:** Chrome Web Store review for `<all_urls>` is a manual audit and takes longer; AV vendors (Avast/Kaspersky/etc.) are more likely to flag such extensions as PUA. That's the price of broad injection — it's a property of your use case, not an SDK risk. |
91
- | **Host extension only talks to your backend and gates its own features** (popup tool, side-panel app) | Do NOT request `<all_urls>`. Your `apiOrigin` is enough: `["https://api.your-domain.com/*"]`. No content-script injection on every site needed. |
92
- | **Hybrid** — popup tool, but content-script needed on a narrow list of domains | Constrain both `host_permissions` and `content_scripts.matches` to those domains: `["https://*.your-target.com/*", "https://api.your-domain.com/*"]`. |
92
+ | **Host extension only talks to your backend and gates its own features** (popup tool, side-panel app) | Do NOT request `<all_urls>`. Your `apiOrigin` (custom_domain) is enough: `["https://your-paywall-domain.com/*"]`. No content-script injection on every site needed. |
93
+ | **Hybrid** — popup tool, but content-script needed on a narrow list of domains | Constrain both `host_permissions` and `content_scripts.matches` to those domains: `["https://*.your-target.com/*", "https://your-paywall-domain.com/*"]`. |
93
94
 
94
95
  The main signal to CWS/AV: the narrower `host_permissions`, the less suspicion.
95
96
  Keep `<all_urls>` only when it's genuinely required for your UX, and be ready to
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={"anon.heading_default":"متابعة كضيف","anon.try_again":"حاول مرة أخرى","auth.check_email_message":"تحقق من بريدك الإلكتروني للحصول على رمز التأكيد.","auth.check_email_title":"تحقق من بريدك الإلكتروني","auth.confirm_email_title":"تأكيد بريدك الإلكتروني","auth.confirmation_code":"رمز التأكيد","auth.continue_with_apple":"المتابعة مع Apple","auth.continue_with_facebook":"متابعة مع Facebook","auth.continue_with_github":"متابعة مع GitHub","auth.continue_with_google":"المتابعة مع Google","auth.create_account":"إنشاء حساب","auth.default_subtitle":"سجّل الدخول للوصول إلى جميع الميزات ومزامنة بياناتك.","auth.email":"عنوان البريد الإلكتروني","auth.email_exists":"يوجد حساب بهذا البريد الإلكتروني بالفعل.","auth.email_not_confirmed":"يرجى تأكيد بريدك الإلكتروني أولاً.","auth.forgot_password":"هل نسيت كلمة المرور؟","auth.forgot_password_title":"هل نسيت كلمة المرور؟","auth.forgot_subtitle":"أدخل بريدك الإلكتروني وسنرسل لك رابط إعادة تعيين كلمة المرور.","auth.generic_error":"حدث خطأ ما","auth.have_account":"لديك حساب؟","auth.hide_password":"إخفاء كلمة المرور","auth.invalid_credentials":"البريد الإلكتروني أو كلمة المرور غير صحيحة","auth.invalid_otp":"الرمز غير صالح أو منتهي الصلاحية.","auth.last_used_no_email":"الأخير","auth.link_purchase_subheading":"سنربط الشراء بحسابك للحفاظ على الوصول.","auth.log_in":"تسجيل الدخول","auth.log_in_link":"تسجيل الدخول","auth.login_continue_purchase":"سجّل الدخول لمتابعة عملية الشراء","auth.network_error":"خطأ في الشبكة. تحقق من اتصالك وحاول مرة أخرى.","auth.no_account":"ليس لديك حساب؟","auth.or":"أو","auth.password":"كلمة المرور","auth.passwords_mismatch":"كلمتا المرور غير متطابقتين","auth.rate_limited":"طلبات كثيرة جدًا. حاول مرة أخرى لاحقًا.","auth.repeat_password":"كرّر كلمة المرور","auth.reset_password_title":"إعادة تعيين كلمة المرور","auth.reset_sent_message":"إذا كان هذا البريد موجودًا، فقد تم إرسال رمز إعادة التعيين.","auth.restore_purchases_heading":"استعادة المشتريات","auth.restore_purchases_subheading":"يُرجى تسجيل الدخول لاستعادة مشترياتك.","auth.send_reset":"إرسال بريد إعادة التعيين","auth.service_unavailable":"الخدمة غير متاحة مؤقتًا. حاول لاحقًا.","auth.show_password":"إظهار كلمة المرور","auth.sign_out":"تسجيل الخروج","auth.sign_up":"إنشاء حساب","auth.sign_up_link":"إنشاء حساب","auth.signed_in":"تم تسجيل الدخول","auth.signin_failed":"فشل تسجيل الدخول","auth.signup_failed":"فشل التسجيل","auth.verify":"تأكيد","auth.weak_password":"كلمة المرور ضعيفة جدًا.","auth.welcome":"مرحباً!","auth.welcome_signup":"مرحبًا!","countdown.d":"ي","countdown.h":"س","countdown.m":"د","countdown.s":"ث","cta.close":"إغلاق","cta.continue":"متابعة","cta.get_lifetime_access":"احصل على وصول مدى الحياة","cta.get_plan_daily":"احصل على الخطة اليومية","cta.get_plan_monthly":"احصل على الخطة الشهرية","cta.get_plan_weekly":"احصل على الخطة الأسبوعية","cta.get_plan_yearly":"احصل على الخطة السنوية","cta.start_trial":"ابدأ تجربة مجانية لمدة {days} يوم","modal.close_aria":"إغلاق","modal.continue":"متابعة","modal.error_generic":"حدث خطأ ما","modal.loading":"جارٍ التحميل…","modal.purchase_restored_subtitle":"مرحبًا بعودتك — اشتراكك نشط بالفعل.","modal.purchase_restored_title":"تمت استعادة الاشتراك","modal.purchase_success_subtitle":"اشتراكك نشط الآن.","modal.purchase_success_title":"تم استلام الدفع","modal.verifying_subscription":"جارٍ التحقق من اشتراكك…","nav.back":"→ رجوع","nav.back_aria":"رجوع","offer.limited_time":"عرض لفترة محدودة","payment.awaiting_title":"أكمل الدفع في علامة التبويب الجديدة","payment.checking":"جارٍ التحقق…","payment.ive_paid":"لقد دفعت","payment.open_checkout_again":"افتح الدفع مرة أخرى","payment.open_checkout_button":"افتح الدفع","pricing.free_trial_days":"تجربة مجانية لمدة {days} يومًا","pricing.included_per":"متضمن لكل {interval}:","pricing.interval.day":"يوم","pricing.interval.lifetime_short":"مدى الحياة","pricing.interval.month":"شهر","pricing.interval.period":"فترة","pricing.interval.week":"أسبوع","pricing.interval.year":"سنة","pricing.money_back":"ضمان استرداد الأموال لمدة 30 يومًا","pricing.most_popular":"الأكثر شعبية","pricing.no_prices":"لا توجد أسعار متاحة.","pricing.plan_label.daily":"الخطة اليومية","pricing.plan_label.lifetime":"مدى الحياة","pricing.plan_label.monthly":"خطة شهرية","pricing.plan_label.weekly":"خطة أسبوعية","pricing.plan_label.yearly":"خطة سنوية","pricing.plans_aria":"الخطط","session.contact_support":"اتصل بالدعم","session.restore_purchases":"استعادة المشتريات","session.sign_out":"تسجيل الخروج","session.signed_in_as_prefix":"تم تسجيل الدخول باسم","session.signing_out":"جارٍ تسجيل الخروج…","support.attachments_label":"المرفقات","support.close_button":"إغلاق","support.done_button":"تم","support.email_placeholder":"أدخل بريدك الإلكتروني","support.heading":"الدعم","support.instruction":"يُرجى ملء النموذج أدناه لإرسال طلب الدعم.","support.invalid_email":"بريد إلكتروني غير صالح","support.message_length":"1-5000 حرفاً","support.message_placeholder":"أدخل رسالتك","support.required":"مطلوب","support.send_another":"إرسال طلب آخر","support.send_button":"إرسال","support.sending":"جارٍ الإرسال…","support.subject_length":"3-200 حرفاً","support.subject_placeholder":"أدخل الموضوع","support.success_heading":"تم إرسال الطلب","support.success_message_prefix":"لقد تلقينا رسالتك وسنرد على"};exports.default=e;
2
+ //# sourceMappingURL=ar-7cgIM-Vl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-7cgIM-Vl.js","sources":["../../../sdk/src/ui/i18n/locales/ar.ts"],"sourcesContent":["/**\n * Static-translations для ar. Сгенерировано из:\n * - `online/lang/static-translations.ts` (legacy, через KEY_MAP)\n * - `tools/sdk-translations.mjs` (SDK-specific строки)\n *\n * Не править вручную — изменения теряются при следующем `node tools/gen-locales.mjs`.\n * Чтобы исправить перевод — править legacy/sdk-translations.mjs и регенерить.\n */\nconst ar = {\n 'anon.heading_default': 'متابعة كضيف',\n 'anon.try_again': 'حاول مرة أخرى',\n 'auth.check_email_message': 'تحقق من بريدك الإلكتروني للحصول على رمز التأكيد.',\n 'auth.check_email_title': 'تحقق من بريدك الإلكتروني',\n 'auth.confirm_email_title': 'تأكيد بريدك الإلكتروني',\n 'auth.confirmation_code': 'رمز التأكيد',\n 'auth.continue_with_apple': 'المتابعة مع Apple',\n 'auth.continue_with_facebook': 'متابعة مع Facebook',\n 'auth.continue_with_github': 'متابعة مع GitHub',\n 'auth.continue_with_google': 'المتابعة مع Google',\n 'auth.create_account': 'إنشاء حساب',\n 'auth.default_subtitle': 'سجّل الدخول للوصول إلى جميع الميزات ومزامنة بياناتك.',\n 'auth.email': 'عنوان البريد الإلكتروني',\n 'auth.email_exists': 'يوجد حساب بهذا البريد الإلكتروني بالفعل.',\n 'auth.email_not_confirmed': 'يرجى تأكيد بريدك الإلكتروني أولاً.',\n 'auth.forgot_password': 'هل نسيت كلمة المرور؟',\n 'auth.forgot_password_title': 'هل نسيت كلمة المرور؟',\n 'auth.forgot_subtitle': 'أدخل بريدك الإلكتروني وسنرسل لك رابط إعادة تعيين كلمة المرور.',\n 'auth.generic_error': 'حدث خطأ ما',\n 'auth.have_account': 'لديك حساب؟',\n 'auth.hide_password': 'إخفاء كلمة المرور',\n 'auth.invalid_credentials': 'البريد الإلكتروني أو كلمة المرور غير صحيحة',\n 'auth.invalid_otp': 'الرمز غير صالح أو منتهي الصلاحية.',\n 'auth.last_used_no_email': 'الأخير',\n 'auth.link_purchase_subheading': 'سنربط الشراء بحسابك للحفاظ على الوصول.',\n 'auth.log_in': 'تسجيل الدخول',\n 'auth.log_in_link': 'تسجيل الدخول',\n 'auth.login_continue_purchase': 'سجّل الدخول لمتابعة عملية الشراء',\n 'auth.network_error': 'خطأ في الشبكة. تحقق من اتصالك وحاول مرة أخرى.',\n 'auth.no_account': 'ليس لديك حساب؟',\n 'auth.or': 'أو',\n 'auth.password': 'كلمة المرور',\n 'auth.passwords_mismatch': 'كلمتا المرور غير متطابقتين',\n 'auth.rate_limited': 'طلبات كثيرة جدًا. حاول مرة أخرى لاحقًا.',\n 'auth.repeat_password': 'كرّر كلمة المرور',\n 'auth.reset_password_title': 'إعادة تعيين كلمة المرور',\n 'auth.reset_sent_message': 'إذا كان هذا البريد موجودًا، فقد تم إرسال رمز إعادة التعيين.',\n 'auth.restore_purchases_heading': 'استعادة المشتريات',\n 'auth.restore_purchases_subheading': 'يُرجى تسجيل الدخول لاستعادة مشترياتك.',\n 'auth.send_reset': 'إرسال بريد إعادة التعيين',\n 'auth.service_unavailable': 'الخدمة غير متاحة مؤقتًا. حاول لاحقًا.',\n 'auth.show_password': 'إظهار كلمة المرور',\n 'auth.sign_out': 'تسجيل الخروج',\n 'auth.sign_up': 'إنشاء حساب',\n 'auth.sign_up_link': 'إنشاء حساب',\n 'auth.signed_in': 'تم تسجيل الدخول',\n 'auth.signin_failed': 'فشل تسجيل الدخول',\n 'auth.signup_failed': 'فشل التسجيل',\n 'auth.verify': 'تأكيد',\n 'auth.weak_password': 'كلمة المرور ضعيفة جدًا.',\n 'auth.welcome': 'مرحباً!',\n 'auth.welcome_signup': 'مرحبًا!',\n 'countdown.d': 'ي',\n 'countdown.h': 'س',\n 'countdown.m': 'د',\n 'countdown.s': 'ث',\n 'cta.close': 'إغلاق',\n 'cta.continue': 'متابعة',\n 'cta.get_lifetime_access': 'احصل على وصول مدى الحياة',\n 'cta.get_plan_daily': 'احصل على الخطة اليومية',\n 'cta.get_plan_monthly': 'احصل على الخطة الشهرية',\n 'cta.get_plan_weekly': 'احصل على الخطة الأسبوعية',\n 'cta.get_plan_yearly': 'احصل على الخطة السنوية',\n 'cta.start_trial': 'ابدأ تجربة مجانية لمدة {days} يوم',\n 'modal.close_aria': 'إغلاق',\n 'modal.continue': 'متابعة',\n 'modal.error_generic': 'حدث خطأ ما',\n 'modal.loading': 'جارٍ التحميل…',\n 'modal.purchase_restored_subtitle': 'مرحبًا بعودتك — اشتراكك نشط بالفعل.',\n 'modal.purchase_restored_title': 'تمت استعادة الاشتراك',\n 'modal.purchase_success_subtitle': 'اشتراكك نشط الآن.',\n 'modal.purchase_success_title': 'تم استلام الدفع',\n 'modal.verifying_subscription': 'جارٍ التحقق من اشتراكك…',\n 'nav.back': '→ رجوع',\n 'nav.back_aria': 'رجوع',\n 'offer.limited_time': 'عرض لفترة محدودة',\n 'payment.awaiting_title': 'أكمل الدفع في علامة التبويب الجديدة',\n 'payment.checking': 'جارٍ التحقق…',\n 'payment.ive_paid': 'لقد دفعت',\n 'payment.open_checkout_again': 'افتح الدفع مرة أخرى',\n 'payment.open_checkout_button': 'افتح الدفع',\n 'pricing.free_trial_days': 'تجربة مجانية لمدة {days} يومًا',\n 'pricing.included_per': 'متضمن لكل {interval}:',\n 'pricing.interval.day': 'يوم',\n 'pricing.interval.lifetime_short': 'مدى الحياة',\n 'pricing.interval.month': 'شهر',\n 'pricing.interval.period': 'فترة',\n 'pricing.interval.week': 'أسبوع',\n 'pricing.interval.year': 'سنة',\n 'pricing.money_back': 'ضمان استرداد الأموال لمدة 30 يومًا',\n 'pricing.most_popular': 'الأكثر شعبية',\n 'pricing.no_prices': 'لا توجد أسعار متاحة.',\n 'pricing.plan_label.daily': 'الخطة اليومية',\n 'pricing.plan_label.lifetime': 'مدى الحياة',\n 'pricing.plan_label.monthly': 'خطة شهرية',\n 'pricing.plan_label.weekly': 'خطة أسبوعية',\n 'pricing.plan_label.yearly': 'خطة سنوية',\n 'pricing.plans_aria': 'الخطط',\n 'session.contact_support': 'اتصل بالدعم',\n 'session.restore_purchases': 'استعادة المشتريات',\n 'session.sign_out': 'تسجيل الخروج',\n 'session.signed_in_as_prefix': 'تم تسجيل الدخول باسم',\n 'session.signing_out': 'جارٍ تسجيل الخروج…',\n 'support.attachments_label': 'المرفقات',\n 'support.close_button': 'إغلاق',\n 'support.done_button': 'تم',\n 'support.email_placeholder': 'أدخل بريدك الإلكتروني',\n 'support.heading': 'الدعم',\n 'support.instruction': 'يُرجى ملء النموذج أدناه لإرسال طلب الدعم.',\n 'support.invalid_email': 'بريد إلكتروني غير صالح',\n 'support.message_length': '1-5000 حرفاً',\n 'support.message_placeholder': 'أدخل رسالتك',\n 'support.required': 'مطلوب',\n 'support.send_another': 'إرسال طلب آخر',\n 'support.send_button': 'إرسال',\n 'support.sending': 'جارٍ الإرسال…',\n 'support.subject_length': '3-200 حرفاً',\n 'support.subject_placeholder': 'أدخل الموضوع',\n 'support.success_heading': 'تم إرسال الطلب',\n 'support.success_message_prefix': 'لقد تلقينا رسالتك وسنرد على'\n} as const;\n\nexport default ar;\n"],"names":["ar"],"mappings":"gFAQA,MAAMA,EAAK,CACT,uBAAwB,cACxB,iBAAkB,gBAClB,2BAA4B,mDAC5B,yBAA0B,2BAC1B,2BAA4B,yBAC5B,yBAA0B,cAC1B,2BAA4B,oBAC5B,8BAA+B,qBAC/B,4BAA6B,mBAC7B,4BAA6B,qBAC7B,sBAAuB,aACvB,wBAAyB,uDACzB,aAAc,0BACd,oBAAqB,2CACrB,2BAA4B,qCAC5B,uBAAwB,uBACxB,6BAA8B,uBAC9B,uBAAwB,gEACxB,qBAAsB,aACtB,oBAAqB,aACrB,qBAAsB,oBACtB,2BAA4B,6CAC5B,mBAAoB,oCACpB,0BAA2B,SAC3B,gCAAiC,yCACjC,cAAe,eACf,mBAAoB,eACpB,+BAAgC,mCAChC,qBAAsB,gDACtB,kBAAmB,iBACnB,UAAW,KACX,gBAAiB,cACjB,0BAA2B,6BAC3B,oBAAqB,0CACrB,uBAAwB,mBACxB,4BAA6B,0BAC7B,0BAA2B,8DAC3B,iCAAkC,oBAClC,oCAAqC,wCACrC,kBAAmB,2BACnB,2BAA4B,wCAC5B,qBAAsB,oBACtB,gBAAiB,eACjB,eAAgB,aAChB,oBAAqB,aACrB,iBAAkB,kBAClB,qBAAsB,mBACtB,qBAAsB,cACtB,cAAe,QACf,qBAAsB,0BACtB,eAAgB,UAChB,sBAAuB,UACvB,cAAe,IACf,cAAe,IACf,cAAe,IACf,cAAe,IACf,YAAa,QACb,eAAgB,SAChB,0BAA2B,2BAC3B,qBAAsB,yBACtB,uBAAwB,yBACxB,sBAAuB,2BACvB,sBAAuB,yBACvB,kBAAmB,oCACnB,mBAAoB,QACpB,iBAAkB,SAClB,sBAAuB,aACvB,gBAAiB,gBACjB,mCAAoC,sCACpC,gCAAiC,uBACjC,kCAAmC,oBACnC,+BAAgC,kBAChC,+BAAgC,0BAChC,WAAY,SACZ,gBAAiB,OACjB,qBAAsB,mBACtB,yBAA0B,sCAC1B,mBAAoB,eACpB,mBAAoB,WACpB,8BAA+B,sBAC/B,+BAAgC,aAChC,0BAA2B,iCAC3B,uBAAwB,wBACxB,uBAAwB,MACxB,kCAAmC,aACnC,yBAA0B,MAC1B,0BAA2B,OAC3B,wBAAyB,QACzB,wBAAyB,MACzB,qBAAsB,qCACtB,uBAAwB,eACxB,oBAAqB,uBACrB,2BAA4B,gBAC5B,8BAA+B,aAC/B,6BAA8B,YAC9B,4BAA6B,cAC7B,4BAA6B,YAC7B,qBAAsB,QACtB,0BAA2B,cAC3B,4BAA6B,oBAC7B,mBAAoB,eACpB,8BAA+B,uBAC/B,sBAAuB,qBACvB,4BAA6B,WAC7B,uBAAwB,QACxB,sBAAuB,KACvB,4BAA6B,wBAC7B,kBAAmB,QACnB,sBAAuB,4CACvB,wBAAyB,yBACzB,yBAA0B,eAC1B,8BAA+B,cAC/B,mBAAoB,QACpB,uBAAwB,gBACxB,sBAAuB,QACvB,kBAAmB,gBACnB,yBAA0B,cAC1B,8BAA+B,eAC/B,0BAA2B,iBAC3B,iCAAkC,6BACpC"}
@@ -0,0 +1,126 @@
1
+ const t = {
2
+ "anon.heading_default": "متابعة كضيف",
3
+ "anon.try_again": "حاول مرة أخرى",
4
+ "auth.check_email_message": "تحقق من بريدك الإلكتروني للحصول على رمز التأكيد.",
5
+ "auth.check_email_title": "تحقق من بريدك الإلكتروني",
6
+ "auth.confirm_email_title": "تأكيد بريدك الإلكتروني",
7
+ "auth.confirmation_code": "رمز التأكيد",
8
+ "auth.continue_with_apple": "المتابعة مع Apple",
9
+ "auth.continue_with_facebook": "متابعة مع Facebook",
10
+ "auth.continue_with_github": "متابعة مع GitHub",
11
+ "auth.continue_with_google": "المتابعة مع Google",
12
+ "auth.create_account": "إنشاء حساب",
13
+ "auth.default_subtitle": "سجّل الدخول للوصول إلى جميع الميزات ومزامنة بياناتك.",
14
+ "auth.email": "عنوان البريد الإلكتروني",
15
+ "auth.email_exists": "يوجد حساب بهذا البريد الإلكتروني بالفعل.",
16
+ "auth.email_not_confirmed": "يرجى تأكيد بريدك الإلكتروني أولاً.",
17
+ "auth.forgot_password": "هل نسيت كلمة المرور؟",
18
+ "auth.forgot_password_title": "هل نسيت كلمة المرور؟",
19
+ "auth.forgot_subtitle": "أدخل بريدك الإلكتروني وسنرسل لك رابط إعادة تعيين كلمة المرور.",
20
+ "auth.generic_error": "حدث خطأ ما",
21
+ "auth.have_account": "لديك حساب؟",
22
+ "auth.hide_password": "إخفاء كلمة المرور",
23
+ "auth.invalid_credentials": "البريد الإلكتروني أو كلمة المرور غير صحيحة",
24
+ "auth.invalid_otp": "الرمز غير صالح أو منتهي الصلاحية.",
25
+ "auth.last_used_no_email": "الأخير",
26
+ "auth.link_purchase_subheading": "سنربط الشراء بحسابك للحفاظ على الوصول.",
27
+ "auth.log_in": "تسجيل الدخول",
28
+ "auth.log_in_link": "تسجيل الدخول",
29
+ "auth.login_continue_purchase": "سجّل الدخول لمتابعة عملية الشراء",
30
+ "auth.network_error": "خطأ في الشبكة. تحقق من اتصالك وحاول مرة أخرى.",
31
+ "auth.no_account": "ليس لديك حساب؟",
32
+ "auth.or": "أو",
33
+ "auth.password": "كلمة المرور",
34
+ "auth.passwords_mismatch": "كلمتا المرور غير متطابقتين",
35
+ "auth.rate_limited": "طلبات كثيرة جدًا. حاول مرة أخرى لاحقًا.",
36
+ "auth.repeat_password": "كرّر كلمة المرور",
37
+ "auth.reset_password_title": "إعادة تعيين كلمة المرور",
38
+ "auth.reset_sent_message": "إذا كان هذا البريد موجودًا، فقد تم إرسال رمز إعادة التعيين.",
39
+ "auth.restore_purchases_heading": "استعادة المشتريات",
40
+ "auth.restore_purchases_subheading": "يُرجى تسجيل الدخول لاستعادة مشترياتك.",
41
+ "auth.send_reset": "إرسال بريد إعادة التعيين",
42
+ "auth.service_unavailable": "الخدمة غير متاحة مؤقتًا. حاول لاحقًا.",
43
+ "auth.show_password": "إظهار كلمة المرور",
44
+ "auth.sign_out": "تسجيل الخروج",
45
+ "auth.sign_up": "إنشاء حساب",
46
+ "auth.sign_up_link": "إنشاء حساب",
47
+ "auth.signed_in": "تم تسجيل الدخول",
48
+ "auth.signin_failed": "فشل تسجيل الدخول",
49
+ "auth.signup_failed": "فشل التسجيل",
50
+ "auth.verify": "تأكيد",
51
+ "auth.weak_password": "كلمة المرور ضعيفة جدًا.",
52
+ "auth.welcome": "مرحباً!",
53
+ "auth.welcome_signup": "مرحبًا!",
54
+ "countdown.d": "ي",
55
+ "countdown.h": "س",
56
+ "countdown.m": "د",
57
+ "countdown.s": "ث",
58
+ "cta.close": "إغلاق",
59
+ "cta.continue": "متابعة",
60
+ "cta.get_lifetime_access": "احصل على وصول مدى الحياة",
61
+ "cta.get_plan_daily": "احصل على الخطة اليومية",
62
+ "cta.get_plan_monthly": "احصل على الخطة الشهرية",
63
+ "cta.get_plan_weekly": "احصل على الخطة الأسبوعية",
64
+ "cta.get_plan_yearly": "احصل على الخطة السنوية",
65
+ "cta.start_trial": "ابدأ تجربة مجانية لمدة {days} يوم",
66
+ "modal.close_aria": "إغلاق",
67
+ "modal.continue": "متابعة",
68
+ "modal.error_generic": "حدث خطأ ما",
69
+ "modal.loading": "جارٍ التحميل…",
70
+ "modal.purchase_restored_subtitle": "مرحبًا بعودتك — اشتراكك نشط بالفعل.",
71
+ "modal.purchase_restored_title": "تمت استعادة الاشتراك",
72
+ "modal.purchase_success_subtitle": "اشتراكك نشط الآن.",
73
+ "modal.purchase_success_title": "تم استلام الدفع",
74
+ "modal.verifying_subscription": "جارٍ التحقق من اشتراكك…",
75
+ "nav.back": "→ رجوع",
76
+ "nav.back_aria": "رجوع",
77
+ "offer.limited_time": "عرض لفترة محدودة",
78
+ "payment.awaiting_title": "أكمل الدفع في علامة التبويب الجديدة",
79
+ "payment.checking": "جارٍ التحقق…",
80
+ "payment.ive_paid": "لقد دفعت",
81
+ "payment.open_checkout_again": "افتح الدفع مرة أخرى",
82
+ "payment.open_checkout_button": "افتح الدفع",
83
+ "pricing.free_trial_days": "تجربة مجانية لمدة {days} يومًا",
84
+ "pricing.included_per": "متضمن لكل {interval}:",
85
+ "pricing.interval.day": "يوم",
86
+ "pricing.interval.lifetime_short": "مدى الحياة",
87
+ "pricing.interval.month": "شهر",
88
+ "pricing.interval.period": "فترة",
89
+ "pricing.interval.week": "أسبوع",
90
+ "pricing.interval.year": "سنة",
91
+ "pricing.money_back": "ضمان استرداد الأموال لمدة 30 يومًا",
92
+ "pricing.most_popular": "الأكثر شعبية",
93
+ "pricing.no_prices": "لا توجد أسعار متاحة.",
94
+ "pricing.plan_label.daily": "الخطة اليومية",
95
+ "pricing.plan_label.lifetime": "مدى الحياة",
96
+ "pricing.plan_label.monthly": "خطة شهرية",
97
+ "pricing.plan_label.weekly": "خطة أسبوعية",
98
+ "pricing.plan_label.yearly": "خطة سنوية",
99
+ "pricing.plans_aria": "الخطط",
100
+ "session.contact_support": "اتصل بالدعم",
101
+ "session.restore_purchases": "استعادة المشتريات",
102
+ "session.sign_out": "تسجيل الخروج",
103
+ "session.signed_in_as_prefix": "تم تسجيل الدخول باسم",
104
+ "session.signing_out": "جارٍ تسجيل الخروج…",
105
+ "support.attachments_label": "المرفقات",
106
+ "support.close_button": "إغلاق",
107
+ "support.done_button": "تم",
108
+ "support.email_placeholder": "أدخل بريدك الإلكتروني",
109
+ "support.heading": "الدعم",
110
+ "support.instruction": "يُرجى ملء النموذج أدناه لإرسال طلب الدعم.",
111
+ "support.invalid_email": "بريد إلكتروني غير صالح",
112
+ "support.message_length": "1-5000 حرفاً",
113
+ "support.message_placeholder": "أدخل رسالتك",
114
+ "support.required": "مطلوب",
115
+ "support.send_another": "إرسال طلب آخر",
116
+ "support.send_button": "إرسال",
117
+ "support.sending": "جارٍ الإرسال…",
118
+ "support.subject_length": "3-200 حرفاً",
119
+ "support.subject_placeholder": "أدخل الموضوع",
120
+ "support.success_heading": "تم إرسال الطلب",
121
+ "support.success_message_prefix": "لقد تلقينا رسالتك وسنرد على"
122
+ };
123
+ export {
124
+ t as default
125
+ };
126
+ //# sourceMappingURL=ar-B2Wg_IrC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-B2Wg_IrC.js","sources":["../../../sdk/src/ui/i18n/locales/ar.ts"],"sourcesContent":["/**\n * Static-translations для ar. Сгенерировано из:\n * - `online/lang/static-translations.ts` (legacy, через KEY_MAP)\n * - `tools/sdk-translations.mjs` (SDK-specific строки)\n *\n * Не править вручную — изменения теряются при следующем `node tools/gen-locales.mjs`.\n * Чтобы исправить перевод — править legacy/sdk-translations.mjs и регенерить.\n */\nconst ar = {\n 'anon.heading_default': 'متابعة كضيف',\n 'anon.try_again': 'حاول مرة أخرى',\n 'auth.check_email_message': 'تحقق من بريدك الإلكتروني للحصول على رمز التأكيد.',\n 'auth.check_email_title': 'تحقق من بريدك الإلكتروني',\n 'auth.confirm_email_title': 'تأكيد بريدك الإلكتروني',\n 'auth.confirmation_code': 'رمز التأكيد',\n 'auth.continue_with_apple': 'المتابعة مع Apple',\n 'auth.continue_with_facebook': 'متابعة مع Facebook',\n 'auth.continue_with_github': 'متابعة مع GitHub',\n 'auth.continue_with_google': 'المتابعة مع Google',\n 'auth.create_account': 'إنشاء حساب',\n 'auth.default_subtitle': 'سجّل الدخول للوصول إلى جميع الميزات ومزامنة بياناتك.',\n 'auth.email': 'عنوان البريد الإلكتروني',\n 'auth.email_exists': 'يوجد حساب بهذا البريد الإلكتروني بالفعل.',\n 'auth.email_not_confirmed': 'يرجى تأكيد بريدك الإلكتروني أولاً.',\n 'auth.forgot_password': 'هل نسيت كلمة المرور؟',\n 'auth.forgot_password_title': 'هل نسيت كلمة المرور؟',\n 'auth.forgot_subtitle': 'أدخل بريدك الإلكتروني وسنرسل لك رابط إعادة تعيين كلمة المرور.',\n 'auth.generic_error': 'حدث خطأ ما',\n 'auth.have_account': 'لديك حساب؟',\n 'auth.hide_password': 'إخفاء كلمة المرور',\n 'auth.invalid_credentials': 'البريد الإلكتروني أو كلمة المرور غير صحيحة',\n 'auth.invalid_otp': 'الرمز غير صالح أو منتهي الصلاحية.',\n 'auth.last_used_no_email': 'الأخير',\n 'auth.link_purchase_subheading': 'سنربط الشراء بحسابك للحفاظ على الوصول.',\n 'auth.log_in': 'تسجيل الدخول',\n 'auth.log_in_link': 'تسجيل الدخول',\n 'auth.login_continue_purchase': 'سجّل الدخول لمتابعة عملية الشراء',\n 'auth.network_error': 'خطأ في الشبكة. تحقق من اتصالك وحاول مرة أخرى.',\n 'auth.no_account': 'ليس لديك حساب؟',\n 'auth.or': 'أو',\n 'auth.password': 'كلمة المرور',\n 'auth.passwords_mismatch': 'كلمتا المرور غير متطابقتين',\n 'auth.rate_limited': 'طلبات كثيرة جدًا. حاول مرة أخرى لاحقًا.',\n 'auth.repeat_password': 'كرّر كلمة المرور',\n 'auth.reset_password_title': 'إعادة تعيين كلمة المرور',\n 'auth.reset_sent_message': 'إذا كان هذا البريد موجودًا، فقد تم إرسال رمز إعادة التعيين.',\n 'auth.restore_purchases_heading': 'استعادة المشتريات',\n 'auth.restore_purchases_subheading': 'يُرجى تسجيل الدخول لاستعادة مشترياتك.',\n 'auth.send_reset': 'إرسال بريد إعادة التعيين',\n 'auth.service_unavailable': 'الخدمة غير متاحة مؤقتًا. حاول لاحقًا.',\n 'auth.show_password': 'إظهار كلمة المرور',\n 'auth.sign_out': 'تسجيل الخروج',\n 'auth.sign_up': 'إنشاء حساب',\n 'auth.sign_up_link': 'إنشاء حساب',\n 'auth.signed_in': 'تم تسجيل الدخول',\n 'auth.signin_failed': 'فشل تسجيل الدخول',\n 'auth.signup_failed': 'فشل التسجيل',\n 'auth.verify': 'تأكيد',\n 'auth.weak_password': 'كلمة المرور ضعيفة جدًا.',\n 'auth.welcome': 'مرحباً!',\n 'auth.welcome_signup': 'مرحبًا!',\n 'countdown.d': 'ي',\n 'countdown.h': 'س',\n 'countdown.m': 'د',\n 'countdown.s': 'ث',\n 'cta.close': 'إغلاق',\n 'cta.continue': 'متابعة',\n 'cta.get_lifetime_access': 'احصل على وصول مدى الحياة',\n 'cta.get_plan_daily': 'احصل على الخطة اليومية',\n 'cta.get_plan_monthly': 'احصل على الخطة الشهرية',\n 'cta.get_plan_weekly': 'احصل على الخطة الأسبوعية',\n 'cta.get_plan_yearly': 'احصل على الخطة السنوية',\n 'cta.start_trial': 'ابدأ تجربة مجانية لمدة {days} يوم',\n 'modal.close_aria': 'إغلاق',\n 'modal.continue': 'متابعة',\n 'modal.error_generic': 'حدث خطأ ما',\n 'modal.loading': 'جارٍ التحميل…',\n 'modal.purchase_restored_subtitle': 'مرحبًا بعودتك — اشتراكك نشط بالفعل.',\n 'modal.purchase_restored_title': 'تمت استعادة الاشتراك',\n 'modal.purchase_success_subtitle': 'اشتراكك نشط الآن.',\n 'modal.purchase_success_title': 'تم استلام الدفع',\n 'modal.verifying_subscription': 'جارٍ التحقق من اشتراكك…',\n 'nav.back': '→ رجوع',\n 'nav.back_aria': 'رجوع',\n 'offer.limited_time': 'عرض لفترة محدودة',\n 'payment.awaiting_title': 'أكمل الدفع في علامة التبويب الجديدة',\n 'payment.checking': 'جارٍ التحقق…',\n 'payment.ive_paid': 'لقد دفعت',\n 'payment.open_checkout_again': 'افتح الدفع مرة أخرى',\n 'payment.open_checkout_button': 'افتح الدفع',\n 'pricing.free_trial_days': 'تجربة مجانية لمدة {days} يومًا',\n 'pricing.included_per': 'متضمن لكل {interval}:',\n 'pricing.interval.day': 'يوم',\n 'pricing.interval.lifetime_short': 'مدى الحياة',\n 'pricing.interval.month': 'شهر',\n 'pricing.interval.period': 'فترة',\n 'pricing.interval.week': 'أسبوع',\n 'pricing.interval.year': 'سنة',\n 'pricing.money_back': 'ضمان استرداد الأموال لمدة 30 يومًا',\n 'pricing.most_popular': 'الأكثر شعبية',\n 'pricing.no_prices': 'لا توجد أسعار متاحة.',\n 'pricing.plan_label.daily': 'الخطة اليومية',\n 'pricing.plan_label.lifetime': 'مدى الحياة',\n 'pricing.plan_label.monthly': 'خطة شهرية',\n 'pricing.plan_label.weekly': 'خطة أسبوعية',\n 'pricing.plan_label.yearly': 'خطة سنوية',\n 'pricing.plans_aria': 'الخطط',\n 'session.contact_support': 'اتصل بالدعم',\n 'session.restore_purchases': 'استعادة المشتريات',\n 'session.sign_out': 'تسجيل الخروج',\n 'session.signed_in_as_prefix': 'تم تسجيل الدخول باسم',\n 'session.signing_out': 'جارٍ تسجيل الخروج…',\n 'support.attachments_label': 'المرفقات',\n 'support.close_button': 'إغلاق',\n 'support.done_button': 'تم',\n 'support.email_placeholder': 'أدخل بريدك الإلكتروني',\n 'support.heading': 'الدعم',\n 'support.instruction': 'يُرجى ملء النموذج أدناه لإرسال طلب الدعم.',\n 'support.invalid_email': 'بريد إلكتروني غير صالح',\n 'support.message_length': '1-5000 حرفاً',\n 'support.message_placeholder': 'أدخل رسالتك',\n 'support.required': 'مطلوب',\n 'support.send_another': 'إرسال طلب آخر',\n 'support.send_button': 'إرسال',\n 'support.sending': 'جارٍ الإرسال…',\n 'support.subject_length': '3-200 حرفاً',\n 'support.subject_placeholder': 'أدخل الموضوع',\n 'support.success_heading': 'تم إرسال الطلب',\n 'support.success_message_prefix': 'لقد تلقينا رسالتك وسنرد على'\n} as const;\n\nexport default ar;\n"],"names":["ar"],"mappings":"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"}