{"compiledCode":"\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);\n\n function LaunchesPage() {\n  const css = `\n    .tr-page.tr-launches {\n      --tr-ink: #15161c;\n      --tr-muted: #4b4f5e;\n      --tr-line: #e3e4ec;\n      --tr-bg: #ffffff;\n      --tr-soft: #f6f6fb;\n      --tr-accent: #2a2bd6;\n      --tr-accent-soft: #eceefd;\n      color: var(--tr-ink);\n      background: var(--tr-bg);\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      line-height: 1.6;\n      font-size: 17px;\n    }\n    .tr-launches .tr-wrap {\n      max-width: 900px;\n      margin: 0 auto;\n      padding: 28px 20px 72px;\n    }\n    .tr-launches h1 {\n      font-size: clamp(1.9rem, 4.5vw, 2.7rem);\n      line-height: 1.12;\n      letter-spacing: -0.02em;\n      margin: 8px 0 14px;\n    }\n    .tr-launches h2 {\n      font-size: clamp(1.35rem, 3vw, 1.7rem);\n      line-height: 1.2;\n      letter-spacing: -0.01em;\n      margin: 44px 0 12px;\n    }\n    .tr-launches h3 {\n      font-size: 1.12rem;\n      margin: 22px 0 6px;\n    }\n    .tr-launches p { margin: 0 0 14px; }\n    .tr-launches a {\n      color: var(--tr-accent);\n      text-decoration: underline;\n      text-underline-offset: 2px;\n    }\n    .tr-launches a:hover { text-decoration: none; }\n    .tr-launches .tr-lede {\n      font-size: clamp(1.05rem, 2.2vw, 1.22rem);\n      color: var(--tr-muted);\n      max-width: 70ch;\n    }\n    .tr-launches .tr-kicker {\n      display: inline-block;\n      font-size: 0.78rem;\n      font-weight: 700;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--tr-accent);\n      background: var(--tr-accent-soft);\n      padding: 5px 11px;\n      border-radius: 999px;\n      margin-bottom: 6px;\n    }\n    .tr-launches ul, .tr-launches ol { margin: 0 0 16px; padding-left: 1.3em; }\n    .tr-launches li { margin: 6px 0; }\n    .tr-launches .tr-card {\n      border: 1px solid var(--tr-line);\n      border-radius: 14px;\n      padding: 20px 22px;\n      background: var(--tr-bg);\n    }\n    .tr-launches .tr-summary {\n      background: var(--tr-soft);\n      border: 1px solid var(--tr-line);\n      border-radius: 14px;\n      padding: 20px 22px;\n      margin: 28px 0;\n    }\n    .tr-launches .tr-summary h2 { margin-top: 0; }\n    .tr-launches .tr-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n      gap: 16px;\n      margin: 18px 0 6px;\n    }\n    .tr-launches .tr-grid .tr-card h3 { margin-top: 0; }\n    .tr-launches .tr-grid .tr-card p { margin-bottom: 8px; color: var(--tr-muted); font-size: 0.97rem; }\n    .tr-launches .tr-phase {\n      border-left: 3px solid var(--tr-accent);\n      padding: 2px 0 2px 18px;\n      margin: 18px 0;\n    }\n    .tr-launches .tr-phase h3 { margin-top: 0; }\n    .tr-launches table {\n      width: 100%;\n      border-collapse: collapse;\n      margin: 14px 0 20px;\n      font-size: 0.96rem;\n    }\n    .tr-launches th, .tr-launches td {\n      text-align: left;\n      padding: 11px 12px;\n      border-bottom: 1px solid var(--tr-line);\n      vertical-align: top;\n    }\n    .tr-launches th {\n      background: var(--tr-soft);\n      font-weight: 700;\n      font-size: 0.86rem;\n      letter-spacing: 0.02em;\n    }\n    .tr-launches .tr-cedros {\n      background: var(--tr-accent-soft);\n      border: 1px solid #d6d9fb;\n      border-radius: 14px;\n      padding: 20px 22px;\n      margin: 28px 0;\n    }\n    .tr-launches .tr-cedros h2 { margin-top: 0; }\n    .tr-launches .tr-cta {\n      display: inline-block;\n      margin: 6px 10px 6px 0;\n      padding: 12px 20px;\n      border-radius: 10px;\n      background: var(--tr-accent);\n      color: #fff;\n      font-weight: 600;\n      text-decoration: none;\n    }\n    .tr-launches .tr-cta:hover { background: #2122ad; text-decoration: none; }\n    .tr-launches .tr-cta.tr-ghost {\n      background: transparent;\n      color: var(--tr-accent);\n      border: 1px solid var(--tr-accent);\n    }\n    .tr-launches .tr-cta.tr-ghost:hover { background: var(--tr-accent-soft); }\n    .tr-launches .tr-ctarow { margin: 18px 0 6px; }\n    .tr-launches .tr-faq dt {\n      font-weight: 700;\n      margin: 20px 0 4px;\n      font-size: 1.05rem;\n    }\n    .tr-launches .tr-faq dd { margin: 0 0 14px; color: var(--tr-muted); }\n    .tr-launches .tr-meta {\n      font-size: 0.85rem;\n      color: var(--tr-muted);\n      border-top: 1px solid var(--tr-line);\n      margin-top: 44px;\n      padding-top: 16px;\n    }\n    @media (max-width: 560px) {\n      .tr-launches { font-size: 16px; }\n      .tr-launches .tr-wrap { padding: 22px 16px 56px; }\n      .tr-launches table { font-size: 0.9rem; }\n      .tr-launches th, .tr-launches td { padding: 9px 9px; }\n    }\n  `;\n\n  return (\n    _react2.default.createElement('main', { className: [\"np-triberocket\",\"tr-page tr-launches\"].join(\" \"),}\n, _react2.default.createElement('header', { className: \"np-topbar\",}, _react2.default.createElement('a', { className: \"np-brand\", href: \"/\",}, \"Tribe Rocket\" ), _react2.default.createElement('nav', { 'aria-label': \"Site navigation\" ,}, _react2.default.createElement('a', { href: \"/\",}, \"Home\"), _react2.default.createElement('a', { href: \"/social-media-strategy\",}, \"Build your strategy\"  ), _react2.default.createElement('a', { href: \"/blog\",}, \"Articles\")))\n\n      , _react2.default.createElement('style', null, \"\\n    .np-triberocket.tr-page.tr-launches {\\n      --tr-ink: #15161c;\\n      --tr-muted: #4b4f5e;\\n      --tr-line: #e3e4ec;\\n      --tr-bg: #ffffff;\\n      --tr-soft: #f6f6fb;\\n      --tr-accent: #2a2bd6;\\n      --tr-accent-soft: #eceefd;\\n      color: var(--tr-ink);\\n      background: var(--tr-bg);\\n      font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif;\\n      line-height: 1.6;\\n      font-size: 17px;\\n    }\\n    .np-triberocket.tr-launches .tr-wrap {\\n      max-width: 900px;\\n      margin: 0 auto;\\n      padding: 28px 20px 72px;\\n    }\\n    .np-triberocket.tr-launches h1 {\\n      font-size: clamp(1.9rem, 4.5vw, 2.7rem);\\n      line-height: 1.12;\\n      letter-spacing: -0.02em;\\n      margin: 8px 0 14px;\\n    }\\n    .np-triberocket.tr-launches h2 {\\n      font-size: clamp(1.35rem, 3vw, 1.7rem);\\n      line-height: 1.2;\\n      letter-spacing: -0.01em;\\n      margin: 44px 0 12px;\\n    }\\n    .np-triberocket.tr-launches h3 {\\n      font-size: 1.12rem;\\n      margin: 22px 0 6px;\\n    }\\n    .np-triberocket.tr-launches p { margin: 0 0 14px; }\\n    .np-triberocket.tr-launches a {\\n      color: var(--tr-accent);\\n      text-decoration: underline;\\n      text-underline-offset: 2px;\\n    }\\n    .np-triberocket.tr-launches a:hover { text-decoration: none; }\\n    .np-triberocket.tr-launches .tr-lede {\\n      font-size: clamp(1.05rem, 2.2vw, 1.22rem);\\n      color: var(--tr-muted);\\n      max-width: 70ch;\\n    }\\n    .np-triberocket.tr-launches .tr-kicker {\\n      display: inline-block;\\n      font-size: 0.78rem;\\n      font-weight: 700;\\n      letter-spacing: 0.08em;\\n      text-transform: uppercase;\\n      color: var(--tr-accent);\\n      background: var(--tr-accent-soft);\\n      padding: 5px 11px;\\n      border-radius: 999px;\\n      margin-bottom: 6px;\\n    }\\n    .np-triberocket.tr-launches ul, .np-triberocket.tr-launches ol { margin: 0 0 16px; padding-left: 1.3em; }\\n    .np-triberocket.tr-launches li { margin: 6px 0; }\\n    .np-triberocket.tr-launches .tr-card {\\n      border: 1px solid var(--tr-line);\\n      border-radius: 14px;\\n      padding: 20px 22px;\\n      background: var(--tr-bg);\\n    }\\n    .np-triberocket.tr-launches .tr-summary {\\n      background: var(--tr-soft);\\n      border: 1px solid var(--tr-line);\\n      border-radius: 14px;\\n      padding: 20px 22px;\\n      margin: 28px 0;\\n    }\\n    .np-triberocket.tr-launches .tr-summary h2 { margin-top: 0; }\\n    .np-triberocket.tr-launches .tr-grid {\\n      display: grid;\\n      grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\\n      gap: 16px;\\n      margin: 18px 0 6px;\\n    }\\n    .np-triberocket.tr-launches .tr-grid .tr-card h3 { margin-top: 0; }\\n    .np-triberocket.tr-launches .tr-grid .tr-card p { margin-bottom: 8px; color: var(--tr-muted); font-size: 0.97rem; }\\n    .np-triberocket.tr-launches .tr-phase {\\n      border-left: 3px solid var(--tr-accent);\\n      padding: 2px 0 2px 18px;\\n      margin: 18px 0;\\n    }\\n    .np-triberocket.tr-launches .tr-phase h3 { margin-top: 0; }\\n    .np-triberocket.tr-launches table {\\n      width: 100%;\\n      border-collapse: collapse;\\n      margin: 14px 0 20px;\\n      font-size: 0.96rem;\\n    }\\n    .np-triberocket.tr-launches th, .np-triberocket.tr-launches td {\\n      text-align: left;\\n      padding: 11px 12px;\\n      border-bottom: 1px solid var(--tr-line);\\n      vertical-align: top;\\n    }\\n    .np-triberocket.tr-launches th {\\n      background: var(--tr-soft);\\n      font-weight: 700;\\n      font-size: 0.86rem;\\n      letter-spacing: 0.02em;\\n    }\\n    .np-triberocket.tr-launches .tr-cedros {\\n      background: var(--tr-accent-soft);\\n      border: 1px solid #d6d9fb;\\n      border-radius: 14px;\\n      padding: 20px 22px;\\n      margin: 28px 0;\\n    }\\n    .np-triberocket.tr-launches .tr-cedros h2 { margin-top: 0; }\\n    .np-triberocket.tr-launches .tr-cta {\\n      display: inline-block;\\n      margin: 6px 10px 6px 0;\\n      padding: 12px 20px;\\n      border-radius: 10px;\\n      background: var(--tr-accent);\\n      color: #fff;\\n      font-weight: 600;\\n      text-decoration: none;\\n    }\\n    .np-triberocket.tr-launches .tr-cta:hover { background: #2122ad; text-decoration: none; }\\n    .np-triberocket.tr-launches .tr-cta.tr-ghost {\\n      background: transparent;\\n      color: var(--tr-accent);\\n      border: 1px solid var(--tr-accent);\\n    }\\n    .np-triberocket.tr-launches .tr-cta.tr-ghost:hover { background: var(--tr-accent-soft); }\\n    .np-triberocket.tr-launches .tr-ctarow { margin: 18px 0 6px; }\\n    .np-triberocket.tr-launches .tr-faq dt {\\n      font-weight: 700;\\n      margin: 20px 0 4px;\\n      font-size: 1.05rem;\\n    }\\n    .np-triberocket.tr-launches .tr-faq dd { margin: 0 0 14px; color: var(--tr-muted); }\\n    .np-triberocket.tr-launches .tr-meta {\\n      font-size: 0.85rem;\\n      color: var(--tr-muted);\\n      border-top: 1px solid var(--tr-line);\\n      margin-top: 44px;\\n      padding-top: 16px;\\n    }\\n    @media (max-width: 560px) {\\n      .np-triberocket.tr-launches { font-size: 16px; }\\n      .np-triberocket.tr-launches .tr-wrap { padding: 22px 16px 56px; }\\n      .np-triberocket.tr-launches table { font-size: 0.9rem; }\\n      .np-triberocket.tr-launches th, .np-triberocket.tr-launches td { padding: 9px 9px; }\\n    }\\n  \")\n      , _react2.default.createElement('div', { className: \"tr-wrap\",}\n        , _react2.default.createElement('span', { className: \"tr-kicker\",}, \"Launches Hub - Pillar 5\"    )\n        , _react2.default.createElement('h1', null, \"Launch & Campaign Playbooks: Run Social Campaigns That Convert\"        )\n        , _react2.default.createElement('p', { className: \"tr-lede\",}, \"A launch is not one big post. It is a sequence with a beginning, a middle, and a destination. This hub gives you the end-to-end playbooks for waitlists, announcements, community openings, challenges, and referral campaigns - plus the part most people skip: sending the attention you earn to a place you actually own. No manufactured scarcity, no fake countdowns, no hype.\"\n\n\n\n\n        )\n\n        , _react2.default.createElement('div', { className: \"tr-ctarow\",}\n          , _react2.default.createElement('a', { className: \"tr-cta\", href: \"/blog/launch-and-campaign-playbook\",}, \"Read the launch & campaign playbook\"     )\n          , _react2.default.createElement('a', { className: \"tr-cta tr-ghost\" , href: \"/blog/social-media-launch-mistakes\",}, \"Avoid the launch mistakes that leak clicks\"      )\n        )\n\n        , _react2.default.createElement('section', { className: \"tr-summary\", 'aria-label': \"Plain-language summary\" ,}\n          , _react2.default.createElement('h2', null, \"The short version\"  )\n          , _react2.default.createElement('p', null, \"Most launches underperform for boring, fixable reasons: there was no runway, the offer was vague, the posting was one-and-done, or the audience had nowhere to go after they got interested. A good campaign fixes all four. It warms people up before the open, says one clear thing repeatedly without spamming, and points every post at a single owned destination - a waitlist, a landing page, or a community door.\"\n\n\n\n\n\n          )\n          , _react2.default.createElement('ul', null\n            , _react2.default.createElement('li', null, _react2.default.createElement('strong', null, \"What a launch is:\"   ), \" a timed sequence (warm-up, open, reminders, close, follow-up), not a single announcement.\"            )\n            , _react2.default.createElement('li', null, _react2.default.createElement('strong', null, \"The non-negotiable:\" ), \" every campaign needs a destination you own, not just a profile link.\"            )\n            , _react2.default.createElement('li', null, _react2.default.createElement('strong', null, \"Honest expectations:\" ), \" launches reflect the trust you built beforehand. No manufactured urgency required.\"           )\n            , _react2.default.createElement('li', null, _react2.default.createElement('strong', null, \"Start with:\" ), \" the \"  , _react2.default.createElement('a', { href: \"/blog/launch-and-campaign-playbook\",}, \"cornerstone playbook\" ), \", then pick the campaign type that matches your goal below.\"          )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"who-when\",}\n          , _react2.default.createElement('h2', { id: \"who-when\",}, \"Who this is for and when to use it\"        )\n          , _react2.default.createElement('p', null, \"This hub is for you when you have something specific to put in front of your audience and a date to do it.\"                      )\n          , _react2.default.createElement('div', { className: \"tr-grid\",}\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Who this is for\"   )\n              , _react2.default.createElement('ul', null\n                , _react2.default.createElement('li', null, \"Founders launching a product, service, or store\"      )\n                , _react2.default.createElement('li', null, \"Course creators and newsletter operators opening enrollment\"      )\n                , _react2.default.createElement('li', null, \"Community builders opening the doors to a new group\"        )\n                , _react2.default.createElement('li', null, \"Local businesses promoting an event, drop, or seasonal offer\"        )\n                , _react2.default.createElement('li', null, \"Agencies and social media managers running campaigns for clients\"        )\n              )\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"When to use this\"   )\n              , _react2.default.createElement('ul', null\n                , _react2.default.createElement('li', null, \"You have a launch date and need a posting sequence\"         )\n                , _react2.default.createElement('li', null, \"A past launch fell flat and you want to know why\"          )\n                , _react2.default.createElement('li', null, \"People engage with posts but you have nowhere good to send them\"           )\n                , _react2.default.createElement('li', null, \"You want to grow and activate an audience with a challenge\"          )\n                , _react2.default.createElement('li', null, \"The launch ended and you do not want to lose the momentum\"           )\n              )\n            )\n          )\n          , _react2.default.createElement('p', null, \"If you are still deciding what to post week to week, start one level up with\"\n                           , \" \"\n            , _react2.default.createElement('a', { href: \"/social-media-strategy\",}, \"social media strategy\"  ), \". If you are not sure your audience trusts you enough to buy yet, the give-before-ask sequence in\"\n                     , \" \"\n            , _react2.default.createElement('a', { href: \"/blog/build-trust-before-selling\",}, \"building trust before selling\"   ), \" comes first.\"\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"anatomy\",}\n          , _react2.default.createElement('h2', { id: \"anatomy\",}, \"The anatomy of a campaign\"    )\n          , _react2.default.createElement('p', null, \"Every launch in this hub follows the same five-phase shape. The details change by campaign type, but the structure does not. If a launch is missing a phase, that is usually where it leaks.\"\n\n\n\n          )\n          , _react2.default.createElement('div', { className: \"tr-phase\",}\n            , _react2.default.createElement('h3', null, \"1. Warm-up (the runway)\"   )\n            , _react2.default.createElement('p', null, \"Build interest before there is anything to buy. Tease the problem you solve, share the story behind what you are making, and invite people to a waitlist so demand is visible before the open.\"\n\n\n\n            )\n          )\n          , _react2.default.createElement('div', { className: \"tr-phase\",}\n            , _react2.default.createElement('h3', null, \"2. Open\" )\n            , _react2.default.createElement('p', null, \"Reveal the offer clearly: what it is, who it is for, and the one action you want. Say it plainly. Confusion at the open costs you more than any clever hook can earn.\"\n\n\n            )\n          )\n          , _react2.default.createElement('div', { className: \"tr-phase\",}\n            , _react2.default.createElement('h3', null, \"3. Reminders (the middle)\"   )\n            , _react2.default.createElement('p', null, \"Repeat the message from different angles - answer objections, share proof, show the offer in use. Repetition is not spam when each post adds something. This is the phase most people skip, and it is where many people make up their minds.\"\n\n\n            )\n          )\n          , _react2.default.createElement('div', { className: \"tr-phase\",}\n            , _react2.default.createElement('h3', null, \"4. Close\" )\n            , _react2.default.createElement('p', null, \"Be honest about real deadlines (a cohort start, limited seats, a true price change). Never invent scarcity. A genuine close is a service to people who were on the fence; a fake one burns the trust you spent weeks building.\"\n\n\n\n            )\n          )\n          , _react2.default.createElement('div', { className: \"tr-phase\",}\n            , _react2.default.createElement('h3', null, \"5. Follow-up (the part everyone forgets)\"     )\n            , _react2.default.createElement('p', null, \"Thank people, recap what happened, deliver well, and move the attention you earned onto a channel you own. A launch should leave you with a bigger owned audience than you started with - see the \"\n\n\n                  , _react2.default.createElement('a', { href: \"/blog/after-launch-momentum-plan\",}, \"after-launch momentum plan\"  ), \".\"\n            )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"playbooks\",}\n          , _react2.default.createElement('h2', { id: \"playbooks\",}, \"Pick your campaign playbook\"   )\n          , _react2.default.createElement('p', null, \"Each campaign type below is a full walkthrough. Start with the one that matches what you are actually running.\"\n\n\n          )\n          , _react2.default.createElement('div', { className: \"tr-grid\",}\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Waitlist launch\" )\n              , _react2.default.createElement('p', null, \"Build demand before the thing exists. A pre-launch sequence that earns interest honestly and gives you a list ready for the open.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/waitlist-launch-social-media-plan\",}, \"How to run a waitlist launch on social media\"        ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Announcement calendar\" )\n              , _react2.default.createElement('p', null, \"A day-by-day posting plan for the days around a launch so you are not just repeating \\\"buy now.\\\" Tease, reveal, prove, open, close.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/product-announcement-content-calendar\",}, \"The product announcement content calendar\"    ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Community launch\" )\n              , _react2.default.createElement('p', null, \"Open a new group without launching to silence. A readiness gate for purpose, rituals, seed members, guidelines, and welcome flow.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/community-launch-checklist\",}, \"The community launch checklist\"   ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Connect posts to a destination\"    )\n              , _react2.default.createElement('p', null, \"The mechanics of routing social attention to a page that converts: matching the post promise to the page promise, one clear next step.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/connect-social-posts-to-landing-pages\",}, \"How to connect social posts to a landing page\"        ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Challenge-based launch\" )\n              , _react2.default.createElement('p', null, \"Grow and activate an audience with a free, daily-prompt challenge that builds participation and leads to a natural offer at the end.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/challenge-based-launch-playbook\",}, \"The challenge-based launch playbook\"   ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Referral basics\" )\n              , _react2.default.createElement('p', null, \"Help your audience spread a launch with shareable assets, a clear ask, and real incentives - no bought shares, no brigading, no pods.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/referral-campaign-basics\",}, \"Referral campaign basics\"  ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Launch mistakes to avoid\"   )\n              , _react2.default.createElement('p', null, \"A teardown of why most social launches flop - no runway, no destination, vague offer, one-and-done posting - each paired with the fix.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/social-media-launch-mistakes\",}, \"Why most social media launches flop\"     ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"After-launch momentum\" )\n              , _react2.default.createElement('p', null, \"A post-launch plan to retain and re-engage the people who showed up, and turn one win into a repeatable loop.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/after-launch-momentum-plan\",}, \"After the launch: keep the momentum\"     ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Launch glossary\" )\n              , _react2.default.createElement('p', null, \"Plain-English definitions - waitlist, soft launch, open/close cart, and more - with a one-line \\\"use this when\\\" for each term.\"\n\n\n              )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/blog/launch-campaign-glossary\",}, \"The launch campaign glossary\"   ))\n            )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"matcher\",}\n          , _react2.default.createElement('h2', { id: \"matcher\",}, \"Match a campaign type to your goal\"      )\n          , _react2.default.createElement('p', null, \"Not sure which playbook fits? Find your situation, then go straight to it.\"            )\n          , _react2.default.createElement('div', { className: \"np-table\", tabIndex: 0, role: \"region\", 'aria-label': \"Scrollable reference table\"  ,}, _react2.default.createElement('table', null\n            , _react2.default.createElement('thead', null\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('th', null, \"Your situation\" )\n                , _react2.default.createElement('th', null, \"Best campaign type\"  )\n                , _react2.default.createElement('th', null, \"Start here\" )\n              )\n            )\n            , _react2.default.createElement('tbody', null\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"Idea exists, product does not yet\"     )\n                , _react2.default.createElement('td', null, \"Waitlist launch\" )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/waitlist-launch-social-media-plan\",}, \"Waitlist plan\" ))\n              )\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"Product is ready, need a posting plan\"      )\n                , _react2.default.createElement('td', null, \"Announcement calendar\" )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/product-announcement-content-calendar\",}, \"14-day calendar\" ))\n              )\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"Opening a new group or membership\"     )\n                , _react2.default.createElement('td', null, \"Community launch\" )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/community-launch-checklist\",}, \"Launch checklist\" ))\n              )\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"Want to grow and activate before selling\"      )\n                , _react2.default.createElement('td', null, \"Challenge-based launch\" )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/challenge-based-launch-playbook\",}, \"Challenge playbook\" ))\n              )\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"Posts get engagement but no clicks convert\"      )\n                , _react2.default.createElement('td', null, \"Connect posts to a destination\"    )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/connect-social-posts-to-landing-pages\",}, \"Bridge playbook\" ))\n              )\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"A past launch underperformed\"   )\n                , _react2.default.createElement('td', null, \"Diagnose the mistakes\"  )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/social-media-launch-mistakes\",}, \"Launch mistakes\" ))\n              )\n              , _react2.default.createElement('tr', null\n                , _react2.default.createElement('td', null, \"The launch ended, audience is cooling off\"      )\n                , _react2.default.createElement('td', null, \"After-launch momentum\" )\n                , _react2.default.createElement('td', null, _react2.default.createElement('a', { href: \"/blog/after-launch-momentum-plan\",}, \"Momentum plan\" ))\n              )\n            )\n          ))\n        )\n\n        , _react2.default.createElement('section', { className: \"tr-cedros\", 'aria-labelledby': \"destination\",}\n          , _react2.default.createElement('h2', { id: \"destination\",}, \"Every campaign needs a destination\"    )\n          , _react2.default.createElement('p', null, \"You can run a flawless posting sequence and still lose the launch if the click lands nowhere useful. A profile link is not a destination. Before you open, decide where the attention goes and what the one next step is - usually a waitlist, a landing page, or a community door - and make that page match the promise of your posts.\"\n\n\n\n\n          )\n          , _react2.default.createElement('p', null, \"If you need a place to build that page, our sister product\"\n                       , \" \"\n            , _react2.default.createElement('strong', null, \"Cedros\"), \" is a simple builder for landing pages and small websites you own. That is the soft, honest mention - no hard sell. The strategy works regardless of what you build it with. Plan the destination first, then build it.\"\n\n\n          )\n          , _react2.default.createElement('p', null, \"Learn the full owned-destination approach on the\"\n                  , \" \"\n            , _react2.default.createElement('a', { href: \"/owned-audience\",}, \"owned audience hub\"  ), \", weigh your options with\"    , \" \"\n            , _react2.default.createElement('a', { href: \"/blog/link-in-bio-vs-landing-page\",}, \"link-in-bio vs landing page\"   ), \", and spec the page itself with the \"\n               , _react2.default.createElement('a', { href: \"/blog/landing-page-brief-template\",}, \"six-field landing page brief\"   ), \".\"\n          )\n          , _react2.default.createElement('div', { className: \"tr-ctarow\",}\n            , _react2.default.createElement('a', { className: \"tr-cta\", href: \"/owned-audience\",}, \"Explore the owned audience hub\"    )\n            , _react2.default.createElement('a', { className: \"tr-cta tr-ghost\" , href: \"/blog/connect-social-posts-to-landing-pages\",}, \"Landing page checklist\"  )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"tools\",}\n          , _react2.default.createElement('h2', { id: \"tools\",}, \"Checklists and tools for your launch\"     )\n          , _react2.default.createElement('p', null, \"Use these to run a campaign without dropping the ball on the operational details.\"             )\n          , _react2.default.createElement('ul', null\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { href: \"/blog/launch-and-campaign-playbook\",}, \"The launch & campaign playbook\"    ), \" - the end-to-end readiness list, from runway to follow-up.\"         )\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { href: \"/blog/connect-social-posts-to-landing-pages\",}, \"Connect social posts to landing pages\"     ), \" - make sure your destination matches your posts and converts.\"          )\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { href: \"/blog/landing-page-brief-template\",}, \"The landing page brief\"   ), \" - spec the goal, audience, offer, message match, and single CTA before you build.\"              )\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { href: \"/resources\",}, \"Browse the full resource library\"    ), \" - calendars, templates, checklists, and prompt packs.\"       )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"related\",}\n          , _react2.default.createElement('h2', { id: \"related\",}, \"Related pillars\" )\n          , _react2.default.createElement('p', null, \"A launch is one moment in a larger system. These hubs feed into and out of it.\"                )\n          , _react2.default.createElement('div', { className: \"tr-grid\",}\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Owned audience\" )\n              , _react2.default.createElement('p', null, \"Where launch traffic should land and stay.\"      )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/owned-audience\",}, \"Owned audience & conversion\"   ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Community building\" )\n              , _react2.default.createElement('p', null, \"For community launches and keeping members active after.\"       )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/community-building\",}, \"Community building\" ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Social media strategy\"  )\n              , _react2.default.createElement('p', null, \"The week-to-week system your launch sits on top of.\"        )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/social-media-strategy\",}, \"Social media strategy\"  ))\n            )\n            , _react2.default.createElement('div', { className: \"tr-card\",}\n              , _react2.default.createElement('h3', null, \"Analytics & iteration\"  )\n              , _react2.default.createElement('p', null, \"Review what worked after the launch closes.\"      )\n              , _react2.default.createElement('p', null, _react2.default.createElement('a', { href: \"/analytics\",}, \"Analytics & experiments\"  ))\n            )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"faq\",}\n          , _react2.default.createElement('h2', { id: \"faq\",}, \"Launch campaign FAQ\"  )\n          , _react2.default.createElement('dl', { className: \"tr-faq\",}\n            , _react2.default.createElement('dt', null, \"How long before launch day should I start posting?\"        )\n            , _react2.default.createElement('dd', null, \"Long enough to build a runway, not so long that people forget. A short warm-up phase that teases the problem and invites people to a waitlist gives demand somewhere to gather before the open. The right length depends on your audience size and how warm they already are - a cold audience needs more runway than a community that already trusts you. The\"\n\n\n\n                          , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/waitlist-launch-social-media-plan\",}, \"waitlist launch plan\"  ), \" walks through the sequencing.\"\n\n            )\n\n            , _react2.default.createElement('dt', null, \"Why did my last launch get engagement but barely any sales?\"          )\n            , _react2.default.createElement('dd', null, \"Usually one of two leaks: the offer was unclear at the open, or there was no good destination for interested people to act on. Engagement is attention, not a transaction - you have to give people a single, obvious next step on a page you control. See\"\n\n\n                             , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/social-media-launch-mistakes\",}, \"why most launches flop\"   ), \" and\" , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/connect-social-posts-to-landing-pages\",}, \"how to connect posts to a landing page\"       ), \".\"\n            )\n\n            , _react2.default.createElement('dt', null, \"Isn't urgency necessary to make a launch convert?\"       )\n            , _react2.default.createElement('dd', null, \"Real deadlines help people decide - a cohort that genuinely starts on a date, a true number of seats, an actual price change. What does not work, and what Tribe Rocket will not teach, is manufactured scarcity: fake countdowns, invented \\\"almost sold out\\\" claims, or resetting timers. Honest urgency respects your audience; fake urgency spends trust you cannot easily earn back.\"\n\n\n\n\n\n            )\n\n            , _react2.default.createElement('dt', null, \"How many times can I post about my launch without annoying people?\"           )\n            , _react2.default.createElement('dd', null, \"More than you think, as long as each post adds something. Repeating the same announcement word-for-word is spam; covering the offer from new angles - an objection, a use case, the story behind it, a question you keep getting - is the reminder phase doing its job. Many launches go quiet in the middle rather than over-posting. The\"\n\n\n                                        , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/product-announcement-content-calendar\",}, \"announcement calendar\" ), \" gives you a day-by-day mix.\"\n\n            )\n\n            , _react2.default.createElement('dt', null, \"I only have a small audience. Is it even worth launching?\"          )\n            , _react2.default.createElement('dd', null, \"Yes - a small, engaged audience often converts better than a large passive one. A waitlist or a free challenge can grow and activate that audience before the open. The goal is not a viral moment; it is reaching the people who already care with a clear offer. Pair this with\"\n\n\n                              , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/challenge-based-launch-playbook\",}, \"the challenge-based launch playbook\"   ), \" and\" , \" \"\n              , _react2.default.createElement('a', { href: \"/community-building\",}, \"community building\" ), \".\"\n            )\n\n            , _react2.default.createElement('dt', null, \"Do I really need a landing page, or is my link-in-bio enough?\"           )\n            , _react2.default.createElement('dd', null, \"For a campaign with a specific goal, a dedicated landing page is usually a clearer destination than a general link hub, because it can match the exact promise of your posts and offer one clear action. A link-in-bio is a directory; a landing page is a destination. Compare them in\"\n\n                             , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/link-in-bio-vs-landing-page\",}, \"link-in-bio vs landing page\"   ), \", and plan the page with the \"\n                 , _react2.default.createElement('a', { href: \"/owned-audience\",}, \"owned audience hub\"  ), \" (you can build one with our sister product Cedros if you need a tool).\"\n\n            )\n\n            , _react2.default.createElement('dt', null, \"What's the difference between a waitlist, a soft launch, and an open-cart launch?\"            )\n            , _react2.default.createElement('dd', null, \"A waitlist gathers interested people before anything is for sale. A soft launch opens quietly to a small group to test and gather feedback. An open/close-cart launch makes the offer available for a defined window. Each fits a different goal and readiness level - the\"\n\n\n                             , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/launch-campaign-glossary\",}, \"launch glossary\" ), \" defines these with a \\\"use this when\\\" for each.\"\n\n            )\n\n            , _react2.default.createElement('dt', null, \"The launch is over. How do I keep the people who showed up?\"            )\n            , _react2.default.createElement('dd', null, \"Treat the close as a handoff, not an ending. Thank and recap, deliver what you promised, and move the attention you earned onto a channel you own - an email list or a community hub - so you can reach those people again without depending on a feed. The\"\n\n\n                         , \" \"\n              , _react2.default.createElement('a', { href: \"/blog/after-launch-momentum-plan\",}, \"after-launch momentum plan\"  ), \" covers the follow-up sequence, and the \"\n                  , _react2.default.createElement('a', { href: \"/analytics\",}, \"analytics hub\" ), \" helps you review what to repeat next time.\"\n\n            )\n          )\n        )\n\n        , _react2.default.createElement('section', { 'aria-labelledby': \"next\",}\n          , _react2.default.createElement('h2', { id: \"next\",}, \"Start your next campaign\"   )\n          , _react2.default.createElement('p', null, \"Read the cornerstone playbook for the full picture, work the phases into your own calendar, and plan the destination before you post.\"\n\n\n          )\n          , _react2.default.createElement('div', { className: \"tr-ctarow\",}\n            , _react2.default.createElement('a', { className: \"tr-cta\", href: \"/blog/launch-and-campaign-playbook\",}, \"Read the launch & campaign playbook\"     )\n            , _react2.default.createElement('a', { className: \"tr-cta tr-ghost\" , href: \"/blog/social-media-launch-mistakes\",}, \"Avoid the launch mistakes that leak clicks\"      )\n            , _react2.default.createElement('a', { className: \"tr-cta tr-ghost\" , href: \"/start-here\",}, \"New here? Start here\"   )\n          )\n        )\n\n        , _react2.default.createElement('p', { className: \"tr-meta\",}, \"Launch playbooks describe durable campaign structure, not platform-specific mechanics. Specific platform features and ad tools change often - always check the official platform docs before you rely on them.\"\n\n\n\n        )\n      )\n\n, _react2.default.createElement('style', null, \"\\n.np-triberocket{--np-paper:#eef0e8;--np-ink:#2f3937;--np-accent:#bfcfd1;box-sizing:border-box;max-width:none!important;width:100%;min-height:100vh;background:var(--np-paper)!important;color:var(--np-ink)!important;margin:0!important;padding:0 clamp(20px,5vw,72px) 72px!important;font-family:Arial,Helvetica,sans-serif!important;font-size:17px!important;line-height:1.75!important;overflow-wrap:anywhere}\\n.np-triberocket *{box-sizing:border-box;min-width:0}.np-triberocket>*{max-width:1080px;margin-left:auto;margin-right:auto}.np-triberocket .np-topbar{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 0;margin-bottom:52px;border-bottom:1px solid var(--np-ink)}.np-triberocket .np-brand{font-family:Georgia,serif;font-size:22px;letter-spacing:-.5px;text-decoration:none}.np-triberocket .np-topbar nav{display:flex;flex-wrap:wrap;gap:10px 22px}.np-triberocket .np-topbar nav a{display:inline-flex;align-items:center;min-height:44px;font-size:13px;text-decoration:none;border-bottom:1px solid transparent}.np-triberocket .np-topbar nav a:hover{border-bottom-color:currentColor}\\n.np-triberocket h1{font-family:Georgia,'Times New Roman',serif!important;font-weight:400!important;font-size:clamp(36px,5.2vw,66px)!important;line-height:1.08!important;letter-spacing:-1.8px!important;max-width:960px;margin-top:0!important;margin-bottom:28px!important;text-wrap:balance;color:var(--np-ink)!important}.np-triberocket h2{font-family:Georgia,'Times New Roman',serif!important;font-weight:400!important;font-size:clamp(25px,3vw,35px)!important;line-height:1.25!important;letter-spacing:-.5px!important;color:var(--np-ink)!important;margin-top:38px!important;margin-bottom:18px!important;text-wrap:balance}.np-triberocket h3{font-size:19px!important;line-height:1.4!important;color:var(--np-ink)!important;margin-top:24px!important;margin-bottom:10px!important}.np-triberocket p,.np-triberocket li{line-height:1.8!important;max-width:78ch}.np-triberocket p{margin-bottom:18px!important}.np-triberocket p,.np-triberocket li,.np-triberocket label{color:var(--np-ink)!important}.np-triberocket main,.np-triberocket article,.np-triberocket section{max-width:100%}.np-triberocket section{padding-top:8px!important;padding-bottom:24px!important;background:transparent!important}.np-triberocket section+section{border-top:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent);margin-top:32px!important}.np-triberocket ul,.np-triberocket ol{padding-left:24px;max-width:78ch}.np-triberocket li{margin-bottom:10px!important}\\n.np-triberocket a{color:var(--np-ink);text-underline-offset:4px;text-decoration-thickness:1px}.np-triberocket a:hover{text-decoration:underline}.np-triberocket a:focus-visible,.np-triberocket button:focus-visible,.np-triberocket input:focus-visible,.np-triberocket select:focus-visible,.np-triberocket textarea:focus-visible,.np-triberocket summary:focus-visible{outline:3px solid var(--np-ink);outline-offset:5px}.np-triberocket button,.np-triberocket input,.np-triberocket select,.np-triberocket textarea{font:inherit;max-width:100%;min-height:44px;border-radius:3px!important}.np-triberocket button{cursor:pointer}.np-triberocket [class*=\\\"cta\\\"] a,.np-triberocket [class*=\\\"button\\\"]{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:12px 20px!important;background:var(--np-ink)!important;color:var(--np-paper)!important;border:1px solid var(--np-ink)!important;border-radius:3px!important;text-decoration:none!important;font-size:14px!important;font-weight:600!important;white-space:normal;line-height:1.45!important}.np-triberocket details{border:1px solid color-mix(in srgb,var(--np-ink) 28%,transparent)!important;border-radius:3px!important;padding:0 18px!important;background:transparent!important;margin-bottom:12px!important}.np-triberocket summary{min-height:48px;padding:14px 0;cursor:pointer;font-weight:600;line-height:1.5}.np-triberocket details>p{padding-bottom:12px}.np-triberocket blockquote{border-left:3px solid var(--np-ink)!important;background:var(--np-accent)!important;color:var(--np-ink)!important;padding:18px 22px!important;margin:24px 0!important;max-width:78ch}.np-triberocket .np-table{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:24px 0;outline-offset:4px}.np-triberocket table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.65;display:table!important;overflow:visible!important}.np-triberocket th{background:var(--np-accent)!important;color:var(--np-ink)!important;text-align:left;padding:15px!important;font-weight:600}.np-triberocket td{color:var(--np-ink)!important;background:transparent!important;padding:15px!important;border-bottom:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent)!important;vertical-align:top}.np-triberocket pre{max-width:100%;overflow-x:auto;padding:20px;background:var(--np-ink)!important;color:var(--np-paper)!important;line-height:1.6;font-size:14px}.np-triberocket pre code{color:inherit!important;background:transparent!important}.np-triberocket img,.np-triberocket svg{max-width:100%;height:auto}\\n@media(max-width:680px){.np-triberocket{font-size:16px!important;padding-left:20px!important;padding-right:20px!important}.np-triberocket .np-topbar{display:block;margin-bottom:36px;padding-top:20px}.np-triberocket .np-topbar nav{margin-top:12px;gap:4px 18px}.np-triberocket h1{letter-spacing:-1px!important}.np-triberocket [style*=\\\"grid-template-columns\\\"]{grid-template-columns:minmax(0,1fr)!important}.np-triberocket [class*=\\\"cta\\\"]{flex-wrap:wrap!important;gap:12px!important}.np-triberocket .np-table table{min-width:580px}.np-triberocket th,.np-triberocket td{padding:12px!important}.np-triberocket blockquote{padding:16px!important}}\\n@media(prefers-reduced-motion:reduce){.np-triberocket *{scroll-behavior:auto!important;transition:none!important}}\\n\")\n)\n  );\n} exports.default = LaunchesPage;"}