adserver-dashboard 1.0.0

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 (525) hide show
  1. package/.ci/staging.yml +191 -0
  2. package/.dockerignore +117 -0
  3. package/.env +40 -0
  4. package/.env.staging +38 -0
  5. package/.gitlab-ci.yml +16 -0
  6. package/DEMO_STATUS.md +579 -0
  7. package/Dockerfile +61 -0
  8. package/Influence-MW-AdServer-12-02-2026/client/index.html +17 -0
  9. package/Influence-MW-AdServer-12-02-2026/client/public/favicon.png +0 -0
  10. package/Influence-MW-AdServer-12-02-2026/client/src/App.tsx +91 -0
  11. package/Influence-MW-AdServer-12-02-2026/client/src/components/advanced-map-drawer.tsx +1131 -0
  12. package/Influence-MW-AdServer-12-02-2026/client/src/components/ai-recommendation-panel.tsx +379 -0
  13. package/Influence-MW-AdServer-12-02-2026/client/src/components/app-sidebar.tsx +183 -0
  14. package/Influence-MW-AdServer-12-02-2026/client/src/components/auto-optimize-button.tsx +184 -0
  15. package/Influence-MW-AdServer-12-02-2026/client/src/components/availability-drawer.tsx +385 -0
  16. package/Influence-MW-AdServer-12-02-2026/client/src/components/brand-insights-panel.tsx +87 -0
  17. package/Influence-MW-AdServer-12-02-2026/client/src/components/create-agency-drawer.tsx +198 -0
  18. package/Influence-MW-AdServer-12-02-2026/client/src/components/create-brand-drawer.tsx +275 -0
  19. package/Influence-MW-AdServer-12-02-2026/client/src/components/creative-assignment.tsx +526 -0
  20. package/Influence-MW-AdServer-12-02-2026/client/src/components/data-table-toolbar.tsx +148 -0
  21. package/Influence-MW-AdServer-12-02-2026/client/src/components/data-table.tsx +158 -0
  22. package/Influence-MW-AdServer-12-02-2026/client/src/components/filter-drawer.tsx +356 -0
  23. package/Influence-MW-AdServer-12-02-2026/client/src/components/form-insights-panel.tsx +82 -0
  24. package/Influence-MW-AdServer-12-02-2026/client/src/components/geography-selector.tsx +699 -0
  25. package/Influence-MW-AdServer-12-02-2026/client/src/components/header-user-menu.tsx +178 -0
  26. package/Influence-MW-AdServer-12-02-2026/client/src/components/history-drawer.tsx +313 -0
  27. package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-availability-section.tsx +176 -0
  28. package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-format-drawer.tsx +173 -0
  29. package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-selector.tsx +401 -0
  30. package/Influence-MW-AdServer-12-02-2026/client/src/components/manual-inventory-drawer.tsx +368 -0
  31. package/Influence-MW-AdServer-12-02-2026/client/src/components/mapbox-map.tsx +368 -0
  32. package/Influence-MW-AdServer-12-02-2026/client/src/components/market-insights-panel.tsx +202 -0
  33. package/Influence-MW-AdServer-12-02-2026/client/src/components/media-owner-drawer.tsx +217 -0
  34. package/Influence-MW-AdServer-12-02-2026/client/src/components/metric-card.tsx +58 -0
  35. package/Influence-MW-AdServer-12-02-2026/client/src/components/page-header.tsx +27 -0
  36. package/Influence-MW-AdServer-12-02-2026/client/src/components/player-status-indicator.tsx +137 -0
  37. package/Influence-MW-AdServer-12-02-2026/client/src/components/poi-targeting-drawer.tsx +298 -0
  38. package/Influence-MW-AdServer-12-02-2026/client/src/components/recommendation-score-badge.tsx +102 -0
  39. package/Influence-MW-AdServer-12-02-2026/client/src/components/recommended-inventories-panel.tsx +248 -0
  40. package/Influence-MW-AdServer-12-02-2026/client/src/components/searchable-combobox.tsx +134 -0
  41. package/Influence-MW-AdServer-12-02-2026/client/src/components/signal-visualizations.tsx +407 -0
  42. package/Influence-MW-AdServer-12-02-2026/client/src/components/status-badge.tsx +35 -0
  43. package/Influence-MW-AdServer-12-02-2026/client/src/components/theme-provider.tsx +73 -0
  44. package/Influence-MW-AdServer-12-02-2026/client/src/components/theme-toggle.tsx +37 -0
  45. package/Influence-MW-AdServer-12-02-2026/client/src/components/traffic-slider.tsx +75 -0
  46. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/accordion.tsx +56 -0
  47. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/alert-dialog.tsx +139 -0
  48. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/alert.tsx +59 -0
  49. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/aspect-ratio.tsx +5 -0
  50. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/avatar.tsx +51 -0
  51. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/badge.tsx +38 -0
  52. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/breadcrumb.tsx +115 -0
  53. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/button.tsx +62 -0
  54. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/calendar.tsx +68 -0
  55. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/card.tsx +85 -0
  56. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/carousel.tsx +260 -0
  57. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/chart.tsx +365 -0
  58. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/checkbox.tsx +28 -0
  59. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/collapsible.tsx +11 -0
  60. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/command.tsx +151 -0
  61. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/context-menu.tsx +198 -0
  62. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/dialog.tsx +122 -0
  63. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/drawer.tsx +118 -0
  64. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/dropdown-menu.tsx +198 -0
  65. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/form.tsx +178 -0
  66. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/hover-card.tsx +29 -0
  67. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/input-otp.tsx +69 -0
  68. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/input.tsx +23 -0
  69. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/label.tsx +24 -0
  70. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/menubar.tsx +256 -0
  71. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/navigation-menu.tsx +128 -0
  72. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/pagination.tsx +117 -0
  73. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/popover.tsx +29 -0
  74. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/progress.tsx +28 -0
  75. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/radio-group.tsx +42 -0
  76. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/resizable.tsx +45 -0
  77. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/scroll-area.tsx +46 -0
  78. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/select.tsx +160 -0
  79. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/separator.tsx +29 -0
  80. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/sheet.tsx +140 -0
  81. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/sidebar.tsx +727 -0
  82. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/skeleton.tsx +15 -0
  83. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/slider.tsx +26 -0
  84. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/switch.tsx +27 -0
  85. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/table.tsx +117 -0
  86. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/tabs.tsx +53 -0
  87. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/textarea.tsx +22 -0
  88. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toast.tsx +127 -0
  89. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toaster.tsx +33 -0
  90. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toggle-group.tsx +61 -0
  91. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toggle.tsx +43 -0
  92. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/tooltip.tsx +30 -0
  93. package/Influence-MW-AdServer-12-02-2026/client/src/components/vendor-stores-modal.tsx +336 -0
  94. package/Influence-MW-AdServer-12-02-2026/client/src/components/venue-type-drawer.tsx +359 -0
  95. package/Influence-MW-AdServer-12-02-2026/client/src/components/venue-type-selector.tsx +436 -0
  96. package/Influence-MW-AdServer-12-02-2026/client/src/hooks/use-mobile.tsx +19 -0
  97. package/Influence-MW-AdServer-12-02-2026/client/src/hooks/use-toast.ts +191 -0
  98. package/Influence-MW-AdServer-12-02-2026/client/src/index.css +244 -0
  99. package/Influence-MW-AdServer-12-02-2026/client/src/lib/queryClient.ts +57 -0
  100. package/Influence-MW-AdServer-12-02-2026/client/src/lib/utils.ts +39 -0
  101. package/Influence-MW-AdServer-12-02-2026/client/src/lib/venue-taxonomy.ts +532 -0
  102. package/Influence-MW-AdServer-12-02-2026/client/src/main.tsx +5 -0
  103. package/Influence-MW-AdServer-12-02-2026/client/src/pages/assign-creative.tsx +781 -0
  104. package/Influence-MW-AdServer-12-02-2026/client/src/pages/content-hub.tsx +995 -0
  105. package/Influence-MW-AdServer-12-02-2026/client/src/pages/custom-pois.tsx +431 -0
  106. package/Influence-MW-AdServer-12-02-2026/client/src/pages/dashboard.tsx +620 -0
  107. package/Influence-MW-AdServer-12-02-2026/client/src/pages/deal-detail.tsx +1062 -0
  108. package/Influence-MW-AdServer-12-02-2026/client/src/pages/deal-form.tsx +1570 -0
  109. package/Influence-MW-AdServer-12-02-2026/client/src/pages/deals.tsx +716 -0
  110. package/Influence-MW-AdServer-12-02-2026/client/src/pages/edit-creative-assignment.tsx +1051 -0
  111. package/Influence-MW-AdServer-12-02-2026/client/src/pages/geotargeting.tsx +675 -0
  112. package/Influence-MW-AdServer-12-02-2026/client/src/pages/integrations.tsx +425 -0
  113. package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-item-creatives.tsx +622 -0
  114. package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-item-form.tsx +3132 -0
  115. package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-items.tsx +530 -0
  116. package/Influence-MW-AdServer-12-02-2026/client/src/pages/not-found.tsx +21 -0
  117. package/Influence-MW-AdServer-12-02-2026/client/src/pages/proof-of-play-upload.tsx +479 -0
  118. package/Influence-MW-AdServer-12-02-2026/client/src/pages/proof-of-play.tsx +880 -0
  119. package/Influence-MW-AdServer-12-02-2026/client/src/pages/reports.tsx +235 -0
  120. package/Influence-MW-AdServer-12-02-2026/client/src/pages/settings.tsx +652 -0
  121. package/Influence-MW-AdServer-12-02-2026/client/src/pages/signal-form.tsx +1117 -0
  122. package/Influence-MW-AdServer-12-02-2026/client/src/pages/signals.tsx +366 -0
  123. package/Influence-MW-AdServer-12-02-2026/client/src/pages/tags.tsx +332 -0
  124. package/Influence-MW-AdServer-12-02-2026/client/src/pages/venues.tsx +381 -0
  125. package/Influence-MW-AdServer-12-02-2026/client/src/types/mapbox-gl-draw.d.ts +37 -0
  126. package/Influence-MW-AdServer-12-02-2026/client/src/types/react-simple-maps.d.ts +57 -0
  127. package/Influence-MW-AdServer-12-02-2026/components.json +20 -0
  128. package/Influence-MW-AdServer-12-02-2026/docs/PRD.md +3373 -0
  129. package/Influence-MW-AdServer-12-02-2026/docs/influence-feature-mapping.csv +498 -0
  130. package/Influence-MW-AdServer-12-02-2026/drizzle.config.ts +14 -0
  131. package/Influence-MW-AdServer-12-02-2026/package-lock.json +9672 -0
  132. package/Influence-MW-AdServer-12-02-2026/package.json +118 -0
  133. package/Influence-MW-AdServer-12-02-2026/postcss.config.js +6 -0
  134. package/Influence-MW-AdServer-12-02-2026/replit.md +91 -0
  135. package/Influence-MW-AdServer-12-02-2026/script/build.ts +67 -0
  136. package/Influence-MW-AdServer-12-02-2026/scripts/create-miro-diagrams.cjs +318 -0
  137. package/Influence-MW-AdServer-12-02-2026/scripts/create-remaining-diagrams.cjs +270 -0
  138. package/Influence-MW-AdServer-12-02-2026/server/index.ts +103 -0
  139. package/Influence-MW-AdServer-12-02-2026/server/recommendation-service.ts +319 -0
  140. package/Influence-MW-AdServer-12-02-2026/server/routes.ts +1890 -0
  141. package/Influence-MW-AdServer-12-02-2026/server/static.ts +19 -0
  142. package/Influence-MW-AdServer-12-02-2026/server/storage.ts +2058 -0
  143. package/Influence-MW-AdServer-12-02-2026/server/vite.ts +58 -0
  144. package/Influence-MW-AdServer-12-02-2026/shared/schema.ts +1595 -0
  145. package/Influence-MW-AdServer-12-02-2026/tailwind.config.ts +107 -0
  146. package/Influence-MW-AdServer-12-02-2026/tsconfig.json +23 -0
  147. package/Influence-MW-AdServer-12-02-2026/vite.config.ts +40 -0
  148. package/LINE_ITEM_BUDGET_FIELD_MAPPING.md +178 -0
  149. package/PCM/.env.example +92 -0
  150. package/PCM/README.md +558 -0
  151. package/PCM/docs/TEST_CASES.md +422 -0
  152. package/PCM/index.js +106 -0
  153. package/PCM/package-lock.json +3282 -0
  154. package/PCM/package.json +32 -0
  155. package/PCM/replit.md +64 -0
  156. package/PCM/schema.sql +495 -0
  157. package/PCM/scripts/export-schema.js +183 -0
  158. package/PCM/scripts/seed-comprehensive.js +631 -0
  159. package/PCM/scripts/seed-production.js +477 -0
  160. package/PCM/src/config/db.js +56 -0
  161. package/PCM/src/config/swagger.js +5975 -0
  162. package/PCM/src/dto/EmailRequestDTO.js +166 -0
  163. package/PCM/src/middleware/errorHandler.js +52 -0
  164. package/PCM/src/middleware/logger.js +26 -0
  165. package/PCM/src/migrations/001_add_campaign_mode_fields.sql +36 -0
  166. package/PCM/src/migrations/002_create_deal_id_counters.sql +22 -0
  167. package/PCM/src/migrations/003_update_publishers_column.sql +15 -0
  168. package/PCM/src/migrations/004_add_direct_dealtype_and_advertiser.sql +5 -0
  169. package/PCM/src/migrations/005_add_programmatic_fields_and_update_enums.sql +31 -0
  170. package/PCM/src/migrations/006_add_line_item_programmatic_fields.sql +12 -0
  171. package/PCM/src/migrations/007_add_line_item_direct_fields.sql +15 -0
  172. package/PCM/src/migrations/008_add_inventory_fields.sql +45 -0
  173. package/PCM/src/migrations/009_move_inventory_fields_to_metadata.sql +32 -0
  174. package/PCM/src/migrations/010_add_draft_status_and_line_items_count.sql +23 -0
  175. package/PCM/src/migrations/011_add_planning_field.sql +21 -0
  176. package/PCM/src/migrations/012_fix_inventory_composite_pk.sql +17 -0
  177. package/PCM/src/migrations/013_make_external_id_optional.sql +3 -0
  178. package/PCM/src/migrations/014_create_change_history.sql +38 -0
  179. package/PCM/src/migrations/016_create_publisher_insertion_orders.sql +33 -0
  180. package/PCM/src/migrations/017_fix_line_item_id_fk_reference.sql +86 -0
  181. package/PCM/src/migrations/018_create_approval_tables.sql +44 -0
  182. package/PCM/src/migrations/019_add_encrypted_token_column.sql +2 -0
  183. package/PCM/src/migrations/020_add_rejection_reason_to_deals.sql +10 -0
  184. package/PCM/src/migrations/021_add_publisher_external_id_to_inventories.sql +12 -0
  185. package/PCM/src/migrations/022_add_line_item_extended_fields.sql +24 -0
  186. package/PCM/src/migrations/023_add_base_price_fields.sql +8 -0
  187. package/PCM/src/migrations/run-migrations.js +46 -0
  188. package/PCM/src/models/ApprovalOTP.js +51 -0
  189. package/PCM/src/models/ApprovalToken.js +79 -0
  190. package/PCM/src/models/ChangeHistory.js +107 -0
  191. package/PCM/src/models/Deal.js +186 -0
  192. package/PCM/src/models/DealIdCounter.js +28 -0
  193. package/PCM/src/models/LineItem.js +227 -0
  194. package/PCM/src/models/LineItemCreative.js +89 -0
  195. package/PCM/src/models/LineItemInventory.js +115 -0
  196. package/PCM/src/models/PublisherInsertionOrder.js +93 -0
  197. package/PCM/src/models/TransactionHistory.js +34 -0
  198. package/PCM/src/models/associations.js +81 -0
  199. package/PCM/src/routes/approval.js +321 -0
  200. package/PCM/src/routes/creatives.js +437 -0
  201. package/PCM/src/routes/deals.js +1638 -0
  202. package/PCM/src/routes/digitalSignage.js +242 -0
  203. package/PCM/src/routes/insertionOrders.js +380 -0
  204. package/PCM/src/routes/lineItems.js +926 -0
  205. package/PCM/src/routes/system.js +384 -0
  206. package/PCM/src/services/ApprovalService.js +885 -0
  207. package/PCM/src/services/CampaignImportConverter.js +631 -0
  208. package/PCM/src/services/CampaignModeService.js +273 -0
  209. package/PCM/src/services/CampaignStatusService.js +395 -0
  210. package/PCM/src/services/ChangeHistoryService.js +316 -0
  211. package/PCM/src/services/DealIdService.js +94 -0
  212. package/PCM/src/services/DealResponseFormatter.js +90 -0
  213. package/PCM/src/services/EmailNotificationService.js +315 -0
  214. package/PCM/src/services/LineItemResponseFormatter.js +122 -0
  215. package/PCM/src/services/LineItemStatusService.js +380 -0
  216. package/PCM/src/tests/comprehensiveTestRunner.js +360 -0
  217. package/PCM/src/tests/comprehensiveTests.js +1277 -0
  218. package/PCM/src/tests/dealTypeUnitTests.js +1058 -0
  219. package/PCM/src/tests/testRunner.js +248 -0
  220. package/PCM/src/utils/caseConverter.js +92 -0
  221. package/PCM/src/utils/dealCalculations.js +206 -0
  222. package/PCM/src/utils/lineItemPayloadNormalizer.js +41 -0
  223. package/PCM/src/utils/payloadNormalizer.js +34 -0
  224. package/PCM/src/utils/sourceNormalizer.js +56 -0
  225. package/PCM/src/validators/creativeValidator.js +27 -0
  226. package/PCM/src/validators/dealValidator.js +203 -0
  227. package/PCM/src/validators/lineItemValidator.js +489 -0
  228. package/PCM/tests/approval-flows.test.js +238 -0
  229. package/PCM/tests/approval-workflow.test.js +291 -0
  230. package/PCM/tests/campaign-import-converter.test.js +543 -0
  231. package/PCM/tests/campaign-import-e2e.test.js +520 -0
  232. package/PCM/tests/campaign-status.test.js +539 -0
  233. package/PCM/tests/direct-publisher-split-reimport.test.js +460 -0
  234. package/PCM/tests/e2e/digital-signage.test.js +145 -0
  235. package/PCM/tests/e2e/search-filter-pagination.test.js +399 -0
  236. package/PCM/tests/e2e-comprehensive.test.js +3446 -0
  237. package/PCM/tests/edge-cases.test.js +340 -0
  238. package/PCM/tests/line-item-status.test.js +340 -0
  239. package/PCM/tests/seller-account-external-ids.test.js +877 -0
  240. package/PCM/tests/source-validation.test.js +324 -0
  241. package/PRD.md +3373 -0
  242. package/README.md +186 -0
  243. package/client/index.html +35 -0
  244. package/client/public/DEMO_STATUS.md +579 -0
  245. package/client/public/img/MW-logo-trans_1754045676555.png +0 -0
  246. package/client/public/locales/ar/approval.json +144 -0
  247. package/client/public/locales/ar/buyer.json +61 -0
  248. package/client/public/locales/ar/campaigns.json +1 -0
  249. package/client/public/locales/ar/common.json +218 -0
  250. package/client/public/locales/ar/contentHub.json +266 -0
  251. package/client/public/locales/ar/creatives.json +79 -0
  252. package/client/public/locales/ar/dashboard.json +57 -0
  253. package/client/public/locales/ar/deals.json +886 -0
  254. package/client/public/locales/ar/dsp.json +131 -0
  255. package/client/public/locales/ar/inventory.json +201 -0
  256. package/client/public/locales/ar/lineItems.json +553 -0
  257. package/client/public/locales/ar/navigation.json +48 -0
  258. package/client/public/locales/ar/wizard.json +1 -0
  259. package/client/public/locales/en/approval.json +144 -0
  260. package/client/public/locales/en/buyer.json +65 -0
  261. package/client/public/locales/en/campaigns.json +1 -0
  262. package/client/public/locales/en/common.json +218 -0
  263. package/client/public/locales/en/contentHub.json +266 -0
  264. package/client/public/locales/en/creatives.json +79 -0
  265. package/client/public/locales/en/dashboard.json +57 -0
  266. package/client/public/locales/en/deals.json +886 -0
  267. package/client/public/locales/en/dsp.json +131 -0
  268. package/client/public/locales/en/inventory.json +201 -0
  269. package/client/public/locales/en/lineItems.json +659 -0
  270. package/client/public/locales/en/navigation.json +48 -0
  271. package/client/public/locales/en/wizard.json +1 -0
  272. package/client/public/locales/ja/approval.json +144 -0
  273. package/client/public/locales/ja/buyer.json +61 -0
  274. package/client/public/locales/ja/campaigns.json +1 -0
  275. package/client/public/locales/ja/common.json +218 -0
  276. package/client/public/locales/ja/contentHub.json +266 -0
  277. package/client/public/locales/ja/creatives.json +79 -0
  278. package/client/public/locales/ja/dashboard.json +57 -0
  279. package/client/public/locales/ja/deals.json +886 -0
  280. package/client/public/locales/ja/dsp.json +131 -0
  281. package/client/public/locales/ja/inventory.json +201 -0
  282. package/client/public/locales/ja/lineItems.json +553 -0
  283. package/client/public/locales/ja/navigation.json +48 -0
  284. package/client/public/locales/ja/wizard.json +1 -0
  285. package/client/public/locales/zh/approval.json +144 -0
  286. package/client/public/locales/zh/buyer.json +61 -0
  287. package/client/public/locales/zh/campaigns.json +1 -0
  288. package/client/public/locales/zh/common.json +218 -0
  289. package/client/public/locales/zh/contentHub.json +266 -0
  290. package/client/public/locales/zh/creatives.json +79 -0
  291. package/client/public/locales/zh/dashboard.json +57 -0
  292. package/client/public/locales/zh/deals.json +886 -0
  293. package/client/public/locales/zh/dsp.json +131 -0
  294. package/client/public/locales/zh/inventory.json +201 -0
  295. package/client/public/locales/zh/lineItems.json +553 -0
  296. package/client/public/locales/zh/navigation.json +48 -0
  297. package/client/public/locales/zh/wizard.json +1 -0
  298. package/client/public/manifest.json +36 -0
  299. package/client/src/App.tsx +464 -0
  300. package/client/src/components/app-sidebar.tsx +312 -0
  301. package/client/src/components/approval/approval-decision-form.test.tsx +294 -0
  302. package/client/src/components/approval/approval-decision-form.tsx +326 -0
  303. package/client/src/components/approval/approval-sheet.tsx +631 -0
  304. package/client/src/components/approval/line-item-details-sheet.tsx +371 -0
  305. package/client/src/components/approval/otp-verification.test.tsx +337 -0
  306. package/client/src/components/approval/otp-verification.tsx +180 -0
  307. package/client/src/components/content-hub/bulk-transcode-dialog.tsx +379 -0
  308. package/client/src/components/content-hub/content-hub-manager-v2.tsx +574 -0
  309. package/client/src/components/content-hub/content-hub-manager.tsx +330 -0
  310. package/client/src/components/content-hub/creative-card.tsx +456 -0
  311. package/client/src/components/content-hub/creative-detail-sheet.tsx +685 -0
  312. package/client/src/components/content-hub/creative-filters.tsx +457 -0
  313. package/client/src/components/content-hub/creative-grid.tsx +329 -0
  314. package/client/src/components/content-hub/creative-selector.tsx +415 -0
  315. package/client/src/components/content-hub/creative-upload.tsx +547 -0
  316. package/client/src/components/content-hub/folder-dialogs.tsx +445 -0
  317. package/client/src/components/content-hub/folder-list.tsx +280 -0
  318. package/client/src/components/content-hub/review-dialogs.tsx +268 -0
  319. package/client/src/components/content-hub/transcode-dialog.tsx +226 -0
  320. package/client/src/components/creative-library/creative-details-view.tsx +446 -0
  321. package/client/src/components/creative-library/creative-filters-panel.tsx +203 -0
  322. package/client/src/components/creative-library/creative-list.tsx +360 -0
  323. package/client/src/components/creative-library/creative-status-badge.tsx +71 -0
  324. package/client/src/components/creative-library/folder-card.tsx +78 -0
  325. package/client/src/components/creative-library/index.ts +27 -0
  326. package/client/src/components/creative-library/new-creative-card.tsx +211 -0
  327. package/client/src/components/creative-library/upload-creative-dialog.tsx +261 -0
  328. package/client/src/components/dashboard-overview.tsx +109 -0
  329. package/client/src/components/deals/approval-history-panel.test.tsx +240 -0
  330. package/client/src/components/deals/approval-history-panel.tsx +156 -0
  331. package/client/src/components/deals/deal-status-badge.tsx +92 -0
  332. package/client/src/components/deals/import-from-planner-dialog.tsx +399 -0
  333. package/client/src/components/deals/market-insights-panel.tsx +237 -0
  334. package/client/src/components/deals/reopen-deal-sheet.tsx +191 -0
  335. package/client/src/components/deals/request-approval-sheet.test.tsx +323 -0
  336. package/client/src/components/deals/request-approval-sheet.tsx +136 -0
  337. package/client/src/components/deals/resend-approval-sheet.tsx +201 -0
  338. package/client/src/components/direct-campaigns/campaign-card.tsx +283 -0
  339. package/client/src/components/direct-campaigns/deal-filter-panel.tsx +325 -0
  340. package/client/src/components/inventory/advanced-filters-panel.tsx +273 -0
  341. package/client/src/components/inventory/csv-upload-modal.tsx +639 -0
  342. package/client/src/components/inventory/inventory-availability-view.tsx +486 -0
  343. package/client/src/components/inventory/inventory-details-sheet.tsx +376 -0
  344. package/client/src/components/inventory/inventory-map-view.tsx +596 -0
  345. package/client/src/components/inventory/inventory-settings-menu.tsx +52 -0
  346. package/client/src/components/language-switcher.tsx +53 -0
  347. package/client/src/components/line-items/campaign-forecast-panel.tsx +138 -0
  348. package/client/src/components/line-items/form-insights.tsx +89 -0
  349. package/client/src/components/line-items/geofencing/LocationCsvUploadDrawer.tsx +100 -0
  350. package/client/src/components/line-items/geofencing/POIDropdown.tsx +379 -0
  351. package/client/src/components/line-items/geofencing/SelectedLocationsSidebar.tsx +436 -0
  352. package/client/src/components/line-items/geofencing/ViewFileLocationDrawer.tsx +199 -0
  353. package/client/src/components/line-items/geofencing/components/ExistingFilesTab.tsx +268 -0
  354. package/client/src/components/line-items/geofencing/components/TemplateDownloadSection.tsx +59 -0
  355. package/client/src/components/line-items/geofencing/components/UploadTab.tsx +215 -0
  356. package/client/src/components/line-items/geofencing-map.tsx +1270 -0
  357. package/client/src/components/line-items/inventory-availability-section.tsx +178 -0
  358. package/client/src/components/line-items/line-item-schedule-manager.tsx +313 -0
  359. package/client/src/components/line-items/manual-inventory-drawer.tsx +346 -0
  360. package/client/src/components/line-items/planner-inventory-card.tsx +495 -0
  361. package/client/src/components/line-items/planner-schedule-grid.tsx +495 -0
  362. package/client/src/components/line-items/schedule-rule-editor.tsx +649 -0
  363. package/client/src/components/line-items/schedule-rule-types.ts +122 -0
  364. package/client/src/components/line-items/steps/creatives-step.tsx +681 -0
  365. package/client/src/components/line-items/steps/inventory-schedule-step.tsx +1596 -0
  366. package/client/src/components/line-items/steps/inventory-step.tsx +1533 -0
  367. package/client/src/components/line-items/steps/line-item-details-step.tsx +916 -0
  368. package/client/src/components/line-items/steps/schedule-step.tsx +273 -0
  369. package/client/src/components/line-items/steps/summary-step.tsx +680 -0
  370. package/client/src/components/line-items/steps/targeting-step.tsx +1708 -0
  371. package/client/src/components/product-switcher.tsx +105 -0
  372. package/client/src/components/protected-route.tsx +49 -0
  373. package/client/src/components/skip-link.tsx +22 -0
  374. package/client/src/components/stat-card.tsx +53 -0
  375. package/client/src/components/status-badge.tsx +96 -0
  376. package/client/src/components/ui/hierarchical-venue-selector.tsx +389 -0
  377. package/client/src/components/ui/toaster.tsx +111 -0
  378. package/client/src/contexts/auth-context.tsx +181 -0
  379. package/client/src/contexts/sidebar-state.tsx +50 -0
  380. package/client/src/contexts/theme-context.tsx +66 -0
  381. package/client/src/data/campaign-data.json +107 -0
  382. package/client/src/data/countries.json +22 -0
  383. package/client/src/hooks/use-approval.ts +366 -0
  384. package/client/src/hooks/use-keyboard-shortcuts.ts +74 -0
  385. package/client/src/hooks/use-media-query.ts +46 -0
  386. package/client/src/hooks/use-mobile.tsx +19 -0
  387. package/client/src/hooks/use-page-title.ts +21 -0
  388. package/client/src/hooks/use-toast.ts +195 -0
  389. package/client/src/index.css +694 -0
  390. package/client/src/lib/__tests__/accessibility.test.ts +104 -0
  391. package/client/src/lib/__tests__/date-utils.test.ts +199 -0
  392. package/client/src/lib/__tests__/dsp-buyer-api.test.ts +127 -0
  393. package/client/src/lib/__tests__/dsp-buyer-integration.test.ts +247 -0
  394. package/client/src/lib/__tests__/storage-utils.test.ts +167 -0
  395. package/client/src/lib/__tests__/utils.test.ts +57 -0
  396. package/client/src/lib/accessibility.ts +141 -0
  397. package/client/src/lib/api-config.ts +9 -0
  398. package/client/src/lib/auth-service.ts +209 -0
  399. package/client/src/lib/campaign-creative-api.ts +82 -0
  400. package/client/src/lib/company-api.ts +61 -0
  401. package/client/src/lib/content-hub-api.ts +407 -0
  402. package/client/src/lib/creative-mapper.ts +61 -0
  403. package/client/src/lib/date-utils.ts +119 -0
  404. package/client/src/lib/deal-helpers.ts +220 -0
  405. package/client/src/lib/dsp-buyer-api.ts +196 -0
  406. package/client/src/lib/geo-import-api.ts +151 -0
  407. package/client/src/lib/google-poi-api.ts +305 -0
  408. package/client/src/lib/i18n/__tests__/formatting.test.ts +202 -0
  409. package/client/src/lib/i18n/formatting.ts +130 -0
  410. package/client/src/lib/i18n/index.ts +8 -0
  411. package/client/src/lib/i18n-compat.ts +76 -0
  412. package/client/src/lib/influence-deals-api.ts +896 -0
  413. package/client/src/lib/inventory-api.ts +399 -0
  414. package/client/src/lib/oauth-service.ts +678 -0
  415. package/client/src/lib/poi-types.ts +75 -0
  416. package/client/src/lib/queryClient.ts +144 -0
  417. package/client/src/lib/recommendation-api.ts +380 -0
  418. package/client/src/lib/storage-utils.ts +104 -0
  419. package/client/src/lib/tolgee.ts +85 -0
  420. package/client/src/lib/utils.ts +0 -0
  421. package/client/src/main.tsx +67 -0
  422. package/client/src/mapbox-draw-modes.d.ts +32 -0
  423. package/client/src/pages/all-folders.tsx +203 -0
  424. package/client/src/pages/auth-callback.tsx +115 -0
  425. package/client/src/pages/buyer-form.tsx +339 -0
  426. package/client/src/pages/buyer-list.tsx +622 -0
  427. package/client/src/pages/content-hub.tsx +1358 -0
  428. package/client/src/pages/create-deal.tsx +2093 -0
  429. package/client/src/pages/creative-assignment-page.tsx +548 -0
  430. package/client/src/pages/creatives.tsx +5 -0
  431. package/client/src/pages/custom-pois.tsx +425 -0
  432. package/client/src/pages/dashboard.tsx +615 -0
  433. package/client/src/pages/deal-history.tsx +434 -0
  434. package/client/src/pages/deal-line-items.tsx +1703 -0
  435. package/client/src/pages/demo-status.tsx +113 -0
  436. package/client/src/pages/direct-campaign-details.tsx +361 -0
  437. package/client/src/pages/direct-campaigns-new.tsx +824 -0
  438. package/client/src/pages/dsp-form.tsx +803 -0
  439. package/client/src/pages/dsp-list.tsx +239 -0
  440. package/client/src/pages/folder-content.tsx +336 -0
  441. package/client/src/pages/integrations.tsx +429 -0
  442. package/client/src/pages/line-item-creatives.tsx +789 -0
  443. package/client/src/pages/line-item-detail-page.tsx +684 -0
  444. package/client/src/pages/line-item-form-page.tsx +3261 -0
  445. package/client/src/pages/line-item-wizard.tsx +1207 -0
  446. package/client/src/pages/login.tsx +154 -0
  447. package/client/src/pages/not-found.tsx +23 -0
  448. package/client/src/pages/proof-of-play.tsx +397 -0
  449. package/client/src/pages/public-approval.tsx +551 -0
  450. package/client/src/pages/reports.tsx +231 -0
  451. package/client/src/pages/settings.tsx +760 -0
  452. package/client/src/pages/signals.tsx +389 -0
  453. package/client/src/pages/tags.tsx +318 -0
  454. package/client/src/pages/test-results.tsx +328 -0
  455. package/client/src/store/hooks.ts +5 -0
  456. package/client/src/store/index.ts +15 -0
  457. package/client/src/store/mapMarkerLocationsSlice.ts +241 -0
  458. package/client/src/styles/design-tokens.css +324 -0
  459. package/client/src/test/setup.ts +261 -0
  460. package/client/src/test/test-utils.tsx +40 -0
  461. package/client/src/types/approval.ts +221 -0
  462. package/client/src/types/content-hub.ts +209 -0
  463. package/client/src/types/geofencing.ts +67 -0
  464. package/client/src/types/transcoding.ts +140 -0
  465. package/client/src/vite-env.d.ts +18 -0
  466. package/components.json +20 -0
  467. package/creative-api.json +1 -0
  468. package/docs/AI_REFERENCE.md +459 -0
  469. package/docs/MWDesign-Prompt.md +132 -0
  470. package/docs/MWDesign-System.md +344 -0
  471. package/docs/test-plan.md +277 -0
  472. package/e2e/AUTONOMOUS-TESTING.md +406 -0
  473. package/e2e/README.md +219 -0
  474. package/e2e/autonomous-flow.spec.ts +308 -0
  475. package/e2e/debug-sso.spec.ts +163 -0
  476. package/e2e/direct-campaigns.spec.ts +219 -0
  477. package/e2e/explore-sso.spec.ts +149 -0
  478. package/e2e/fixtures/auth.ts +26 -0
  479. package/e2e/fixtures/enhanced-test.ts +331 -0
  480. package/e2e/pagination.spec.ts +280 -0
  481. package/e2e/view-toggle.spec.ts +312 -0
  482. package/generated-icon.png +0 -0
  483. package/i18next-scanner.config.cjs +46 -0
  484. package/package.json +141 -0
  485. package/playwright.config.ts +93 -0
  486. package/postcss.config.js +6 -0
  487. package/replit.md +196 -0
  488. package/screenshot-after-login.png +0 -0
  489. package/screenshot-contenthub-grid.png +0 -0
  490. package/screenshot-contenthub-list-fixed.png +0 -0
  491. package/screenshot-contenthub-list.png +0 -0
  492. package/screenshot-create-deal.png +0 -0
  493. package/screenshot-dashboard.png +0 -0
  494. package/screenshot-deals.png +0 -0
  495. package/screenshot-login-filled.png +0 -0
  496. package/screenshot-login.png +0 -0
  497. package/screenshot.mjs +24 -0
  498. package/scripts/deploy-stg.sh +185 -0
  499. package/shared/direct-io-schema.ts +383 -0
  500. package/shared/schema.ts +439 -0
  501. package/shared/screen-types.ts +149 -0
  502. package/springdocDefault.json +1 -0
  503. package/swagger-ui-bundle.js +2 -0
  504. package/swagger-ui-init.js +10316 -0
  505. package/tailwind.config.ts +282 -0
  506. package/terraform/README.md +306 -0
  507. package/terraform/cloudfront.tf +289 -0
  508. package/terraform/ecs.tf +727 -0
  509. package/terraform/environments/dev.tfvars +59 -0
  510. package/terraform/environments/production.tfvars +60 -0
  511. package/terraform/main.tf +47 -0
  512. package/terraform/outputs.tf +145 -0
  513. package/terraform/s3.tf +192 -0
  514. package/terraform/variables.tf +226 -0
  515. package/terraform/waf.tf +165 -0
  516. package/terraform-frontend/.terraform.lock.hcl +25 -0
  517. package/terraform-frontend/README.md +85 -0
  518. package/terraform-frontend/cloudfront.tf +125 -0
  519. package/terraform-frontend/main.tf +31 -0
  520. package/terraform-frontend/outputs.tf +24 -0
  521. package/terraform-frontend/terraform.tfvars +12 -0
  522. package/terraform-frontend/variables.tf +53 -0
  523. package/tsconfig.json +23 -0
  524. package/vite.config.ts +226 -0
  525. package/vitest.config.ts +56 -0
