@dub/utils 0.1.45 → 0.1.46

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 (445) hide show
  1. package/dist/array-equal-DBO5cTVq.mjs +2 -0
  2. package/dist/array-equal-DBO5cTVq.mjs.map +1 -0
  3. package/dist/array-equal-I7RH2929.d.mts +9 -0
  4. package/dist/array-equal-I7RH2929.d.mts.map +1 -0
  5. package/dist/billing-utils-Ajfw8K8K.d.mts +7 -0
  6. package/dist/billing-utils-Ajfw8K8K.d.mts.map +1 -0
  7. package/dist/billing-utils-eMTiGLzG.mjs +2 -0
  8. package/dist/billing-utils-eMTiGLzG.mjs.map +1 -0
  9. package/dist/camel-case-BAzkYO0i.d.mts +5 -0
  10. package/dist/camel-case-BAzkYO0i.d.mts.map +1 -0
  11. package/dist/camel-case-C8EXnrVO.mjs +2 -0
  12. package/dist/camel-case-C8EXnrVO.mjs.map +1 -0
  13. package/dist/capitalize-DGA5yhLU.mjs +2 -0
  14. package/dist/capitalize-DGA5yhLU.mjs.map +1 -0
  15. package/dist/capitalize-DISwJgmA.d.mts +5 -0
  16. package/dist/capitalize-DISwJgmA.d.mts.map +1 -0
  17. package/dist/cctlds-DMPxi7pF.d.mts +5 -0
  18. package/dist/cctlds-DMPxi7pF.d.mts.map +1 -0
  19. package/dist/cctlds-DXCBpkmb.mjs +2 -0
  20. package/dist/cctlds-DXCBpkmb.mjs.map +1 -0
  21. package/dist/chunk-2SUO5ED7.mjs +1 -0
  22. package/dist/chunk-3D47OFQ4.mjs +1 -0
  23. package/dist/chunk-3H2VYASP.mjs +1 -0
  24. package/dist/chunk-3WJ3B3A3.mjs +1 -0
  25. package/dist/chunk-42JGIUBR.mjs +1 -0
  26. package/dist/chunk-46IJ6UIH.mjs +1 -0
  27. package/dist/chunk-4ED7MKAS.mjs +1 -0
  28. package/dist/chunk-4IDZNKQV.mjs +1 -0
  29. package/dist/chunk-4KMGJKDU.mjs +1 -0
  30. package/dist/chunk-5GEHVOQC.mjs +1 -0
  31. package/dist/chunk-5UUQSLIG.mjs +1 -0
  32. package/dist/chunk-5VEYJI62.mjs +1 -0
  33. package/dist/chunk-6LIICFKM.mjs +1 -0
  34. package/dist/chunk-6PZZFAWB.mjs +1 -0
  35. package/dist/chunk-6SK2R3JD.mjs +1 -0
  36. package/dist/chunk-773MOEVT.mjs +1 -0
  37. package/dist/chunk-7KMDBW5F.mjs +1 -0
  38. package/dist/chunk-BMESPBRA.mjs +1 -0
  39. package/dist/chunk-BTS3PZVK.mjs +1 -0
  40. package/dist/chunk-Bs44WO9n.d.mts +5 -0
  41. package/dist/chunk-Bs44WO9n.d.mts.map +1 -0
  42. package/dist/chunk-CT63K7Y4.mjs +1 -0
  43. package/dist/chunk-DCOCMEMH.mjs +1 -0
  44. package/dist/chunk-DHBMVDIF.mjs +1 -0
  45. package/dist/chunk-DUQZS4IF.mjs +1 -0
  46. package/dist/chunk-EV2V74YL.mjs +1 -0
  47. package/dist/chunk-FCQXIKHJ.mjs +1 -0
  48. package/dist/chunk-FG7IE54U.mjs +1 -0
  49. package/dist/chunk-FJFDTHKA.mjs +1 -0
  50. package/dist/chunk-FOF4S2IU.mjs +1 -0
  51. package/dist/chunk-FRLPLCKN.mjs +1 -0
  52. package/dist/chunk-FSQIOTWL.mjs +1 -0
  53. package/dist/chunk-G5LHCV5W.mjs +1 -0
  54. package/dist/chunk-GAZHN4WQ.mjs +1 -0
  55. package/dist/chunk-GQJPX3D2.mjs +1 -0
  56. package/dist/chunk-GR4TLX6Q.mjs +1 -0
  57. package/dist/chunk-GURGZ7QY.mjs +1 -0
  58. package/dist/chunk-GV75SOJY.mjs +1 -0
  59. package/dist/chunk-HPPMI4D3.mjs +1 -0
  60. package/dist/chunk-JFQ3HCMK.mjs +1 -0
  61. package/dist/chunk-KCMLTM3P.mjs +1 -0
  62. package/dist/chunk-KDMJUM2I.mjs +1 -0
  63. package/dist/chunk-KMX6APZN.mjs +1 -0
  64. package/dist/chunk-L2U2GMY5.mjs +1 -0
  65. package/dist/chunk-L36NECHU.mjs +1 -0
  66. package/dist/chunk-LBVPSZED.mjs +1 -0
  67. package/dist/chunk-LPWMMOGV.mjs +1 -0
  68. package/dist/chunk-MWDHT2QR.mjs +1 -0
  69. package/dist/chunk-MWXZWALP.mjs +1 -0
  70. package/dist/chunk-N4OJWEWU.mjs +1 -0
  71. package/dist/chunk-N5E6WGFW.mjs +1 -0
  72. package/dist/chunk-NALLJ4DN.mjs +1 -0
  73. package/dist/chunk-NTIWVBKK.mjs +1 -0
  74. package/dist/chunk-O77TTQJR.mjs +1 -0
  75. package/dist/chunk-OUFPCU5E.mjs +1 -0
  76. package/dist/chunk-OZ5XXSGA.mjs +1 -0
  77. package/dist/chunk-PZKXL75U.mjs +1 -0
  78. package/dist/chunk-QMOXTC65.mjs +1 -0
  79. package/dist/chunk-QWZ6SNRA.mjs +1 -0
  80. package/dist/chunk-RFSS3EW3.mjs +1 -0
  81. package/dist/chunk-RIMPQ2IS.mjs +1 -0
  82. package/dist/chunk-RZVLVGJX.mjs +1 -0
  83. package/dist/chunk-SYRFGND4.mjs +1 -0
  84. package/dist/chunk-TOE4FWLM.mjs +1 -0
  85. package/dist/chunk-TZVYM6XK.mjs +1 -0
  86. package/dist/chunk-UHKMTSRR.mjs +1 -0
  87. package/dist/chunk-UNMXX46D.mjs +1 -0
  88. package/dist/chunk-UP5ANTW6.mjs +1 -0
  89. package/dist/chunk-V3U3HUVW.mjs +1 -0
  90. package/dist/chunk-V6ARAIKV.mjs +1 -0
  91. package/dist/chunk-VKLOD6M3.mjs +1 -0
  92. package/dist/chunk-VO6C24FG.mjs +1 -0
  93. package/dist/chunk-VQ66X74V.mjs +1 -0
  94. package/dist/chunk-VZIZCZGN.mjs +1 -0
  95. package/dist/chunk-WCSMOSHJ.mjs +1 -0
  96. package/dist/chunk-WGOCXGNU.mjs +1 -0
  97. package/dist/chunk-WHYPDWLF.mjs +1 -0
  98. package/dist/chunk-XT2JOG2B.mjs +1 -0
  99. package/dist/chunk-XXID6HHB.mjs +1 -0
  100. package/dist/chunk-YFIGPAHJ.mjs +1 -0
  101. package/dist/chunk-ZRZIS4IN.mjs +1 -0
  102. package/dist/chunk-ZXK34EEV.mjs +1 -0
  103. package/dist/chunk-ZYT3NCX6.mjs +1 -0
  104. package/dist/chunk-pVrr2QRR.mjs +2 -0
  105. package/dist/chunk-pVrr2QRR.mjs.map +1 -0
  106. package/dist/cn-BTSOW7kH.mjs +2 -0
  107. package/dist/cn-BTSOW7kH.mjs.map +1 -0
  108. package/dist/cn-BiYf047b.d.mts +7 -0
  109. package/dist/cn-BiYf047b.d.mts.map +1 -0
  110. package/dist/combine-words-1pGDmuMF.d.mts +5 -0
  111. package/dist/combine-words-1pGDmuMF.d.mts.map +1 -0
  112. package/dist/combine-words-Br_lSncT.mjs +2 -0
  113. package/dist/combine-words-Br_lSncT.mjs.map +1 -0
  114. package/dist/connect-supported-countries-BD-eJcNa.d.mts +5 -0
  115. package/dist/connect-supported-countries-BD-eJcNa.d.mts.map +1 -0
  116. package/dist/connect-supported-countries-BxwwGf3y.mjs +2 -0
  117. package/dist/connect-supported-countries-BxwwGf3y.mjs.map +1 -0
  118. package/dist/constants/cctlds.d.mts +2 -0
  119. package/dist/constants/connect-supported-countries.d.mts +2 -0
  120. package/dist/constants/continents.d.mts +2 -0
  121. package/dist/constants/countries.d.mts +2 -0
  122. package/dist/constants/country-currency-codes.d.mts +2 -0
  123. package/dist/constants/country-phone-codes.d.mts +2 -0
  124. package/dist/constants/domains.d.mts +2 -0
  125. package/dist/constants/dub-domains.d.mts +2 -0
  126. package/dist/constants/dub-domains.mjs +1 -1
  127. package/dist/constants/index.d.mts +20 -0
  128. package/dist/constants/index.d.ts +2 -2
  129. package/dist/constants/index.mjs +1 -1
  130. package/dist/constants/integrations.d.mts +2 -0
  131. package/dist/constants/layout.d.mts +2 -0
  132. package/dist/constants/localhost.d.mts +2 -0
  133. package/dist/constants/main.d.mts +2 -0
  134. package/dist/constants/middleware.d.mts +2 -0
  135. package/dist/constants/misc.d.mts +2 -0
  136. package/dist/constants/misc.d.ts +2 -2
  137. package/dist/constants/misc.mjs +1 -1
  138. package/dist/constants/paypal-supported-countries.d.mts +2 -0
  139. package/dist/constants/regions.d.mts +2 -0
  140. package/dist/constants/reserved-slugs.d.mts +2 -0
  141. package/dist/constants/reserved-slugs.mjs +1 -1
  142. package/dist/constants/saml.d.mts +2 -0
  143. package/dist/constants-DfGFdd9U.mjs +2 -0
  144. package/dist/constants-DfGFdd9U.mjs.map +1 -0
  145. package/dist/construct-metadata-BN8VET-6.mjs +2 -0
  146. package/dist/construct-metadata-BN8VET-6.mjs.map +1 -0
  147. package/dist/construct-metadata-CrMm6q6l.d.mts +29 -0
  148. package/dist/construct-metadata-CrMm6q6l.d.mts.map +1 -0
  149. package/dist/continents-D6S-SHqh.d.mts +11 -0
  150. package/dist/continents-D6S-SHqh.d.mts.map +1 -0
  151. package/dist/continents-Dfk7IHcI.mjs +2 -0
  152. package/dist/continents-Dfk7IHcI.mjs.map +1 -0
  153. package/dist/countries-CaocrmXr.mjs +2 -0
  154. package/dist/countries-CaocrmXr.mjs.map +1 -0
  155. package/dist/countries-EmCwapWh.d.mts +9 -0
  156. package/dist/countries-EmCwapWh.d.mts.map +1 -0
  157. package/dist/country-currency-codes-B61rAyTK.mjs +2 -0
  158. package/dist/country-currency-codes-B61rAyTK.mjs.map +1 -0
  159. package/dist/country-currency-codes-BY8Eb6j5.d.mts +7 -0
  160. package/dist/country-currency-codes-BY8Eb6j5.d.mts.map +1 -0
  161. package/dist/country-phone-codes-Cw6Skrdf.mjs +2 -0
  162. package/dist/country-phone-codes-Cw6Skrdf.mjs.map +1 -0
  163. package/dist/country-phone-codes-DfNRdacg.d.mts +7 -0
  164. package/dist/country-phone-codes-DfNRdacg.d.mts.map +1 -0
  165. package/dist/currency-formatter-DvRObMQ-.d.mts +8 -0
  166. package/dist/currency-formatter-DvRObMQ-.d.mts.map +1 -0
  167. package/dist/currency-formatter-K4_S2-Ja.mjs +2 -0
  168. package/dist/currency-formatter-K4_S2-Ja.mjs.map +1 -0
  169. package/dist/currency-zero-decimal-2c14b925.d.ts +3 -0
  170. package/dist/deep-equal-DKHEsBj3.mjs +2 -0
  171. package/dist/deep-equal-DKHEsBj3.mjs.map +1 -0
  172. package/dist/deep-equal-DL7vb8Yq.d.mts +6 -0
  173. package/dist/deep-equal-DL7vb8Yq.d.mts.map +1 -0
  174. package/dist/domains-CUmgZeco.mjs +2 -0
  175. package/dist/domains-CUmgZeco.mjs.map +1 -0
  176. package/dist/domains-CaD5cUsD.mjs +2 -0
  177. package/dist/domains-CaD5cUsD.mjs.map +1 -0
  178. package/dist/domains-ClJ7JZ8G.d.mts +11 -0
  179. package/dist/domains-ClJ7JZ8G.d.mts.map +1 -0
  180. package/dist/domains-D0u9WU51.d.mts +6 -0
  181. package/dist/domains-D0u9WU51.d.mts.map +1 -0
  182. package/dist/dub-domains-DT4DbvlB.d.mts +22 -0
  183. package/dist/dub-domains-DT4DbvlB.d.mts.map +1 -0
  184. package/dist/dub-domains-cnkoM2TR.mjs +2 -0
  185. package/dist/dub-domains-cnkoM2TR.mjs.map +1 -0
  186. package/dist/fetch-with-retry-C6zApdLn.d.mts +9 -0
  187. package/dist/fetch-with-retry-C6zApdLn.d.mts.map +1 -0
  188. package/dist/fetch-with-retry-CTDDLz3Q.mjs +2 -0
  189. package/dist/fetch-with-retry-CTDDLz3Q.mjs.map +1 -0
  190. package/dist/fetch-with-timeout-Bh66T6IH.mjs +2 -0
  191. package/dist/fetch-with-timeout-Bh66T6IH.mjs.map +1 -0
  192. package/dist/fetch-with-timeout-_2qhWdGh.d.mts +5 -0
  193. package/dist/fetch-with-timeout-_2qhWdGh.d.mts.map +1 -0
  194. package/dist/fetcher-Cg7X4B6k.d.mts +7 -0
  195. package/dist/fetcher-Cg7X4B6k.d.mts.map +1 -0
  196. package/dist/fetcher-L2jCq775.mjs +2 -0
  197. package/dist/fetcher-L2jCq775.mjs.map +1 -0
  198. package/dist/format-date-B_PzoM21.d.mts +5 -0
  199. package/dist/format-date-B_PzoM21.d.mts.map +1 -0
  200. package/dist/format-date-BrsjWtQR.mjs +2 -0
  201. package/dist/format-date-BrsjWtQR.mjs.map +1 -0
  202. package/dist/format-date-smart-CRXPO-3d.d.mts +5 -0
  203. package/dist/format-date-smart-CRXPO-3d.d.mts.map +1 -0
  204. package/dist/format-date-smart-DpagPhcu.mjs +2 -0
  205. package/dist/format-date-smart-DpagPhcu.mjs.map +1 -0
  206. package/dist/format-datetime-CVqrji_7.d.mts +5 -0
  207. package/dist/format-datetime-CVqrji_7.d.mts.map +1 -0
  208. package/dist/format-datetime-DZ470JiK.mjs +2 -0
  209. package/dist/format-datetime-DZ470JiK.mjs.map +1 -0
  210. package/dist/format-datetime-smart-CVyK5qx-.mjs +2 -0
  211. package/dist/format-datetime-smart-CVyK5qx-.mjs.map +1 -0
  212. package/dist/format-datetime-smart-d22cix-d.d.mts +5 -0
  213. package/dist/format-datetime-smart-d22cix-d.d.mts.map +1 -0
  214. package/dist/format-file-size-BspZw7d5.d.mts +11 -0
  215. package/dist/format-file-size-BspZw7d5.d.mts.map +1 -0
  216. package/dist/format-file-size-CCHIbZbx.mjs +2 -0
  217. package/dist/format-file-size-CCHIbZbx.mjs.map +1 -0
  218. package/dist/format-period-DJDA7miF.d.mts +8 -0
  219. package/dist/format-period-DJDA7miF.d.mts.map +1 -0
  220. package/dist/functions/array-equal.d.mts +2 -0
  221. package/dist/functions/camel-case.d.mts +2 -0
  222. package/dist/functions/capitalize.d.mts +2 -0
  223. package/dist/functions/chunk.d.mts +2 -0
  224. package/dist/functions/cn.d.mts +2 -0
  225. package/dist/functions/combine-words.d.mts +2 -0
  226. package/dist/functions/construct-metadata.d.mts +2 -0
  227. package/dist/functions/currency-formatter.d.mts +2 -0
  228. package/dist/functions/currency-formatter.d.ts +1 -1
  229. package/dist/functions/currency-formatter.mjs +1 -1
  230. package/dist/functions/currency-zero-decimal.d.ts +3 -0
  231. package/dist/functions/currency-zero-decimal.mjs +1 -0
  232. package/dist/functions/datetime/billing-utils.d.mts +2 -0
  233. package/dist/functions/datetime/format-date-smart.d.mts +2 -0
  234. package/dist/functions/datetime/format-date.d.mts +2 -0
  235. package/dist/functions/datetime/format-datetime-smart.d.mts +2 -0
  236. package/dist/functions/datetime/format-datetime.d.mts +2 -0
  237. package/dist/functions/datetime/format-period.d.mts +2 -0
  238. package/dist/functions/datetime/format-period.mjs +1 -1
  239. package/dist/functions/datetime/get-datetime-local.d.mts +2 -0
  240. package/dist/functions/datetime/get-days-difference.d.mts +2 -0
  241. package/dist/functions/datetime/get-first-and-last-day.d.mts +2 -0
  242. package/dist/functions/datetime/index.d.mts +12 -0
  243. package/dist/functions/datetime/index.mjs +1 -1
  244. package/dist/functions/datetime/parse-datetime.d.mts +2 -0
  245. package/dist/functions/deep-equal.d.mts +2 -0
  246. package/dist/functions/domains.d.mts +2 -0
  247. package/dist/functions/domains.mjs +1 -1
  248. package/dist/functions/fetch-with-retry.d.mts +2 -0
  249. package/dist/functions/fetch-with-timeout.d.mts +2 -0
  250. package/dist/functions/fetcher.d.mts +2 -0
  251. package/dist/functions/format-file-size.d.mts +2 -0
  252. package/dist/functions/hash-string.d.mts +2 -0
  253. package/dist/functions/index.d.mts +49 -0
  254. package/dist/functions/index.d.ts +4 -2
  255. package/dist/functions/index.mjs +1 -1
  256. package/dist/functions/is-click-on-interactive-child.d.mts +2 -0
  257. package/dist/functions/is-iframeable.d.mts +2 -0
  258. package/dist/functions/keys.d.mts +2 -0
  259. package/dist/functions/link-constructor.d.mts +2 -0
  260. package/dist/functions/link-constructor.mjs +1 -1
  261. package/dist/functions/log.d.mts +2 -0
  262. package/dist/functions/nanoid.d.mts +2 -0
  263. package/dist/functions/nformatter.d.mts +2 -0
  264. package/dist/functions/normalize-string.d.mts +2 -0
  265. package/dist/functions/pick.d.ts +3 -0
  266. package/dist/functions/pick.mjs +1 -0
  267. package/dist/functions/pluralize.d.mts +2 -0
  268. package/dist/functions/promises.d.mts +2 -0
  269. package/dist/functions/promises.d.ts +10 -1
  270. package/dist/functions/promises.mjs +1 -1
  271. package/dist/functions/punycode.d.mts +2 -0
  272. package/dist/functions/random-value.d.mts +2 -0
  273. package/dist/functions/regex-escape.d.mts +2 -0
  274. package/dist/functions/resize-image.d.mts +2 -0
  275. package/dist/functions/smart-truncate.d.mts +2 -0
  276. package/dist/functions/stable-sort.d.mts +2 -0
  277. package/dist/functions/text-fetcher.d.mts +2 -0
  278. package/dist/functions/time-ago.d.mts +2 -0
  279. package/dist/functions/trim.d.mts +2 -0
  280. package/dist/functions/truncate.d.mts +2 -0
  281. package/dist/functions/urls.d.mts +2 -0
  282. package/dist/functions/urls.d.ts +2 -1
  283. package/dist/functions/urls.mjs +1 -1
  284. package/dist/get-datetime-local-C7KbfIMK.mjs +2 -0
  285. package/dist/get-datetime-local-C7KbfIMK.mjs.map +1 -0
  286. package/dist/get-datetime-local-bcjAmD-U.d.mts +5 -0
  287. package/dist/get-datetime-local-bcjAmD-U.d.mts.map +1 -0
  288. package/dist/get-days-difference--WnBYvi_.d.mts +5 -0
  289. package/dist/get-days-difference--WnBYvi_.d.mts.map +1 -0
  290. package/dist/get-days-difference-CVtk5yUe.mjs +2 -0
  291. package/dist/get-days-difference-CVtk5yUe.mjs.map +1 -0
  292. package/dist/get-first-and-last-day-CexC1yYr.d.mts +8 -0
  293. package/dist/get-first-and-last-day-CexC1yYr.d.mts.map +1 -0
  294. package/dist/get-first-and-last-day-DtD3kURS.mjs +2 -0
  295. package/dist/get-first-and-last-day-DtD3kURS.mjs.map +1 -0
  296. package/dist/hash-string-BHFn4lnc.mjs +2 -0
  297. package/dist/hash-string-BHFn4lnc.mjs.map +1 -0
  298. package/dist/hash-string-CtOpk77-.d.mts +5 -0
  299. package/dist/hash-string-CtOpk77-.d.mts.map +1 -0
  300. package/dist/index-B6T7ov8p.d.mts +1 -0
  301. package/dist/index-CDFDM37z.d.mts +1016 -0
  302. package/dist/index-CDFDM37z.d.mts.map +1 -0
  303. package/dist/index-DghcoV7h.d.mts +1 -0
  304. package/dist/index.d.mts +68 -0
  305. package/dist/index.d.ts +6 -4
  306. package/dist/index.mjs +1 -1
  307. package/dist/integrations-Bh8t-O3g.mjs +2 -0
  308. package/dist/integrations-Bh8t-O3g.mjs.map +1 -0
  309. package/dist/integrations-DDwL2i19.d.mts +10 -0
  310. package/dist/integrations-DDwL2i19.d.mts.map +1 -0
  311. package/dist/is-click-on-interactive-child-BiqIe6cM.mjs +2 -0
  312. package/dist/is-click-on-interactive-child-BiqIe6cM.mjs.map +1 -0
  313. package/dist/is-click-on-interactive-child-C9b9PwIE.d.mts +7 -0
  314. package/dist/is-click-on-interactive-child-C9b9PwIE.d.mts.map +1 -0
  315. package/dist/is-iframeable-Ck9l_B5X.mjs +2 -0
  316. package/dist/is-iframeable-Ck9l_B5X.mjs.map +1 -0
  317. package/dist/is-iframeable-DyfqG8lY.d.mts +11 -0
  318. package/dist/is-iframeable-DyfqG8lY.d.mts.map +1 -0
  319. package/dist/keys-Dm2_B4ZQ.mjs +2 -0
  320. package/dist/keys-Dm2_B4ZQ.mjs.map +1 -0
  321. package/dist/keys-lBgnWmIW.d.mts +7 -0
  322. package/dist/keys-lBgnWmIW.d.mts.map +1 -0
  323. package/dist/layout-BHzXziT5.d.mts +8 -0
  324. package/dist/layout-BHzXziT5.d.mts.map +1 -0
  325. package/dist/layout-Cbhjxh5i.mjs +2 -0
  326. package/dist/layout-Cbhjxh5i.mjs.map +1 -0
  327. package/dist/link-constructor-1d70H0Ke.d.mts +22 -0
  328. package/dist/link-constructor-1d70H0Ke.d.mts.map +1 -0
  329. package/dist/localhost-CfOpCdYg.d.mts +13 -0
  330. package/dist/localhost-CfOpCdYg.d.mts.map +1 -0
  331. package/dist/localhost-D7DxXpIC.mjs +2 -0
  332. package/dist/localhost-D7DxXpIC.mjs.map +1 -0
  333. package/dist/log-B19eGrt5.mjs +2 -0
  334. package/dist/log-B19eGrt5.mjs.map +1 -0
  335. package/dist/log-Cd9wRvUs.d.mts +13 -0
  336. package/dist/log-Cd9wRvUs.d.mts.map +1 -0
  337. package/dist/main-C1J_pNfu.mjs +2 -0
  338. package/dist/main-C1J_pNfu.mjs.map +1 -0
  339. package/dist/main-s8z7mt9Z.d.mts +26 -0
  340. package/dist/main-s8z7mt9Z.d.mts.map +1 -0
  341. package/dist/middleware-Bf9EP7Fw.mjs +2 -0
  342. package/dist/middleware-Bf9EP7Fw.mjs.map +1 -0
  343. package/dist/middleware-C8AhsVC2.d.mts +22 -0
  344. package/dist/middleware-C8AhsVC2.d.mts.map +1 -0
  345. package/dist/misc-CUlwIGkJ.mjs +2 -0
  346. package/dist/misc-CUlwIGkJ.mjs.map +1 -0
  347. package/dist/misc-CYVV9PKw.d.mts +11 -0
  348. package/dist/misc-CYVV9PKw.d.mts.map +1 -0
  349. package/dist/nanoid-CG3yhYEE.mjs +2 -0
  350. package/dist/nanoid-CG3yhYEE.mjs.map +1 -0
  351. package/dist/nanoid-Ccx9Tib2.d.mts +5 -0
  352. package/dist/nanoid-Ccx9Tib2.d.mts.map +1 -0
  353. package/dist/nformatter-BD3whgb_.mjs +2 -0
  354. package/dist/nformatter-BD3whgb_.mjs.map +1 -0
  355. package/dist/nformatter-CAja4QhH.d.mts +8 -0
  356. package/dist/nformatter-CAja4QhH.d.mts.map +1 -0
  357. package/dist/normalize-string-D-09W-eX.mjs +2 -0
  358. package/dist/normalize-string-D-09W-eX.mjs.map +1 -0
  359. package/dist/normalize-string-vd95aQMw.d.mts +5 -0
  360. package/dist/normalize-string-vd95aQMw.d.mts.map +1 -0
  361. package/dist/parse-datetime-Byk97s6l.d.mts +5 -0
  362. package/dist/parse-datetime-Byk97s6l.d.mts.map +1 -0
  363. package/dist/parse-datetime-mDZnUjZS.mjs +2 -0
  364. package/dist/parse-datetime-mDZnUjZS.mjs.map +1 -0
  365. package/dist/paypal-supported-countries-Bq8_WN4m.mjs +2 -0
  366. package/dist/paypal-supported-countries-Bq8_WN4m.mjs.map +1 -0
  367. package/dist/paypal-supported-countries-lqKLNq7N.d.mts +6 -0
  368. package/dist/paypal-supported-countries-lqKLNq7N.d.mts.map +1 -0
  369. package/dist/pick-b2604b42.d.ts +3 -0
  370. package/dist/plan-compare-27ce8e4e.d.ts +126 -0
  371. package/dist/plan-compare-33b84c8e.d.ts +109 -0
  372. package/dist/plan-compare-367d67ea.d.ts +110 -0
  373. package/dist/plan-compare-97700a47.d.ts +116 -0
  374. package/dist/plan-compare-97bc79b0.d.ts +126 -0
  375. package/dist/plan-compare-b173e633.d.ts +110 -0
  376. package/dist/plan-compare-b2d1b5ec.d.ts +155 -0
  377. package/dist/plan-compare-b3b80a0a.d.ts +109 -0
  378. package/dist/plan-compare-d6c2a413.d.ts +126 -0
  379. package/dist/pluralize-QqvEFeLY.d.mts +7 -0
  380. package/dist/pluralize-QqvEFeLY.d.mts.map +1 -0
  381. package/dist/pluralize-ZblMy4zT.mjs +2 -0
  382. package/dist/pluralize-ZblMy4zT.mjs.map +1 -0
  383. package/dist/promises-CT9s1DJ9.d.mts +15 -0
  384. package/dist/promises-CT9s1DJ9.d.mts.map +1 -0
  385. package/dist/promises-DDmW9pcL.mjs +2 -0
  386. package/dist/promises-DDmW9pcL.mjs.map +1 -0
  387. package/dist/punycode-C53XddJy.mjs +2 -0
  388. package/dist/punycode-C53XddJy.mjs.map +1 -0
  389. package/dist/punycode-Cpm0x-BY.d.mts +6 -0
  390. package/dist/punycode-Cpm0x-BY.d.mts.map +1 -0
  391. package/dist/random-value-Cq4bOTHN.mjs +2 -0
  392. package/dist/random-value-Cq4bOTHN.mjs.map +1 -0
  393. package/dist/random-value-CrrRC--E.d.mts +5 -0
  394. package/dist/random-value-CrrRC--E.d.mts.map +1 -0
  395. package/dist/regex-escape-CK4NyBtI.d.mts +9 -0
  396. package/dist/regex-escape-CK4NyBtI.d.mts.map +1 -0
  397. package/dist/regex-escape-D-s-2YvM.mjs +2 -0
  398. package/dist/regex-escape-D-s-2YvM.mjs.map +1 -0
  399. package/dist/regions-BCfpIPZ8.mjs +2 -0
  400. package/dist/regions-BCfpIPZ8.mjs.map +1 -0
  401. package/dist/regions-XImL1JIW.d.mts +8 -0
  402. package/dist/regions-XImL1JIW.d.mts.map +1 -0
  403. package/dist/reserved-slugs-DcvFdp0j.mjs +2 -0
  404. package/dist/reserved-slugs-DcvFdp0j.mjs.map +1 -0
  405. package/dist/reserved-slugs-Pt8Mzvr6.d.mts +10 -0
  406. package/dist/reserved-slugs-Pt8Mzvr6.d.mts.map +1 -0
  407. package/dist/resize-image-C2igYbk2.mjs +2 -0
  408. package/dist/resize-image-C2igYbk2.mjs.map +1 -0
  409. package/dist/resize-image-D43n6p_q.d.mts +9 -0
  410. package/dist/resize-image-D43n6p_q.d.mts.map +1 -0
  411. package/dist/saml-CfA07QWD.mjs +2 -0
  412. package/dist/saml-CfA07QWD.mjs.map +1 -0
  413. package/dist/saml-XZ0Yugat.d.mts +16 -0
  414. package/dist/saml-XZ0Yugat.d.mts.map +1 -0
  415. package/dist/smart-truncate-ZkjOWu6I.d.mts +5 -0
  416. package/dist/smart-truncate-ZkjOWu6I.d.mts.map +1 -0
  417. package/dist/smart-truncate-rnnVmdlf.mjs +2 -0
  418. package/dist/smart-truncate-rnnVmdlf.mjs.map +1 -0
  419. package/dist/src-XRl8K33L.mjs +2 -0
  420. package/dist/src-XRl8K33L.mjs.map +1 -0
  421. package/dist/stable-sort-BuC7RxbU.mjs +2 -0
  422. package/dist/stable-sort-BuC7RxbU.mjs.map +1 -0
  423. package/dist/stable-sort-DhyKnAhf.d.mts +9 -0
  424. package/dist/stable-sort-DhyKnAhf.d.mts.map +1 -0
  425. package/dist/text-fetcher--5fqEt6h.d.mts +7 -0
  426. package/dist/text-fetcher--5fqEt6h.d.mts.map +1 -0
  427. package/dist/text-fetcher-e-DKQHg9.mjs +2 -0
  428. package/dist/text-fetcher-e-DKQHg9.mjs.map +1 -0
  429. package/dist/time-ago-3x39IVui.mjs +2 -0
  430. package/dist/time-ago-3x39IVui.mjs.map +1 -0
  431. package/dist/time-ago-BCbFEp2b.d.mts +9 -0
  432. package/dist/time-ago-BCbFEp2b.d.mts.map +1 -0
  433. package/dist/trim-CJrtQEgb.d.mts +5 -0
  434. package/dist/trim-CJrtQEgb.d.mts.map +1 -0
  435. package/dist/trim-Z_pXMru1.mjs +2 -0
  436. package/dist/trim-Z_pXMru1.mjs.map +1 -0
  437. package/dist/truncate--NEd5u1m.mjs +2 -0
  438. package/dist/truncate--NEd5u1m.mjs.map +1 -0
  439. package/dist/truncate-BXoSqKKx.d.mts +5 -0
  440. package/dist/truncate-BXoSqKKx.d.mts.map +1 -0
  441. package/dist/urls-CGNgImqv.d.mts +25 -0
  442. package/dist/urls-CGNgImqv.d.mts.map +1 -0
  443. package/dist/urls-ivBifiO_.mjs +2 -0
  444. package/dist/urls-ivBifiO_.mjs.map +1 -0
  445. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ const e=(e,t,{sameOrder:n=!1}={})=>e.length===t.length?n?e.every((e,n)=>e===t[n]):e.every(e=>t.includes(e)):!1;export{e as t};
