{"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 ToolsHubPage() {\n  return (\n    _react2.default.createElement('div', { className: [\"np-kodbe\",\"kb-page\"].join(\" \"),}\n\n\n      , _react2.default.createElement('style', null, \".np-kodbe.kb-page{--ink:var(--cpuom9j-runtime-text,#151a22);--muted:var(--cpuom9j-runtime-muted,#586173);--bg:var(--cpuom9j-runtime-bg,#ffffff);--surface:var(--cpuom9j-runtime-panel,#f6f8fb);--surface2:var(--cpuom9j-runtime-accent-soft,#eef2f8);--border:var(--cpuom9j-runtime-border,#e2e8f1);--brand:var(--cpuom9j-runtime-accent,#2e5be6);--brand-ink:var(--cpuom9j-runtime-accent,#1e3fa8);--accent:var(--cpuom9j-runtime-accent-soft,#0e9f86);--infobg:var(--cpuom9j-runtime-panel,#eef3fe);--warnbg:var(--cpuom9j-runtime-panel,#fdf6e9);--warnborder:var(--cpuom9j-runtime-border,#f0e2c2);--safebg:var(--cpuom9j-runtime-panel,#eafaf5);--safeborder:var(--cpuom9j-runtime-border,#c8efe0);color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;}\\n.np-kodbe.kb-page *{box-sizing:border-box;}\\n.np-kodbe .kb-wrap{max-width:880px;margin:0 auto;padding:36px 20px 72px;}\\n.np-kodbe .kb-wrap.kb-wide{max-width:1080px;}\\n.np-kodbe .kb-eyebrow{font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;color:var(--brand-ink);font-weight:700;margin:0 0 10px;}\\n.np-kodbe .kb-h1{font-size:clamp(2rem,5vw,3rem);line-height:1.12;margin:0 0 14px;letter-spacing:-.02em;}\\n.np-kodbe .kb-lead{font-size:clamp(1.05rem,2.4vw,1.28rem);color:var(--muted);margin:0 0 6px;max-width:62ch;}\\n.np-kodbe .kb-hero{padding:4px 0 4px;}\\n.np-kodbe .kb-section{margin:44px 0 0;}\\n.np-kodbe .kb-h2{font-size:clamp(1.35rem,3vw,1.8rem);line-height:1.2;margin:0 0 12px;letter-spacing:-.01em;}\\n.np-kodbe .kb-p{margin:0 0 14px;max-width:68ch;}\\n.np-kodbe .kb-list{margin:0 0 14px;padding-left:1.2em;max-width:68ch;}\\n.np-kodbe .kb-list li{margin:0 0 9px;}\\n.np-kodbe .kb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;margin:6px 0 0;}\\n.np-kodbe .kb-card{border:1px solid var(--border);border-radius:14px;padding:18px;background:var(--bg);display:flex;flex-direction:column;gap:7px;}\\n.np-kodbe .kb-card h3{margin:0;font-size:1.06rem;}\\n.np-kodbe .kb-card p{margin:0;color:var(--muted);font-size:.97rem;}\\n.np-kodbe .kb-card .kb-link{margin-top:4px;}\\n.np-kodbe .kb-link{color:var(--brand-ink);text-decoration:underline;text-underline-offset:2px;font-weight:600;}\\n.np-kodbe .kb-link:hover{color:var(--brand);}\\n.np-kodbe .kb-cta-row{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 0;}\\n.np-kodbe .kb-btn{display:inline-block;border-radius:10px;padding:12px 18px;font-weight:700;text-decoration:none;font-size:1rem;border:1px solid transparent;cursor:pointer;}\\n.np-kodbe .kb-btn.primary{background:var(--brand);color:#fff;}\\n.np-kodbe .kb-btn.primary:hover{background:var(--brand-ink);}\\n.np-kodbe .kb-btn.secondary{background:var(--surface2);color:var(--brand-ink);border-color:var(--border);}\\n.np-kodbe .kb-btn.ghost{background:transparent;color:var(--brand-ink);border-color:var(--border);}\\n.np-kodbe .kb-summary{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin:26px 0 0;}\\n.np-kodbe .kb-summary h2{font-size:.82rem;margin:0 0 8px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);}\\n.np-kodbe .kb-summary p{margin:0;max-width:68ch;}\\n.np-kodbe .kb-callout{border-radius:12px;padding:14px 16px;margin:20px 0 0;border:1px solid var(--border);max-width:70ch;}\\n.np-kodbe .kb-callout.info{background:var(--infobg);}\\n.np-kodbe .kb-callout.caution{background:var(--warnbg);border-color:var(--warnborder);}\\n.np-kodbe .kb-callout.safety{background:var(--safebg);border-color:var(--safeborder);}\\n.np-kodbe .kb-callout strong{display:block;margin-bottom:4px;}\\n.np-kodbe .kb-callout p{margin:0;}\\n.np-kodbe .kb-faq{margin:6px 0 0;max-width:72ch;}\\n.np-kodbe .kb-faq details{border-bottom:1px solid var(--border);padding:12px 0;}\\n.np-kodbe .kb-faq summary{cursor:pointer;font-weight:700;font-size:1.05rem;list-style:none;}\\n.np-kodbe .kb-faq summary::-webkit-details-marker{display:none;}\\n.np-kodbe .kb-faq summary::after{content:'+';float:right;color:var(--muted);margin-left:12px;}\\n.np-kodbe .kb-faq details[open] summary::after{content:'\\\\2013';}\\n.np-kodbe .kb-faq p{margin:10px 0 0;color:var(--muted);}\\n.np-kodbe .kb-steps{margin:0;padding-left:1.3em;max-width:70ch;}\\n.np-kodbe .kb-steps li{margin:0 0 12px;}\\n.np-kodbe .kb-disclaimer{margin-top:52px;font-size:.85rem;color:var(--muted);border-top:1px solid var(--border);padding-top:16px;max-width:72ch;}\\n@media (max-width:640px){.np-kodbe .kb-wrap{padding:26px 16px 56px;}}\")\n      , _react2.default.createElement('div', { className: \"kb-wrap kb-wide\" ,}\n        , _react2.default.createElement('header', { className: \"kb-hero\",}\n          , _react2.default.createElement('p', { className: \"kb-eyebrow\",}, \"Guide hub\")\n          , _react2.default.createElement('h1', { className: \"kb-h1\",}, \"Tools, judged by how well you can live with them\")\n          , _react2.default.createElement('p', { className: \"kb-lead\",}, \"Vendor-neutral education on AI and no-code build tools, focused on day-2 fit: how maintainable, exportable, and secure they are, not just how fast they launch.\")\n          , _react2.default.createElement('div', { className: \"kb-cta-row\",}\n            , _react2.default.createElement('a', { className: \"kb-btn primary\" , href: \"/blog/how-to-choose-an-ai-or-no-code-tool\",}, \"Start: choose a tool you can live with\")\n            , _react2.default.createElement('a', { className: \"kb-btn secondary\" , href: \"/blog/how-we-rate-tools-for-day-2\",}, \"See how we rate tools\")\n          )\n        )\n        , _react2.default.createElement('aside', { className: \"kb-summary\",}\n          , _react2.default.createElement('h2', null, \"In plain English\")\n          , _react2.default.createElement('p', null, \"Most tool coverage focuses on launch speed. We focus on what happens after: can you maintain it, export from it, and trust its security posture? This hub helps you choose and understand tools with day-2 in mind.\")\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Who this is for\")\n          , _react2.default.createElement('ul', { className: \"kb-list\",}\n            , _react2.default.createElement('li', null, \"Builders choosing between AI and no-code platforms\")\n            , _react2.default.createElement('li', null, \"People who want the day-2 view, not launch hype\")\n            , _react2.default.createElement('li', null, \"Anyone trying to understand a tool their app already uses\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"When to use this hub\")\n          , _react2.default.createElement('ul', { className: \"kb-list\",}\n            , _react2.default.createElement('li', null, \"Before you commit to a platform\")\n            , _react2.default.createElement('li', null, \"When you are comparing two tools\")\n            , _react2.default.createElement('li', null, \"When you inherit an app built on a tool you do not know\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"How we look at tools (day-2, not launch speed)\")\n          , _react2.default.createElement('p', { className: \"kb-p\",}, \"We judge tools on three day-2 questions: how maintainable is what it produces, how easily can you export your data and code, and what is its documented security posture. Launch speed matters, but it is not the whole story.\")\n          , _react2.default.createElement('p', { className: \"kb-p\",}, \"Our assessments come from documentation review, not hands-on testing, and we label them that way. Kodbe carries no affiliate links today; if that changes, they will be disclosed, and a recommendation is never bought.\")\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Guides in this hub\")\n          , _react2.default.createElement('ul', { className: \"kb-list\",}\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/how-to-choose-an-ai-or-no-code-tool\",}, \"How to Choose an AI or No-Code Tool You Can Live With\"), \" \" , \"— selection criteria\")\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/lovable-vs-bubble-vs-replit\",}, \"Lovable vs Bubble vs Replit for Day-2\"), \" \" , \"— maintain and leave\")\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/cursor-claude-code-v0-explained\",}, \"What Cursor, Claude Code, and v0 Actually Do\"))\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/supabase-for-non-engineers\",}, \"Supabase for Non-Engineers\"), \" \" , \"— and how not to expose your data\")\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/no-code-vs-ai-coding\",}, \"No-Code vs AI-Coding\"))\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/how-we-rate-tools-for-day-2\",}, \"How We Rate Tools for Day-2\"), \" \" , \"— our method\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Where to go next\")\n          , _react2.default.createElement('div', { className: \"kb-grid\",}\n            , _react2.default.createElement('article', { className: \"kb-card\",}\n              , _react2.default.createElement('h3', null, \"Own your stack\")\n              , _react2.default.createElement('p', null, \"Exportability is a big part of choosing a tool.\")\n              , _react2.default.createElement('a', { className: \"kb-link\", href: \"/own\",}, \"Go to Own\")\n            )\n            , _react2.default.createElement('article', { className: \"kb-card\",}\n              , _react2.default.createElement('h3', null, \"Extend & grow it\")\n              , _react2.default.createElement('p', null, \"Some tools make safe changes easier than others.\")\n              , _react2.default.createElement('a', { className: \"kb-link\", href: \"/extend\",}, \"Go to Extend\")\n            )\n            , _react2.default.createElement('article', { className: \"kb-card\",}\n              , _react2.default.createElement('h3', null, \"Our disclosure\")\n              , _react2.default.createElement('p', null, \"How we make money without selling verdicts.\")\n              , _react2.default.createElement('a', { className: \"kb-link\", href: \"/disclosure\",}, \"Read the disclosure\")\n            )\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Choose with day-2 in mind\")\n          , _react2.default.createElement('p', { className: \"kb-p\",}, \"Score your lock-in and read how we assess tools before you commit.\")\n          , _react2.default.createElement('div', { className: \"kb-cta-row\",}\n            , _react2.default.createElement('a', { className: \"kb-btn primary\" , href: \"/scorecard\",}, \"Score your lock-in\")\n            , _react2.default.createElement('a', { className: \"kb-btn secondary\" , href: \"/newsletter\",}, \"Read the reading map\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Tools FAQ\")\n          , _react2.default.createElement('div', { className: \"kb-faq\",}\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"Do you test these tools hands-on?\")\n              , _react2.default.createElement('p', null, \"No. We review official documentation and changelogs and label our method as documentation review. We do not invent hands-on testing, benchmarks, ratings, or prices.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"Which tool is best?\")\n              , _react2.default.createElement('p', null, \"It depends on your needs. We explain trade-offs and \\\"best for whom\\\" rather than crowning a single winner, and we will say when to skip a tool.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"Are your links affiliate links?\")\n              , _react2.default.createElement('p', null, \"Not today: Kodbe carries no affiliate links. If that changes, they will be disclosed where they appear, and a recommendation will never be determined by payout; see our disclosure and rating method.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"What is \\\"day-2 fit\\\"?\")\n              , _react2.default.createElement('p', null, \"How well a tool serves you after launch: maintainability, how easily you can export your data and code, and its documented security posture.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"My app already uses a tool I do not understand. Where do I start?\")\n              , _react2.default.createElement('p', null, \"Read the explainer for that category (for example, Supabase or agentic coding tools) and the ownership guides, so you know what you depend on.\")\n            )\n          )\n        )\n        , _react2.default.createElement('p', { className: \"kb-disclaimer\",}, \"Kodbe is an independent publication about maintaining and owning software you built with AI or no-code tools. It is not affiliated with, endorsed by, or connected to Kodbe Inc (the Albany, GA educational nonprofit), Kodobe, Kodable, or Kodu.\")\n      )\n\n, _react2.default.createElement('style', null, \"\\n.np-kodbe{--np-paper:var(--cpuom9j-runtime-bg,#edf1eb);--np-ink:var(--cpuom9j-runtime-text,#21382e);--np-accent:var(--cpuom9j-runtime-accent-soft,#cae0b4);box-sizing:border-box;max-width:100%!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:var(--cpuom9j-font-body,Arial,sans-serif)!important;font-size:17px!important;line-height:1.75!important;overflow-wrap:anywhere}\\n.np-kodbe *{box-sizing:border-box;min-width:0}.np-kodbe>*{max-width:1080px;margin-left:auto;margin-right:auto}.np-kodbe .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-kodbe .np-brand{font-family:var(--cpuom9j-font-heading,Georgia,serif);font-size:22px;letter-spacing:-.5px;text-decoration:none}.np-kodbe .np-topbar nav{display:flex;flex-wrap:wrap;gap:10px 22px}.np-kodbe .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-kodbe .np-topbar nav a:hover{border-bottom-color:currentColor}\\n.np-kodbe 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-kodbe 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-kodbe h3{font-size:19px!important;line-height:1.4!important;color:var(--np-ink)!important;margin-top:24px!important;margin-bottom:10px!important}.np-kodbe p,.np-kodbe li{line-height:1.8!important;max-width:78ch}.np-kodbe p{margin-bottom:18px!important}.np-kodbe p,.np-kodbe li,.np-kodbe label{color:var(--np-ink)!important}.np-kodbe main,.np-kodbe article,.np-kodbe section{max-width:100%}.np-kodbe section{padding-top:8px!important;padding-bottom:24px!important;background:transparent!important}.np-kodbe section+section{border-top:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent);margin-top:32px!important}.np-kodbe ul,.np-kodbe ol{padding-left:24px;max-width:78ch}.np-kodbe li{margin-bottom:10px!important}\\n.np-kodbe a{color:var(--np-ink);text-underline-offset:4px;text-decoration-thickness:1px}.np-kodbe a:hover{text-decoration:underline}.np-kodbe a:focus-visible,.np-kodbe button:focus-visible,.np-kodbe input:focus-visible,.np-kodbe select:focus-visible,.np-kodbe textarea:focus-visible,.np-kodbe summary:focus-visible{outline:3px solid var(--np-ink);outline-offset:5px}.np-kodbe button,.np-kodbe input,.np-kodbe select,.np-kodbe textarea{font:inherit;max-width:100%;min-height:44px;border-radius:3px!important}.np-kodbe button{cursor:pointer}.np-kodbe [class*=\\\"cta\\\"] a,.np-kodbe [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-kodbe 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-kodbe summary{min-height:48px;padding:14px 0;cursor:pointer;font-weight:600;line-height:1.5}.np-kodbe details>p{padding-bottom:12px}.np-kodbe 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-kodbe .np-table{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:24px 0;outline-offset:4px}.np-kodbe table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.65;display:table!important;overflow:visible!important}.np-kodbe th{background:var(--np-accent)!important;color:var(--np-ink)!important;text-align:left;padding:15px!important;font-weight:600}.np-kodbe 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-kodbe 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-kodbe pre code{color:inherit!important;background:transparent!important}.np-kodbe img,.np-kodbe svg{max-width:100%;height:auto}\\n@media(max-width:680px){.np-kodbe{font-size:16px!important;padding-left:20px!important;padding-right:20px!important}.np-kodbe .np-topbar{display:block;margin-bottom:36px;padding-top:20px}.np-kodbe .np-topbar nav{margin-top:12px;gap:4px 18px}.np-kodbe h1{letter-spacing:-1px!important}.np-kodbe [style*=\\\"grid-template-columns\\\"]{grid-template-columns:minmax(0,1fr)!important}.np-kodbe [class*=\\\"cta\\\"]{flex-wrap:wrap!important;gap:12px!important}.np-kodbe .np-table table{min-width:580px}.np-kodbe th,.np-kodbe td{padding:12px!important}.np-kodbe blockquote{padding:16px!important}}\\n@media(prefers-reduced-motion:reduce){.np-kodbe *{scroll-behavior:auto!important;transition:none!important}}\\n\")\n)\n  );\n} exports.default = ToolsHubPage;"}