@@ -0,0 +1,553 @@
1
+ {
2
+ "wizard": {
3
+ "title": "معالج عنصر الخط",
4
+ "steps": {
5
+ "details": "التفاصيل",
6
+ "inventorySchedule": "المخزون والجدول",
7
+ "inventory": "المخزون",
8
+ "schedule": "الجدول",
9
+ "targeting": "الاستهداف",
10
+ "creatives": "الإبداعات",
11
+ "summary": "الملخص"
12
+ },
13
+ "common": {
14
+ "next": "التالي",
15
+ "back": "رجوع",
16
+ "save": "حفظ",
17
+ "cancel": "إلغاء",
18
+ "saving": "جاري الحفظ...",
19
+ "loading": "جاري التحميل...",
20
+ "searchHere": "ابحث هنا",
21
+ "selectAll": "تحديد الكل",
22
+ "noResults": "لم يتم العثور على نتائج",
23
+ "selected": "محدد",
24
+ "pageItems": "عناصر الصفحة",
25
+ "groupBy": "تجميع حسب",
26
+ "allInventories": "جميع المخزونات",
27
+ "readOnly": "للقراءة فقط",
28
+ "findingBestInventory": "جاري البحث عن أفضل مخزون لحملتك...",
29
+ "mayTakeMoment": "قد يستغرق هذا بعض الوقت",
30
+ "proceedingWithStandardSearch": "المتابعة مع البحث القياسي عن المخزون.",
31
+ "note": "ملاحظة:",
32
+ "publisher": "الناشر",
33
+ "location": "الموقع",
34
+ "type": "النوع"
35
+ },
36
+ "ai": {
37
+ "smartSuggestion": "اقتراح ذكي بالذكاء الاصطناعي",
38
+ "smartRecommendation": "توصية ذكية",
39
+ "skipForNow": "تخطي الآن",
40
+ "workingOnGeoFitness": "الاقتراح الذكي بالذكاء الاصطناعي يعمل على الملاءمة الجغرافية",
41
+ "errorMessage": "واجه الاقتراح الذكي بالذكاء الاصطناعي خطأً غير متوقع أثناء معالجة طلبك. لم تتمكن الشبكة العصبية من إكمال المهمة.",
42
+ "showAllInventories": "عرض جميع المخزونات",
43
+ "viewRecommendations": "عرض التوصيات",
44
+ "viewAllInventories": "عرض جميع المخزونات",
45
+ "retry": "إعادة المحاولة",
46
+ "inventoriesRecommended": "تم التوصية بـ {{count}} مخزون",
47
+ "basedOnCampaignDetails": "بناءً على تفاصيل حملتك، نوصي بالمخزونات التالية."
48
+ },
49
+ "details": {
50
+ "title": "تفاصيل عنصر الخط",
51
+ "subtitle": "حدد التفاصيل الأساسية لعنصر الخط.",
52
+ "name": "الاسم",
53
+ "lineItemName": "اسم عنصر الخط",
54
+ "enterLineItemName": "أدخل اسم عنصر الخط",
55
+ "flightDates": "تواريخ العرض",
56
+ "selectFlightDates": "حدد نطاق تاريخ العرض",
57
+ "creativeType": "نوع الإبداع",
58
+ "selectCreativeType": "حدد نوع الإبداع",
59
+ "display": "عرض",
60
+ "displayDesc": "صور ثابتة ولافتات",
61
+ "video": "فيديو",
62
+ "videoDesc": "محتوى فيديو ورسوم متحركة",
63
+ "audio": "صوت",
64
+ "audioDesc": "إعلانات صوتية",
65
+ "creativeDuration": "مدة الإبداع (ثواني)",
66
+ "durationPlaceholder": "مثال: 10",
67
+ "durationOfPlayback": "مدة تشغيل الإبداع",
68
+ "budgetAmount": "مبلغ الميزانية",
69
+ "enterAmount": "أدخل المبلغ",
70
+ "currencyInherited": "العملة موروثة من الحملة",
71
+ "goalType": "نوع الهدف",
72
+ "selectGoalType": "حدد نوع الهدف",
73
+ "impressions": "مرات الظهور",
74
+ "reach": "الوصول",
75
+ "shareOfVoice": "حصة الصوت",
76
+ "targetValue": "القيمة المستهدفة",
77
+ "enterImpressions": "أدخل عدد مرات الظهور",
78
+ "enterUsers": "أدخل عدد المستخدمين",
79
+ "enterPercentage": "أدخل النسبة المئوية (0-100)",
80
+ "impressionsDesc": "إجمالي عدد مرات الظهور المراد تحقيقها",
81
+ "reachDesc": "عدد المستخدمين الفريدين للوصول إليهم",
82
+ "sovDesc": "نسبة المخزون المتاح (0-100%)",
83
+ "pacing": "وتيرة التوزيع",
84
+ "selectPacing": "حدد وتيرة التوزيع",
85
+ "pacingAsap": "في أقرب وقت ممكن",
86
+ "pacingAsapDesc": "سيتم استخدام الميزانية المخصصة بالكامل لتحقيق الكمية المستهدفة في أقرب وقت ممكن.",
87
+ "pacingEven": "متساوي (افتراضي)",
88
+ "pacingEvenDesc": "سيتم توزيع الميزانية بالتساوي على مدار فترة العرض.",
89
+ "pacingFrontLoaded": "تحميل أمامي",
90
+ "pacingFrontLoadedDesc": "تخصيص ميزانية أعلى في بداية الحملة، تتناقص تدريجياً نحو النهاية.",
91
+ "pacingBackLoaded": "تحميل خلفي",
92
+ "pacingBackLoadedDesc": "تخصيص ميزانية أقل في البداية، تزداد نحو نهاية الحملة.",
93
+ "dailyImpressionCap": "الحد الأقصى لمرات الظهور اليومية",
94
+ "optionalDailyLimit": "حد يومي اختياري",
95
+ "maxImpressionsPerDay": "أقصى عدد لمرات الظهور يومياً",
96
+ "hourlyImpressionCap": "الحد الأقصى لمرات الظهور بالساعة",
97
+ "optionalHourlyLimit": "حد ساعي اختياري",
98
+ "maxImpressionsPerHour": "أقصى عدد لمرات الظهور بالساعة",
99
+ "projectedPacingDelivery": "التوزيع المتوقع",
100
+ "pacingGraphTooltip": "يوضح هذا الرسم البياني نمط التوزيع المتوقع بناءً على نوع وتيرة التوزيع المحدد.",
101
+ "goalPercentage": "نسبة الهدف",
102
+ "numberOfDays": "عدد الأيام",
103
+ "formInsights": "رؤى النموذج",
104
+ "insightName": "أعط عنصر الخط اسماً وصفياً",
105
+ "insightDates": "تواريخ العرض تحدد وقت عرض إعلاناتك",
106
+ "insightBudget": "حدد ميزانيتك للتحكم في الإنفاق",
107
+ "insightGoal": "اختر هدفاً يتوافق مع أهداف حملتك",
108
+ "tipPacing": "التوزيع المتساوي يوزع العرض بشكل متساوٍ للحصول على تعرض متسق",
109
+ "tipBudget": "ضع في اعتبارك إجمالي ميزانية الحملة عند تحديد ميزانيات عناصر الخط",
110
+ "restrictedEditMode": "وضع التحرير المقيد",
111
+ "restrictedEditModeDesc": "يمكن تعديل إعدادات وتيرة التوزيع فقط (الحد اليومي، الحد الساعي). الحقول الأخرى للقراءة فقط.",
112
+ "restrictedEditModeWithBudget": "يمكن تعيين مبلغ الميزانية والقيمة المستهدفة إذا كانت فارغة حالياً."
113
+ },
114
+ "inventory": {
115
+ "title": "المخزون",
116
+ "subtitle": "اختر المخزون المناسب",
117
+ "description": "حدد الشاشات وحدد الجدول",
118
+ "screens": "الشاشات",
119
+ "networks": "الشبكات",
120
+ "packages": "الحزم",
121
+ "items": "العناصر",
122
+ "noScreensFound": "لم يتم العثور على شاشات",
123
+ "noNetworksFound": "لم يتم العثور على شبكات",
124
+ "noPackagesFound": "لم يتم العثور على حزم",
125
+ "loadingInventories": "جاري تحميل المخزون...",
126
+ "selectedScreens": "الشاشات المحددة",
127
+ "noScreensSelected": "لم يتم تحديد شاشات",
128
+ "filterByLocation": "تصفية حسب الموقع",
129
+ "filterByVenue": "تصفية حسب نوع المكان",
130
+ "searchScreens": "البحث عن شاشات...",
131
+ "listView": "عرض القائمة",
132
+ "advancedFilter": "تصفية متقدمة",
133
+ "settings": "الإعدادات",
134
+ "scheduleTitle": "الجدول والتوقعات",
135
+ "flight": "العرض",
136
+ "schedule": "الجدول",
137
+ "impressions": "مرات الظهور",
138
+ "reach": "الوصول",
139
+ "frequency": "التكرار",
140
+ "adPlays": "تشغيل الإعلانات",
141
+ "sov": "حصة الصوت",
142
+ "sot": "حصة الوقت",
143
+ "cpm": "التكلفة لكل ألف",
144
+ "ecpm": "التكلفة الفعالة لكل ألف",
145
+ "totalCost": "التكلفة الإجمالية",
146
+ "noInventorySelected": "لم يتم تحديد مخزون",
147
+ "selectInventoryForForecast": "حدد مخزوناً لرؤية التوقعات",
148
+ "plannerRestrictedTitle": "للقراءة فقط",
149
+ "plannerRestrictedDesc": "لا يمكن تعديل إعدادات المخزون للصفقات المعتمدة. انتقل إلى الخطوة التالية للمتابعة.",
150
+ "plannerRestrictedScheduleDesc": "لا يمكن تعديل إعدادات المخزون والجدول للصفقات المعتمدة. انتقل إلى خطوة الإبداعات لتحديثها.",
151
+ "unknownPublisher": "ناشر غير معروف",
152
+ "unknownLocation": "موقع غير معروف",
153
+ "unknownType": "نوع غير معروف",
154
+ "mapView": "عرض الخريطة",
155
+ "availability": "التوفر",
156
+ "uploadCSV": "تحميل CSV",
157
+ "inventoriesSelected": "تم تحديد المخزونات"
158
+ },
159
+ "schedule": {
160
+ "title": "تكوين الجدول",
161
+ "lineItemSchedule": "جدول عنصر الخط",
162
+ "subtitle": "تكوين أوقات عرض إعلاناتك",
163
+ "scheduleType": "نوع الجدول",
164
+ "default": "افتراضي",
165
+ "weekday": "أيام الأسبوع",
166
+ "weekend": "نهاية الأسبوع",
167
+ "custom": "مخصص",
168
+ "defaultDesc": "عرض الإعلانات طوال الأسبوع (الاثنين - الأحد)",
169
+ "weekdayDesc": "عرض الإعلانات أيام الأسبوع فقط (الاثنين - الجمعة)",
170
+ "weekendDesc": "عرض الإعلانات نهاية الأسبوع فقط (السبت - الأحد)",
171
+ "customDesc": "تحديد قواعد جدول مخصصة",
172
+ "validity": "الصلاحية",
173
+ "startDate": "تاريخ البداية",
174
+ "endDate": "تاريخ النهاية",
175
+ "hours": "ساعات",
176
+ "allDay": "طوال اليوم",
177
+ "addTimeSlot": "إضافة فترة زمنية",
178
+ "priority": "الأولوية",
179
+ "daysOfWeek": "أيام الأسبوع",
180
+ "monday": "الاثنين",
181
+ "tuesday": "الثلاثاء",
182
+ "wednesday": "الأربعاء",
183
+ "thursday": "الخميس",
184
+ "friday": "الجمعة",
185
+ "saturday": "السبت",
186
+ "sunday": "الأحد",
187
+ "mon": "اث",
188
+ "tue": "ثل",
189
+ "wed": "أر",
190
+ "thu": "خم",
191
+ "fri": "جم",
192
+ "sat": "سب",
193
+ "sun": "أح",
194
+ "addSchedule": "إضافة جدول",
195
+ "removeSchedule": "إزالة الجدول",
196
+ "schedules": "الجداول",
197
+ "noSchedules": "لم يتم تكوين جداول",
198
+ "forecast": "التوقعات",
199
+ "estimatedImpressions": "مرات الظهور المتوقعة",
200
+ "estimatedReach": "الوصول المتوقع",
201
+ "noInventoriesSelected": "لم يتم تحديد مخزون. عد لتحديد المخزون.",
202
+ "plannerRestrictedDesc": "لا يمكن تعديل إعدادات الجدول للصفقات المعتمدة."
203
+ },
204
+ "targeting": {
205
+ "title": "خيارات الاستهداف",
206
+ "subtitle": "تكوين استهداف الجمهور والموقع",
207
+ "description": "تكوين استهداف الجمهور والموقع",
208
+ "demographicsTab": "الديموغرافيا",
209
+ "venueTypesTab": "أنواع الأماكن",
210
+ "geofencingTab": "السياج الجغرافي",
211
+ "signalsTab": "الإشارات",
212
+ "demographicsVenueTitle": "الديموغرافيا واختيار المكان",
213
+ "demographicsVenueDesc": "أدخل معلوماتك الديموغرافية واختر المكان الذي يناسب متطلباتك.",
214
+ "ageGroups": "الفئات العمرية",
215
+ "ageGroup": "الفئة العمرية",
216
+ "selectAgeGroups": "حدد الفئات العمرية",
217
+ "selectAgeGroupsPlaceholder": "حدد الفئات العمرية...",
218
+ "genders": "الجنس",
219
+ "gender": "الجنس",
220
+ "selectGenders": "حدد الجنس",
221
+ "selectGendersPlaceholder": "حدد الجنس...",
222
+ "male": "ذكر",
223
+ "female": "أنثى",
224
+ "other": "آخر",
225
+ "incomeGroups": "فئات الدخل",
226
+ "incomeGroup": "فئة الدخل",
227
+ "incomeBracket": "شريحة الدخل",
228
+ "selectIncomeGroups": "حدد فئات الدخل",
229
+ "selectIncomeGroupsPlaceholder": "حدد فئات الدخل...",
230
+ "lowIncome": "دخل منخفض",
231
+ "lowerMiddle": "متوسط أدنى",
232
+ "middle": "متوسط",
233
+ "upperMiddle": "متوسط أعلى",
234
+ "highIncome": "دخل مرتفع",
235
+ "interests": "الاهتمامات",
236
+ "interestActivities": "الاهتمامات والأنشطة",
237
+ "selectInterests": "حدد الاهتمامات",
238
+ "selectInterestsPlaceholder": "حدد الاهتمامات...",
239
+ "sportsFitness": "الرياضة واللياقة",
240
+ "travel": "السفر",
241
+ "technology": "التكنولوجيا",
242
+ "foodDining": "الطعام والمطاعم",
243
+ "entertainment": "الترفيه",
244
+ "fashion": "الموضة",
245
+ "automotive": "السيارات",
246
+ "audienceBehaviors": "سلوكيات الجمهور",
247
+ "audienceBehaviour": "سلوك الجمهور",
248
+ "selectBehaviors": "حدد السلوكيات",
249
+ "selectBehaviorsPlaceholder": "حدد السلوكيات...",
250
+ "dailyCommuter": "متنقل يومي",
251
+ "frequentShopper": "متسوق متكرر",
252
+ "weekendShopper": "متسوق نهاية الأسبوع",
253
+ "tourist": "سائح",
254
+ "student": "طالب",
255
+ "businessProfessional": "محترف أعمال",
256
+ "venueTypes": "أنواع الأماكن",
257
+ "venueType": "نوع المكان",
258
+ "selectVenueTypes": "حدد أنواع الأماكن",
259
+ "selectVenueTypesPlaceholder": "حدد أنواع الأماكن...",
260
+ "selectVenueType": "حدد نوع المكان",
261
+ "loadingVenues": "جاري تحميل أنواع الأماكن...",
262
+ "geofencing": "السياج الجغرافي",
263
+ "geofencingTitle": "السياج الجغرافي واستهداف الموقع",
264
+ "geofencingDesc": "حدد الحدود الجغرافية لاستهداف جمهورك بناءً على الموقع.",
265
+ "addGeofence": "إضافة سياج جغرافي",
266
+ "drawOnMap": "ارسم على الخريطة",
267
+ "uploadLocations": "تحميل المواقع",
268
+ "radius": "نصف القطر",
269
+ "includeExclude": "تضمين/استبعاد",
270
+ "includeAll": "تضمين الكل",
271
+ "noLocations": "لم تتم إضافة مواقع",
272
+ "addLocationsHint": "ارسم على الخريطة أو قم بتحميل المواقع لتحديد مناطق السياج الجغرافي",
273
+ "locationName": "اسم الموقع",
274
+ "locationAddress": "العنوان",
275
+ "remove": "إزالة",
276
+ "addPoi": "إضافة نقطة اهتمام",
277
+ "poiTypes": "أنواع نقاط الاهتمام",
278
+ "maxPoisPerLocation": "الحد الأقصى {{max}} نقاط اهتمام لكل موقع",
279
+ "signals": "الإشارات",
280
+ "signalsTitle": "إشارات السياق",
281
+ "signalsDescription": "تشغيل الإعلانات بناءً على الظروف في الوقت الفعلي",
282
+ "signalsDesc": "استهدف إعلاناتك بناءً على الظروف في الوقت الفعلي والعوامل السياقية.",
283
+ "weather": "الطقس",
284
+ "weatherDescription": "تشغيل الإعلانات بناءً على أحوال الطقس ودرجة الحرارة",
285
+ "traffic": "حركة المرور",
286
+ "trafficDescription": "ضبط التوزيع بناءً على كثافة حركة المرور في الوقت الفعلي",
287
+ "airQuality": "مؤشر جودة الهواء",
288
+ "airQualityDescription": "الاستهداف بناءً على مستويات جودة الهواء",
289
+ "timeOfDay": "وقت اليوم",
290
+ "timeOfDayDescription": "استهداف الفترات الزمنية (صباحاً، ظهراً، مساءً)",
291
+ "weatherConditions": "أحوال الطقس",
292
+ "temperature": "درجة الحرارة",
293
+ "temperatureMin": "الحد الأدنى لدرجة الحرارة",
294
+ "temperatureMax": "الحد الأقصى لدرجة الحرارة",
295
+ "temperatureUnit": "وحدة درجة الحرارة",
296
+ "celsius": "مئوية (°C)",
297
+ "fahrenheit": "فهرنهايت (°F)",
298
+ "trafficDensity": "كثافة حركة المرور",
299
+ "low": "منخفض",
300
+ "moderate": "متوسط",
301
+ "high": "مرتفع",
302
+ "aqiThreshold": "عتبة مؤشر جودة الهواء",
303
+ "good": "جيد",
304
+ "unhealthySensitive": "غير صحي للمجموعات الحساسة",
305
+ "unhealthy": "غير صحي",
306
+ "veryUnhealthy": "غير صحي جداً",
307
+ "hazardous": "خطير",
308
+ "dayparts": "فترات اليوم",
309
+ "morning": "صباحاً (6ص-12م)",
310
+ "afternoon": "ظهراً (12م-6م)",
311
+ "evening": "مساءً (6م-10م)",
312
+ "night": "ليلاً (10م-6ص)",
313
+ "smartSuggestions": "اقتراحات ذكية",
314
+ "aiPowered": "مدعوم بالذكاء الاصطناعي",
315
+ "basedOnCampaign": "بناءً على بيانات حملتك، نوصي بخيارات الاستهداف هذه",
316
+ "applySuggestions": "تطبيق الاقتراحات",
317
+ "formInsights": "رؤى الاستهداف",
318
+ "insightDemographics": "حسّن جمهورك باستخدام الاستهداف الديموغرافي",
319
+ "insightVenues": "اختر أنواع الأماكن التي تتناسب مع جمهورك المستهدف",
320
+ "insightGeofencing": "استخدم السياج الجغرافي للحملات الخاصة بالموقع",
321
+ "insightSignals": "تساعد الإشارات في الوقت الفعلي على الوصول إلى الجمهور في اللحظة المناسبة",
322
+ "tipCombine": "اجمع بين خيارات استهداف متعددة لدقة أفضل",
323
+ "tipTest": "ابدأ بنطاق واسع وحسّن بناءً على بيانات الأداء",
324
+ "plannerRestrictedDesc": "لا يمكن تعديل إعدادات الاستهداف للصفقات المعتمدة. انتقل إلى خطوة الإبداعات لتحديثها.",
325
+ "selectedLocations": "المواقع المحددة",
326
+ "clickMapToAddLocations": "انقر على الخريطة أو ابحث لإضافة مواقع",
327
+ "searchAddedLocations": "ابحث في المواقع المضافة هنا...",
328
+ "locationNumber": "الموقع {{number}}",
329
+ "drawnOnMap": "{{type}} - مرسوم على الخريطة",
330
+ "limitReached": "تم الوصول للحد الأقصى",
331
+ "canAddUpToPois": "يمكنك إضافة حتى {{max}} نقاط اهتمام"
332
+ },
333
+ "creatives": {
334
+ "title": "تعيين الإبداعات",
335
+ "subtitle": "اسحب وأفلت أصول الإبداعات لتعيينها لعناصر الخط",
336
+ "description": "تعيين الإبداعات لعنصر الخط هذا",
337
+ "assignCreatives": "تعيين الإبداعات",
338
+ "browseLibrary": "تصفح المكتبة",
339
+ "noCreatives": "لم يتم تعيين إبداعات",
340
+ "uploadNew": "تحميل جديد",
341
+ "skipStep": "تخطي هذه الخطوة",
342
+ "contentHub": "إبداعات مركز المحتوى",
343
+ "typeOnly": "فقط",
344
+ "showingMatching": "عرض الإبداعات المطابقة لدقة المخزون",
345
+ "allowedResolutions": "مسموح",
346
+ "loadingCreatives": "جاري تحميل الإبداعات...",
347
+ "noMatchingCreatives": "لم يتم العثور على إبداعات مطابقة",
348
+ "uploadToStart": "قم بتحميل الملفات للبدء",
349
+ "uploadWithResolution": "تحميل ملفات بالدقة المحددة",
350
+ "assignedCreatives": "الإبداعات المعينة",
351
+ "noCreativesAssigned": "لم يتم تعيين إبداعات بعد",
352
+ "dragDropHint": "اسحب وأفلت الإبداعات هنا..",
353
+ "creative": "إبداع",
354
+ "creatives": "إبداعات",
355
+ "duplicateError": "معين بالفعل لعنصر الخط هذا",
356
+ "formInsights": "رؤى الإبداعات",
357
+ "insightMatch": "يجب أن تتطابق الإبداعات مع مواصفات شاشة المخزون",
358
+ "insightApproved": "الإبداعات المعتمدة جاهزة للتوزيع",
359
+ "insightSkip": "يمكنك تخطي هذه الخطوة وإضافة الإبداعات لاحقاً",
360
+ "tipDragDrop": "اسحب الإبداعات من مركز المحتوى للتعيين",
361
+ "tipResolution": "تأكد من الدقة الصحيحة لكل نوع شاشة"
362
+ },
363
+ "summary": {
364
+ "title": "مراجعة وإرسال",
365
+ "subtitle": "راجع جميع تفاصيل عنصر الخط قبل الإرسال.",
366
+ "description": "راجع تكوين عنصر الخط",
367
+ "lineItemDetails": "تفاصيل عنصر الخط",
368
+ "name": "الاسم",
369
+ "untitledLineItem": "عنصر خط بدون عنوان",
370
+ "flightDates": "تواريخ العرض",
371
+ "budget": "الميزانية",
372
+ "goal": "الهدف",
373
+ "pacing": "وتيرة التوزيع",
374
+ "dailyCap": "الحد اليومي",
375
+ "hourlyCap": "الحد الساعي",
376
+ "notSet": "غير محدد",
377
+ "targeting": "الاستهداف",
378
+ "noTargetingSet": "لم يتم تعيين استهداف",
379
+ "noTargetingDesc": "لم يتم تكوين معايير استهداف. سيستهدف عنصر الخط جميع الجماهير.",
380
+ "ageGroups": "الفئات العمرية",
381
+ "genders": "الجنس",
382
+ "incomeGroups": "فئات الدخل",
383
+ "interests": "الاهتمامات",
384
+ "venueTypes": "أنواع الأماكن",
385
+ "geofencing": "السياج الجغرافي",
386
+ "location": "موقع",
387
+ "locations": "مواقع",
388
+ "signals": "الإشارات",
389
+ "inventories": "المخزون",
390
+ "screen": "شاشة",
391
+ "screens": "شاشات",
392
+ "noInventoriesSelected": "لم يتم تحديد مخزون.",
393
+ "totalScreens": "إجمالي الشاشات",
394
+ "resolutions": "الدقة",
395
+ "selectedScreens": "الشاشات المحددة",
396
+ "more": "المزيد",
397
+ "creatives": "الإبداعات",
398
+ "creative": "إبداع",
399
+ "noCreativesAssigned": "لم يتم تعيين إبداعات. يمكنك إضافة الإبداعات بعد إنشاء عنصر الخط.",
400
+ "estimatedReach": "الوصول المتوقع",
401
+ "totalBudget": "إجمالي الميزانية",
402
+ "assignedCreatives": "الإبداعات المعينة",
403
+ "targetingSettings": "إعدادات الاستهداف",
404
+ "reviewDetails": "مراجعة التفاصيل",
405
+ "scheduleSettings": "إعدادات الجدول"
406
+ }
407
+ },
408
+ "geofencing": {
409
+ "upload": {
410
+ "selectCountry": "اختر الدولة",
411
+ "selectCountryPlaceholder": "اختر دولة",
412
+ "uploadCsvFile": "تحميل ملف CSV",
413
+ "dragDropCsv": "اسحب وأفلت ملف CSV هنا أو",
414
+ "browse": "تصفح",
415
+ "supportedFormat": "التنسيق المدعوم: ملفات CSV فقط",
416
+ "uploadSuccess": "تم تحميل المواقع بنجاح!",
417
+ "uploading": "جاري التحميل...",
418
+ "uploadLocations": "تحميل المواقع"
419
+ },
420
+ "locations": {
421
+ "selectedLocations": "المواقع المحددة",
422
+ "manageLocations": "إدارة مواقعك المستهدفة",
423
+ "searchPlaceholder": "البحث عن مواقع...",
424
+ "includeAll": "تضمين جميع المواقع",
425
+ "noLocationsAdded": "لم تتم إضافة مواقع بعد",
426
+ "noLocationsMatch": "لا توجد مواقع تطابق بحثك",
427
+ "importLocations": "استيراد المواقع",
428
+ "locationsAdded": "تمت إضافة {{count}} موقع",
429
+ "locationsAdded_plural": "تمت إضافة {{count}} مواقع",
430
+ "deleteLocation": "حذف الموقع",
431
+ "deleteConfirmation": "هل أنت متأكد من حذف هذا الموقع؟ لا يمكن التراجع عن هذا الإجراء.",
432
+ "cancel": "إلغاء",
433
+ "delete": "حذف",
434
+ "limitReached": "تم الوصول للحد الأقصى",
435
+ "addUpToPois": "إضافة حتى 5 نقاط اهتمام",
436
+ "addPoi": "إضافة نقطة اهتمام"
437
+ },
438
+ "map": {
439
+ "loading": "جاري تحميل الخريطة...",
440
+ "searchLocations": "البحث عن مواقع...",
441
+ "targetRadius": "نصف قطر الاستهداف",
442
+ "toggleFullscreen": "تبديل ملء الشاشة",
443
+ "deleteLocation": "حذف الموقع",
444
+ "deleteConfirmation": "هل أنت متأكد من حذف هذا الموقع؟ لا يمكن التراجع عن هذا الإجراء.",
445
+ "selectedLocation": "الموقع المحدد",
446
+ "locationsSelected": "مواقع محددة",
447
+ "included": "متضمن",
448
+ "tools": {
449
+ "drawPoint": "رسم نقطة",
450
+ "drawRectangle": "رسم مستطيل",
451
+ "drawCircle": "رسم دائرة",
452
+ "drawLine": "رسم مضلع",
453
+ "deleteSelected": "حذف المحدد",
454
+ "toggleTerrain": "تبديل التضاريس",
455
+ "toggleLayers": "تبديل الطبقات",
456
+ "streets": "الشوارع",
457
+ "satellite": "القمر الصناعي",
458
+ "outdoors": "الخارج",
459
+ "light": "فاتح",
460
+ "dark": "داكن"
461
+ }
462
+ }
463
+ },
464
+ "scheduleGrid": {
465
+ "selectDaysOfSchedule": "حدد أيام الجدول",
466
+ "selectAllDays": "تحديد جميع الأيام",
467
+ "duration": "المدة",
468
+ "spotsPerLoop": "المواقع لكل دورة",
469
+ "spotsPerHour": "المواقع في الساعة",
470
+ "scheduleGrids": "شبكات الجدول",
471
+ "selectAll": "تحديد الكل",
472
+ "deselectAll": "إلغاء تحديد الكل",
473
+ "dateHours": "التاريخ/الساعات"
474
+ },
475
+ "scheduleEditor": {
476
+ "editSchedule": "تحرير الجدول: {{name}}",
477
+ "scheduleDate": "تاريخ الجدول",
478
+ "selectScheduleDateRange": "حدد نطاق تاريخ الجدول",
479
+ "withinLineItemDates": "ضمن تواريخ عنصر الخط: {{start}} - {{end}}",
480
+ "selectDaysOfSchedule": "حدد أيام الجدول",
481
+ "selectAllDays": "تحديد جميع الأيام",
482
+ "scheduleGrids": "شبكات الجدول",
483
+ "selectAll": "تحديد الكل",
484
+ "deselectAll": "إلغاء تحديد الكل",
485
+ "dateHours": "التاريخ/الساعات",
486
+ "saveSchedule": "حفظ الجدول",
487
+ "cancel": "إلغاء",
488
+ "showingDays": "عرض {{count}} أيام. قم بالتمرير لعرض جميع التواريخ.",
489
+ "presets": {
490
+ "businessHours": "ساعات العمل",
491
+ "nightlife": "الحياة الليلية",
492
+ "weekdaySchedule": "جدول أيام الأسبوع",
493
+ "weekendFocus": "تركيز نهاية الأسبوع",
494
+ "allDay": "على مدار الساعة",
495
+ "custom": "مخصص"
496
+ }
497
+ },
498
+ "scheduleManager": {
499
+ "scheduleXOfY": "الجدول {{current}} من {{total}}",
500
+ "addSchedule": "إضافة جدول",
501
+ "editSchedule": "تحرير الجدول",
502
+ "deleteSchedule": "حذف الجدول",
503
+ "scheduleDates": "تواريخ الجدول",
504
+ "scheduleDays": "أيام الجدول",
505
+ "hours": "ساعات",
506
+ "default": "افتراضي",
507
+ "weekday": "أيام الأسبوع",
508
+ "weekend": "نهاية الأسبوع",
509
+ "custom": "مخصص"
510
+ },
511
+ "forecast": {
512
+ "title": "توقعات الحملة",
513
+ "estImpressions": "مرات الظهور المتوقعة",
514
+ "estReach": "الوصول المتوقع",
515
+ "avgFrequency": "متوسط التكرار",
516
+ "estAdPlays": "تشغيل الإعلانات المتوقع",
517
+ "sovPercent": "نسبة SOV",
518
+ "avgCpm": "متوسط CPM",
519
+ "avgEcpm": "متوسط eCPM",
520
+ "totalCost": "التكلفة الإجمالية",
521
+ "sotPercent": "نسبة SOT"
522
+ },
523
+ "planner": {
524
+ "owner": "المالك:",
525
+ "impressions": "مرات الظهور",
526
+ "reach": "الوصول",
527
+ "frequency": "التكرار",
528
+ "cpmRate": "معدل CPM",
529
+ "ecpm": "eCPM",
530
+ "adPlays": "تشغيل الإعلانات",
531
+ "screens": "الشاشات",
532
+ "poi": "نقطة الاهتمام",
533
+ "sot": "SOT",
534
+ "dailyPlays": "{{count}} تشغيل/يوم",
535
+ "estimatedCost": "التكلفة المتوقعة",
536
+ "viewDetails": "عرض التفاصيل",
537
+ "expandDetails": "توسيع التفاصيل",
538
+ "collapseDetails": "طي التفاصيل",
539
+ "smartRecommendation": "ذكي {{score}}%",
540
+ "fitnessScoreCard": "بطاقة درجة الملاءمة",
541
+ "scores": {
542
+ "budgetRelevance": "ملاءمة الميزانية",
543
+ "campaignGoalMatch": "تطابق هدف الحملة",
544
+ "geographyRelevance": "الملاءمة الجغرافية",
545
+ "audienceRelevance": "ملاءمة الجمهور",
546
+ "brandCategoryRelevance": "ملاءمة فئة العلامة التجارية",
547
+ "inventoryQuality": "جودة المخزون",
548
+ "timeAlignment": "محاذاة الوقت",
549
+ "measureConfidence": "ثقة القياس",
550
+ "availabilityWindow": "نافذة التوفر"
551
+ }
552
+ }
553
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "breadcrumbs": {
3
+ "create": "إنشاء",
4
+ "creatives": "الإبداعات",
5
+ "deals": "الصفقات",
6
+ "details": "التفاصيل",
7
+ "edit": "تعديل",
8
+ "history": "السجل",
9
+ "home": "الرئيسية",
10
+ "lineItems": "عناصر الخط",
11
+ "summary": "الملخص"
12
+ },
13
+ "dashboard": {
14
+ "subtitle": "نظرة عامة على عمليات الإعلان الخارجي",
15
+ "title": "لوحة التحكم"
16
+ },
17
+ "sidebar": {
18
+ "analytics": "التحليلات",
19
+ "buyer": "المشتري",
20
+ "campaigns": "الحملات",
21
+ "contentHub": "مركز المحتوى",
22
+ "creatives": "الإبداعات",
23
+ "dashboard": "لوحة التحكم",
24
+ "deals": "الصفقات",
25
+ "dsp": "DSP",
26
+ "folders": "المجلدات",
27
+ "integrations": "التكاملات",
28
+ "inventory": "المخزون",
29
+ "manageBuyers": "إدارة المشترين",
30
+ "manageDSP": "إدارة DSP",
31
+ "measure": "القياس",
32
+ "proofOfPlay": "إثبات التشغيل",
33
+ "reports": "التقارير",
34
+ "settings": "الإعدادات",
35
+ "signals": "الإشارات"
36
+ },
37
+ "tabs": {
38
+ "analytics": "التحليلات",
39
+ "budget": "الميزانية",
40
+ "creatives": "الإبداعات",
41
+ "details": "التفاصيل",
42
+ "history": "السجل",
43
+ "lineItems": "عناصر الخط",
44
+ "overview": "نظرة عامة",
45
+ "schedule": "الجدول",
46
+ "targeting": "الاستهداف"
47
+ }
48
+ }
@@ -0,0 +1 @@
1
+ {}