2
+ //# sourceMappingURL=array-equal-DBO5cTVq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-equal-DBO5cTVq.mjs","names":[],"sources":["../src/functions/array-equal.ts"],"sourcesContent":["export const arrayEqual = (\n a: string[],\n b: string[],\n {\n sameOrder = false,\n }: {\n sameOrder?: boolean;\n } = {},\n) => {\n if (a.length !== b.length) {\n return false;\n }\n\n if (sameOrder) {\n return a.every((item, index) => item === b[index]);\n }\n\n return a.every((item) => b.includes(item));\n};\n"],"mappings":"AAAA,MAAa,GACX,EACA,EACA,CACE,YAAY,IAGV,EAAE,GAEF,EAAE,SAAW,EAAE,OAIf,EACK,EAAE,OAAO,EAAM,IAAU,IAAS,EAAE,GAAO,CAG7C,EAAE,MAAO,GAAS,EAAE,SAAS,EAAK,CAAC,CAPjC"}
@@ -0,0 +1,9 @@
1
+ //#region src/functions/array-equal.d.ts
2
+ declare const arrayEqual: (a: string[], b: string[], {
3
+ sameOrder
4
+ }?: {
5
+ sameOrder?: boolean | undefined;
6
+ }) => boolean;
7
+ //#endregion
8
+ export { arrayEqual as t };
9
+ //# sourceMappingURL=array-equal-I7RH2929.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-equal-I7RH2929.d.mts","names":["arrayEqual","sameOrder"],"sources":["../src/functions/array-equal.d.ts"],"sourcesContent":["export declare const arrayEqual: (a: string[], b: string[], { sameOrder, }?: {\n sameOrder?: boolean | undefined;\n}) => boolean;\n"],"mappings":";cAAqBA;;;EAAAA,SAAAA,CAAAA,EAAAA,OAER,GAAA,SAFiDC"}
@@ -0,0 +1,7 @@
1
+ //#region src/functions/datetime/billing-utils.d.ts
2
+ declare const getLastDayOfMonth: () => number;
3
+ declare const getAdjustedBillingCycleStart: (billingCycleStart: number) => number;
4
+ declare const getBillingStartDate: (billingCycleStart: number) => Date;
5
+ //#endregion
6
+ export { getBillingStartDate as n, getLastDayOfMonth as r, getAdjustedBillingCycleStart as t };
7
+ //# sourceMappingURL=billing-utils-Ajfw8K8K.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-utils-Ajfw8K8K.d.mts","names":["getLastDayOfMonth","getAdjustedBillingCycleStart","getBillingStartDate","Date"],"sources":["../src/functions/datetime/billing-utils.d.ts"],"sourcesContent":["export declare const getLastDayOfMonth: () => number;\nexport declare const getAdjustedBillingCycleStart: (billingCycleStart: number) => number;\nexport declare const getBillingStartDate: (billingCycleStart: number) => Date;\n"],"mappings":";cAAqBA;AAAAA,cACAC,4BAD+B,EAAA,CAAA,iBAAA,EAAA,MAAA,EAAA,GAAA,MAAA;AAC/BA,cACAC,mBADmE,EAAA,CAAA,iBAAA,EAAA,MAAA,EAAA,GACfC,IADe"}
@@ -0,0 +1,2 @@
1
+ const e=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},t=t=>{let n=e();return t>n?n:t},n=e=>{let n=new Date,r=n.getDate(),i=n.getMonth(),a=n.getFullYear(),o=t(e);if(r<=o){let e=i===0?11:i-1,t=i===0?a-1:a;return new Date(t,e,o)}else return new Date(a,i,o)};export{n,e as r,t};
2
+ //# sourceMappingURL=billing-utils-eMTiGLzG.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-utils-eMTiGLzG.mjs","names":[],"sources":["../src/functions/datetime/billing-utils.ts"],"sourcesContent":["// Function to get the last day of the current month\nexport const getLastDayOfMonth = () => {\n const today = new Date();\n const lastDay = new Date(today.getFullYear(), today.getMonth() + 1, 0); // This will give the last day of the current month\n return lastDay.getDate();\n};\n\n// Adjust the billingCycleStart based on the number of days in the current month\nexport const getAdjustedBillingCycleStart = (billingCycleStart: number) => {\n const lastDay = getLastDayOfMonth();\n if (billingCycleStart > lastDay) {\n return lastDay;\n } else {\n return billingCycleStart;\n }\n};\n\nexport const getBillingStartDate = (billingCycleStart: number) => {\n const today = new Date();\n const currentDay = today.getDate();\n const currentMonth = today.getMonth();\n const currentYear = today.getFullYear();\n const adjustedBillingCycleStart =\n getAdjustedBillingCycleStart(billingCycleStart);\n if (currentDay <= adjustedBillingCycleStart) {\n // if the current day is less than the billing cycle start, we need to go back a month\n const lastMonth = currentMonth === 0 ? 11 : currentMonth - 1; // if the current month is January, we need to go back to December\n const lastYear = currentMonth === 0 ? currentYear - 1 : currentYear; // if the current month is January, we need to go back a year\n return new Date(lastYear, lastMonth, adjustedBillingCycleStart);\n } else {\n return new Date(currentYear, currentMonth, adjustedBillingCycleStart);\n }\n};\n"],"mappings":"AACA,MAAa,MAA0B,CACrC,IAAM,EAAQ,IAAI,KAElB,OADgB,IAAI,KAAK,EAAM,aAAa,CAAE,EAAM,UAAU,CAAG,EAAG,EAAE,CACvD,SAAS,EAIb,EAAgC,GAA8B,CACzE,IAAM,EAAU,GAAmB,CAIjC,OAHE,EAAoB,EACf,EAEA,GAIE,EAAuB,GAA8B,CAChE,IAAM,EAAQ,IAAI,KACZ,EAAa,EAAM,SAAS,CAC5B,EAAe,EAAM,UAAU,CAC/B,EAAc,EAAM,aAAa,CACjC,EACJ,EAA6B,EAAkB,CACjD,GAAI,GAAc,EAA2B,CAE3C,IAAM,EAAY,IAAiB,EAAI,GAAK,EAAe,EACrD,EAAW,IAAiB,EAAI,EAAc,EAAI,EACxD,OAAO,IAAI,KAAK,EAAU,EAAW,EAA0B,MAE/D,OAAO,IAAI,KAAK,EAAa,EAAc,EAA0B"}
@@ -0,0 +1,5 @@
1
+ //#region src/functions/camel-case.d.ts
2
+ declare const toCamelCase: (str: string) => string;
3
+ //#endregion
4
+ export { toCamelCase as t };
5
+ //# sourceMappingURL=camel-case-BAzkYO0i.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camel-case-BAzkYO0i.d.mts","names":["toCamelCase"],"sources":["../src/functions/camel-case.d.ts"],"sourcesContent":["export declare const toCamelCase: (str: string) => string;\n"],"mappings":";cAAqBA"}
@@ -0,0 +1,2 @@
1
+ const e=e=>/^[a-z][a-zA-Z0-9]*$/.test(e)?e:e.toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase());export{e as t};
2
+ //# sourceMappingURL=camel-case-C8EXnrVO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camel-case-C8EXnrVO.mjs","names":[],"sources":["../src/functions/camel-case.ts"],"sourcesContent":["// From snake_case to camelCase\nexport const toCamelCase = (str: string) => {\n // If already camelCase, return as is\n if (/^[a-z][a-zA-Z0-9]*$/.test(str)) {\n return str;\n }\n\n // Convert snake_case to camelCase\n return str\n .toLowerCase()\n .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n};\n"],"mappings":"AACA,MAAa,EAAe,GAEtB,sBAAsB,KAAK,EAAI,CAC1B,EAIF,EACJ,aAAa,CACb,QAAQ,aAAc,EAAG,IAAW,EAAO,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ function e(e){return!e||typeof e!=`string`?e:e.split(` `).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}export{e as t};
2
+ //# sourceMappingURL=capitalize-DGA5yhLU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capitalize-DGA5yhLU.mjs","names":[],"sources":["../src/functions/capitalize.ts"],"sourcesContent":["// capitalize first character of each word in a string\nexport function capitalize(str?: string | null) {\n if (!str || typeof str !== \"string\") return str;\n return str\n .split(\" \")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n"],"mappings":"AACA,SAAgB,EAAW,EAAqB,CAE9C,MADI,CAAC,GAAO,OAAO,GAAQ,SAAiB,EACrC,EACJ,MAAM,IAAI,CACV,IAAK,GAAS,EAAK,OAAO,EAAE,CAAC,aAAa,CAAG,EAAK,MAAM,EAAE,CAAC,CAC3D,KAAK,IAAI"}
@@ -0,0 +1,5 @@
1
+ //#region src/functions/capitalize.d.ts
2
+ declare function capitalize(str?: string | null): string | null | undefined;
3
+ //#endregion
4
+ export { capitalize as t };
5
+ //# sourceMappingURL=capitalize-DISwJgmA.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capitalize-DISwJgmA.d.mts","names":["capitalize"],"sources":["../src/functions/capitalize.d.ts"],"sourcesContent":["export declare function capitalize(str?: string | null): string | null | undefined;\n"],"mappings":";iBAAwBA,UAAAA"}
@@ -0,0 +1,5 @@
1
+ //#region src/constants/cctlds.d.ts
2
+ declare const ccTLDs: Set<string>;
3
+ //#endregion
4
+ export { ccTLDs as t };
5
+ //# sourceMappingURL=cctlds-DMPxi7pF.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cctlds-DMPxi7pF.d.mts","names":["ccTLDs","Set"],"sources":["../src/constants/cctlds.d.ts"],"sourcesContent":["export declare const ccTLDs: Set<string>;\n"],"mappings":";cAAqBA,QAAQC"}
@@ -0,0 +1,2 @@
1
+ const e=new Set(`af.ax.al.dz.as.ad.ao.ai.aq.ag.ar.am.aw.ac.au.at.az.bs.bh.bd.bb.eus.by.be.bz.bj.bm.bt.bo.bq.an.nl.ba.bw.bv.br.io.vg.bn.bg.bf.mm.bi.kh.cm.ca.cv.cat.ky.cf.td.cl.cn.cx.cc.co.km.cd.cg.ck.cr.ci.hr.cu.cw.cy.cz.dk.dj.dm.do.tl.tp.ec.eg.sv.gq.er.ee.et.eu.fk.fo.fm.fj.fi.fr.gf.pf.tf.ga.gal.gm.ps.ge.de.gh.gi.gr.gl.gd.gp.gu.gt.gg.gn.gw.gy.ht.hm.hn.hk.hu.is.in.id.ir.iq.ie.im.il.it.jm.jp.je.jo.kz.ke.ki.kw.kg.la.lv.lb.ls.lr.ly.li.lt.lu.mo.mk.mg.mw.my.mv.ml.mt.mh.mq.mr.mu.yt.mx.md.mc.mn.me.ms.ma.mz.mm.na.nr.np.nl.nc.nz.ni.ne.ng.nu.nf.nc.tr.kp.mp.no.om.pk.pw.ps.pa.pg.py.pe.ph.pn.pl.pt.pr.qa.ro.ru.rw.re.bq.an.bl.gp.fr.sh.kn.lc.mf.gp.fr.pm.vc.ws.sm.st.sa.sn.rs.sc.sl.sg.bq.an.nl.sx.an.sk.si.sb.so.so.za.gs.kr.ss.es.lk.sd.sr.sj.sz.se.ch.sy.tw.tj.tz.th.tg.tk.to.tt.tn.tr.tm.tc.tv.ug.ua.ae.uk.us.vi.uy.uz.vu.va.ve.vn.wf.eh.ma.ye.zm.zw`.split(`.`));export{e as t};
2
+ //# sourceMappingURL=cctlds-DXCBpkmb.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cctlds-DXCBpkmb.mjs","names":[],"sources":["../src/constants/cctlds.ts"],"sourcesContent":["export const ccTLDs = new Set([\n \"af\",\n \"ax\",\n \"al\",\n \"dz\",\n \"as\",\n \"ad\",\n \"ao\",\n \"ai\",\n \"aq\",\n \"ag\",\n \"ar\",\n \"am\",\n \"aw\",\n \"ac\",\n \"au\",\n \"at\",\n \"az\",\n \"bs\",\n \"bh\",\n \"bd\",\n \"bb\",\n \"eus\",\n \"by\",\n \"be\",\n \"bz\",\n \"bj\",\n \"bm\",\n \"bt\",\n \"bo\",\n \"bq\",\n \"an\",\n \"nl\",\n \"ba\",\n \"bw\",\n \"bv\",\n \"br\",\n \"io\",\n \"vg\",\n \"bn\",\n \"bg\",\n \"bf\",\n \"mm\",\n \"bi\",\n \"kh\",\n \"cm\",\n \"ca\",\n \"cv\",\n \"cat\",\n \"ky\",\n \"cf\",\n \"td\",\n \"cl\",\n \"cn\",\n \"cx\",\n \"cc\",\n \"co\",\n \"km\",\n \"cd\",\n \"cg\",\n \"ck\",\n \"cr\",\n \"ci\",\n \"hr\",\n \"cu\",\n \"cw\",\n \"cy\",\n \"cz\",\n \"dk\",\n \"dj\",\n \"dm\",\n \"do\",\n \"tl\",\n \"tp\",\n \"ec\",\n \"eg\",\n \"sv\",\n \"gq\",\n \"er\",\n \"ee\",\n \"et\",\n \"eu\",\n \"fk\",\n \"fo\",\n \"fm\",\n \"fj\",\n \"fi\",\n \"fr\",\n \"gf\",\n \"pf\",\n \"tf\",\n \"ga\",\n \"gal\",\n \"gm\",\n \"ps\",\n \"ge\",\n \"de\",\n \"gh\",\n \"gi\",\n \"gr\",\n \"gl\",\n \"gd\",\n \"gp\",\n \"gu\",\n \"gt\",\n \"gg\",\n \"gn\",\n \"gw\",\n \"gy\",\n \"ht\",\n \"hm\",\n \"hn\",\n \"hk\",\n \"hu\",\n \"is\",\n \"in\",\n \"id\",\n \"ir\",\n \"iq\",\n \"ie\",\n \"im\",\n \"il\",\n \"it\",\n \"jm\",\n \"jp\",\n \"je\",\n \"jo\",\n \"kz\",\n \"ke\",\n \"ki\",\n \"kw\",\n \"kg\",\n \"la\",\n \"lv\",\n \"lb\",\n \"ls\",\n \"lr\",\n \"ly\",\n \"li\",\n \"lt\",\n \"lu\",\n \"mo\",\n \"mk\",\n \"mg\",\n \"mw\",\n \"my\",\n \"mv\",\n \"ml\",\n \"mt\",\n \"mh\",\n \"mq\",\n \"mr\",\n \"mu\",\n \"yt\",\n \"mx\",\n \"md\",\n \"mc\",\n \"mn\",\n \"me\",\n \"ms\",\n \"ma\",\n \"mz\",\n \"mm\",\n \"na\",\n \"nr\",\n \"np\",\n \"nl\",\n \"nc\",\n \"nz\",\n \"ni\",\n \"ne\",\n \"ng\",\n \"nu\",\n \"nf\",\n \"nc\",\n \"tr\",\n \"kp\",\n \"mp\",\n \"no\",\n \"om\",\n \"pk\",\n \"pw\",\n \"ps\",\n \"pa\",\n \"pg\",\n \"py\",\n \"pe\",\n \"ph\",\n \"pn\",\n \"pl\",\n \"pt\",\n \"pr\",\n \"qa\",\n \"ro\",\n \"ru\",\n \"rw\",\n \"re\",\n \"bq\",\n \"an\",\n \"bl\",\n \"gp\",\n \"fr\",\n \"sh\",\n \"kn\",\n \"lc\",\n \"mf\",\n \"gp\",\n \"fr\",\n \"pm\",\n \"vc\",\n \"ws\",\n \"sm\",\n \"st\",\n \"sa\",\n \"sn\",\n \"rs\",\n \"sc\",\n \"sl\",\n \"sg\",\n \"bq\",\n \"an\",\n \"nl\",\n \"sx\",\n \"an\",\n \"sk\",\n \"si\",\n \"sb\",\n \"so\",\n \"so\",\n \"za\",\n \"gs\",\n \"kr\",\n \"ss\",\n \"es\",\n \"lk\",\n \"sd\",\n \"sr\",\n \"sj\",\n \"sz\",\n \"se\",\n \"ch\",\n \"sy\",\n \"tw\",\n \"tj\",\n \"tz\",\n \"th\",\n \"tg\",\n \"tk\",\n \"to\",\n \"tt\",\n \"tn\",\n \"tr\",\n \"tm\",\n \"tc\",\n \"tv\",\n \"ug\",\n \"ua\",\n \"ae\",\n \"uk\",\n \"us\",\n \"vi\",\n \"uy\",\n \"uz\",\n \"vu\",\n \"va\",\n \"ve\",\n \"vn\",\n \"wf\",\n \"eh\",\n \"ma\",\n \"ye\",\n \"zm\",\n \"zw\",\n]);\n"],"mappings":"AAAA,MAAa,EAAS,IAAI,IAAI,+zBAiR7B,CAAC"}
@@ -0,0 +1 @@
1
+ import{g as u}from"./chunk-2YQGBO42.mjs";import{a as f}from"./chunk-NWFCCRLG.mjs";import{Fragment as n,jsx as s,jsxs as a}from"react/jsx-runtime";var S=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>a(n,{children:[s("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>a(n,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>a(n,{children:[s("strong",{children:e.limits.tags===u?"Unlimited":f(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>a(n,{children:[s("strong",{children:e.limits.folders===u?"Unlimited":f(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":a(n,{children:[s("strong",{children:t.name==="Enterprise"?"Unlimited":`$${f(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":a(n,{children:[s("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":a(n,{children:[s("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>a(n,{children:[s("strong",{children:e.limits.groups===0?"No":e.limits.groups===u?"Unlimited":f(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>a(n,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>a(n,{children:[s("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>a(n,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>s(n,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>a(n,{children:["Premium ",s("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>a(n,{children:["Free ",s("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>a(n,{children:[s("strong",{children:e==="enterprise"?"Custom":f(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>a(n,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>s(n,{children:s("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>a(n,{children:[s("strong",{children:"Dedicated"})," success manager"]})}]}];var y=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],b={2:["price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},P=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(b).flat()],_=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],x={2:["price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},E=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(x).flat()],k={2:["price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},A=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(k).flat()],o=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",link:"https://dub.co/help/article/pro-plan",price:{monthly:30,yearly:25,ids:[...y,...P]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:b[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[..._,...E]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:u,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:x[2]},limits:{links:25e3,clicks:5e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"partners",text:"Partner management",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"tests",text:"A/B testing"},{id:"roles",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:A},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:u,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:k[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:k[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"api",text:"Partners API",tooltip:{title:"Leverage our partners API to build a bespoke, white-labeled referral program that lives within your app.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:u,domains:250,tags:u,folders:u,groups:u,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],w=o.find(e=>e.name==="Free"),v=o.find(e=>e.name==="Pro"),q=o.find(e=>e.name==="Business"),V=o.find(e=>e.name==="Advanced"),J=o.find(e=>e.name==="Enterprise"),C=o.filter(e=>["Pro","Business","Advanced"].includes(e.name)),D=2,O=({priceId:e})=>{var p,r,d,c;let t=o.find(m=>{var h;return(h=m.price.ids)==null?void 0:h.includes(e)});if(!t)return{plan:null,planTier:1};let i=t.tiers?((p=Object.entries(t.tiers).find(([m,{price:h}])=>h.ids.includes(e)))==null?void 0:p[0])??1:1,l=((d=(r=t.tiers)==null?void 0:r[i])==null?void 0:d.limits)??t.limits;return{plan:{...t,limits:{...t.limits,...l},features:(c=t.features)==null?void 0:c.map(m=>({...m,text:m.id==="clicks"?`${l.clicks} tracked clicks/mo`:m.id==="links"?`${l.links} new links/mo`:m.text}))},planTier:i?Number(i):1}},T=({plan:e,planTier:t=1})=>{var p;let i=o.find(r=>r.name.toLowerCase()===e.toLowerCase());console.log({planDetails:i});let l=i.tiers&&t?i.tiers[t].limits:i.limits;return console.log({planDetails:i,tierLimits:l}),{...i,limits:{...i.limits,...l},features:(p=i.features)==null?void 0:p.map(r=>({...r,text:r.id==="clicks"?`${l.clicks} tracked clicks/mo`:r.id==="links"?`${l.links} new links/mo`:r.text}))}},U=e=>o.find(t=>t.name.toLowerCase()===e.toLowerCase())||w,F=e=>{if(!e)return v;let t=e.toLowerCase().split(" ")[0];return o[Math.min(o.findIndex(i=>i.name.toLowerCase()===t)+1,o.length-1)]},B=({currentPlan:e,newPlan:t,currentTier:i,newTier:l})=>{let p=o.findIndex(d=>d.name.toLowerCase()===e.toLowerCase()),r=o.findIndex(d=>d.name.toLowerCase()===t.toLowerCase());return p>r||p===r&&(i??0)>(l??0)},j=({events:e,links:t,suggestFree:i=!1})=>{var p;let l=null;for(let r of o){if(!i&&r.price.monthly===0)continue;let d=[0,...Object.keys(r.tiers??{}).map(Number)].find(c=>{var h,g;let m=c==0?r.limits:((g=(h=r.tiers)==null?void 0:h[c])==null?void 0:g.limits)??r.limits;return m.clicks>=(e??0)&&m.links>=(t??0)});if(d!==void 0){let c=(p=r.tiers)==null?void 0:p[d];l={plan:{...r,limits:{...r.limits,...c==null?void 0:c.limits},price:{...r.price,...c==null?void 0:c.price}},planTier:d};break}}return l??{plan:J,planTier:1}},Q=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;export{S as a,E as b,o as c,w as d,v as e,q as f,V as g,J as h,C as i,D as j,O as k,T as l,U as m,F as n,B as o,j as p,Q as q};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-CP4WO7MM.mjs";import{g as d}from"./chunk-2YQGBO42.mjs";import{a as P,b as E}from"./chunk-SYT2IXG6.mjs";import{a as _}from"./chunk-Y2JLLSMJ.mjs";import{a as A}from"./chunk-BMESPBRA.mjs";import{a as f}from"./chunk-YUMUNL66.mjs";import{a as x}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-NWFCCRLG.mjs";import{Fragment as n,jsx as o,jsxs as l}from"react/jsx-runtime";var T=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>l(n,{children:[o("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.tags===d?"Unlimited":p(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.folders===d?"Unlimited":p(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":l(n,{children:[o("strong",{children:t.name==="Enterprise"?"Unlimited":`$${p(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":l(n,{children:[o("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":l(n,{children:[o("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.groups===0?"No":e.limits.groups===d?"Unlimited":p(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>o(n,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>l(n,{children:["Premium ",o("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>l(n,{children:["Free ",o("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>l(n,{children:[o("strong",{children:e==="enterprise"?"Custom":p(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>o(n,{children:o("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>l(n,{children:[o("strong",{children:"Dedicated"})," success manager"]})}]}];import J from"@sindresorhus/slugify";var te=e=>{let t=J(e,{separator:""});if(t.length<3)return"";if(f.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&f.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((i,s)=>i.length<s.length?i:s)}.link`},re=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),se=new RegExp(/^[a-zA-Z0-9\-]+$/),ie=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),oe=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";let r=t.split(".");return r.length>2?P.has(r[r.length-2])&&f.has(r[r.length-1])||E.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},ne=e=>{if(A(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},ae=e=>_.some(t=>t.slug===e);function pe({domain:e,key:t,pretty:r,searchParams:a}){if(!e)return"";let i=`https://${x(e)}${t&&t!=="_root"?`/${x(t)}`:""}`;if(a){let s=new URLSearchParams;for(let[m,u]of Object.entries(a))s.set(m,u);i+=`?${s.toString()}`}return r?i.replace(/^https?:\/\//,""):i}function ue({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var L=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],w={2:["price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},I=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(w).flat()],R=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],v={2:["price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},N=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(v).flat()],g={2:["price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},D=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(g).flat()],c=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",link:"https://dub.co/help/article/pro-plan",price:{monthly:30,yearly:25,ids:[...L,...I]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:w[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[...R,...N]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:d,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:v[2]},limits:{links:25e3,clicks:5e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"partners",text:"Partner management",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"tests",text:"A/B testing"},{id:"roles",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:D},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:d,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:g[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:g[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"api",text:"Partners API",tooltip:{title:"Leverage our partners API to build a bespoke, white-labeled referral program that lives within your app.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:d,domains:250,tags:d,folders:d,groups:d,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],C=c.find(e=>e.name==="Free"),q=c.find(e=>e.name==="Pro"),He=c.find(e=>e.name==="Business"),et=c.find(e=>e.name==="Advanced"),V=c.find(e=>e.name==="Enterprise"),tt=c.filter(e=>["Pro","Business","Advanced"].includes(e.name)),rt=2,S=(e,t)=>{var a;let r=e.tiers&&t>1?e.tiers[t].limits:e.limits;return{...e,limits:{...e.limits,...r},features:(a=e.features)==null?void 0:a.map(i=>({...i,text:i.id==="clicks"?`${p(r.clicks)} tracked clicks/mo`:i.id==="links"?`${p(r.links)} new links/mo`:i.text}))}},st=({priceId:e})=>{var a;let t=c.find(i=>{var s;return(s=i.price.ids)==null?void 0:s.includes(e)});if(!t)return{plan:null,planTier:1};let r=t.tiers?((a=Object.entries(t.tiers).find(([i,{price:s}])=>s.ids.includes(e)))==null?void 0:a[0])??1:1;return{plan:S(t,r),planTier:r}},it=({plan:e,planTier:t=1})=>{let r=c.find(a=>a.name.toLowerCase()===e.toLowerCase());return S(r,t)},ot=e=>c.find(t=>t.name.toLowerCase()===e.toLowerCase())||C,nt=e=>{if(!e)return q;let t=e.toLowerCase().split(" ")[0];return c[Math.min(c.findIndex(r=>r.name.toLowerCase()===t)+1,c.length-1)]},at=({currentPlan:e,newPlan:t,currentTier:r,newTier:a})=>{let i=c.findIndex(m=>m.name.toLowerCase()===e.toLowerCase()),s=c.findIndex(m=>m.name.toLowerCase()===t.toLowerCase());return i>s||i===s&&(r??0)>(a??0)},lt=({events:e,links:t,suggestFree:r=!1})=>{var i;let a=null;for(let s of c){if(!r&&s.price.monthly===0)continue;let m=[0,...Object.keys(s.tiers??{}).map(Number)].find(u=>{var b,y;let k=u===1?s.limits:((y=(b=s.tiers)==null?void 0:b[u])==null?void 0:y.limits)??s.limits;return k.clicks>=(e??0)&&k.links>=(t??0)});if(m!==void 0){let u=(i=s.tiers)==null?void 0:i[m];a={plan:{...s,limits:{...s.limits,...u==null?void 0:u.limits},price:{...s.price,...u==null?void 0:u.price}},planTier:m};break}}return a??{plan:V,planTier:1}},ct=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;var Vt=e=>!e.periodStart||!e.periodEnd?"-":`${h(e.periodStart,{month:"short",year:new Date(e.periodStart).getUTCFullYear()===new Date(e.periodEnd).getUTCFullYear()?void 0:"numeric",timeZone:"utc"})}-${h(e.periodEnd,{month:"short",timeZone:"utc"})}`;export{T as a,Vt as b,te as c,re as d,se as e,ie as f,oe as g,ne as h,ae as i,pe as j,ue as k,N as l,c as m,C as n,q as o,He as p,et as q,V as r,tt as s,rt as t,st as u,it as v,ot as w,nt as x,at as y,lt as z,ct as A};
@@ -0,0 +1 @@
1
+ import{a as A}from"./chunk-BMESPBRA.mjs";import{a as g}from"./chunk-CP4WO7MM.mjs";import{a as d}from"./chunk-NWFCCRLG.mjs";import{a as x}from"./chunk-IHX4EDUF.mjs";import{a as _}from"./chunk-Y2JLLSMJ.mjs";import{g as u}from"./chunk-2YQGBO42.mjs";import{a as h}from"./chunk-YUMUNL66.mjs";import{a as P,b as E}from"./chunk-SYT2IXG6.mjs";import{Fragment as o,jsx as i,jsxs as n}from"react/jsx-runtime";var O=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>n(o,{children:[i("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>n(o,{children:[i("strong",{children:e.name==="Enterprise"?"Unlimited":d(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>n(o,{children:[i("strong",{children:e.limits.tags===u?"Unlimited":d(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>n(o,{children:[i("strong",{children:e.limits.folders===u?"Unlimited":d(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":n(o,{children:[i("strong",{children:t.name==="Enterprise"?"Unlimited":`$${d(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":n(o,{children:[i("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":n(o,{children:[i("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>n(o,{children:[i("strong",{children:e.limits.groups===0?"No":e.limits.groups===u?"Unlimited":d(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>n(o,{children:[i("strong",{children:e.name==="Enterprise"?"Unlimited":d(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>n(o,{children:[i("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>n(o,{children:[i("strong",{children:e.name==="Enterprise"?"Unlimited":d(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>i(o,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>n(o,{children:["Premium ",i("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>n(o,{children:["Free ",i("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>n(o,{children:[i("strong",{children:e==="enterprise"?"Custom":d(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>n(o,{children:[i("strong",{children:e.name==="Enterprise"?"Unlimited":d(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>i(o,{children:i("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>n(o,{children:[i("strong",{children:"Dedicated"})," success manager"]})}]}];import S from"@sindresorhus/slugify";var ee=e=>{let t=S(e,{separator:""});if(t.length<3)return"";if(h.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&h.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((a,s)=>a.length<s.length?a:s)}.link`},te=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),re=new RegExp(/^[a-zA-Z0-9\-]+$/),se=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),ie=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";let r=t.split(".");return r.length>2?P.has(r[r.length-2])&&h.has(r[r.length-1])||E.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},oe=e=>{if(A(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},ne=e=>_.some(t=>t.slug===e);function ce({domain:e,key:t,pretty:r,searchParams:c}){if(!e)return"";let a=`https://${x(e)}${t&&t!=="_root"?`/${x(t)}`:""}`;if(c){let s=new URLSearchParams;for(let[p,m]of Object.entries(c))s.set(p,m);a+=`?${s.toString()}`}return r?a.replace(/^https?:\/\//,""):a}function pe({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var J=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],w={2:["price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},L=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(w).flat()],R=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],v={2:["price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},I=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(v).flat()],k={2:["price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},N=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(k).flat()],l=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",price:{monthly:30,yearly:25,ids:[...J,...L]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:w[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[...R,...I]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:u,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:v[2]},limits:{links:25e3,clicks:5e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"partners",text:"Dub Partners",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"customerinsights",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}},{id:"tests",text:"A/B testing"}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:N},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:u,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:k[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:k[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"email",text:"Email campaigns",tooltip:{title:"Send marketing and transactional emails to your partners to increase engagement and drive conversions.",cta:"Learn more.",href:"https://dub.co/help/article/email-campaigns"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:u,domains:250,tags:u,folders:u,groups:u,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],D=l.find(e=>e.name==="Free"),C=l.find(e=>e.name==="Pro"),Ye=l.find(e=>e.name==="Business"),Ke=l.find(e=>e.name==="Advanced"),q=l.find(e=>e.name==="Enterprise"),He=l.filter(e=>["Pro","Business","Advanced"].includes(e.name)),et=2;var tt=({priceId:e})=>{var c;let t=l.find(a=>{var s;return(s=a.price.ids)==null?void 0:s.includes(e)});if(!t)return{plan:null,planTier:1};let r=t.tiers?((c=Object.entries(t.tiers).find(([a,{price:s}])=>s.ids.includes(e)))==null?void 0:c[0])??1:1;return{plan:enrichPlanWithTier(t,r),planTier:r}},rt=({plan:e,planTier:t=1})=>{let r=l.find(c=>c.name.toLowerCase()===e.toLowerCase());return enrichPlanWithTier(r,t)},st=e=>l.find(t=>t.name.toLowerCase()===e.toLowerCase())||D,it=e=>{if(!e)return C;let t=e.toLowerCase().split(" ")[0];return l[Math.min(l.findIndex(r=>r.name.toLowerCase()===t)+1,l.length-1)]},ot=({currentPlan:e,newPlan:t,currentTier:r,newTier:c})=>{let a=l.findIndex(p=>p.name.toLowerCase()===e.toLowerCase()),s=l.findIndex(p=>p.name.toLowerCase()===t.toLowerCase());return a>s||a===s&&(r??1)>(c??1)},nt=({events:e,links:t,suggestFree:r=!1})=>{var a;let c=null;for(let s of l){if(!r&&s.price.monthly===0)continue;let p=[1,...Object.keys(s.tiers??{}).map(Number).filter(m=>m>=2)].find(m=>{var b,y;let f=m===1?s.limits:((y=(b=s.tiers)==null?void 0:b[m])==null?void 0:y.limits)??s.limits;return f.clicks>=(e??0)&&f.links>=(t??0)});if(p!==void 0){let m=enrichPlanWithTier(s,p),f=p>1?(a=s.tiers)==null?void 0:a[p]:void 0;c={plan:{...m,price:{...s.price,...f==null?void 0:f.price}},planTier:p};break}}return c??{plan:q,planTier:1}},at=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;var Ct=e=>!e.periodStart||!e.periodEnd?"-":`${g(e.periodStart,{month:"short",year:new Date(e.periodStart).getUTCFullYear()===new Date(e.periodEnd).getUTCFullYear()?void 0:"numeric",timeZone:"utc"})}-${g(e.periodEnd,{month:"short",timeZone:"utc"})}`;export{O as a,Ct as b,ee as c,te as d,re as e,se as f,ie as g,oe as h,ne as i,ce as j,pe as k,I as l,l as m,D as n,C as o,Ye as p,Ke as q,q as r,He as s,et as t,tt as u,rt as v,st as w,it as x,ot as y,nt as z,at as A};
@@ -0,0 +1 @@
1
+ import{g as a}from"./chunk-2YQGBO42.mjs";import{a as n}from"./chunk-NWFCCRLG.mjs";import{Fragment as s,jsx as r,jsxs as i}from"react/jsx-runtime";var y=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>i(s,{children:[r("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>i(s,{children:[r("strong",{children:e.name==="Enterprise"?"Unlimited":n(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>i(s,{children:[r("strong",{children:e.limits.tags===a?"Unlimited":n(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>i(s,{children:[r("strong",{children:e.limits.folders===a?"Unlimited":n(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":i(s,{children:[r("strong",{children:t.name==="Enterprise"?"Unlimited":`$${n(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":i(s,{children:[r("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":i(s,{children:[r("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>i(s,{children:[r("strong",{children:e.limits.groups===0?"No":e.limits.groups===a?"Unlimited":n(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>i(s,{children:[r("strong",{children:e.name==="Enterprise"?"Unlimited":n(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>i(s,{children:[r("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>i(s,{children:[r("strong",{children:e.name==="Enterprise"?"Unlimited":n(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>r(s,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>i(s,{children:["Premium ",r("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>i(s,{children:["Free ",r("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>i(s,{children:[r("strong",{children:e==="enterprise"?"Custom":n(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>i(s,{children:[r("strong",{children:e.name==="Enterprise"?"Unlimited":n(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>r(s,{children:r("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>i(s,{children:[r("strong",{children:"Dedicated"})," success manager"]})}]}];var d=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],u=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8"],f=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],h=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx"],o=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",link:"https://dub.co/help/article/pro-plan",price:{monthly:30,yearly:25,ids:[...d,...u]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[...f,...h]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:a,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"partners",text:"Partner management",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"tests",text:"A/B testing"},{id:"roles",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo"]},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:a,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"api",text:"Partners API",tooltip:{title:"Leverage our partners API to build a bespoke, white-labeled referral program that lives within your app.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:a,domains:250,tags:a,folders:a,groups:a,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],m=o.find(e=>e.name==="Free"),k=o.find(e=>e.name==="Pro"),_=o.find(e=>e.name==="Business"),A=o.find(e=>e.name==="Advanced"),g=o.filter(e=>["Pro","Business","Advanced"].includes(e.name)),w=2,v=e=>o.find(t=>{var c;return(c=t.price.ids)==null?void 0:c.includes(e)})||null,L=e=>g.find(t=>t.name.toLowerCase()===e.toLowerCase()),J=e=>o.find(t=>t.name.toLowerCase()===e.toLowerCase())||m,I=e=>{if(!e)return k;let t=e.toLowerCase().split(" ")[0];return o[Math.min(o.findIndex(c=>c.name.toLowerCase()===t)+1,o.length-1)]},R=(e,t)=>{let c=o.findIndex(l=>l.name.toLowerCase()===e.toLowerCase()),p=o.findIndex(l=>l.name.toLowerCase()===t.toLowerCase());return c>p},N=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;export{y as a,h as b,o as c,m as d,k as e,_ as f,A as g,g as h,w as i,v as j,L as k,J as l,I as m,R as n,N as o};
@@ -0,0 +1 @@
1
+ import{a as A}from"./chunk-BMESPBRA.mjs";import{a as h}from"./chunk-CP4WO7MM.mjs";import{a as u}from"./chunk-NWFCCRLG.mjs";import{a as g}from"./chunk-IHX4EDUF.mjs";import{a as P}from"./chunk-Y2JLLSMJ.mjs";import{g as d}from"./chunk-2YQGBO42.mjs";import{a as f}from"./chunk-YUMUNL66.mjs";import{a as E,b as _}from"./chunk-SYT2IXG6.mjs";import{Fragment as n,jsx as o,jsxs as l}from"react/jsx-runtime";var T=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>l(n,{children:[o("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":u(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.tags===d?"Unlimited":u(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.folders===d?"Unlimited":u(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":l(n,{children:[o("strong",{children:t.name==="Enterprise"?"Unlimited":`$${u(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":l(n,{children:[o("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":l(n,{children:[o("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.groups===0?"No":e.limits.groups===d?"Unlimited":u(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":u(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>l(n,{children:[o("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":u(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>o(n,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>l(n,{children:["Premium ",o("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>l(n,{children:["Free ",o("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>l(n,{children:[o("strong",{children:e==="enterprise"?"Custom":u(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>l(n,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":u(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>o(n,{children:o("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>l(n,{children:[o("strong",{children:"Dedicated"})," success manager"]})}]}];import J from"@sindresorhus/slugify";var te=e=>{let t=J(e,{separator:""});if(t.length<3)return"";if(f.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&f.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((i,s)=>i.length<s.length?i:s)}.link`},re=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),se=new RegExp(/^[a-zA-Z0-9\-]+$/),ie=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),oe=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";let r=t.split(".");return r.length>2?E.has(r[r.length-2])&&f.has(r[r.length-1])||_.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},ne=e=>{if(A(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},ae=e=>P.some(t=>t.slug===e);function pe({domain:e,key:t,pretty:r,searchParams:a}){if(!e)return"";let i=`https://${g(e)}${t&&t!=="_root"?`/${g(t)}`:""}`;if(a){let s=new URLSearchParams;for(let[m,p]of Object.entries(a))s.set(m,p);i+=`?${s.toString()}`}return r?i.replace(/^https?:\/\//,""):i}function ue({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var L=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],w={2:["price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},R=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(w).flat()],I=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],v={2:["price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},D=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(v).flat()],x={2:["price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},N=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(x).flat()],c=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",price:{monthly:30,yearly:25,ids:[...L,...R]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:w[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[...I,...D]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:d,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:v[2]},limits:{links:25e3,clicks:5e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"partners",text:"Dub Partners",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"customerinsights",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}},{id:"tests",text:"A/B testing"}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:N},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:d,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:x[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:x[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"email",text:"Email campaigns",tooltip:{title:"Send marketing and transactional emails to your partners to increase engagement and drive conversions.",cta:"Learn more.",href:"https://dub.co/help/article/email-campaigns"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:d,domains:250,tags:d,folders:d,groups:d,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],C=c.find(e=>e.name==="Free"),q=c.find(e=>e.name==="Pro"),He=c.find(e=>e.name==="Business"),et=c.find(e=>e.name==="Advanced"),V=c.find(e=>e.name==="Enterprise"),tt=c.filter(e=>["Pro","Business","Advanced"].includes(e.name)),rt=2,S=(e,t)=>{var a;let r=e.tiers&&t>1?e.tiers[t].limits:e.limits;return{...e,limits:{...e.limits,...r},features:(a=e.features)==null?void 0:a.map(i=>({...i,text:i.id==="clicks"?`${u(r.clicks)} tracked clicks/mo`:i.id==="links"?`${u(r.links)} new links/mo`:i.text}))}},st=({priceId:e})=>{var a;let t=c.find(i=>{var s;return(s=i.price.ids)==null?void 0:s.includes(e)});if(!t)return{plan:null,planTier:1};let r=t.tiers?((a=Object.entries(t.tiers).find(([i,{price:s}])=>s.ids.includes(e)))==null?void 0:a[0])??1:1;return{plan:S(t,r),planTier:r}},it=({plan:e,planTier:t=1})=>{let r=c.find(a=>a.name.toLowerCase()===e.toLowerCase());return S(r,t)},ot=e=>c.find(t=>t.name.toLowerCase()===e.toLowerCase())||C,nt=e=>{if(!e)return q;let t=e.toLowerCase().split(" ")[0];return c[Math.min(c.findIndex(r=>r.name.toLowerCase()===t)+1,c.length-1)]},at=({currentPlan:e,newPlan:t,currentTier:r,newTier:a})=>{let i=c.findIndex(m=>m.name.toLowerCase()===e.toLowerCase()),s=c.findIndex(m=>m.name.toLowerCase()===t.toLowerCase());return i>s||i===s&&(r??1)>(a??1)},lt=({events:e,links:t,suggestFree:r=!1})=>{var i;let a=null;for(let s of c){if(!r&&s.price.monthly===0)continue;let m=[1,...Object.keys(s.tiers??{}).map(Number).filter(p=>p>=2)].find(p=>{var b,y;let k=p===1?s.limits:((y=(b=s.tiers)==null?void 0:b[p])==null?void 0:y.limits)??s.limits;return k.clicks>=(e??0)&&k.links>=(t??0)});if(m!==void 0){let p=m>1?(i=s.tiers)==null?void 0:i[m]:void 0;a={plan:{...s,limits:{...s.limits,...p==null?void 0:p.limits},price:{...s.price,...p==null?void 0:p.price}},planTier:m};break}}return a??{plan:V,planTier:1}},ct=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;var Vt=e=>!e.periodStart||!e.periodEnd?"-":`${h(e.periodStart,{month:"short",year:new Date(e.periodStart).getUTCFullYear()===new Date(e.periodEnd).getUTCFullYear()?void 0:"numeric",timeZone:"utc"})}-${h(e.periodEnd,{month:"short",timeZone:"utc"})}`;export{T as a,Vt as b,te as c,re as d,se as e,ie as f,oe as g,ne as h,ae as i,pe as j,ue as k,D as l,c as m,C as n,q as o,He as p,et as q,V as r,tt as s,rt as t,st as u,it as v,ot as w,nt as x,at as y,lt as z,ct as A};
@@ -0,0 +1 @@
1
+ import{g as u}from"./chunk-2YQGBO42.mjs";import{a as f}from"./chunk-NWFCCRLG.mjs";import{Fragment as i,jsx as s,jsxs as a}from"react/jsx-runtime";var S=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>a(i,{children:[s("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>a(i,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>a(i,{children:[s("strong",{children:e.limits.tags===u?"Unlimited":f(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>a(i,{children:[s("strong",{children:e.limits.folders===u?"Unlimited":f(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":a(i,{children:[s("strong",{children:t.name==="Enterprise"?"Unlimited":`$${f(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":a(i,{children:[s("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":a(i,{children:[s("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>a(i,{children:[s("strong",{children:e.limits.groups===0?"No":e.limits.groups===u?"Unlimited":f(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>a(i,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>a(i,{children:[s("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>a(i,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>s(i,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>a(i,{children:["Premium ",s("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>a(i,{children:["Free ",s("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>a(i,{children:[s("strong",{children:e==="enterprise"?"Custom":f(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>a(i,{children:[s("strong",{children:e.name==="Enterprise"?"Unlimited":f(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>s(i,{children:s("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>a(i,{children:[s("strong",{children:"Dedicated"})," success manager"]})}]}];var y=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],b={2:["price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},P=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(b).flat()],_=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],x={2:["price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},E=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(x).flat()],k={2:["price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},A=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(k).flat()],o=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",link:"https://dub.co/help/article/pro-plan",price:{monthly:30,yearly:25,ids:[...y,...P]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:b[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[..._,...E]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:u,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:x[2]},limits:{links:25e3,clicks:5e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"partners",text:"Partner management",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"tests",text:"A/B testing"},{id:"roles",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:A},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:u,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:k[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:k[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"api",text:"Partners API",tooltip:{title:"Leverage our partners API to build a bespoke, white-labeled referral program that lives within your app.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:u,domains:250,tags:u,folders:u,groups:u,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],w=o.find(e=>e.name==="Free"),v=o.find(e=>e.name==="Pro"),q=o.find(e=>e.name==="Business"),V=o.find(e=>e.name==="Advanced"),J=o.find(e=>e.name==="Enterprise"),C=o.filter(e=>["Pro","Business","Advanced"].includes(e.name)),D=2,O=({priceId:e})=>{var p,r,d,c;let t=o.find(m=>{var h;return(h=m.price.ids)==null?void 0:h.includes(e)});if(!t)return{plan:null,planTier:1};let n=t.tiers?((p=Object.entries(t.tiers).find(([m,{price:h}])=>h.ids.includes(e)))==null?void 0:p[0])??1:1,l=((d=(r=t.tiers)==null?void 0:r[n])==null?void 0:d.limits)??t.limits;return{plan:{...t,limits:{...t.limits,...l},features:(c=t.features)==null?void 0:c.map(m=>({...m,text:m.id==="clicks"?`${l.clicks} tracked clicks/mo`:m.id==="links"?`${l.links} new links/mo`:m.text}))},planTier:n?Number(n):1}},T=({plan:e,planTier:t=1})=>{var p;let n=o.find(r=>r.name.toLowerCase()===e.toLowerCase()),l=n.tiers&&t?n.tiers[t].limits:n.limits;return{...n,limits:{...n.limits,...l},features:(p=n.features)==null?void 0:p.map(r=>({...r,text:r.id==="clicks"?`${l.clicks} tracked clicks/mo`:r.id==="links"?`${l.links} new links/mo`:r.text}))}},U=e=>o.find(t=>t.name.toLowerCase()===e.toLowerCase())||w,F=e=>{if(!e)return v;let t=e.toLowerCase().split(" ")[0];return o[Math.min(o.findIndex(n=>n.name.toLowerCase()===t)+1,o.length-1)]},B=({currentPlan:e,newPlan:t,currentTier:n,newTier:l})=>{let p=o.findIndex(d=>d.name.toLowerCase()===e.toLowerCase()),r=o.findIndex(d=>d.name.toLowerCase()===t.toLowerCase());return p>r||p===r&&(n??0)>(l??0)},j=({events:e,links:t,suggestFree:n=!1})=>{var p;let l=null;for(let r of o){if(!n&&r.price.monthly===0)continue;let d=[0,...Object.keys(r.tiers??{}).map(Number)].find(c=>{var h,g;let m=c==0?r.limits:((g=(h=r.tiers)==null?void 0:h[c])==null?void 0:g.limits)??r.limits;return m.clicks>=(e??0)&&m.links>=(t??0)});if(d!==void 0){let c=(p=r.tiers)==null?void 0:p[d];l={plan:{...r,limits:{...r.limits,...c==null?void 0:c.limits},price:{...r.price,...c==null?void 0:c.price}},planTier:d};break}}return l??{plan:J,planTier:1}},Q=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;export{S as a,E as b,o as c,w as d,v as e,q as f,V as g,J as h,C as i,D as j,O as k,T as l,U as m,F as n,B as o,j as p,Q as q};
@@ -0,0 +1 @@
1
+ import{a as A}from"./chunk-BMESPBRA.mjs";import{a as h}from"./chunk-CP4WO7MM.mjs";import{a as p}from"./chunk-NWFCCRLG.mjs";import{a as g}from"./chunk-IHX4EDUF.mjs";import{a as P}from"./chunk-MWDHT2QR.mjs";import{g as u}from"./chunk-2YQGBO42.mjs";import{a as f}from"./chunk-YUMUNL66.mjs";import{a as E,b as _}from"./chunk-SYT2IXG6.mjs";import{Fragment as a,jsx as o,jsxs as l}from"react/jsx-runtime";var T=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>l(a,{children:[o("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.tags===u?"Unlimited":p(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.folders===u?"Unlimited":p(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":l(a,{children:[o("strong",{children:t.name==="Enterprise"?"Unlimited":`$${p(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":l(a,{children:[o("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":l(a,{children:[o("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.groups===0?"No":e.limits.groups===u?"Unlimited":p(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>o(a,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>l(a,{children:["Premium ",o("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>l(a,{children:["Free ",o("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>l(a,{children:[o("strong",{children:e==="enterprise"?"Custom":p(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>o(a,{children:o("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>l(a,{children:[o("strong",{children:"Dedicated"})," success manager"]})}]}];import S from"@sindresorhus/slugify";var H=e=>{let t=S(e,{separator:""});if(t.length<3)return"";if(f.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&f.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((s,i)=>s.length<i.length?s:i)}.link`},ee=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),te=new RegExp(/^[a-zA-Z0-9\-]+$/),re=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),se=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";let r=t.split(".");return r.length>2?E.has(r[r.length-2])&&f.has(r[r.length-1])||_.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},ie=e=>{if(A(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},oe=e=>P.some(t=>t.slug===e);function le({domain:e,key:t,pretty:r,searchParams:n}){if(!e)return"";let s=`https://${g(e)}${t&&t!=="_root"?`/${g(t)}`:""}`;if(n){let i=new URLSearchParams;for(let[d,m]of Object.entries(n))i.set(d,m);s+=`?${i.toString()}`}return r?s.replace(/^https?:\/\//,""):s}function ce({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var v=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],J={2:["price_1SQtg3AlJJEpqkPVVhDSyd9u","price_1SQtg3AlJJEpqkPVNHYhTRy7","price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},L=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(J).flat()],R=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],w={2:["price_1SQtdxAlJJEpqkPV4kNkRHZr","price_1SQtdxAlJJEpqkPV7cvJTv4g","price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},I=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(w).flat()],k={2:["price_1SQtg6AlJJEpqkPVAJdrStq7","price_1SQtg6AlJJEpqkPVaZNisQdm","price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQtg8AlJJEpqkPVvQVU7uQ3","price_1SQtg8AlJJEpqkPV4Nks8MkS","price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},N=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(k).flat()],c=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,analyticsApi:1,retention:"30-day"}},{name:"Pro",price:{monthly:30,yearly:25,ids:[...v,...L]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,analyticsApi:2,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:J[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[...R,...I]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:u,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,analyticsApi:4,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:w[2]},limits:{links:25e3,clicks:6e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"partners",text:"Dub Partners",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"customerinsights",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}},{id:"tests",text:"A/B testing"}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:N},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:u,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,analyticsApi:8,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:k[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:k[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"email",text:"Email campaigns",tooltip:{title:"Send marketing and transactional emails to your partners to increase engagement and drive conversions.",cta:"Learn more.",href:"https://dub.co/help/article/email-campaigns"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:u,domains:250,tags:u,folders:u,groups:u,networkInvites:20,users:30,ai:1e3,api:3e3,analyticsApi:16,retention:"Unlimited"}}],We=c.find(e=>e.name==="Free"),q=c.find(e=>e.name==="Pro"),He=c.find(e=>e.name==="Business"),et=c.find(e=>e.name==="Advanced"),V=c.find(e=>e.name==="Enterprise"),tt=c.filter(e=>["Pro","Business","Advanced"].includes(e.name)),rt=2,x=(e,t)=>{var s;let r=e.tiers&&t>1?e.tiers[t]:void 0,n=(r==null?void 0:r.limits)??e.limits;return{...e,limits:{...e.limits,...n},price:{...e.price,...r==null?void 0:r.price},features:(s=e.features)==null?void 0:s.map(i=>({...i,text:i.id==="clicks"?`${p(n.clicks)} tracked clicks/mo`:i.id==="links"?`${p(n.links)} new links/mo`:i.text}))}},st=({priceId:e})=>{var n;let t=c.find(s=>{var i;return(i=s.price.ids)==null?void 0:i.includes(e)});if(!t)return{plan:null,planTier:1};let r=t.tiers&&Number((n=Object.entries(t.tiers).find(([s,{price:i}])=>i.ids.includes(e)))==null?void 0:n[0])||1;return{plan:x(t,r),planTier:r}},it=({plan:e,planTier:t=1})=>{let r=c.find(n=>n.name.toLowerCase()===e.toLowerCase());return x(r,t)},ot=e=>{if(!e)return q;let t=e.toLowerCase().split(" ")[0];return c[Math.min(c.findIndex(r=>r.name.toLowerCase()===t)+1,c.length-1)]},nt=({currentPlan:e,newPlan:t,currentTier:r,newTier:n})=>{let s=c.findIndex(d=>d.name.toLowerCase()===e.toLowerCase()),i=c.findIndex(d=>d.name.toLowerCase()===t.toLowerCase());return s>i||s===i&&(r??1)>(n??1)},at=({events:e,links:t,suggestFree:r=!1})=>{let n=null;for(let s of c){if(!r&&s.price.monthly===0)continue;let i=[1,...Object.keys(s.tiers??{}).map(Number).filter(d=>d>=2)].find(d=>{var b,y;let m=d===1?s.limits:((y=(b=s.tiers)==null?void 0:b[d])==null?void 0:y.limits)??s.limits;return m.clicks>=(e??0)&&m.links>=(t??0)});if(i!==void 0){n={plan:x(s,i),planTier:i};break}}return n??{plan:V,planTier:1}},lt=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;var Dt=e=>!e.periodStart||!e.periodEnd?"-":`${h(e.periodStart,{month:"short",year:new Date(e.periodStart).getUTCFullYear()===new Date(e.periodEnd).getUTCFullYear()?void 0:"numeric",timeZone:"utc"})}-${h(e.periodEnd,{month:"short",timeZone:"utc"})}`;export{T as a,Dt as b,H as c,ee as d,te as e,re as f,se as g,ie as h,oe as i,le as j,ce as k,I as l,c as m,We as n,q as o,He as p,et as q,V as r,tt as s,rt as t,st as u,it as v,ot as w,nt as x,at as y,lt as z};
@@ -0,0 +1 @@
1
+ import{a as A}from"./chunk-BMESPBRA.mjs";import{a as h}from"./chunk-CP4WO7MM.mjs";import{a as p}from"./chunk-NWFCCRLG.mjs";import{a as g}from"./chunk-IHX4EDUF.mjs";import{a as P}from"./chunk-Y2JLLSMJ.mjs";import{g as u}from"./chunk-2YQGBO42.mjs";import{a as f}from"./chunk-YUMUNL66.mjs";import{a as E,b as _}from"./chunk-SYT2IXG6.mjs";import{Fragment as a,jsx as o,jsxs as l}from"react/jsx-runtime";var O=[{category:"Links",href:"https://dub.co/links",features:[{text:()=>l(a,{children:[o("strong",{children:"Unlimited"})," clicks"]})},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.links)})," ","new links",e.name==="Enterprise"?"":"/mo"]})},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.tags===u?"Unlimited":p(e.limits.tags)})," ","tags"]}),href:"https://dub.co/help/article/how-to-use-tags"},{check:{free:!1,default:!0},text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.folders===u?"Unlimited":p(e.limits.folders)})," ","folders"]})},{text:"Custom QR codes",href:"https://dub.co/help/article/custom-qr-codes"},{text:"UTM builder + templates",href:"https://dub.co/help/article/how-to-create-utm-templates"},{check:{free:!1,default:!0},text:"Custom link previews",href:"https://dub.co/help/article/custom-link-previews"},{check:{free:!1,default:!0},text:"Deep links",href:"https://dub.co/docs/concepts/deep-links/quickstart"},{check:{free:!1,default:!0},text:"Link cloaking",href:"https://dub.co/help/article/link-cloaking"},{check:{free:!1,default:!0},text:"Link expiration",href:"https://dub.co/help/article/link-expiration"},{check:{free:!1,default:!0},text:"Password protection",href:"https://dub.co/help/article/password-protected-links"},{check:{free:!1,default:!0},text:"Device targeting",href:"https://dub.co/help/article/device-targeting"},{check:{free:!1,default:!0},text:"Geo targeting",href:"https://dub.co/help/article/geo-targeting"},{check:{free:!1,pro:!1,default:!0},text:"A/B testing"}]},{category:"Partners",href:"https://dub.co/partners",features:[{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Unlimited partners"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Automated global payouts",href:"https://dub.co/help/article/partner-payouts"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner payouts":l(a,{children:[o("strong",{children:t.name==="Enterprise"?"Unlimited":`$${p(t.limits.payouts/100)}`})," ","partner payouts",t.name==="Enterprise"?"":"/mo"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e})=>e==="free"||e==="pro"?"No partner payouts":l(a,{children:[o("strong",{children:{business:"5%",advanced:"5%",enterprise:"3%"}[e]})," ","payout fees"]}),href:"https://dub.co/help/article/partner-payouts#payout-fees-and-timing"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Tax compliance",href:"https://dub.co/help/article/partner-payouts#tax-compliance"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({id:e,plan:t})=>e==="free"||e==="pro"?"No partner rewards":l(a,{children:[o("strong",{children:t.name==="Business"?"Basic":"Advanced"})," ","partner rewards"]}),href:"https://dub.co/help/article/partner-rewards"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Dual-sided incentives",href:"https://dub.co/help/article/dual-sided-incentives"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"AI landing page generator",href:"https://dub.co/help/article/program-landing-page"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.groups===0?"No":e.limits.groups===u?"Unlimited":p(e.limits.groups)})," ","partner groups"]}),href:"https://dub.co/help/article/partner-groups"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Embedded referral dashboard",href:"https://dub.co/docs/partners/embedded-referrals"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Partners API",href:"https://dub.co/docs/api-reference/endpoint/create-a-partner"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Messaging center"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Email campaigns (beta)"},{check:{default:!1,advanced:!0,enterprise:!0},text:"Fraud & risk prevention"},{check:{default:!1,enterprise:!0},text:"Partner network access"}]},{category:"Analytics",href:"https://dub.co/analytics",features:[{text:"Advanced analytics",href:"https://dub.co/help/article/dub-analytics"},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.clicks)})," ","tracked clicks",e.name==="Enterprise"?"":"/mo"]}),href:"https://dub.co/help/article/dub-analytics-limits"},{text:({plan:e})=>l(a,{children:[o("strong",{children:e.limits.retention})," retention"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Conversion tracking",href:"https://dub.co/help/article/dub-conversions"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Customer insights",href:"https://dub.co/help/article/customer-insights"},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Real-time events stream",href:"https://dub.co/help/article/real-time-events-stream"}]},{category:"Domains",href:"https://dub.co/help/category/custom-domains",features:[{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.domains,{full:!0})})," ","custom domains"]})},{text:()=>o(a,{children:"SSL certificates"})},{check:{default:!0,free:!1},text:()=>l(a,{children:["Premium ",o("strong",{children:"dub.link"})," domain"]}),href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"},{check:{default:!0,free:!1},text:()=>l(a,{children:["Free ",o("strong",{children:".link"})," domain"]}),href:"https://dub.co/help/article/free-dot-link-domain"}]},{category:"API",href:"https://dub.co/docs/api-reference/introduction",features:[{text:"API Access",href:"https://dub.co/docs/api-reference/introduction"},{text:"Native SDKs",href:"https://dub.co/docs/sdks/overview"},{text:({id:e,plan:t})=>l(a,{children:[o("strong",{children:e==="enterprise"?"Custom":p(t.limits.api,{full:!0})+"/min"})," ","rate limit"]})},{check:{default:!1,business:!0,advanced:!0,enterprise:!0},text:"Event webhooks",href:"https://dub.co/docs/concepts/webhooks/introduction"}]},{category:"Workspace",href:"https://dub.co/help/category/workspaces",features:[{text:({plan:e})=>l(a,{children:[o("strong",{children:e.name==="Enterprise"?"Unlimited":p(e.limits.users)})," ","user",e.limits.users===1?"":"s"]})},{check:{default:!1,advanced:!0,enterprise:!0},text:"Role-based access control"},{check:{default:!1,enterprise:!0},text:"SAML/SSO",href:"https://dub.co/help/category/saml-sso"},{check:{default:!1,enterprise:!0},text:"Audit logs"}]},{category:"Support",href:"https://dub.co/contact/support",features:[{text:({id:e})=>o(a,{children:o("strong",{children:{free:"Basic support",pro:"Elevated support",business:"Priority support",advanced:"Priority via Slack",enterprise:"Priority with SLA"}[e]})})},{check:{default:!1,enterprise:!0},text:()=>l(a,{children:[o("strong",{children:"Dedicated"})," success manager"]})}]}];import S from"@sindresorhus/slugify";var ee=e=>{let t=S(e,{separator:""});if(t.length<3)return"";if(f.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&f.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((s,i)=>s.length<i.length?s:i)}.link`},te=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),re=new RegExp(/^[a-zA-Z0-9\-]+$/),se=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),ie=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";let r=t.split(".");return r.length>2?E.has(r[r.length-2])&&f.has(r[r.length-1])||_.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},oe=e=>{if(A(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},ne=e=>P.some(t=>t.slug===e);function ce({domain:e,key:t,pretty:r,searchParams:n}){if(!e)return"";let s=`https://${g(e)}${t&&t!=="_root"?`/${g(t)}`:""}`;if(n){let i=new URLSearchParams;for(let[d,m]of Object.entries(n))i.set(d,m);s+=`?${i.toString()}`}return r?s.replace(/^https?:\/\//,""):s}function pe({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var v=["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"],J={2:["price_1SQtg3AlJJEpqkPVVhDSyd9u","price_1SQtg3AlJJEpqkPVNHYhTRy7","price_1SQ8hiAlJJEpqkPVIy8pfvAC","price_1SQ8gwAlJJEpqkPVb78Oc9Yc"]},L=["price_1R8XtyAlJJEpqkPV5WZ4c0jF","price_1R8XtEAlJJEpqkPV4opVvVPq","price_1R8XxZAlJJEpqkPVqGi0wOqD","price_1R7oeBAlJJEpqkPVh6q5q3h8",...Object.values(J).flat()],R=["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"],w={2:["price_1SQtdxAlJJEpqkPV4kNkRHZr","price_1SQtdxAlJJEpqkPV7cvJTv4g","price_1SQ8iwAlJJEpqkPVEGmKd6Lg","price_1SQ8iSAlJJEpqkPVQ5crmBtF"]},I=["price_1R3j01AlJJEpqkPVXuG1eNzm","price_1R6JedAlJJEpqkPVMUkfjch4","price_1R8XypAlJJEpqkPVdjzOcYUC","price_1R7ofLAlJJEpqkPV3MlgDpyx",...Object.values(w).flat()],k={2:["price_1SQtg6AlJJEpqkPVAJdrStq7","price_1SQtg6AlJJEpqkPVaZNisQdm","price_1SQ8jlAlJJEpqkPV6EanvSXl","price_1SQ8jJAlJJEpqkPVIwY9QZSP"],3:["price_1SQtg8AlJJEpqkPVvQVU7uQ3","price_1SQtg8AlJJEpqkPV4Nks8MkS","price_1SQ8lqAlJJEpqkPVzBaioV3I","price_1SQ8lOAlJJEpqkPVz2R8SRss"]},N=["price_1R8Xw4AlJJEpqkPV6nwdink9","price_1R3j0qAlJJEpqkPVkfGNXRwb","price_1R8XztAlJJEpqkPVnHmIU2tf","price_1R7ofzAlJJEpqkPV0L2TwyJo",...Object.values(k).flat()],c=[{name:"Free",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,payouts:0,domains:3,tags:5,folders:0,groups:0,networkInvites:0,users:1,ai:10,api:60,retention:"30-day"}},{name:"Pro",price:{monthly:30,yearly:25,ids:[...v,...L]},limits:{links:1e3,clicks:5e4,payouts:0,domains:10,tags:25,folders:3,groups:0,networkInvites:0,users:3,ai:1e3,api:600,retention:"1-year"},tiers:{2:{price:{monthly:60,yearly:50,ids:J[2]},limits:{links:5e3,clicks:15e4}}},featureTitle:"Everything in Free, plus:",features:[{id:"clicks",text:"50K tracked clicks/mo"},{id:"links",text:"1K new links/mo"},{id:"retention",text:"1-year analytics retention"},{id:"domains",text:"10 domains"},{id:"users",text:"3 users"},{id:"advanced",text:"Advanced link features",tooltip:"ADVANCED_LINK_FEATURES"},{id:"ai",text:"Unlimited AI credits",tooltip:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{id:"dotlink",text:"Free .link domain",tooltip:{title:"All our paid plans come with a free .link custom domain, which helps improve click-through rates.",cta:"Learn more.",href:"https://dub.co/help/article/free-dot-link-domain"}},{id:"folders",text:"Link folders",tooltip:{title:"Organize and manage access to your links on Dub using folders.",cta:"Learn more.",href:"https://dub.co/help/article/link-folders"}},{id:"deeplinks",text:"Deep links",tooltip:{title:"Redirect users to a specific page within your mobile application using deep links.",cta:"Learn more.",href:"https://dub.co/docs/concepts/deep-links/quickstart"}}]},{name:"Business",price:{monthly:90,yearly:75,ids:[...R,...I]},limits:{links:1e4,clicks:25e4,payouts:25e4,domains:100,tags:u,folders:20,groups:3,networkInvites:0,users:10,ai:1e3,api:1200,retention:"3-year"},tiers:{2:{price:{monthly:180,yearly:150,ids:w[2]},limits:{links:25e3,clicks:5e5}}},featureTitle:"Everything in Pro, plus:",features:[{id:"clicks",text:"250K tracked clicks/mo"},{id:"links",text:"10K new links/mo"},{id:"retention",text:"3-year analytics retention"},{id:"payouts",text:"$2.5K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"10 users"},{id:"partners",text:"Dub Partners",tooltip:{title:"Use Dub Partners to manage and pay out your affiliates.",cta:"Learn more.",href:"https://dub.co/partners"}},{id:"customerinsights",text:"Customer insights",tooltip:{title:"Get real-time insights into your customers' behavior and preferences.",cta:"Learn more.",href:"https://dub.co/help/article/customer-insights"}},{id:"events",text:"Real-time events stream",tooltip:{title:"Get more data on your link clicks and QR code scans with a detailed, real-time stream of events in your workspace",cta:"Learn more.",href:"https://dub.co/help/article/real-time-events-stream"}},{id:"webhooks",text:"Event webhooks",tooltip:{title:"Get real-time notifications when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://dub.co/docs/concepts/webhooks/introduction"}},{id:"tests",text:"A/B testing"}]},{name:"Advanced",price:{monthly:300,yearly:250,ids:N},limits:{links:5e4,clicks:1e6,payouts:15e5,domains:250,tags:u,folders:50,groups:10,networkInvites:0,users:20,ai:1e3,api:3e3,retention:"5-year"},tiers:{2:{price:{monthly:600,yearly:500,ids:k[2]},limits:{links:15e4,clicks:2e6}},3:{price:{monthly:900,yearly:750,ids:k[3]},limits:{links:3e5,clicks:35e5}}},featureTitle:"Everything in Business, plus:",features:[{id:"clicks",text:"1M tracked clicks/mo"},{id:"links",text:"50K new links/mo"},{id:"retention",text:"5-year analytics retention"},{id:"payouts",text:"$15K partner payouts/mo",tooltip:{title:"Send payouts to your partners with 1-click (or automate it completely) \u2013 all across the world.",cta:"Learn more.",href:"https://dub.co/help/article/partner-payouts"}},{id:"users",text:"20 users"},{id:"flexiblerewards",text:"Advanced reward structures",tooltip:{title:"Create dynamic click, lead, or sale-based rewards with country and product-specific modifiers.",cta:"Learn more.",href:"https://dub.co/help/article/partner-rewards"}},{id:"embeddedreferrals",text:"Embedded referral dashboard",tooltip:{title:"Create an embedded referral dashboard directly in your app in just a few lines of code.",cta:"Learn more.",href:"https://dub.co/docs/partners/embedded-referrals"}},{id:"messages",text:"Messaging center",tooltip:{title:"Easily communicate with your partners using our messaging center."}},{id:"email",text:"Email campaigns",tooltip:{title:"Send marketing and transactional emails to your partners to increase engagement and drive conversions.",cta:"Learn more.",href:"https://dub.co/help/article/email-campaigns"}},{id:"slack",text:"Priority Slack support"}]},{name:"Enterprise",price:{monthly:null,yearly:null},limits:{links:5e5,clicks:5e6,payouts:u,domains:250,tags:u,folders:u,groups:u,networkInvites:20,users:30,ai:1e3,api:3e3,retention:"Unlimited"}}],q=c.find(e=>e.name==="Free"),V=c.find(e=>e.name==="Pro"),We=c.find(e=>e.name==="Business"),He=c.find(e=>e.name==="Advanced"),D=c.find(e=>e.name==="Enterprise"),et=c.filter(e=>["Pro","Business","Advanced"].includes(e.name)),tt=2,x=(e,t)=>{var s;let r=e.tiers&&t>1?e.tiers[t]:void 0,n=(r==null?void 0:r.limits)??e.limits;return{...e,limits:{...e.limits,...n},price:{...e.price,...r==null?void 0:r.price},features:(s=e.features)==null?void 0:s.map(i=>({...i,text:i.id==="clicks"?`${p(n.clicks)} tracked clicks/mo`:i.id==="links"?`${p(n.links)} new links/mo`:i.text}))}},rt=({priceId:e})=>{var n;let t=c.find(s=>{var i;return(i=s.price.ids)==null?void 0:i.includes(e)});if(!t)return{plan:null,planTier:1};let r=t.tiers&&Number((n=Object.entries(t.tiers).find(([s,{price:i}])=>i.ids.includes(e)))==null?void 0:n[0])||1;return{plan:x(t,r),planTier:r}},st=({plan:e,planTier:t=1})=>{let r=c.find(n=>n.name.toLowerCase()===e.toLowerCase());return x(r,t)},it=e=>c.find(t=>t.name.toLowerCase()===e.toLowerCase())||q,ot=e=>{if(!e)return V;let t=e.toLowerCase().split(" ")[0];return c[Math.min(c.findIndex(r=>r.name.toLowerCase()===t)+1,c.length-1)]},nt=({currentPlan:e,newPlan:t,currentTier:r,newTier:n})=>{let s=c.findIndex(d=>d.name.toLowerCase()===e.toLowerCase()),i=c.findIndex(d=>d.name.toLowerCase()===t.toLowerCase());return s>i||s===i&&(r??1)>(n??1)},at=({events:e,links:t,suggestFree:r=!1})=>{let n=null;for(let s of c){if(!r&&s.price.monthly===0)continue;let i=[1,...Object.keys(s.tiers??{}).map(Number).filter(d=>d>=2)].find(d=>{var b,y;let m=d===1?s.limits:((y=(b=s.tiers)==null?void 0:b[d])==null?void 0:y.limits)??s.limits;return m.clicks>=(e??0)&&m.links>=(t??0)});if(i!==void 0){n={plan:x(s,i),planTier:i};break}}return n??{plan:D,planTier:1}},lt=({plan:e="business",payoutsLimit:t=0})=>e==="business"&&t===0;var Dt=e=>!e.periodStart||!e.periodEnd?"-":`${h(e.periodStart,{month:"short",year:new Date(e.periodStart).getUTCFullYear()===new Date(e.periodEnd).getUTCFullYear()?void 0:"numeric",timeZone:"utc"})}-${h(e.periodEnd,{month:"short",timeZone:"utc"})}`;export{O as a,Dt as b,ee as c,te as d,re as e,se as f,ie as g,oe as h,ne as i,ce as j,pe as k,I as l,c as m,q as n,V as o,We as p,He as q,D as r,et as s,tt as t,rt as u,st as v,it as w,ot as x,nt as y,at as z,lt as A};