@dub/utils 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/chunk-2XAMRYVK.mjs +1 -0
  2. package/dist/chunk-3GCN4HA4.mjs +1 -0
  3. package/dist/chunk-5FMO7B5J.mjs +1 -0
  4. package/dist/chunk-5NSSGMZZ.mjs +1 -0
  5. package/dist/chunk-76CYQQG5.mjs +1 -0
  6. package/dist/chunk-7XNPHON3.mjs +1 -0
  7. package/dist/chunk-ADJH4SHJ.mjs +1 -0
  8. package/dist/chunk-AYYKF54K.mjs +1 -0
  9. package/dist/chunk-BJM4PMEU.mjs +1 -0
  10. package/dist/chunk-BTQIQY4I.mjs +1 -0
  11. package/dist/chunk-C3BOX3ZI.mjs +1 -0
  12. package/dist/chunk-DHIGRGJB.mjs +1 -0
  13. package/dist/chunk-EXXMK7C7.mjs +1 -0
  14. package/dist/chunk-EYTXVSJO.mjs +1 -0
  15. package/dist/chunk-IQMDURS4.mjs +1 -0
  16. package/dist/chunk-JRFW2Z7K.mjs +1 -0
  17. package/dist/chunk-KHEOMFJO.mjs +1 -0
  18. package/dist/chunk-LDRVQRHB.mjs +1 -0
  19. package/dist/chunk-LQH3L553.mjs +1 -0
  20. package/dist/chunk-NJFS24XJ.mjs +1 -0
  21. package/dist/chunk-PIGJBSTW.mjs +1 -0
  22. package/dist/chunk-Q5GWOIC4.mjs +1 -0
  23. package/dist/chunk-QBIIDUGY.mjs +1 -0
  24. package/dist/chunk-QRQRXQB3.mjs +1 -0
  25. package/dist/chunk-SKZLT3BC.mjs +1 -0
  26. package/dist/chunk-U36EBWIR.mjs +1 -0
  27. package/dist/chunk-UARSF2WB.mjs +1 -0
  28. package/dist/chunk-UEBSZ4PU.mjs +1 -0
  29. package/dist/chunk-UMNOQB74.mjs +1 -0
  30. package/dist/chunk-UVI7BYOX.mjs +1 -0
  31. package/dist/chunk-V4MEBSZM.mjs +1 -0
  32. package/dist/chunk-VFWC3CBA.mjs +1 -0
  33. package/dist/chunk-WOV4CBJE.mjs +1 -0
  34. package/dist/chunk-ZMFTTE3Z.mjs +1 -0
  35. package/dist/chunk-ZQE2ESQW.mjs +1 -0
  36. package/dist/constants/dub-domains.mjs +1 -1
  37. package/dist/constants/index.d.ts +3 -3
  38. package/dist/constants/index.mjs +1 -1
  39. package/dist/constants/layout.d.ts +1 -2
  40. package/dist/constants/layout.mjs +1 -1
  41. package/dist/constants/main.d.ts +2 -1
  42. package/dist/constants/main.mjs +1 -1
  43. package/dist/constants/middleware.d.ts +1 -2
  44. package/dist/constants/middleware.mjs +1 -1
  45. package/dist/constants/misc.mjs +1 -1
  46. package/dist/constants/saml.mjs +1 -1
  47. package/dist/functions/construct-metadata.mjs +1 -1
  48. package/dist/functions/domains.d.ts +1 -2
  49. package/dist/functions/domains.mjs +1 -1
  50. package/dist/functions/index.d.ts +2 -1
  51. package/dist/functions/index.mjs +1 -1
  52. package/dist/functions/is-iframeable.mjs +1 -1
  53. package/dist/functions/keys.d.ts +5 -0
  54. package/dist/functions/keys.mjs +1 -0
  55. package/dist/functions/link-constructor.mjs +1 -1
  56. package/dist/index.d.ts +5 -4
  57. package/dist/index.mjs +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ var _=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",s=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",e=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,o=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),t=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",p=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",P=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${s}`,"api.localhost:8888"]),c=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",n=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),r=new Set([`partners.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`partners-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"partners.localhost:8888"]),A="https://assets.dub.co/logo.png",N="https://assets.dub.co/logo.png",E="https://assets.dub.co/wordmark.png",I="https://assets.dub.co/thumbnail.jpg",L="cl7pj5kq4006835rbjlt2ofka",O="clrei1gld0002vs9mzn93p8ik",a="clrflia0j0000vs7sqfhz9c7q",v="clqei1lgc0000vsnzi01pbf47",C=process.env.STORAGE_BASE_URL;export{_ as a,s as b,e as c,o as d,t as e,p as f,P as g,c as h,n as i,r as j,A as k,N as l,E as m,I as n,L as o,O as p,a as q,v as r,C as s};
@@ -0,0 +1 @@
1
+ import{b as o,n as e}from"./chunk-WVS4MPBR.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cm23qevp4000412mqwvtkthzw",slug:"cal.link",verified:!0,primary:!1,archived:!1,placeholder:"https://cal.com/steven",allowedHostnames:["cal.com","calendly.com","chillipiper.com","hubspot.com","savvycal.com"],description:"Branded domain for your scheduling links (Cal.com, Calendly, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.co","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,placeholder:"https://d.to/long",description:"Branded domain for lengthening links instead of shortening them (April Fool's Prank).",projectId:e}]:[]],t=a.map(i=>i.slug),d=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}];export{a,t as b,d as c};
@@ -0,0 +1 @@
1
+ var o=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),p=t=>{let s=[".well-known"],n=[".php",".php7"];return s.some(e=>t.startsWith(e))||n.some(e=>t.endsWith(e))};export{o as a,p as b};
@@ -0,0 +1 @@
1
+ import{b as o,n as e}from"./chunk-WVS4MPBR.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cm23qevp4000412mqwvtkthzw",slug:"cal.link",verified:!0,primary:!1,archived:!1,placeholder:"https://cal.com/steven",allowedHostnames:["cal.com","calendly.com","chillipiper.com","hubspot.com","savvycal.com","zcal.co"],description:"Branded domain for your scheduling links (Cal.com, Calendly, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.co","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,placeholder:"https://d.to/long",description:"Branded domain for lengthening links instead of shortening them (April Fool's Prank).",projectId:e}]:[]],t=a.map(i=>i.slug),d=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}],s=["cal.link","git.new","spti.fi"];export{a,t as b,d as c,s as d};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-WOV4CBJE.mjs";import{c as f}from"./chunk-2XAMRYVK.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ function i(e,r={digits:1}){if(!e)return"0";if(r.full)return Intl.NumberFormat("en-US").format(e);let t=/\.0+$|(\.[0-9]*[1-9])0+$/;if(e<1)return e.toFixed(r.digits).replace(t,"$1");var l=[{value:1,symbol:""},{value:1e3,symbol:"K"},{value:1e6,symbol:"M"},{value:1e9,symbol:"G"},{value:1e12,symbol:"T"},{value:1e15,symbol:"P"},{value:1e18,symbol:"E"}].slice().reverse().find(function(o){return e>=o.value});return l?(e/l.value).toFixed(r.digits).replace(t,"$1")+l.symbol:"0"}export{i as a};
@@ -0,0 +1 @@
1
+ var e=[{name:"Spotify Link Shortener",slug:"spotify-link-shortener"},{name:"ChatGPT Link Shortener",slug:"chatgpt-link-shortener"},{name:"GitHub Link Shortener",slug:"github-link-shortener"},{name:"Calendar Link Shortener",slug:"cal-link-shortener"},{name:"Google Link Shortener",slug:"google-link-shortener"},{name:"Amazon Link Shortener",slug:"amazon-link-shortener"},{name:"Figma Link Shortener",slug:"figma-link-shortener"},{name:"Metatags API",slug:"metatags"},{name:"Link Inspector",slug:"inspector"},{name:"QR Code API",slug:"qr-code"},{name:"UTM Builder",slug:"utm-builder"}],n=[{name:"Bitly",slug:"bitly"},{name:"Rebrandly",slug:"rebrandly"},{name:"Short.io",slug:"short"}],r=[{name:"Privacy",slug:"privacy"},{name:"Terms",slug:"terms"},{name:"Subprocessors",slug:"subprocessors"},{name:"DPA",slug:"dpa"},{name:"Report Abuse",slug:"abuse"}];export{e as a,n as b,r as c};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-5NSSGMZZ.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-ZMFTTE3Z.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-UARSF2WB.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ var c=async({url:n,requestDomain:i})=>{let r=await fetch(n),t=r.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=r.headers.get("content-security-policy");if(!s)return!0;let e=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(e&&(e[1]==="*"||e[1].split(/\s+/).includes(i)))};export{c as a};
@@ -0,0 +1 @@
1
+ var e={key:"",url:"",domain:"",archived:!1,tags:[],webhookIds:[],title:null,description:null,image:null,video:null,trackConversion:!1,proxy:!1,rewrite:!1,expiresAt:null,password:null,ios:null,android:null,doIndex:!1,clicks:0,userId:""},o="https://www.google.com/s2/favicons?sz=64&domain_url=",n="https://api.dicebear.com/7.x/initials/svg?backgroundType=gradientLinear&fontFamily=Helvetica&fontSize=40&seed=",l=100,s=60*60*24*14,t=new Date("2022-09-22T00:00:00.000Z");export{e as a,o as b,n as c,l as d,s as e,t as f};
@@ -0,0 +1 @@
1
+ import{b as o,n as e}from"./chunk-WVS4MPBR.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cm23qevp4000412mqwvtkthzw",slug:"cal.link",verified:!0,primary:!1,archived:!1,placeholder:"https://cal.com/steven",allowedHostnames:["cal.com","calendly.com","chillipiper.com","hubspot.com","savvycal.com","zcal.co"],description:"Branded domain for your scheduling links (Cal.com, Calendly, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.co","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,placeholder:"https://d.to/long",description:"Branded domain for lengthening links instead of shortening them (April Fool's Prank).",projectId:e}]:[]],t=a.map(i=>i.slug),d=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}];export{a,t as b,d as c};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-SKZLT3BC.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),V=new RegExp(/^[a-zA-Z0-9\-]+$/),C=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),q=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},N=e=>{if(h(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}},R=e=>x.some(t=>t.slug===e);function M({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function $({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function $e({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{$e as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,R as i,M as j,$ as k,s as l,k as m,b as n,E as o,A as p,xe as q,J as r,he as s,ke as t,be as u,ye as v,Pe as w};
@@ -0,0 +1 @@
1
+ var o=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),r=e=>{let t=[".well-known"],n=[".php",".php7"];return t.some(s=>e.startsWith(s))||n.some(s=>e.endsWith(s))},i=e=>["favicon.ico","sitemap.xml","robots.txt","manifest.webmanifest"].includes(e);export{o as a,r as b,i as c};
@@ -0,0 +1 @@
1
+ var o=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),r=e=>{let t=[".well-known"],n=[".php",".php7"];return t.some(s=>e.startsWith(s))||n.some(s=>e.endsWith(s))},i=e=>["favicon.ico","sitemap.xml","robots.txt","manifest.webmanifest","manifest.json"].includes(e);export{o as a,r as b,i as c};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-7XNPHON3.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-UARSF2WB.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),V=new RegExp(/^[a-zA-Z0-9\-]+$/),C=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),q=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},N=e=>{if(h(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}},R=e=>x.some(t=>t.slug===e);function M({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function $({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function $e({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{$e as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,R as i,M as j,$ as k,s as l,k as m,b as n,E as o,A as p,xe as q,J as r,he as s,ke as t,be as u,ye as v,Pe as w};
@@ -0,0 +1 @@
1
+ import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-UARSF2WB.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),V=new RegExp(/^[a-zA-Z0-9\-]+$/),C=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),q=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},N=e=>{if(h(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}},R=e=>x.some(t=>t.slug===e);function M({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function $({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function $e({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{$e as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,R as i,M as j,$ as k,s as l,k as m,b as n,E as o,A as p,xe as q,J as r,he as s,ke as t,be as u,ye as v,Pe as w};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-EXXMK7C7.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ var o=[{name:"Okta",logo:"https://assets.dub.co/misc/icons/okta.svg",saml:"okta",samlModalCopy:"Metadata URL",scim:"okta-scim-v2",scimModalCopy:{url:"SCIM 2.0 Base URL",token:"OAuth Bearer Token"},wip:!1},{name:"Azure AD",logo:"https://assets.dub.co/misc/icons/azure.svg",saml:"azure",samlModalCopy:"App Federation Metadata URL",scim:"azure-scim-v2",scimModalCopy:{url:"Tenant URL",token:"Secret Token"},wip:!1},{name:"Google",logo:"https://assets.dub.co/misc/icons/google.svg",saml:"google",samlModalCopy:"XML Metadata File",scim:"google",scimModalCopy:{url:"SCIM 2.0 Base URL",token:"OAuth Bearer Token"},wip:!1}];export{o as a};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-3GCN4HA4.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ import{a as k}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as l}from"./chunk-YUMUNL66.mjs";import{a as f,b as g}from"./chunk-SYT2IXG6.mjs";import{a as h}from"./chunk-SEF2W7A7.mjs";import{c as x}from"./chunk-WVS4MPBR.mjs";import E from"@sindresorhus/slugify";var v=e=>{let t=E(e,{separator:""});if(t.length<3)return"";if(l.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&l.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,s)=>n.length<s.length?n:s)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),V=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),C=new RegExp(/^[a-zA-Z0-9\-]+$/),q=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),N=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?f.has(r[r.length-2])&&l.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},R=e=>{if(k(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}},I=e=>h.some(t=>t.slug===e);function $({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let s=new URLSearchParams;for(let[a,p]of Object.entries(o))s.set(a,p);n+=`?${s.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function z({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var c=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:s=40,tags:a=150,folders:p=150,users:d=15,ids:P=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:P},limits:{links:o,clicks:n,domains:s,tags:a,folders:p,users:d,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${s} custom domains`},{text:`${d} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),i=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,folders:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,folders:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},c({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,folders:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),c({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,folders:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),c({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,folders:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),c({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,folders:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,folders:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],b=i.find(e=>e.name==="Free"),y=i.find(e=>e.name==="Pro"),A=i.find(e=>e.name==="Business"),J=i.find(e=>e.name==="Enterprise"),he=[b,y,A,J],L=i.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),ke=2,be=e=>i.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,ye=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),Pe=e=>i.find(t=>t.name.toLowerCase()===e.toLowerCase())||b,Ee=e=>e?i[i.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:y;function ze({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:s,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(x),...s&&{alternates:{canonical:s}},...a&&{robots:{index:!1,follow:!1}}}}export{ze as a,v as b,S as c,V as d,C as e,q as f,N as g,R as h,I as i,$ as j,z as k,i as l,b as m,y as n,A as o,J as p,he as q,L as r,ke as s,be as t,ye as u,Pe as v,Ee as w};
@@ -0,0 +1 @@
1
+ import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-UARSF2WB.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),V=new RegExp(/^[a-zA-Z0-9\-]+$/),C=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),q=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},N=e=>{if(h(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}},R=e=>x.some(t=>t.slug===e);function M({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function $({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function $e({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{$e as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,R as i,M as j,$ as k,s as l,k as m,b as n,E as o,A as p,xe as q,J as r,he as s,ke as t,be as u,ye as v,Pe as w};
@@ -0,0 +1 @@
1
+ var s=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),t=e=>[".php",".php7"].some(n=>e.endsWith(n));export{s as a,t as b};
@@ -0,0 +1 @@
1
+ import{b as o,n as e}from"./chunk-WVS4MPBR.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e}]:[]],d=a.map(i=>i.slug),l=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}];export{a,d as b,l as c};
@@ -0,0 +1 @@
1
+ import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-SEF2W7A7.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),V=new RegExp(/^[a-zA-Z0-9\-]+$/),C=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),q=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},N=e=>{if(h(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}},R=e=>x.some(t=>t.slug===e);function M({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function $({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function $e({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{$e as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,R as i,M as j,$ as k,s as l,k as m,b as n,E as o,A as p,xe as q,J as r,he as s,ke as t,be as u,ye as v,Pe as w};
@@ -0,0 +1 @@
1
+ import{b as o,n as e}from"./chunk-WVS4MPBR.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cm23qevp4000412mqwvtkthzw",slug:"cal.link",verified:!0,primary:!1,archived:!1,placeholder:"https://cal.com/steven",allowedHostnames:["cal.com","calendly.com"],description:"Branded domain for your calendar links (Cal.com, Calendly, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,placeholder:"https://d.to/long",description:"Branded domain for lengthening links instead of shortening them (April Fool's Prank).",projectId:e}]:[]],l=a.map(i=>i.slug),d=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}];export{a,l as b,d as c};
@@ -0,0 +1 @@
1
+ var o=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),i=e=>{let t=[".well-known"],n=[".php",".php7"];return t.some(s=>e.startsWith(s))||n.some(s=>e.endsWith(s))},r=e=>["favicon.ico","sitemap.xml","robots.txt","manifest.webmanifest","manifest.json","apple-app-site-association"].includes(e);export{o as a,i as b,r as c};
@@ -0,0 +1 @@
1
+ import{a as k}from"./chunk-6QCWHFAZ.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import{a as l}from"./chunk-YUMUNL66.mjs";import{a as f,b as g}from"./chunk-SYT2IXG6.mjs";import{a as h}from"./chunk-UARSF2WB.mjs";import{c as x}from"./chunk-WVS4MPBR.mjs";import E from"@sindresorhus/slugify";var v=e=>{let t=E(e,{separator:""});if(t.length<3)return"";if(l.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&l.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,s)=>n.length<s.length?n:s)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),V=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),C=new RegExp(/^[a-zA-Z0-9\-]+$/),q=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),N=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?f.has(r[r.length-2])&&l.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},R=e=>{if(k(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}},I=e=>h.some(t=>t.slug===e);function $({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let s=new URLSearchParams;for(let[a,p]of Object.entries(o))s.set(a,p);n+=`?${s.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function z({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var c=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:s=40,tags:a=150,folders:p=150,users:d=15,ids:P=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:P},limits:{links:o,clicks:n,domains:s,tags:a,folders:p,users:d,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${s} custom domains`},{text:`${d} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),i=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,folders:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,folders:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},c({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,folders:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),c({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,folders:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),c({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,folders:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),c({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,folders:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,folders:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],b=i.find(e=>e.name==="Free"),y=i.find(e=>e.name==="Pro"),A=i.find(e=>e.name==="Business"),J=i.find(e=>e.name==="Enterprise"),he=[b,y,A,J],L=i.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),ke=2,be=e=>i.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,ye=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),Pe=e=>i.find(t=>t.name.toLowerCase()===e.toLowerCase())||b,Ee=e=>e?i[i.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:y;function ze({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:s,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(x),...s&&{alternates:{canonical:s}},...a&&{robots:{index:!1,follow:!1}}}}export{ze as a,v as b,S as c,V as d,C as e,q as f,N as g,R as h,I as i,$ as j,z as k,i as l,b as m,y as n,A as o,J as p,he as q,L as r,ke as s,be as t,ye as u,Pe as v,Ee as w};
@@ -0,0 +1 @@
1
+ var p=new RegExp(/^[0-9A-Za-z_\u0080-\uFFFF\/\-\p{Emoji}.]+$/u),i=e=>{let t=["apple-app-site-association"],n=[".well-known"],o=[".php",".php7"];return t.includes(e)||n.some(s=>e.startsWith(s))||o.some(s=>e.endsWith(s))};export{p as a,i as b};
@@ -0,0 +1 @@
1
+ var e=["stats","changelog","legal"],n=[{name:"Spotify Link Shortener",slug:"spotify-link-shortener"},{name:"ChatGPT Link Shortener",slug:"chatgpt-link-shortener"},{name:"GitHub Link Shortener",slug:"github-link-shortener"},{name:"Calendar Link Shortener",slug:"cal-link-shortener"},{name:"Google Link Shortener",slug:"google-link-shortener"},{name:"Amazon Link Shortener",slug:"amazon-link-shortener"},{name:"Figma Link Shortener",slug:"figma-link-shortener"},{name:"Metatags API",slug:"metatags"},{name:"Link Inspector",slug:"inspector"},{name:"QR Code API",slug:"qr-code"},{name:"UTM Builder",slug:"utm-builder"}],r=[{name:"Bitly",slug:"bitly"},{name:"Rebrandly",slug:"rebrandly"},{name:"Short.io",slug:"short"}],s=[{name:"Privacy",slug:"privacy"},{name:"Terms",slug:"terms"},{name:"Subprocessors",slug:"subprocessors"},{name:"DPA",slug:"dpa"},{name:"Report Abuse",slug:"abuse"}];export{e as a,n as b,r as c,s as d};
@@ -0,0 +1 @@
1
+ import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-UARSF2WB.mjs";import{c as f}from"./chunk-WVS4MPBR.mjs";import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -0,0 +1 @@
1
+ import{b as o,o as e}from"./chunk-2XAMRYVK.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cm23qevp4000412mqwvtkthzw",slug:"cal.link",verified:!0,primary:!1,archived:!1,placeholder:"https://cal.com/steven",allowedHostnames:["cal.com","calendly.com","chillipiper.com","hubspot.com","savvycal.com","zcal.co"],description:"Branded domain for your scheduling links (Cal.com, Calendly, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.co","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,placeholder:"https://d.to/long",description:"Branded domain for lengthening links instead of shortening them (April Fool's Prank).",projectId:e}]:[]],t=a.map(i=>i.slug),d=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}];export{a,t as b,d as c};
@@ -0,0 +1 @@
1
+ import{b as o,n as e}from"./chunk-WVS4MPBR.mjs";var a=[{id:"clce1z7ch00j0rbstbjufva4j",slug:o,verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"The default domain for all new accounts.",projectId:e},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clxp3lfsb00011na8tfs7t0lx",slug:"dub.link",verified:!0,primary:!0,archived:!1,placeholder:"https://dub.co/help/article/what-is-dub",allowedHostnames:[],description:"Premium short domain on Dub \u2013 only available on our Pro plan and above.",projectId:e},{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",allowedHostnames:["openai.com","chatgpt.com"],description:"Branded domain for ChatGPT links (convos, custom GPTs).",projectId:e},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",allowedHostnames:["spotify.com"],description:"Branded domain for Spotify links (songs, playlists, etc.).",projectId:e},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,placeholder:"https://github.com/dubinc/dub",allowedHostnames:["github.com"],description:"Branded domain for GitHub links (repositories, gists, etc.).",projectId:e},{id:"cm23qevp4000412mqwvtkthzw",slug:"cal.link",verified:!0,primary:!1,archived:!1,placeholder:"https://cal.com/steven",allowedHostnames:["cal.com","calendly.com"],description:"Branded domain for your calendar links (Cal.com, Calendly, etc.).",projectId:e},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],description:"Branded domain for Amazon links (products, wishlists, etc.).",projectId:e},{id:"clymd6zkc0001elilr1215tj9",slug:"ggl.link",verified:!0,primary:!1,archived:!1,placeholder:"https://docs.google.com/document/d/15-GOZA12SXGEh8lNwU5QI1jBi04TCPgY2-LChTbXVpA",allowedHostnames:["google.com","google.co.uk","google.co.id","google.ca","google.es","google.fr","googleblog.com","blog.google","g.co","g.page","youtube.com","youtu.be"],description:"Branded domain for Google links (Search, Docs, Sheets, Slides, Drive, Maps, etc.).",projectId:e},{id:"clymczttm0001jgkore3ltr37",slug:"fig.page",verified:!0,primary:!1,archived:!1,placeholder:"https://www.figma.com/design/YAfTk6SGV2HcSvL2415oED/Dub.co-Brand-Assets-(Public)?node-id=1-36593&t=QMKQNtUzxSSzG3hX-1",allowedHostnames:["figma.com"],description:"Branded domain for Figma links (portfolios, prototypes, presentations, etc.).",projectId:e},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,placeholder:"https://d.to/long",description:"Branded domain for lengthening links instead of shortening them (April Fool's Prank).",projectId:e}]:[]],l=a.map(i=>i.slug),d=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"},{id:"clymd73o50001ulmzzxjumr8l",domain:"ggl.link",key:"dub"}];export{a,l as b,d as c};
@@ -0,0 +1 @@
1
+ import{a as d,b as g}from"./chunk-SYT2IXG6.mjs";import{a as x}from"./chunk-WOV4CBJE.mjs";import{c as f}from"./chunk-2XAMRYVK.mjs";import{a as h}from"./chunk-6QCWHFAZ.mjs";import{a as c}from"./chunk-YUMUNL66.mjs";import{a as m}from"./chunk-NWFCCRLG.mjs";import{a as u}from"./chunk-IHX4EDUF.mjs";import P from"@sindresorhus/slugify";var O=e=>{let t=P(e,{separator:""});if(t.length<3)return"";if(c.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&c.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,i)=>n.length<i.length?n:i)}.link`},v=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),S=new RegExp(/^[a-zA-Z0-9\-]+$/),V=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),C=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?d.has(r[r.length-2])&&c.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},q=e=>{if(h(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}},N=e=>x.some(t=>t.slug===e);function D({domain:e,key:t,pretty:r,searchParams:o}){if(!e)return"";let n=`https://${u(e)}${t&&t!=="_root"?`/${u(t)}`:""}`;if(o){let i=new URLSearchParams;for(let[a,l]of Object.entries(o))i.set(a,l);n+=`?${i.toString()}`}return r?n.replace(/^https?:\/\//,""):n}function M({domain:e,key:t}){return`https://${e}${t==="_root"?"":`/${t}`}`}var p=({name:e="Business",monthly:t=59,yearly:r=49,links:o=5e3,clicks:n=15e4,domains:i=40,tags:a=150,users:l=15,ids:y=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:r,ids:y},limits:{links:o,clicks:n,domains:i,tags:a,users:l,ai:1e3,api:3e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"Everything in Pro, plus:",features:[{text:`${m(o,{full:!0})} new links/mo`},{text:`${m(n)} tracked clicks/mo`},{text:"3-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Real-time events stream",footnote:{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://d.to/events"}},{text:"Event webhooks (beta)",footnote:{title:"Get notified when a link is clicked or a QR code is scanned using webhooks.",cta:"Learn more.",href:"https://d.to/webhooks"}}]}),s=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10,api:60},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"Advanced analytics",footnote:{title:"Get location (country, city, continent), device (type, browser, OS), and referer data on your clicks.",cta:"Learn more.",href:"https://dub.co/help/article/dub-analytics"}},{text:"10 AI credits/mo"},{text:"Basic support"},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3,api:600},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-600 hover:bg-blue-700 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."},{text:"Unlimited AI credits",footnote:{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"}},{text:"Priority support"},{text:"Premium dub.link domain",footnote:{title:"Stand out from the crowd with a premium dub.link domain.",cta:"Learn more.",href:"https://dub.co/help/article/default-dub-domains#premium-dublink-domain"}},{text:"Complimentary custom domain",footnote:{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"}}]},p({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),p({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:30,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),p({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:50,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),p({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:100,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:25e4,clicks:5e6,domains:1e3,tags:1e3,users:500,ai:1e4,api:1e4},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-gradient-to-r from-violet-600 to-pink-600 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=s.find(e=>e.name==="Free"),b=s.find(e=>e.name==="Pro"),E=s.find(e=>e.name==="Business"),A=s.find(e=>e.name==="Enterprise"),xe=[k,b,E,A],J=s.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),he=2,ke=e=>s.find(t=>{var r;return(r=t.price.ids)==null?void 0:r.includes(e)})||null,be=e=>J.find(t=>t.name.toLowerCase()===e.toLowerCase()),ye=e=>s.find(t=>t.name.toLowerCase()===e.toLowerCase())||k,Pe=e=>e?s[s.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:b;function Be({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management platform for modern marketing teams to create marketing campaigns, link sharing features, and referral programs.`,image:r="https://assets.dub.co/thumbnail.jpg",video:o,icons:n=[{rel:"apple-touch-icon",sizes:"32x32",url:"https://assets.dub.co/favicons/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"https://assets.dub.co/favicons/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"https://assets.dub.co/favicons/favicon-16x16.png"}],canonicalUrl:i,noIndex:a=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...r&&{images:r},...o&&{videos:o}},twitter:{title:e,description:t,...r&&{card:"summary_large_image",images:[r]},...o&&{player:o},creator:"@dubdotco"},icons:n,metadataBase:new URL(f),...i&&{alternates:{canonical:i}},...a&&{robots:{index:!1,follow:!1}}}}export{Be as a,O as b,v as c,S as d,V as e,C as f,q as g,N as h,D as i,M as j,s as k,k as l,b as m,E as n,A as o,xe as p,J as q,he as r,ke as s,be as t,ye as u,Pe as v};
@@ -1 +1 @@
1
- import{a,b,c}from"../chunk-SEF2W7A7.mjs";import"../chunk-WVS4MPBR.mjs";export{c as DUB_DEMO_LINKS,a as DUB_DOMAINS,b as DUB_DOMAINS_ARRAY};
1
+ import{a,b,c}from"../chunk-WOV4CBJE.mjs";import"../chunk-2XAMRYVK.mjs";export{c as DUB_DEMO_LINKS,a as DUB_DOMAINS,b as DUB_DOMAINS_ARRAY};
@@ -5,10 +5,10 @@ export { SECOND_LEVEL_DOMAINS, SPECIAL_APEX_DOMAINS } from './domains.js';
5
5
  export { DUB_DEMO_LINKS, DUB_DOMAINS, DUB_DOMAINS_ARRAY } from './dub-domains.js';
6
6
  export { FADE_IN_ANIMATION_SETTINGS, FRAMER_MOTION_LIST_ITEM_VARIANTS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS } from './framer-motion.js';
7
7
  export { SLACK_INTEGRATION_ID, STRIPE_INTEGRATION_ID } from './integrations.js';
8
- export { ALL_TOOLS, COMPARE_PAGES, HIDE_BACKGROUND_SEGMENTS, LEGAL_PAGES } from './layout.js';
8
+ export { ALL_TOOLS, COMPARE_PAGES, LEGAL_PAGES } from './layout.js';
9
9
  export { LOCALHOST_GEO_DATA, LOCALHOST_IP } from './localhost.js';
10
- export { ACME_WORKSPACE_ID, ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, DUB_LOGO, DUB_QR_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, R2_URL, SHORT_DOMAIN } from './main.js';
11
- export { DEFAULT_REDIRECTS, DUB_HEADERS, RESERVED_PATHS } from './middleware.js';
10
+ export { ACME_WORKSPACE_ID, ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, DUB_LOGO, DUB_QR_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, PARTNERS_HOSTNAMES, R2_URL, SHORT_DOMAIN } from './main.js';
11
+ export { DEFAULT_REDIRECTS, DUB_HEADERS } from './middleware.js';
12
12
  export { DEFAULT_LINK_PROPS, DICEBEAR_AVATAR_URL, DUB_FOUNDING_DATE, GOOGLE_FAVICON_URL, PAGINATION_LIMIT, TWO_WEEKS_IN_SECONDS } from './misc.js';
13
13
  export { B as BUSINESS_PLAN, E as ENTERPRISE_PLAN, F as FREE_PLAN, c as FREE_WORKSPACES_LIMIT, P as PLANS, a as PRO_PLAN, b as PUBLIC_PLANS, S as SELF_SERVE_PAID_PLANS, e as getCurrentPlan, f as getNextPlan, d as getPlanDetails, g as getPlanFromPriceId } from '../pricing-509284b9.js';
14
14
  export { SAML_PROVIDERS } from './saml.js';
@@ -1 +1 @@
1
- import{l as Y,m as Z,n as _,o as $,p as aa,q as ba,r as ca,s as da,t as ea,u as fa,v as ga,w as ha}from"../chunk-7FYKKWAB.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ZOUWCTIR.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import{a as H,b as I}from"../chunk-X46IXCHN.mjs";import{a as J,b as K,c as L,d as M}from"../chunk-AZK6DINZ.mjs";import{a as N,b as O}from"../chunk-2OGPCKQX.mjs";import{a as P,b as Q,c as R}from"../chunk-CH6QMF5Q.mjs";import{a as S,b as T,c as U,d as V,e as W,f as X}from"../chunk-4G4IXMUK.mjs";import{a as ia}from"../chunk-PUFZASP4.mjs";import"../chunk-ORB6LTBV.mjs";import{a}from"../chunk-YUMUNL66.mjs";import{a as b,b as c}from"../chunk-MH5LZNIE.mjs";import{a as d,b as e,c as f}from"../chunk-6YGW3G46.mjs";import{a as g,b as h}from"../chunk-SYT2IXG6.mjs";import{a as A,b as B,c as C}from"../chunk-SEF2W7A7.mjs";import{a as i,b as j,c as k,d as l,e as m,f as n,g as o,h as p,i as q,j as r,k as s,l as t,m as u,n as v,o as w,p as x,q as y,r as z}from"../chunk-WVS4MPBR.mjs";import{a as D,b as E,c as F,d as G}from"../chunk-2SICE2ZS.mjs";export{w as ACME_WORKSPACE_ID,q as ADMIN_HOSTNAMES,K as ALL_TOOLS,p as API_DOMAIN,o as API_HOSTNAMES,m as APP_DOMAIN,n as APP_DOMAIN_WITH_NGROK,l as APP_HOSTNAMES,i as APP_NAME,$ as BUSINESS_PLAN,L as COMPARE_PAGES,b as CONTINENTS,c as CONTINENT_CODES,d as COUNTRIES,e as COUNTRY_CODES,S as DEFAULT_LINK_PROPS,P as DEFAULT_REDIRECTS,U as DICEBEAR_AVATAR_URL,C as DUB_DEMO_LINKS,A as DUB_DOMAINS,B as DUB_DOMAINS_ARRAY,X as DUB_FOUNDING_DATE,R as DUB_HEADERS,r as DUB_LOGO,s as DUB_QR_LOGO,u as DUB_THUMBNAIL,t as DUB_WORDMARK,v as DUB_WORKSPACE_ID,aa as ENTERPRISE_PLAN,f as EU_COUNTRY_CODES,G as FADE_IN_ANIMATION_SETTINGS,D as FRAMER_MOTION_LIST_ITEM_VARIANTS,Z as FREE_PLAN,da as FREE_WORKSPACES_LIMIT,T as GOOGLE_FAVICON_URL,J as HIDE_BACKGROUND_SEGMENTS,k as HOME_DOMAIN,M as LEGAL_PAGES,y as LEGAL_USER_ID,x as LEGAL_WORKSPACE_ID,N as LOCALHOST_GEO_DATA,O as LOCALHOST_IP,V as PAGINATION_LIMIT,Y as PLANS,_ as PRO_PLAN,ba as PUBLIC_PLANS,z as R2_URL,Q as RESERVED_PATHS,ia as SAML_PROVIDERS,g as SECOND_LEVEL_DOMAINS,ca as SELF_SERVE_PAID_PLANS,j as SHORT_DOMAIN,H as SLACK_INTEGRATION_ID,h as SPECIAL_APEX_DOMAINS,E as STAGGER_CHILD_VARIANTS,I as STRIPE_INTEGRATION_ID,F as SWIPE_REVEAL_ANIMATION_SETTINGS,W as TWO_WEEKS_IN_SECONDS,a as ccTLDs,ga as getCurrentPlan,ha as getNextPlan,fa as getPlanDetails,ea as getPlanFromPriceId};
1
+ import{k as X,l as Y,m as Z,n as _,o as $,p as aa,q as ba,r as ca,s as da,t as ea,u as fa,v as ga}from"../chunk-ZQE2ESQW.mjs";import{a as P,b as Q}from"../chunk-YRRD6FUW.mjs";import{a as R,b as S,c as T,d as U,e as V,f as W}from"../chunk-DHIGRGJB.mjs";import{a as ha}from"../chunk-NJFS24XJ.mjs";import{a as d,b as e,c as f}from"../chunk-6YGW3G46.mjs";import{a as g,b as h}from"../chunk-SYT2IXG6.mjs";import{a as B,b as C,c as D}from"../chunk-WOV4CBJE.mjs";import{a as i,b as j,c as k,d as l,e as m,f as n,g as o,h as p,i as q,j as r,k as s,l as t,m as u,n as v,o as w,p as x,q as y,r as z,s as A}from"../chunk-2XAMRYVK.mjs";import{a as E,b as F,c as G,d as H}from"../chunk-2SICE2ZS.mjs";import{a as I,b as J}from"../chunk-X46IXCHN.mjs";import{a as K,b as L,c as M}from"../chunk-ADJH4SHJ.mjs";import{a as N,b as O}from"../chunk-2OGPCKQX.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-6QCWHFAZ.mjs";import{a}from"../chunk-YUMUNL66.mjs";import{a as b,b as c}from"../chunk-MH5LZNIE.mjs";import"../chunk-C3BOX3ZI.mjs";import"../chunk-UEBSZ4PU.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";export{x as ACME_WORKSPACE_ID,q as ADMIN_HOSTNAMES,K as ALL_TOOLS,p as API_DOMAIN,o as API_HOSTNAMES,m as APP_DOMAIN,n as APP_DOMAIN_WITH_NGROK,l as APP_HOSTNAMES,i as APP_NAME,_ as BUSINESS_PLAN,L as COMPARE_PAGES,b as CONTINENTS,c as CONTINENT_CODES,d as COUNTRIES,e as COUNTRY_CODES,R as DEFAULT_LINK_PROPS,P as DEFAULT_REDIRECTS,T as DICEBEAR_AVATAR_URL,D as DUB_DEMO_LINKS,B as DUB_DOMAINS,C as DUB_DOMAINS_ARRAY,W as DUB_FOUNDING_DATE,Q as DUB_HEADERS,s as DUB_LOGO,t as DUB_QR_LOGO,v as DUB_THUMBNAIL,u as DUB_WORDMARK,w as DUB_WORKSPACE_ID,$ as ENTERPRISE_PLAN,f as EU_COUNTRY_CODES,H as FADE_IN_ANIMATION_SETTINGS,E as FRAMER_MOTION_LIST_ITEM_VARIANTS,Y as FREE_PLAN,ca as FREE_WORKSPACES_LIMIT,S as GOOGLE_FAVICON_URL,k as HOME_DOMAIN,M as LEGAL_PAGES,z as LEGAL_USER_ID,y as LEGAL_WORKSPACE_ID,N as LOCALHOST_GEO_DATA,O as LOCALHOST_IP,U as PAGINATION_LIMIT,r as PARTNERS_HOSTNAMES,X as PLANS,Z as PRO_PLAN,aa as PUBLIC_PLANS,A as R2_URL,ha as SAML_PROVIDERS,g as SECOND_LEVEL_DOMAINS,ba as SELF_SERVE_PAID_PLANS,j as SHORT_DOMAIN,I as SLACK_INTEGRATION_ID,h as SPECIAL_APEX_DOMAINS,F as STAGGER_CHILD_VARIANTS,J as STRIPE_INTEGRATION_ID,G as SWIPE_REVEAL_ANIMATION_SETTINGS,V as TWO_WEEKS_IN_SECONDS,a as ccTLDs,fa as getCurrentPlan,ga as getNextPlan,ea as getPlanDetails,da as getPlanFromPriceId};
@@ -1,4 +1,3 @@
1
- declare const HIDE_BACKGROUND_SEGMENTS: string[];
2
1
  declare const ALL_TOOLS: {
3
2
  name: string;
4
3
  slug: string;
@@ -12,4 +11,4 @@ declare const LEGAL_PAGES: {
12
11
  slug: string;
13
12
  }[];
14
13
 
15
- export { ALL_TOOLS, COMPARE_PAGES, HIDE_BACKGROUND_SEGMENTS, LEGAL_PAGES };
14
+ export { ALL_TOOLS, COMPARE_PAGES, LEGAL_PAGES };
@@ -1 +1 @@
1
- import{a,b,c,d}from"../chunk-AZK6DINZ.mjs";export{b as ALL_TOOLS,c as COMPARE_PAGES,a as HIDE_BACKGROUND_SEGMENTS,d as LEGAL_PAGES};
1
+ import{a,b,c}from"../chunk-ADJH4SHJ.mjs";export{a as ALL_TOOLS,b as COMPARE_PAGES,c as LEGAL_PAGES};
@@ -7,6 +7,7 @@ declare const APP_DOMAIN_WITH_NGROK: string;
7
7
  declare const API_HOSTNAMES: Set<string>;
8
8
  declare const API_DOMAIN: string;
9
9
  declare const ADMIN_HOSTNAMES: Set<string>;
10
+ declare const PARTNERS_HOSTNAMES: Set<string>;
10
11
  declare const DUB_LOGO = "https://assets.dub.co/logo.png";
11
12
  declare const DUB_QR_LOGO = "https://assets.dub.co/logo.png";
12
13
  declare const DUB_WORDMARK = "https://assets.dub.co/wordmark.png";
@@ -17,4 +18,4 @@ declare const LEGAL_WORKSPACE_ID = "clrflia0j0000vs7sqfhz9c7q";
17
18
  declare const LEGAL_USER_ID = "clqei1lgc0000vsnzi01pbf47";
18
19
  declare const R2_URL: string;
19
20
 
20
- export { ACME_WORKSPACE_ID, ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, DUB_LOGO, DUB_QR_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, R2_URL, SHORT_DOMAIN };
21
+ export { ACME_WORKSPACE_ID, ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, DUB_LOGO, DUB_QR_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, PARTNERS_HOSTNAMES, R2_URL, SHORT_DOMAIN };
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"../chunk-WVS4MPBR.mjs";export{o as ACME_WORKSPACE_ID,i as ADMIN_HOSTNAMES,h as API_DOMAIN,g as API_HOSTNAMES,e as APP_DOMAIN,f as APP_DOMAIN_WITH_NGROK,d as APP_HOSTNAMES,a as APP_NAME,j as DUB_LOGO,k as DUB_QR_LOGO,m as DUB_THUMBNAIL,l as DUB_WORDMARK,n as DUB_WORKSPACE_ID,c as HOME_DOMAIN,q as LEGAL_USER_ID,p as LEGAL_WORKSPACE_ID,r as R2_URL,b as SHORT_DOMAIN};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s}from"../chunk-2XAMRYVK.mjs";export{p as ACME_WORKSPACE_ID,i as ADMIN_HOSTNAMES,h as API_DOMAIN,g as API_HOSTNAMES,e as APP_DOMAIN,f as APP_DOMAIN_WITH_NGROK,d as APP_HOSTNAMES,a as APP_NAME,k as DUB_LOGO,l as DUB_QR_LOGO,n as DUB_THUMBNAIL,m as DUB_WORDMARK,o as DUB_WORKSPACE_ID,c as HOME_DOMAIN,r as LEGAL_USER_ID,q as LEGAL_WORKSPACE_ID,j as PARTNERS_HOSTNAMES,s as R2_URL,b as SHORT_DOMAIN};
@@ -12,9 +12,8 @@ declare const DEFAULT_REDIRECTS: {
12
12
  welcome: string;
13
13
  discord: string;
14
14
  };
15
- declare const RESERVED_PATHS: string[];
16
15
  declare const DUB_HEADERS: {
17
16
  "x-powered-by": string;
18
17
  };
19
18
 
20
- export { DEFAULT_REDIRECTS, DUB_HEADERS, RESERVED_PATHS };
19
+ export { DEFAULT_REDIRECTS, DUB_HEADERS };
@@ -1 +1 @@
1
- import{a,b,c}from"../chunk-CH6QMF5Q.mjs";export{a as DEFAULT_REDIRECTS,c as DUB_HEADERS,b as RESERVED_PATHS};
1
+ import{a,b}from"../chunk-YRRD6FUW.mjs";export{a as DEFAULT_REDIRECTS,b as DUB_HEADERS};
@@ -1 +1 @@
1
- import{a,b,c,d,e,f}from"../chunk-4G4IXMUK.mjs";export{a as DEFAULT_LINK_PROPS,c as DICEBEAR_AVATAR_URL,f as DUB_FOUNDING_DATE,b as GOOGLE_FAVICON_URL,d as PAGINATION_LIMIT,e as TWO_WEEKS_IN_SECONDS};
1
+ import{a,b,c,d,e,f}from"../chunk-DHIGRGJB.mjs";export{a as DEFAULT_LINK_PROPS,c as DICEBEAR_AVATAR_URL,f as DUB_FOUNDING_DATE,b as GOOGLE_FAVICON_URL,d as PAGINATION_LIMIT,e as TWO_WEEKS_IN_SECONDS};
@@ -1 +1 @@
1
- import{a}from"../chunk-PUFZASP4.mjs";export{a as SAML_PROVIDERS};
1
+ import{a}from"../chunk-NJFS24XJ.mjs";export{a as SAML_PROVIDERS};
@@ -1 +1 @@
1
- import{a}from"../chunk-7FYKKWAB.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ZOUWCTIR.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-AZK6DINZ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-CH6QMF5Q.mjs";import"../chunk-4G4IXMUK.mjs";import"../chunk-PUFZASP4.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-SEF2W7A7.mjs";import"../chunk-WVS4MPBR.mjs";import"../chunk-2SICE2ZS.mjs";export{a as constructMetadata};
1
+ import{a}from"../chunk-ZQE2ESQW.mjs";import"../chunk-YRRD6FUW.mjs";import"../chunk-DHIGRGJB.mjs";import"../chunk-NJFS24XJ.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-WOV4CBJE.mjs";import"../chunk-2XAMRYVK.mjs";import"../chunk-2SICE2ZS.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-ADJH4SHJ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-C3BOX3ZI.mjs";import"../chunk-UEBSZ4PU.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";export{a as constructMetadata};
@@ -1,10 +1,9 @@
1
1
  declare const generateDomainFromName: (name: string) => string;
2
2
  declare const validDomainRegex: RegExp;
3
- declare const validKeyRegex: RegExp;
4
3
  declare const validSlugRegex: RegExp;
5
4
  declare const getSubdomain: (name: string, apexName: string) => string | null;
6
5
  declare const getApexDomain: (url: string) => string;
7
6
  declare const getDomainWithoutWWW: (url: string) => string | null | undefined;
8
7
  declare const isDubDomain: (domain: string) => boolean;
9
8
 
10
- export { generateDomainFromName, getApexDomain, getDomainWithoutWWW, getSubdomain, isDubDomain, validDomainRegex, validKeyRegex, validSlugRegex };
9
+ export { generateDomainFromName, getApexDomain, getDomainWithoutWWW, getSubdomain, isDubDomain, validDomainRegex, validSlugRegex };
@@ -1 +1 @@
1
- import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"../chunk-7FYKKWAB.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ZOUWCTIR.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-AZK6DINZ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-CH6QMF5Q.mjs";import"../chunk-4G4IXMUK.mjs";import"../chunk-PUFZASP4.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-SEF2W7A7.mjs";import"../chunk-WVS4MPBR.mjs";import"../chunk-2SICE2ZS.mjs";export{a as generateDomainFromName,f as getApexDomain,g as getDomainWithoutWWW,e as getSubdomain,h as isDubDomain,b as validDomainRegex,c as validKeyRegex,d as validSlugRegex};
1
+ import{b as a,c as b,d as c,e as d,f as e,g as f,h as g}from"../chunk-ZQE2ESQW.mjs";import"../chunk-YRRD6FUW.mjs";import"../chunk-DHIGRGJB.mjs";import"../chunk-NJFS24XJ.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-WOV4CBJE.mjs";import"../chunk-2XAMRYVK.mjs";import"../chunk-2SICE2ZS.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-ADJH4SHJ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-C3BOX3ZI.mjs";import"../chunk-UEBSZ4PU.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";export{a as generateDomainFromName,e as getApexDomain,f as getDomainWithoutWWW,d as getSubdomain,g as isDubDomain,b as validDomainRegex,c as validSlugRegex};
@@ -7,12 +7,13 @@ export { constructMetadata } from './construct-metadata.js';
7
7
  export { currencyFormatter } from './currency-formatter.js';
8
8
  export { formatDate, formatDateTime, getAdjustedBillingCycleStart, getBillingStartDate, getDateTimeLocal, getDaysDifference, getFirstAndLastDay, getLastDayOfMonth, parseDateTime } from './datetime.js';
9
9
  export { deepEqual } from './deep-equal.js';
10
- export { generateDomainFromName, getApexDomain, getDomainWithoutWWW, getSubdomain, isDubDomain, validDomainRegex, validKeyRegex, validSlugRegex } from './domains.js';
10
+ export { generateDomainFromName, getApexDomain, getDomainWithoutWWW, getSubdomain, isDubDomain, validDomainRegex, validSlugRegex } from './domains.js';
11
11
  export { fetchWithTimeout } from './fetch-with-timeout.js';
12
12
  export { fetcher } from './fetcher.js';
13
13
  export { hashStringSHA256 } from './hash-string.js';
14
14
  export { resizeImage } from './images.js';
15
15
  export { isIframeable } from './is-iframeable.js';
16
+ export { isReservedKeyGlobal, isUnsupportedKey, validKeyRegex } from './keys.js';
16
17
  export { linkConstructor, linkConstructorSimple } from './link-constructor.js';
17
18
  export { log } from './log.js';
18
19
  export { nanoid } from './nanoid.js';
@@ -1 +1 @@
1
- import{a as f,b as C,c as D,d as E,e as F,f as G,g as H,h as I,i as J,j as P,k as Q}from"../chunk-7FYKKWAB.mjs";import{a as $}from"../chunk-E3EM6ARH.mjs";import{a as r,b as s,c as t,d as u,e as v,f as w,g as x,h as y,i as z,j as A,k as B}from"../chunk-6QCWHFAZ.mjs";import{a as R}from"../chunk-GGIZK3EO.mjs";import{a as S}from"../chunk-OWYWG4M6.mjs";import{a as T}from"../chunk-NWFCCRLG.mjs";import{a as U,b as V}from"../chunk-IHX4EDUF.mjs";import{a as W}from"../chunk-RONJDARA.mjs";import{a as Y}from"../chunk-PPEZOXLP.mjs";import{a as X}from"../chunk-FKLXONKR.mjs";import{a as Z}from"../chunk-NQP6WK7A.mjs";import{a as _}from"../chunk-MPU6JRPV.mjs";import{a as K}from"../chunk-EMO4MGOU.mjs";import{a as L}from"../chunk-6XPTKHZD.mjs";import{a as M}from"../chunk-F4P6WJV7.mjs";import{a as N}from"../chunk-C4JMLACD.mjs";import{a as O}from"../chunk-ZOUWCTIR.mjs";import{a as b}from"../chunk-PMOQSSOL.mjs";import{a as c}from"../chunk-2OJAP233.mjs";import{a as d}from"../chunk-NEIHTFSW.mjs";import{a as e}from"../chunk-HJD7AJT4.mjs";import{a as g}from"../chunk-J7REM3DA.mjs";import{a as h,b as i,c as j,d as k,e as l,f as m,g as n,h as o,i as p}from"../chunk-KLFV55QU.mjs";import{a as q}from"../chunk-ZECUYKGD.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-AZK6DINZ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-CH6QMF5Q.mjs";import"../chunk-4G4IXMUK.mjs";import"../chunk-PUFZASP4.mjs";import{a}from"../chunk-ORB6LTBV.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-SEF2W7A7.mjs";import"../chunk-WVS4MPBR.mjs";import"../chunk-2SICE2ZS.mjs";export{w as UTMTags,b as capitalize,c as chunk,d as cn,e as combineWords,f as constructMetadata,x as constructURLFromUTMParams,B as createHref,g as currencyFormatter,q as deepEqual,K as fetchWithTimeout,L as fetcher,j as formatDate,k as formatDateTime,C as generateDomainFromName,o as getAdjustedBillingCycleStart,H as getApexDomain,p as getBillingStartDate,h as getDateTimeLocal,l as getDaysDifference,I as getDomainWithoutWWW,m as getFirstAndLastDay,n as getLastDayOfMonth,v as getParamsFromURL,A as getPrettyUrl,t as getSearchParams,u as getSearchParamsWithArray,G as getSubdomain,s as getUrlFromString,z as getUrlWithoutUTMParams,M as hashStringSHA256,J as isDubDomain,O as isIframeable,r as isValidUrl,P as linkConstructor,Q as linkConstructorSimple,R as log,T as nFormatter,S as nanoid,y as paramsMetadata,i as parseDateTime,V as punyEncode,U as punycode,W as randomValue,N as resizeImage,Y as smartTruncate,Z as stableSort,_ as timeAgo,a as toCamelCase,$ as trim,X as truncate,D as validDomainRegex,E as validKeyRegex,F as validSlugRegex};
1
+ import{a as f,b as C,c as D,d as E,e as F,f as G,g as H,h as I,i as R,j as S}from"../chunk-ZQE2ESQW.mjs";import"../chunk-YRRD6FUW.mjs";import"../chunk-DHIGRGJB.mjs";import"../chunk-NJFS24XJ.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-WOV4CBJE.mjs";import"../chunk-2XAMRYVK.mjs";import"../chunk-2SICE2ZS.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-ADJH4SHJ.mjs";import"../chunk-2OGPCKQX.mjs";import{a as _}from"../chunk-PPEZOXLP.mjs";import{a as $}from"../chunk-NQP6WK7A.mjs";import{a as aa}from"../chunk-MPU6JRPV.mjs";import{a as ba}from"../chunk-E3EM6ARH.mjs";import{a as Z}from"../chunk-FKLXONKR.mjs";import{a as r,b as s,c as t,d as u,e as v,f as w,g as x,h as y,i as z,j as A,k as B}from"../chunk-6QCWHFAZ.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import{a as N}from"../chunk-C3BOX3ZI.mjs";import{a as O,b as P,c as Q}from"../chunk-UEBSZ4PU.mjs";import{a as T}from"../chunk-GGIZK3EO.mjs";import{a as U}from"../chunk-OWYWG4M6.mjs";import{a as V}from"../chunk-NWFCCRLG.mjs";import{a as W,b as X}from"../chunk-IHX4EDUF.mjs";import{a as Y}from"../chunk-RONJDARA.mjs";import{a as h,b as i,c as j,d as k,e as l,f as m,g as n,h as o,i as p}from"../chunk-KLFV55QU.mjs";import{a as q}from"../chunk-ZECUYKGD.mjs";import{a as J}from"../chunk-EMO4MGOU.mjs";import{a as K}from"../chunk-6XPTKHZD.mjs";import{a as L}from"../chunk-F4P6WJV7.mjs";import{a as M}from"../chunk-C4JMLACD.mjs";import{a}from"../chunk-ORB6LTBV.mjs";import{a as b}from"../chunk-PMOQSSOL.mjs";import{a as c}from"../chunk-2OJAP233.mjs";import{a as d}from"../chunk-NEIHTFSW.mjs";import{a as e}from"../chunk-HJD7AJT4.mjs";import{a as g}from"../chunk-J7REM3DA.mjs";export{w as UTMTags,b as capitalize,c as chunk,d as cn,e as combineWords,f as constructMetadata,x as constructURLFromUTMParams,B as createHref,g as currencyFormatter,q as deepEqual,J as fetchWithTimeout,K as fetcher,j as formatDate,k as formatDateTime,C as generateDomainFromName,o as getAdjustedBillingCycleStart,G as getApexDomain,p as getBillingStartDate,h as getDateTimeLocal,l as getDaysDifference,H as getDomainWithoutWWW,m as getFirstAndLastDay,n as getLastDayOfMonth,v as getParamsFromURL,A as getPrettyUrl,t as getSearchParams,u as getSearchParamsWithArray,F as getSubdomain,s as getUrlFromString,z as getUrlWithoutUTMParams,L as hashStringSHA256,I as isDubDomain,N as isIframeable,Q as isReservedKeyGlobal,P as isUnsupportedKey,r as isValidUrl,R as linkConstructor,S as linkConstructorSimple,T as log,V as nFormatter,U as nanoid,y as paramsMetadata,i as parseDateTime,X as punyEncode,W as punycode,Y as randomValue,M as resizeImage,_ as smartTruncate,$ as stableSort,aa as timeAgo,a as toCamelCase,ba as trim,Z as truncate,D as validDomainRegex,O as validKeyRegex,E as validSlugRegex};
@@ -1 +1 @@
1
- import{a}from"../chunk-ZOUWCTIR.mjs";export{a as isIframeable};
1
+ import{a}from"../chunk-C3BOX3ZI.mjs";export{a as isIframeable};
@@ -0,0 +1,5 @@
1
+ declare const validKeyRegex: RegExp;
2
+ declare const isUnsupportedKey: (key: string) => boolean;
3
+ declare const isReservedKeyGlobal: (key: string) => boolean;
4
+
5
+ export { isReservedKeyGlobal, isUnsupportedKey, validKeyRegex };
@@ -0,0 +1 @@
1
+ import{a,b,c}from"../chunk-UEBSZ4PU.mjs";export{c as isReservedKeyGlobal,b as isUnsupportedKey,a as validKeyRegex};
@@ -1 +1 @@
1
- import{j as a,k as b}from"../chunk-7FYKKWAB.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ZOUWCTIR.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-AZK6DINZ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-CH6QMF5Q.mjs";import"../chunk-4G4IXMUK.mjs";import"../chunk-PUFZASP4.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-SEF2W7A7.mjs";import"../chunk-WVS4MPBR.mjs";import"../chunk-2SICE2ZS.mjs";export{a as linkConstructor,b as linkConstructorSimple};
1
+ import{i as a,j as b}from"../chunk-ZQE2ESQW.mjs";import"../chunk-YRRD6FUW.mjs";import"../chunk-DHIGRGJB.mjs";import"../chunk-NJFS24XJ.mjs";import"../chunk-6YGW3G46.mjs";import"../chunk-SYT2IXG6.mjs";import"../chunk-WOV4CBJE.mjs";import"../chunk-2XAMRYVK.mjs";import"../chunk-2SICE2ZS.mjs";import"../chunk-X46IXCHN.mjs";import"../chunk-ADJH4SHJ.mjs";import"../chunk-2OGPCKQX.mjs";import"../chunk-PPEZOXLP.mjs";import"../chunk-NQP6WK7A.mjs";import"../chunk-MPU6JRPV.mjs";import"../chunk-E3EM6ARH.mjs";import"../chunk-FKLXONKR.mjs";import"../chunk-6QCWHFAZ.mjs";import"../chunk-YUMUNL66.mjs";import"../chunk-MH5LZNIE.mjs";import"../chunk-C3BOX3ZI.mjs";import"../chunk-UEBSZ4PU.mjs";import"../chunk-GGIZK3EO.mjs";import"../chunk-OWYWG4M6.mjs";import"../chunk-NWFCCRLG.mjs";import"../chunk-IHX4EDUF.mjs";import"../chunk-RONJDARA.mjs";import"../chunk-KLFV55QU.mjs";import"../chunk-ZECUYKGD.mjs";import"../chunk-EMO4MGOU.mjs";import"../chunk-6XPTKHZD.mjs";import"../chunk-F4P6WJV7.mjs";import"../chunk-C4JMLACD.mjs";import"../chunk-ORB6LTBV.mjs";import"../chunk-PMOQSSOL.mjs";import"../chunk-2OJAP233.mjs";import"../chunk-NEIHTFSW.mjs";import"../chunk-HJD7AJT4.mjs";import"../chunk-J7REM3DA.mjs";export{a as linkConstructor,b as linkConstructorSimple};
package/dist/index.d.ts CHANGED
@@ -5,10 +5,10 @@ export { SECOND_LEVEL_DOMAINS, SPECIAL_APEX_DOMAINS } from './constants/domains.
5
5
  export { DUB_DEMO_LINKS, DUB_DOMAINS, DUB_DOMAINS_ARRAY } from './constants/dub-domains.js';
6
6
  export { FADE_IN_ANIMATION_SETTINGS, FRAMER_MOTION_LIST_ITEM_VARIANTS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS } from './constants/framer-motion.js';
7
7
  export { SLACK_INTEGRATION_ID, STRIPE_INTEGRATION_ID } from './constants/integrations.js';
8
- export { ALL_TOOLS, COMPARE_PAGES, HIDE_BACKGROUND_SEGMENTS, LEGAL_PAGES } from './constants/layout.js';
8
+ export { ALL_TOOLS, COMPARE_PAGES, LEGAL_PAGES } from './constants/layout.js';
9
9
  export { LOCALHOST_GEO_DATA, LOCALHOST_IP } from './constants/localhost.js';
10
- export { ACME_WORKSPACE_ID, ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, DUB_LOGO, DUB_QR_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, R2_URL, SHORT_DOMAIN } from './constants/main.js';
11
- export { DEFAULT_REDIRECTS, DUB_HEADERS, RESERVED_PATHS } from './constants/middleware.js';
10
+ export { ACME_WORKSPACE_ID, ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, DUB_LOGO, DUB_QR_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, PARTNERS_HOSTNAMES, R2_URL, SHORT_DOMAIN } from './constants/main.js';
11
+ export { DEFAULT_REDIRECTS, DUB_HEADERS } from './constants/middleware.js';
12
12
  export { DEFAULT_LINK_PROPS, DICEBEAR_AVATAR_URL, DUB_FOUNDING_DATE, GOOGLE_FAVICON_URL, PAGINATION_LIMIT, TWO_WEEKS_IN_SECONDS } from './constants/misc.js';
13
13
  export { B as BUSINESS_PLAN, E as ENTERPRISE_PLAN, F as FREE_PLAN, c as FREE_WORKSPACES_LIMIT, P as PLANS, a as PRO_PLAN, b as PUBLIC_PLANS, S as SELF_SERVE_PAID_PLANS, e as getCurrentPlan, f as getNextPlan, d as getPlanDetails, g as getPlanFromPriceId } from './pricing-509284b9.js';
14
14
  export { SAML_PROVIDERS } from './constants/saml.js';
@@ -21,12 +21,13 @@ export { constructMetadata } from './functions/construct-metadata.js';
21
21
  export { currencyFormatter } from './functions/currency-formatter.js';
22
22
  export { formatDate, formatDateTime, getAdjustedBillingCycleStart, getBillingStartDate, getDateTimeLocal, getDaysDifference, getFirstAndLastDay, getLastDayOfMonth, parseDateTime } from './functions/datetime.js';
23
23
  export { deepEqual } from './functions/deep-equal.js';
24
- export { generateDomainFromName, getApexDomain, getDomainWithoutWWW, getSubdomain, isDubDomain, validDomainRegex, validKeyRegex, validSlugRegex } from './functions/domains.js';
24
+ export { generateDomainFromName, getApexDomain, getDomainWithoutWWW, getSubdomain, isDubDomain, validDomainRegex, validSlugRegex } from './functions/domains.js';
25
25
  export { fetchWithTimeout } from './functions/fetch-with-timeout.js';
26
26
  export { fetcher } from './functions/fetcher.js';
27
27
  export { hashStringSHA256 } from './functions/hash-string.js';
28
28
  export { resizeImage } from './functions/images.js';
29
29
  export { isIframeable } from './functions/is-iframeable.js';
30
+ export { isReservedKeyGlobal, isUnsupportedKey, validKeyRegex } from './functions/keys.js';
30
31
  export { linkConstructor, linkConstructorSimple } from './functions/link-constructor.js';
31
32
  export { log } from './functions/log.js';
32
33
  export { nanoid } from './functions/nanoid.js';
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{a as ro,b as zo,c as Ao,d as Bo,e as Co,f as Do,g as Eo,h as Fo,i as Go,j as Mo,k as No,l as Zo,m as _o,n as $o,o as or,p as rr,q as er,r as fr,s as mr,t as pr,u as tr,v as xr,w as ar}from"./chunk-7FYKKWAB.mjs";import{a as Yo}from"./chunk-E3EM6ARH.mjs";import{a as io,b as jo,c as ko,d as lo,e as no,f as qo,g as so,h as uo,i as vo,j as wo,k as yo}from"./chunk-6QCWHFAZ.mjs";import{a as Oo}from"./chunk-GGIZK3EO.mjs";import{a as Po}from"./chunk-OWYWG4M6.mjs";import{a as Qo}from"./chunk-NWFCCRLG.mjs";import{a as Ro,b as So}from"./chunk-IHX4EDUF.mjs";import{a as To}from"./chunk-RONJDARA.mjs";import{a as Vo}from"./chunk-PPEZOXLP.mjs";import{a as Uo}from"./chunk-FKLXONKR.mjs";import{a as Wo}from"./chunk-NQP6WK7A.mjs";import{a as Xo}from"./chunk-MPU6JRPV.mjs";import{a as Ho}from"./chunk-EMO4MGOU.mjs";import{a as Io}from"./chunk-6XPTKHZD.mjs";import{a as Jo}from"./chunk-F4P6WJV7.mjs";import{a as Ko}from"./chunk-C4JMLACD.mjs";import{a as Lo}from"./chunk-ZOUWCTIR.mjs";import{a as Z}from"./chunk-PMOQSSOL.mjs";import{a as _}from"./chunk-2OJAP233.mjs";import{a as $}from"./chunk-NEIHTFSW.mjs";import{a as oo}from"./chunk-HJD7AJT4.mjs";import{a as eo}from"./chunk-J7REM3DA.mjs";import{a as fo,b as mo,c as po,d as to,e as xo,f as ao,g as bo,h as co,i as go}from"./chunk-KLFV55QU.mjs";import{a as ho}from"./chunk-ZECUYKGD.mjs";import{a as H,b as I}from"./chunk-X46IXCHN.mjs";import{a as J,b as K,c as L,d as M}from"./chunk-AZK6DINZ.mjs";import{a as N,b as O}from"./chunk-2OGPCKQX.mjs";import{a as P,b as Q,c as R}from"./chunk-CH6QMF5Q.mjs";import{a as S,b as T,c as U,d as V,e as W,f as X}from"./chunk-4G4IXMUK.mjs";import{a as br}from"./chunk-PUFZASP4.mjs";import{a as Y}from"./chunk-ORB6LTBV.mjs";import{a as o}from"./chunk-YUMUNL66.mjs";import{a as r,b as e}from"./chunk-MH5LZNIE.mjs";import{a as f,b as m,c as p}from"./chunk-6YGW3G46.mjs";import{a as t,b as x}from"./chunk-SYT2IXG6.mjs";import{a as A,b as B,c as C}from"./chunk-SEF2W7A7.mjs";import{a,b,c,d,e as g,f as h,g as i,h as j,i as k,j as l,k as n,l as q,m as s,n as u,o as v,p as w,q as y,r as z}from"./chunk-WVS4MPBR.mjs";import{a as D,b as E,c as F,d as G}from"./chunk-2SICE2ZS.mjs";export{v as ACME_WORKSPACE_ID,k as ADMIN_HOSTNAMES,K as ALL_TOOLS,j as API_DOMAIN,i as API_HOSTNAMES,g as APP_DOMAIN,h as APP_DOMAIN_WITH_NGROK,d as APP_HOSTNAMES,a as APP_NAME,or as BUSINESS_PLAN,L as COMPARE_PAGES,r as CONTINENTS,e as CONTINENT_CODES,f as COUNTRIES,m as COUNTRY_CODES,S as DEFAULT_LINK_PROPS,P as DEFAULT_REDIRECTS,U as DICEBEAR_AVATAR_URL,C as DUB_DEMO_LINKS,A as DUB_DOMAINS,B as DUB_DOMAINS_ARRAY,X as DUB_FOUNDING_DATE,R as DUB_HEADERS,l as DUB_LOGO,n as DUB_QR_LOGO,s as DUB_THUMBNAIL,q as DUB_WORDMARK,u as DUB_WORKSPACE_ID,rr as ENTERPRISE_PLAN,p as EU_COUNTRY_CODES,G as FADE_IN_ANIMATION_SETTINGS,D as FRAMER_MOTION_LIST_ITEM_VARIANTS,_o as FREE_PLAN,mr as FREE_WORKSPACES_LIMIT,T as GOOGLE_FAVICON_URL,J as HIDE_BACKGROUND_SEGMENTS,c as HOME_DOMAIN,M as LEGAL_PAGES,y as LEGAL_USER_ID,w as LEGAL_WORKSPACE_ID,N as LOCALHOST_GEO_DATA,O as LOCALHOST_IP,V as PAGINATION_LIMIT,Zo as PLANS,$o as PRO_PLAN,er as PUBLIC_PLANS,z as R2_URL,Q as RESERVED_PATHS,br as SAML_PROVIDERS,t as SECOND_LEVEL_DOMAINS,fr as SELF_SERVE_PAID_PLANS,b as SHORT_DOMAIN,H as SLACK_INTEGRATION_ID,x as SPECIAL_APEX_DOMAINS,E as STAGGER_CHILD_VARIANTS,I as STRIPE_INTEGRATION_ID,F as SWIPE_REVEAL_ANIMATION_SETTINGS,W as TWO_WEEKS_IN_SECONDS,qo as UTMTags,Z as capitalize,o as ccTLDs,_ as chunk,$ as cn,oo as combineWords,ro as constructMetadata,so as constructURLFromUTMParams,yo as createHref,eo as currencyFormatter,ho as deepEqual,Ho as fetchWithTimeout,Io as fetcher,po as formatDate,to as formatDateTime,zo as generateDomainFromName,co as getAdjustedBillingCycleStart,Eo as getApexDomain,go as getBillingStartDate,xr as getCurrentPlan,fo as getDateTimeLocal,xo as getDaysDifference,Fo as getDomainWithoutWWW,ao as getFirstAndLastDay,bo as getLastDayOfMonth,ar as getNextPlan,no as getParamsFromURL,tr as getPlanDetails,pr as getPlanFromPriceId,wo as getPrettyUrl,ko as getSearchParams,lo as getSearchParamsWithArray,Do as getSubdomain,jo as getUrlFromString,vo as getUrlWithoutUTMParams,Jo as hashStringSHA256,Go as isDubDomain,Lo as isIframeable,io as isValidUrl,Mo as linkConstructor,No as linkConstructorSimple,Oo as log,Qo as nFormatter,Po as nanoid,uo as paramsMetadata,mo as parseDateTime,So as punyEncode,Ro as punycode,To as randomValue,Ko as resizeImage,Vo as smartTruncate,Wo as stableSort,Xo as timeAgo,Y as toCamelCase,Yo as trim,Uo as truncate,Ao as validDomainRegex,Bo as validKeyRegex,Co as validSlugRegex};
1
+ import{a as oo,b as yo,c as zo,d as Ao,e as Bo,f as Co,g as Do,h as Eo,i as No,j as Oo,k as _o,l as $o,m as or,n as rr,o as er,p as fr,q as mr,r as pr,s as tr,t as xr,u as ar,v as br}from"./chunk-ZQE2ESQW.mjs";import{a as P,b as Q}from"./chunk-YRRD6FUW.mjs";import{a as R,b as S,c as T,d as U,e as V,f as W}from"./chunk-DHIGRGJB.mjs";import{a as cr}from"./chunk-NJFS24XJ.mjs";import{a as f,b as m,c as p}from"./chunk-6YGW3G46.mjs";import{a as t,b as x}from"./chunk-SYT2IXG6.mjs";import{a as B,b as C,c as D}from"./chunk-WOV4CBJE.mjs";import{a,b,c,d,e as g,f as h,g as i,h as j,i as k,j as l,k as n,l as q,m as s,n as u,o as v,p as w,q as y,r as z,s as A}from"./chunk-2XAMRYVK.mjs";import{a as E,b as F,c as G,d as H}from"./chunk-2SICE2ZS.mjs";import{a as I,b as J}from"./chunk-X46IXCHN.mjs";import{a as K,b as L,c as M}from"./chunk-ADJH4SHJ.mjs";import{a as N,b as O}from"./chunk-2OGPCKQX.mjs";import{a as Wo}from"./chunk-PPEZOXLP.mjs";import{a as Xo}from"./chunk-NQP6WK7A.mjs";import{a as Yo}from"./chunk-MPU6JRPV.mjs";import{a as Zo}from"./chunk-E3EM6ARH.mjs";import{a as Vo}from"./chunk-FKLXONKR.mjs";import{a as ho,b as io,c as jo,d as ko,e as lo,f as no,g as qo,h as so,i as uo,j as vo,k as wo}from"./chunk-6QCWHFAZ.mjs";import{a as o}from"./chunk-YUMUNL66.mjs";import{a as r,b as e}from"./chunk-MH5LZNIE.mjs";import{a as Jo}from"./chunk-C3BOX3ZI.mjs";import{a as Ko,b as Lo,c as Mo}from"./chunk-UEBSZ4PU.mjs";import{a as Po}from"./chunk-GGIZK3EO.mjs";import{a as Qo}from"./chunk-OWYWG4M6.mjs";import{a as Ro}from"./chunk-NWFCCRLG.mjs";import{a as So,b as To}from"./chunk-IHX4EDUF.mjs";import{a as Uo}from"./chunk-RONJDARA.mjs";import{a as eo,b as fo,c as mo,d as po,e as to,f as xo,g as ao,h as bo,i as co}from"./chunk-KLFV55QU.mjs";import{a as go}from"./chunk-ZECUYKGD.mjs";import{a as Fo}from"./chunk-EMO4MGOU.mjs";import{a as Go}from"./chunk-6XPTKHZD.mjs";import{a as Ho}from"./chunk-F4P6WJV7.mjs";import{a as Io}from"./chunk-C4JMLACD.mjs";import{a as X}from"./chunk-ORB6LTBV.mjs";import{a as Y}from"./chunk-PMOQSSOL.mjs";import{a as Z}from"./chunk-2OJAP233.mjs";import{a as _}from"./chunk-NEIHTFSW.mjs";import{a as $}from"./chunk-HJD7AJT4.mjs";import{a as ro}from"./chunk-J7REM3DA.mjs";export{w as ACME_WORKSPACE_ID,k as ADMIN_HOSTNAMES,K as ALL_TOOLS,j as API_DOMAIN,i as API_HOSTNAMES,g as APP_DOMAIN,h as APP_DOMAIN_WITH_NGROK,d as APP_HOSTNAMES,a as APP_NAME,rr as BUSINESS_PLAN,L as COMPARE_PAGES,r as CONTINENTS,e as CONTINENT_CODES,f as COUNTRIES,m as COUNTRY_CODES,R as DEFAULT_LINK_PROPS,P as DEFAULT_REDIRECTS,T as DICEBEAR_AVATAR_URL,D as DUB_DEMO_LINKS,B as DUB_DOMAINS,C as DUB_DOMAINS_ARRAY,W as DUB_FOUNDING_DATE,Q as DUB_HEADERS,n as DUB_LOGO,q as DUB_QR_LOGO,u as DUB_THUMBNAIL,s as DUB_WORDMARK,v as DUB_WORKSPACE_ID,er as ENTERPRISE_PLAN,p as EU_COUNTRY_CODES,H as FADE_IN_ANIMATION_SETTINGS,E as FRAMER_MOTION_LIST_ITEM_VARIANTS,$o as FREE_PLAN,pr as FREE_WORKSPACES_LIMIT,S as GOOGLE_FAVICON_URL,c as HOME_DOMAIN,M as LEGAL_PAGES,z as LEGAL_USER_ID,y as LEGAL_WORKSPACE_ID,N as LOCALHOST_GEO_DATA,O as LOCALHOST_IP,U as PAGINATION_LIMIT,l as PARTNERS_HOSTNAMES,_o as PLANS,or as PRO_PLAN,fr as PUBLIC_PLANS,A as R2_URL,cr as SAML_PROVIDERS,t as SECOND_LEVEL_DOMAINS,mr as SELF_SERVE_PAID_PLANS,b as SHORT_DOMAIN,I as SLACK_INTEGRATION_ID,x as SPECIAL_APEX_DOMAINS,F as STAGGER_CHILD_VARIANTS,J as STRIPE_INTEGRATION_ID,G as SWIPE_REVEAL_ANIMATION_SETTINGS,V as TWO_WEEKS_IN_SECONDS,no as UTMTags,Y as capitalize,o as ccTLDs,Z as chunk,_ as cn,$ as combineWords,oo as constructMetadata,qo as constructURLFromUTMParams,wo as createHref,ro as currencyFormatter,go as deepEqual,Fo as fetchWithTimeout,Go as fetcher,mo as formatDate,po as formatDateTime,yo as generateDomainFromName,bo as getAdjustedBillingCycleStart,Co as getApexDomain,co as getBillingStartDate,ar as getCurrentPlan,eo as getDateTimeLocal,to as getDaysDifference,Do as getDomainWithoutWWW,xo as getFirstAndLastDay,ao as getLastDayOfMonth,br as getNextPlan,lo as getParamsFromURL,xr as getPlanDetails,tr as getPlanFromPriceId,vo as getPrettyUrl,jo as getSearchParams,ko as getSearchParamsWithArray,Bo as getSubdomain,io as getUrlFromString,uo as getUrlWithoutUTMParams,Ho as hashStringSHA256,Eo as isDubDomain,Jo as isIframeable,Mo as isReservedKeyGlobal,Lo as isUnsupportedKey,ho as isValidUrl,No as linkConstructor,Oo as linkConstructorSimple,Po as log,Ro as nFormatter,Qo as nanoid,so as paramsMetadata,fo as parseDateTime,To as punyEncode,So as punycode,Uo as randomValue,Io as resizeImage,Wo as smartTruncate,Xo as stableSort,Yo as timeAgo,X as toCamelCase,Zo as trim,Vo as truncate,zo as validDomainRegex,Ko as validKeyRegex,Ao as validSlugRegex};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dub/utils",
3
3
  "description": "Utility functions and constants for Dub.co",
4
- "version": "0.1.5",
4
+ "version": "0.1.7",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.mjs",
7
7
  "module": "./dist/index.mjs",