plansFeatures.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. const Settings = require('@overleaf/settings')
  2. const individualPlans = [
  3. {
  4. divider: false,
  5. items: [
  6. {
  7. feature: 'number_of_users',
  8. info: 'number_of_users_info',
  9. value: 'str',
  10. plans: {
  11. free: 'one_user',
  12. collaborator: 'one_user',
  13. professional: 'one_user',
  14. },
  15. },
  16. {
  17. feature: 'max_collab_per_project',
  18. info: 'max_collab_per_project_info',
  19. value: 'str',
  20. plans: {
  21. free: 'you_plus_1',
  22. collaborator: 'you_plus_10',
  23. professional: 'unlimited_bold',
  24. },
  25. },
  26. ],
  27. },
  28. {
  29. divider: true,
  30. dividerLabel: 'you_and_collaborators_get_access_to',
  31. dividerInfo: 'you_and_collaborators_get_access_to_info',
  32. items: [
  33. {
  34. feature: 'compile_timeout_short',
  35. info: 'compile_timeout_short_info_basic',
  36. value: 'str',
  37. plans: {
  38. free: 'basic',
  39. collaborator: '12x_basic',
  40. professional: '12x_basic',
  41. },
  42. },
  43. {
  44. feature: 'compile_servers',
  45. info: 'compile_servers_info',
  46. value: 'str',
  47. plans: {
  48. free: 'fast',
  49. collaborator: 'fastest',
  50. professional: 'fastest',
  51. },
  52. },
  53. {
  54. feature: 'realtime_track_changes',
  55. info: 'realtime_track_changes_info_v2',
  56. value: 'bool',
  57. plans: {
  58. free: false,
  59. collaborator: true,
  60. professional: true,
  61. },
  62. },
  63. {
  64. feature: 'full_doc_history',
  65. info: 'full_doc_history_info_v2',
  66. value: 'bool',
  67. plans: {
  68. free: false,
  69. collaborator: true,
  70. professional: true,
  71. },
  72. },
  73. {
  74. feature: 'reference_search',
  75. info: 'reference_search_info_v2',
  76. value: 'bool',
  77. plans: {
  78. free: false,
  79. collaborator: true,
  80. professional: true,
  81. },
  82. },
  83. {
  84. feature: 'git_integration_lowercase',
  85. info: 'git_integration_lowercase_info',
  86. value: 'bool',
  87. plans: {
  88. free: false,
  89. collaborator: true,
  90. professional: true,
  91. },
  92. },
  93. ],
  94. },
  95. {
  96. divider: true,
  97. dividerLabel: 'you_get_access_to',
  98. dividerInfo: 'you_get_access_to_info',
  99. items: [
  100. {
  101. feature: 'powerful_latex_editor_and_realtime_collaboration',
  102. info: 'powerful_latex_editor_and_realtime_collaboration_info',
  103. value: 'bool',
  104. plans: {
  105. free: true,
  106. collaborator: true,
  107. professional: true,
  108. },
  109. },
  110. {
  111. feature: 'unlimited_projects',
  112. info: 'unlimited_projects_info',
  113. value: 'bool',
  114. plans: {
  115. free: true,
  116. collaborator: true,
  117. professional: true,
  118. },
  119. },
  120. {
  121. feature: 'thousands_templates',
  122. info: 'hundreds_templates_info',
  123. value: 'bool',
  124. plans: {
  125. free: true,
  126. collaborator: true,
  127. professional: true,
  128. },
  129. },
  130. {
  131. feature: 'symbol_palette',
  132. info: 'symbol_palette_info',
  133. value: 'bool',
  134. plans: {
  135. free: false,
  136. collaborator: true,
  137. professional: true,
  138. },
  139. },
  140. {
  141. feature: 'github_only_integration_lowercase',
  142. info: 'github_only_integration_lowercase_info',
  143. value: 'bool',
  144. plans: {
  145. free: false,
  146. collaborator: true,
  147. professional: true,
  148. },
  149. },
  150. {
  151. feature: 'dropbox_integration_lowercase',
  152. info: 'dropbox_integration_info',
  153. value: 'bool',
  154. plans: {
  155. free: false,
  156. collaborator: true,
  157. professional: true,
  158. },
  159. },
  160. {
  161. feature: 'mendeley_integration_lowercase',
  162. info: 'mendeley_integration_lowercase_info',
  163. value: 'bool',
  164. plans: {
  165. free: false,
  166. collaborator: true,
  167. professional: true,
  168. },
  169. },
  170. {
  171. feature: 'zotero_integration_lowercase',
  172. info: 'zotero_integration_lowercase_info',
  173. value: 'bool',
  174. plans: {
  175. free: false,
  176. collaborator: true,
  177. professional: true,
  178. },
  179. },
  180. {
  181. feature: 'priority_support',
  182. info: 'priority_support_info',
  183. value: 'bool',
  184. plans: {
  185. free: false,
  186. collaborator: true,
  187. professional: true,
  188. },
  189. },
  190. ],
  191. },
  192. ]
  193. const groupPlans = [
  194. {
  195. divider: false,
  196. items: [
  197. {
  198. feature: 'number_of_users',
  199. info: 'number_of_users_info',
  200. value: 'str',
  201. plans: {
  202. group_standard: 'two_users',
  203. group_professional: 'two_users',
  204. organization: 'contact_sales',
  205. },
  206. },
  207. {
  208. feature: 'max_collab_per_project',
  209. info: 'max_collab_per_project_info',
  210. value: 'str',
  211. plans: {
  212. group_standard: 'project_owner_plus_10',
  213. group_professional: 'unlimited_bold',
  214. organization: 'unlimited_bold',
  215. },
  216. },
  217. ],
  218. },
  219. {
  220. divider: true,
  221. dividerLabel: 'group_admins_get_access_to',
  222. dividerInfo: 'group_admins_get_access_to_info',
  223. items: [
  224. {
  225. feature: 'user_management',
  226. info: 'user_management_info',
  227. value: 'str',
  228. plans: {
  229. group_standard: 'subscription_admin_panel',
  230. group_professional: 'subscription_admin_panel',
  231. organization: 'automatic_user_registration',
  232. },
  233. },
  234. {
  235. feature: 'usage_metrics',
  236. info: 'usage_metrics_info',
  237. value: 'bool',
  238. plans: {
  239. group_standard: true,
  240. group_professional: true,
  241. organization: true,
  242. },
  243. },
  244. {
  245. feature: 'managed_users_accounts',
  246. info: 'managed_users_accounts_plan_info',
  247. value: 'bool',
  248. plans: {
  249. group_standard: false,
  250. group_professional: true,
  251. organization: false,
  252. },
  253. },
  254. {
  255. feature: 'sso_integration',
  256. info: 'sso_integration_info',
  257. value: 'bool',
  258. plans: {
  259. group_standard: false,
  260. group_professional: Settings.groupSSO?.enabled === true,
  261. organization: true,
  262. },
  263. },
  264. {
  265. feature: 'sitewide_option_available',
  266. info: 'sitewide_option_available_info',
  267. value: 'bool',
  268. plans: {
  269. group_standard: false,
  270. group_professional: false,
  271. organization: true,
  272. },
  273. },
  274. {
  275. feature: 'custom_resource_portal',
  276. info: 'custom_resource_portal_info',
  277. value: 'bool',
  278. plans: {
  279. group_standard: false,
  280. group_professional: false,
  281. organization: true,
  282. },
  283. },
  284. {
  285. feature: 'personalized_onboarding',
  286. info: 'personalized_onboarding_info',
  287. value: 'bool',
  288. plans: {
  289. group_standard: false,
  290. group_professional: false,
  291. organization: true,
  292. },
  293. },
  294. {
  295. feature: 'dedicated_account_manager',
  296. info: 'dedicated_account_manager_info',
  297. value: 'bool',
  298. plans: {
  299. group_standard: false,
  300. group_professional: false,
  301. organization: true,
  302. },
  303. },
  304. ],
  305. },
  306. {
  307. divider: true,
  308. dividerLabel: 'group_members_and_collaborators_get_access_to',
  309. dividerInfo: 'group_members_and_collaborators_get_access_to_info',
  310. items: [
  311. {
  312. feature: 'compile_timeout_short',
  313. info: 'compile_timeout_short_info_basic',
  314. value: 'str',
  315. plans: {
  316. group_standard: 'four_minutes',
  317. group_professional: 'four_minutes',
  318. organization: 'four_minutes',
  319. },
  320. },
  321. {
  322. feature: 'compile_servers',
  323. info: 'compile_servers_info',
  324. value: 'str',
  325. plans: {
  326. group_standard: 'fastest',
  327. group_professional: 'fastest',
  328. organization: 'fastest',
  329. },
  330. },
  331. {
  332. feature: 'realtime_track_changes',
  333. info: 'realtime_track_changes_info_v2',
  334. value: 'bool',
  335. plans: {
  336. group_standard: true,
  337. group_professional: true,
  338. organization: true,
  339. },
  340. },
  341. {
  342. feature: 'full_doc_history',
  343. info: 'full_doc_history_info_v2',
  344. value: 'bool',
  345. plans: {
  346. group_standard: true,
  347. group_professional: true,
  348. organization: true,
  349. },
  350. },
  351. {
  352. feature: 'reference_search',
  353. info: 'reference_search_info_v2',
  354. value: 'bool',
  355. plans: {
  356. group_standard: true,
  357. group_professional: true,
  358. organization: true,
  359. },
  360. },
  361. {
  362. feature: 'git_integration_lowercase',
  363. info: 'git_integration_lowercase_info',
  364. value: 'bool',
  365. plans: {
  366. group_standard: true,
  367. group_professional: true,
  368. organization: true,
  369. },
  370. },
  371. ],
  372. },
  373. {
  374. divider: true,
  375. dividerLabel: 'group_members_get_access_to',
  376. dividerInfo: 'group_members_get_access_to_info',
  377. items: [
  378. {
  379. feature: 'powerful_latex_editor_and_realtime_collaboration',
  380. info: 'powerful_latex_editor_and_realtime_collaboration_info',
  381. value: 'bool',
  382. plans: {
  383. group_standard: true,
  384. group_professional: true,
  385. organization: true,
  386. },
  387. },
  388. {
  389. feature: 'unlimited_projects',
  390. info: 'unlimited_projects_info',
  391. value: 'bool',
  392. plans: {
  393. group_standard: true,
  394. group_professional: true,
  395. organization: true,
  396. },
  397. },
  398. {
  399. feature: 'thousands_templates',
  400. info: 'hundreds_templates_info',
  401. value: 'bool',
  402. plans: {
  403. group_standard: true,
  404. group_professional: true,
  405. organization: true,
  406. },
  407. },
  408. {
  409. feature: 'symbol_palette',
  410. info: 'symbol_palette_info',
  411. value: 'bool',
  412. plans: {
  413. group_standard: true,
  414. group_professional: true,
  415. organization: true,
  416. },
  417. },
  418. {
  419. feature: 'github_only_integration_lowercase',
  420. info: 'github_only_integration_lowercase_info',
  421. value: 'bool',
  422. plans: {
  423. group_standard: true,
  424. group_professional: true,
  425. organization: true,
  426. },
  427. },
  428. {
  429. feature: 'dropbox_integration_lowercase',
  430. info: 'dropbox_integration_info',
  431. value: 'bool',
  432. plans: {
  433. group_standard: true,
  434. group_professional: true,
  435. organization: true,
  436. },
  437. },
  438. {
  439. feature: 'mendeley_integration_lowercase',
  440. info: 'mendeley_integration_lowercase_info',
  441. value: 'bool',
  442. plans: {
  443. group_standard: true,
  444. group_professional: true,
  445. organization: true,
  446. },
  447. },
  448. {
  449. feature: 'zotero_integration_lowercase',
  450. info: 'zotero_integration_lowercase_info',
  451. value: 'bool',
  452. plans: {
  453. group_standard: true,
  454. group_professional: true,
  455. organization: true,
  456. },
  457. },
  458. {
  459. feature: 'priority_support',
  460. info: 'priority_support_info',
  461. value: 'bool',
  462. plans: {
  463. group_standard: true,
  464. group_professional: true,
  465. organization: true,
  466. },
  467. },
  468. ],
  469. },
  470. ]
  471. const studentPlans = [
  472. {
  473. divider: false,
  474. items: [
  475. {
  476. feature: 'number_of_users',
  477. info: 'number_of_users_info',
  478. value: 'str',
  479. plans: {
  480. free: 'one_user',
  481. student: 'one_user',
  482. },
  483. },
  484. {
  485. feature: 'max_collab_per_project',
  486. info: 'max_collab_per_project_info',
  487. value: 'str',
  488. plans: {
  489. free: 'you_plus_1',
  490. student: 'you_plus_6',
  491. },
  492. },
  493. ],
  494. },
  495. {
  496. divider: true,
  497. dividerLabel: 'you_and_collaborators_get_access_to',
  498. dividerInfo: 'you_and_collaborators_get_access_to_info',
  499. items: [
  500. {
  501. feature: 'compile_timeout_short',
  502. info: 'compile_timeout_short_info_basic',
  503. value: 'str',
  504. plans: {
  505. free: 'basic',
  506. student: '12x_basic',
  507. },
  508. },
  509. {
  510. feature: 'compile_servers',
  511. info: 'compile_servers_info',
  512. value: 'str',
  513. plans: {
  514. free: 'fast',
  515. student: 'fastest',
  516. },
  517. },
  518. {
  519. feature: 'realtime_track_changes',
  520. info: 'realtime_track_changes_info_v2',
  521. value: 'bool',
  522. plans: {
  523. free: false,
  524. student: true,
  525. },
  526. },
  527. {
  528. feature: 'full_doc_history',
  529. info: 'full_doc_history_info_v2',
  530. value: 'bool',
  531. plans: {
  532. free: false,
  533. student: true,
  534. },
  535. },
  536. {
  537. feature: 'reference_search',
  538. info: 'reference_search_info_v2',
  539. value: 'bool',
  540. plans: {
  541. free: false,
  542. student: true,
  543. },
  544. },
  545. {
  546. feature: 'git_integration_lowercase',
  547. info: 'git_integration_lowercase_info',
  548. value: 'bool',
  549. plans: {
  550. free: false,
  551. student: true,
  552. },
  553. },
  554. ],
  555. },
  556. {
  557. divider: true,
  558. dividerLabel: 'you_get_access_to',
  559. dividerInfo: 'you_get_access_to_info',
  560. items: [
  561. {
  562. feature: 'powerful_latex_editor_and_realtime_collaboration',
  563. info: 'powerful_latex_editor_and_realtime_collaboration_info',
  564. value: 'bool',
  565. plans: {
  566. free: true,
  567. student: true,
  568. },
  569. },
  570. {
  571. feature: 'unlimited_projects',
  572. info: 'unlimited_projects_info',
  573. value: 'bool',
  574. plans: {
  575. free: true,
  576. student: true,
  577. },
  578. },
  579. {
  580. feature: 'thousands_templates',
  581. info: 'thousands_templates_info',
  582. value: 'bool',
  583. plans: {
  584. free: true,
  585. student: true,
  586. },
  587. },
  588. {
  589. feature: 'symbol_palette',
  590. info: 'symbol_palette_info',
  591. value: 'bool',
  592. plans: {
  593. free: false,
  594. student: true,
  595. },
  596. },
  597. {
  598. feature: 'github_only_integration_lowercase',
  599. info: 'github_only_integration_lowercase_info',
  600. value: 'bool',
  601. plans: {
  602. free: false,
  603. student: true,
  604. },
  605. },
  606. {
  607. feature: 'dropbox_integration_lowercase',
  608. info: 'dropbox_integration_info',
  609. value: 'bool',
  610. plans: {
  611. free: false,
  612. student: true,
  613. },
  614. },
  615. {
  616. feature: 'mendeley_integration_lowercase',
  617. info: 'mendeley_integration_lowercase_info',
  618. value: 'bool',
  619. plans: {
  620. free: false,
  621. student: true,
  622. },
  623. },
  624. {
  625. feature: 'zotero_integration_lowercase',
  626. info: 'zotero_integration_lowercase_info',
  627. value: 'bool',
  628. plans: {
  629. free: false,
  630. student: true,
  631. },
  632. },
  633. {
  634. feature: 'priority_support',
  635. info: 'priority_support_info',
  636. value: 'bool',
  637. plans: {
  638. free: false,
  639. student: true,
  640. },
  641. },
  642. ],
  643. },
  644. ]
  645. module.exports = {
  646. individual: individualPlans,
  647. group: groupPlans,
  648. student: studentPlans,
  649. }