From 51b6412e33ec5fad384d77f0b5874ec1736e38b7 Mon Sep 17 00:00:00 2001 From: Muhammad Dhiyaul Atha Date: Thu, 22 Oct 2026 19:00:08 +0700 Subject: [PATCH 1/2] docs: add React neo-brutalism documentation site with prerendered SEO pages --- README.md | 4 + docs/web/.gitignore | 3 + docs/web/dist/assets/index-BVPC7Imb.css | 1 + docs/web/dist/assets/index-D3XNhmpo.js | 24 + docs/web/dist/assets/site.css | 1 + docs/web/dist/detect/index.html | 26 + docs/web/dist/exit-codes/index.html | 32 + docs/web/dist/getting-started/index.html | 32 + docs/web/dist/img/detect.png | Bin 0 -> 9057 bytes docs/web/dist/img/dry-run-force.png | Bin 0 -> 48550 bytes docs/web/dist/img/dry-run.png | Bin 0 -> 50824 bytes docs/web/dist/img/help.png | Bin 0 -> 37954 bytes docs/web/dist/img/init-conflict.png | Bin 0 -> 11062 bytes docs/web/dist/img/init-success.png | Bin 0 -> 11062 bytes docs/web/dist/img/invalid-config.png | Bin 0 -> 10758 bytes docs/web/dist/img/list.png | Bin 0 -> 18175 bytes docs/web/dist/img/validate.png | Bin 0 -> 6813 bytes docs/web/dist/img/version.png | Bin 0 -> 8874 bytes docs/web/dist/img/wizard.png | Bin 0 -> 8542 bytes docs/web/dist/index.html | 28 + docs/web/dist/init/index.html | 26 + docs/web/dist/robots.txt | 4 + docs/web/dist/sitemap.xml | 10 + docs/web/dist/validate/index.html | 27 + docs/web/dist/wizard/index.html | 26 + docs/web/index.html | 12 + docs/web/package-lock.json | 891 +++++++++++++++++++++++ docs/web/package.json | 20 + docs/web/public/img/detect.png | Bin 0 -> 9057 bytes docs/web/public/img/dry-run-force.png | Bin 0 -> 48550 bytes docs/web/public/img/dry-run.png | Bin 0 -> 50824 bytes docs/web/public/img/help.png | Bin 0 -> 37954 bytes docs/web/public/img/init-conflict.png | Bin 0 -> 11062 bytes docs/web/public/img/init-success.png | Bin 0 -> 11062 bytes docs/web/public/img/invalid-config.png | Bin 0 -> 10758 bytes docs/web/public/img/list.png | Bin 0 -> 18175 bytes docs/web/public/img/validate.png | Bin 0 -> 6813 bytes docs/web/public/img/version.png | Bin 0 -> 8874 bytes docs/web/public/img/wizard.png | Bin 0 -> 8542 bytes docs/web/scripts/prerender.mjs | 67 ++ docs/web/src/components/Code.jsx | 10 + docs/web/src/components/Layout.jsx | 43 ++ docs/web/src/components/Shot.jsx | 10 + docs/web/src/components/Ui.jsx | 17 + docs/web/src/entry-client.jsx | 17 + docs/web/src/entry-server.jsx | 79 ++ docs/web/src/pages/Detect.jsx | 69 ++ docs/web/src/pages/ExitCodes.jsx | 101 +++ docs/web/src/pages/GettingStarted.jsx | 78 ++ docs/web/src/pages/Home.jsx | 174 +++++ docs/web/src/pages/InitCmd.jsx | 185 +++++ docs/web/src/pages/Validate.jsx | 71 ++ docs/web/src/pages/Wizard.jsx | 95 +++ docs/web/src/routes.jsx | 76 ++ docs/web/src/styles/site.css | 430 +++++++++++ docs/web/vite.config.mjs | 10 + 56 files changed, 2699 insertions(+) create mode 100644 docs/web/.gitignore create mode 100644 docs/web/dist/assets/index-BVPC7Imb.css create mode 100644 docs/web/dist/assets/index-D3XNhmpo.js create mode 100644 docs/web/dist/assets/site.css create mode 100644 docs/web/dist/detect/index.html create mode 100644 docs/web/dist/exit-codes/index.html create mode 100644 docs/web/dist/getting-started/index.html create mode 100644 docs/web/dist/img/detect.png create mode 100644 docs/web/dist/img/dry-run-force.png create mode 100644 docs/web/dist/img/dry-run.png create mode 100644 docs/web/dist/img/help.png create mode 100644 docs/web/dist/img/init-conflict.png create mode 100644 docs/web/dist/img/init-success.png create mode 100644 docs/web/dist/img/invalid-config.png create mode 100644 docs/web/dist/img/list.png create mode 100644 docs/web/dist/img/validate.png create mode 100644 docs/web/dist/img/version.png create mode 100644 docs/web/dist/img/wizard.png create mode 100644 docs/web/dist/index.html create mode 100644 docs/web/dist/init/index.html create mode 100644 docs/web/dist/robots.txt create mode 100644 docs/web/dist/sitemap.xml create mode 100644 docs/web/dist/validate/index.html create mode 100644 docs/web/dist/wizard/index.html create mode 100644 docs/web/index.html create mode 100644 docs/web/package-lock.json create mode 100644 docs/web/package.json create mode 100644 docs/web/public/img/detect.png create mode 100644 docs/web/public/img/dry-run-force.png create mode 100644 docs/web/public/img/dry-run.png create mode 100644 docs/web/public/img/help.png create mode 100644 docs/web/public/img/init-conflict.png create mode 100644 docs/web/public/img/init-success.png create mode 100644 docs/web/public/img/invalid-config.png create mode 100644 docs/web/public/img/list.png create mode 100644 docs/web/public/img/validate.png create mode 100644 docs/web/public/img/version.png create mode 100644 docs/web/public/img/wizard.png create mode 100644 docs/web/scripts/prerender.mjs create mode 100644 docs/web/src/components/Code.jsx create mode 100644 docs/web/src/components/Layout.jsx create mode 100644 docs/web/src/components/Shot.jsx create mode 100644 docs/web/src/components/Ui.jsx create mode 100644 docs/web/src/entry-client.jsx create mode 100644 docs/web/src/entry-server.jsx create mode 100644 docs/web/src/pages/Detect.jsx create mode 100644 docs/web/src/pages/ExitCodes.jsx create mode 100644 docs/web/src/pages/GettingStarted.jsx create mode 100644 docs/web/src/pages/Home.jsx create mode 100644 docs/web/src/pages/InitCmd.jsx create mode 100644 docs/web/src/pages/Validate.jsx create mode 100644 docs/web/src/pages/Wizard.jsx create mode 100644 docs/web/src/routes.jsx create mode 100644 docs/web/src/styles/site.css create mode 100644 docs/web/vite.config.mjs diff --git a/README.md b/README.md index 0b0b4af..a1edfd1 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ Developer-oriented DevOps scaffolding tool. DevOpsGen generates deterministic Dockerfiles, GitHub Actions workflows, and Kubernetes manifests from a small, explicit configuration. +> Documentation: **[React documentation site](docs/web/dist/index.html)** — +> screenshots of every command, the interactive wizard, flags reference and +> exit codes. Build it with `npm run build` inside `docs/web`. + ## Features - Interactive TUI wizard and non-interactive headless modes. diff --git a/docs/web/.gitignore b/docs/web/.gitignore new file mode 100644 index 0000000..c824a78 --- /dev/null +++ b/docs/web/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +.ssr/ +.DS_Store diff --git a/docs/web/dist/assets/index-BVPC7Imb.css b/docs/web/dist/assets/index-BVPC7Imb.css new file mode 100644 index 0000000..99c559f --- /dev/null +++ b/docs/web/dist/assets/index-BVPC7Imb.css @@ -0,0 +1 @@ +:root{--paper:#fff8e7;--ink:#000;--pink:#ff5d8f;--yellow:#ffd400;--blue:#38b6ff;--lime:#b8ff5c;--purple:#b15de6;--red:#ff4b33;--green:#00c46e;--border:4px solid var(--ink);--shadow:8px 8px 0 var(--ink);--shadow-sm:4px 4px 0 var(--ink);--font:"Archivo", "Arial Black", "Segoe UI", Tahoma, sans-serif;--mono:"Cascadia Code", "Consolas", "JetBrains Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#0000000f 1px,#0000 1px),linear-gradient(90deg,#0000000f 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}.skip{background:var(--yellow);border:var(--border);z-index:99;padding:8px 16px;font-weight:900;position:absolute;top:0;left:-9999px}.skip:focus{left:8px}.topbar{z-index:50;background:var(--ink);color:var(--paper);border:var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 12px;padding:8px 14px;display:flex;position:sticky;top:8px}.brand{color:var(--paper);letter-spacing:.5px;align-items:center;gap:10px;font-size:1.15rem;font-weight:900;text-decoration:none;display:inline-flex}.brand-mark{background:var(--pink);color:var(--ink);border:3px solid var(--paper);padding:2px 8px;font-weight:900;transform:rotate(-3deg)}.brand-sub{background:var(--blue);color:var(--ink);margin-left:8px;padding:1px 6px;font-size:.62rem;transform:rotate(2deg)}.topbar nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--paper);text-transform:uppercase;border:3px solid #0000;padding:4px 10px;font-size:.82rem;font-weight:800;text-decoration:none;display:inline-block}.nav-link:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}.gh-pill{background:var(--yellow);color:var(--ink);border:3px solid var(--paper);box-shadow:3px 3px 0 var(--paper);margin-left:auto;padding:4px 14px;font-weight:900;text-decoration:none}.gh-pill:hover{box-shadow:5px 5px 0 var(--paper);transform:translate(-2px,-2px)}main{z-index:1;max-width:1080px;margin:32px auto;padding:0 20px;position:relative}.page-head{margin-bottom:28px}.kicker{background:var(--lime);border:var(--border);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:2px;margin:0 0 14px;padding:4px 12px;font-size:.78rem;font-weight:900;display:inline-block;transform:rotate(-1deg)}.violet{background:var(--purple)}.blue{background:var(--blue)}.pink{background:var(--pink)}.yellow{background:var(--yellow)}h1{text-transform:uppercase;letter-spacing:-1px;margin:0 0 16px;font-size:clamp(2.4rem,6vw,4rem);font-weight:900;line-height:1.02}.lede{background:var(--yellow);border:var(--border);max-width:720px;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:1.15rem;display:inline-block}h2{text-transform:uppercase;border-left:12px solid var(--ink);margin:44px 0 14px;padding-left:12px;font-size:1.7rem;font-weight:900}h3{text-transform:uppercase;margin:28px 0 10px;font-size:1.2rem;font-weight:900}p,li{font-size:1.02rem}strong{background:var(--lime);padding:0 3px}code{font-family:var(--mono);color:#7fffd4;background:#000;padding:2px 6px;font-size:.92em}a{color:inherit;text-decoration-thickness:3px;-webkit-text-decoration-color:var(--pink);text-decoration-color:var(--pink)}a:hover{background:var(--pink)}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:24px;margin-bottom:20px;display:grid}.hero-badges{flex-wrap:wrap;gap:10px;margin:18px 0 22px;display:flex}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.btn{text-transform:uppercase;border:var(--border);box-shadow:var(--shadow);background:var(--blue);color:var(--ink);padding:12px 22px;font-size:1rem;font-weight:900;text-decoration:none;display:inline-block}.btn:hover{box-shadow:12px 12px 0 var(--ink);transform:translate(-4px,-4px)}.btn-pink{background:var(--pink)}.btn-yellow{background:var(--yellow)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.card{border:var(--border);box-shadow:var(--shadow);background:#fff;padding:18px;position:relative}.card h3{margin-top:0}.card:nth-child(3n+1){background:var(--yellow);border-radius:0}.card:nth-child(3n+2){background:#fff}.card:nth-child(3n){background:var(--blue)}.card:hover{box-shadow:11px 11px 0 var(--ink);transform:translate(-3px,-3px)}.core .card{background:#fff}.core .card:hover{background:var(--lime)}.shot{border:var(--border);box-shadow:var(--shadow);background:#fff;max-width:100%;margin:22px 0;padding:12px}.shot img{border:2px solid var(--ink);width:100%;height:auto;display:block}.shot figcaption{border-top:3px dashed var(--ink);margin-top:10px;padding-top:8px;font-size:.9rem;font-weight:700}.shot a:hover{background:0 0}.shot img:hover{transform:translate(-2px,-2px)}.shot-feature{max-width:860px}.screen-strip{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:22px;display:grid}.screen-strip .shot{margin:0 0 12px}.code-block{color:#e6edf3;border:var(--border);box-shadow:var(--shadow);background:#0d1117;margin:18px 0;position:relative}.code-label{background:var(--purple);border:3px solid var(--ink);text-transform:uppercase;letter-spacing:1px;padding:2px 10px;font-size:.72rem;font-weight:900;position:absolute;top:-16px;left:12px}.code-block pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:.88rem;line-height:1.5;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0}.table-wrap{border:var(--border);box-shadow:var(--shadow);background:#fff;margin:18px 0;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border:3px solid var(--ink);text-align:left;vertical-align:top;padding:10px 12px}th{background:var(--ink);color:var(--paper);text-transform:uppercase;letter-spacing:1px;font-size:.8rem}tbody tr:nth-child(2n) td{background:var(--yellow)}td code{white-space:nowrap}.num{font-size:1.05rem;font-weight:900}.badge{text-transform:uppercase;border:3px solid var(--ink);margin-right:6px;padding:3px 10px;font-size:.8rem;font-weight:900;display:inline-block;transform:rotate(-1.5deg)}.badge-ok{background:var(--green);color:#fff}.badge-warn{background:var(--yellow)}.badge-err{background:var(--red);color:#fff}.badge-info{background:var(--blue)}.kbd{font-family:var(--mono);border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;padding:2px 8px;font-size:.85rem;font-weight:700;display:inline-block}.callout{border:var(--border);box-shadow:var(--shadow-sm);background:var(--pink);margin:22px 0;padding:14px 18px;font-weight:700}.callout-info{background:var(--blue)}.callout-ok{background:var(--lime)}.file-tree{font-family:var(--mono);white-space:pre;font-size:.9rem;overflow-x:auto}.inline-shot{vertical-align:top;max-width:560px;display:inline-block}.inline-shot+.inline-shot{margin-left:8px}.footer{z-index:1;border:var(--border);box-shadow:var(--shadow);background:var(--ink);color:var(--paper);margin:48px 12px 12px;padding:18px 22px;font-size:.9rem;position:relative}.footer a{color:var(--yellow);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow)}.footer a:hover{background:var(--yellow);color:var(--ink)}.footer-links{margin-top:6px}ul{padding-left:22px}li+li{margin-top:4px}.step-list{counter-reset:steps;padding-left:0;list-style:none}.step-list li{counter-increment:steps;margin-top:14px;padding-left:52px;position:relative}.step-list li:before{content:counter(steps);background:var(--purple);color:#fff;border:3px solid var(--ink);width:34px;height:34px;box-shadow:3px 3px 0 var(--ink);place-items:center;font-weight:900;display:grid;position:absolute;top:-4px;left:0}.flag-name{font-family:var(--mono);font-weight:700}@media (width<=720px){.hero{grid-template-columns:1fr}.topbar{gap:8px}.gh-pill{margin-left:0}main{margin:18px auto}} diff --git a/docs/web/dist/assets/index-D3XNhmpo.js b/docs/web/dist/assets/index-D3XNhmpo.js new file mode 100644 index 0000000..3a3ae40 --- /dev/null +++ b/docs/web/dist/assets/index-D3XNhmpo.js @@ -0,0 +1,24 @@ +var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports);(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function ee(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var te=ee.prototype=new b;te.constructor=ee,_(te,y.prototype),te.isPureReactComponent=!0;var ne=Array.isArray;function re(){}var x={H:null,A:null,T:null,S:null},ie=Object.prototype.hasOwnProperty;function S(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ae(e,t){return S(e.type,t,e.props)}function oe(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function se(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ce=/\/+/g;function le(e,t){return typeof e==`object`&&e&&e.key!=null?se(``+e.key):t.toString(36)}function ue(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(re,re):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function de(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,de(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+le(e,0):a,ne(o)?(i=``,c!=null&&(i=c.replace(ce,`$&/`)+`/`),de(o,r,i,``,function(e){return e})):o!=null&&(oe(o)&&(o=ae(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ce,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ne(e))for(var u=0;u{n.exports=t()})),r=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function ee(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,te||(te=!0,ae());else{var t=n(l);t!==null&&ce(ee,t.startTime-e)}}}var te=!1,ne=-1,re=5,x=-1;function ie(){return g?!0:!(e.unstable_now()-xt&&ie());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ce(ee,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ae():te=!1}}}var ae;if(typeof y==`function`)ae=function(){y(S)};else if(typeof MessageChannel<`u`){var oe=new MessageChannel,se=oe.port2;oe.port1.onmessage=S,ae=function(){se.postMessage(null)}}else ae=function(){_(S,0)};function ce(t,n){ne=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(ne),ne=-1):h=!0,ce(ee,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,te||(te=!0,ae()))),r},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1Ae||(e.current=ke[Ae],ke[Ae]=null,Ae--)}function T(e,t){Ae++,ke[Ae]=e.current,e.current=t}var Ne=je(null),Pe=je(null),Fe=je(null),Ie=je(null);function Le(e,t){switch(T(Fe,t),T(Pe,e),T(Ne,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Me(Ne),T(Ne,e)}function Re(){Me(Ne),Me(Pe),Me(Fe)}function ze(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,T(Ie,e)),t=Ne.current;var n=dp(t,e.type);t!==n&&(T(Pe,e),T(Ne,n))}function Be(e){Pe.current===e&&(Me(Ne),Me(Pe)),Ie.current===e&&(Me(Ie),sh._currentValue=Oe)}var Ve,He;function Ue(e){if(Ve===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ve=t&&t[1]||``,He=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{We=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ue(n):``}function Ke(e,t){switch(e.tag){case 26:case 27:case 5:return Ue(e.type);case 16:return Ue(`Lazy`);case 13:return e.child!==t&&t!==null?Ue(`Suspense Fallback`):Ue(`Suspense`);case 19:return Ue(`SuspenseList`);case 0:case 15:return Ge(e.type,!1);case 11:return Ge(e.type.render,!1);case 1:return Ge(e.type,!0);case 31:return Ue(`Activity`);case 30:return Ue(`ViewTransition`);default:return``}}function qe(e){try{var t=``,n=null;do t+=Ke(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Je=Object.prototype.hasOwnProperty,Ye=t.unstable_scheduleCallback,Xe=t.unstable_cancelCallback,Ze=t.unstable_shouldYield,Qe=t.unstable_requestPaint,$e=t.unstable_now,et=t.unstable_getCurrentPriorityLevel,tt=t.unstable_ImmediatePriority,nt=t.unstable_UserBlockingPriority,rt=t.unstable_NormalPriority,it=t.unstable_LowPriority,at=t.unstable_IdlePriority,ot=t.log,st=t.unstable_setDisableYieldValue,ct=null,lt=null;function ut(e){if(typeof ot==`function`&&st(e),lt&&typeof lt.setStrictMode==`function`)try{lt.setStrictMode(ct,e)}catch{}}var dt=Math.clz32?Math.clz32:mt,ft=Math.log,pt=Math.LN2;function mt(e){return e>>>=0,e===0?32:31-(ft(e)/pt|0)|0}var ht=256,gt=262144,_t=4194304;function vt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function yt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=vt(n))):i=vt(o):i=vt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=vt(n))):i=vt(o)):i=vt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function bt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function xt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function Tt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Et(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=wr),Dr=` `,Or=!1;function kr(e,t){switch(e){case`keyup`:return Sr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Ar(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var jr=!1;function Mr(e,t){switch(e){case`compositionend`:return Ar(t);case`keypress`:return t.which===32?(Or=!0,Dr):null;case`textInput`:return e=t.data,e===Dr&&Or?null:e;default:return null}}function Nr(e,t){if(jr)return e===`compositionend`||!Cr&&kr(e,t)?(e=Gn(),Wn=Un=Hn=null,jr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=ni(n)}}function ii(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ii(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ai(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ti(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=ti(e.document)}return t}function oi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var si=zn&&`documentMode`in document&&11>=document.documentMode,ci=null,li=null,ui=null,di=!1;function fi(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;di||ci==null||ci!==ti(r)||(r=ci,`selectionStart`in r&&oi(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ui&&ei(ui,r)||(ui=r,r=Jf(li,`onSelect`),0>=o,i-=o,ca=1<<32-dt(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),o=a(_,o,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),A&&ua(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),o=a(y,o,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),A&&ua(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return A&&ua(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),A&&ua(i,g),u}function _(e,r,a,c){if(typeof a==`object`&&a&&a.type===ce&&a.key===null&&a.props.ref===void 0&&(a=a.props.children),typeof a==`object`&&a){switch(a.$$typeof){case oe:a:{for(var l=a.key;r!==null;){if(r.key===l){if(l=a.type,l===ce){if(r.tag===7){n(e,r.sibling),c=i(r,a.props.children),vo(c,a),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===_e&&uo(l)===r.type){n(e,r.sibling),c=i(r,a.props),vo(c,a),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}a.type===ce?(c=Yi(a.props.children,e.mode,c,a.key),vo(c,a),c.return=e,e=c):(c=Ji(a.type,a.key,a.props,null,e.mode,c),vo(c,a),c.return=e,e=c)}return o(e);case se:a:{for(l=a.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),c=i(r,a.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Qi(a,e.mode,c),c.return=e,e=c}return o(e);case _e:return a=uo(a),_(e,r,a,c)}if(De(a))return h(e,r,a,c);if(we(a)){if(l=we(a),typeof l!=`function`)throw Error(s(150));return a=l.call(a),g(e,r,a,c)}if(typeof a.then==`function`)return _(e,r,_o(a),c);if(a.$$typeof===fe)return _(e,r,Ia(e,a),c);yo(e,a)}return typeof a==`string`&&a!==``||typeof a==`number`||typeof a==`bigint`?(a=``+a,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,a),c.return=e,e=c):(n(e,r),c=Xi(a,e.mode,c),c.return=e,e=c),o(e)):n(e,r)}return function(e,t,n,r){try{go=0;var i=_(e,t,n,r);return ho=null,i}catch(t){if(t===io||t===oo)throw t;var a=Wi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var xo=bo(!0),So=bo(!1),Co=!1;function wo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function To(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Eo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Do(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Vi(e),Bi(e,null,n),t}return Li(e,r,t,n),Vi(e)}function Oo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ot(e,n)}}function ko(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n}else e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ao=!1;function jo(){if(Ao){var e=Ya;if(e!==null)throw e}}function Mo(e,t,n,r){Ao=!1;var i=e.updateQueue;Co=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===Ja&&(Ao=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=S({},d,f);break a;case 2:Co=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),sd|=o,e.lanes=o,e.memoizedState=d}}function No(e,t){if(typeof e!=`function`)throw Error(s(191,e));e.call(t)}function Po(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=C.T,s={};s.types=o===null?null:o.types,C.T=s,_c(e,!1,t,n);try{var c=i(),l=C.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?gc(e,t,Qa(c,r),jd(e)):gc(e,t,r,jd(e))}catch(n){gc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{w.p=a,o!==null&&s.types!==null&&(o.types=s.types),C.T=o}}function oc(){}function sc(e,t,n,r){if(e.tag!==5)throw Error(s(476));var i=cc(e).queue;ac(e,i,t,Oe,n===null?oc:function(){return lc(e),n(r)})}function cc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Oe,baseState:Oe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:Oe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function lc(e){var t=cc(e);t.next===null&&(t=e.alternate.memoizedState),gc(e,t.next.queue,{},jd())}function uc(){return Fa(sh)}function dc(){return I().memoizedState}function fc(){return I().memoizedState}function pc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=Eo(n);var r=Do(t,e,n);r!==null&&(Pd(r,t,n),Oo(r,t,n)),t={cache:Va()},e.payload=t;return}t=t.return}}function mc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},vc(e)?yc(t,n):(n=Ri(e,t,n,r),n!==null&&(Pd(n,e,r),bc(n,t,r)))}function hc(e,t,n){gc(e,t,n,jd())}function gc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(vc(e))yc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,$r(s,o))return Li(e,t,i,0),G===null&&Ii(),!1}catch{}if(n=Ri(e,t,i,r),n!==null)return Pd(n,e,r),bc(n,t,r),!0}return!1}function _c(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},vc(e)){if(t)throw Error(s(479))}else t=Ri(e,n,r,2),t!==null&&Pd(t,e,2)}function vc(e){var t=e.alternate;return e===M||t!==null&&t===M}function yc(e,t){$o=Qo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function bc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ot(e,n)}}var xc={readContext:Fa,use:gs,useCallback:F,useContext:F,useEffect:F,useImperativeHandle:F,useLayoutEffect:F,useInsertionEffect:F,useMemo:F,useReducer:F,useRef:F,useState:F,useDebugValue:F,useDeferredValue:F,useTransition:F,useSyncExternalStore:F,useId:F,useHostTransitionStatus:F,useFormState:F,useActionState:F,useOptimistic:F,useMemoCache:F,useCacheRefresh:F,useEffectEvent:F},Sc={readContext:Fa,use:gs,useCallback:function(e,t){return ps().memoizedState=[e,t===void 0?null:t],e},useContext:Fa,useEffect:Ks,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ws(4194308,4,Qs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ws(4194308,4,e,t)},useInsertionEffect:function(e,t){Ws(4,2,e,t)},useMemo:function(e,t){var n=ps();t=t===void 0?null:t;var r=e();if(es){ut(!0);try{e()}finally{ut(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ps();if(n!==void 0){var i=n(t);if(es){ut(!0);try{n(t)}finally{ut(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=mc.bind(null,M,e),[r.memoizedState,e]},useRef:function(e){var t=ps();return e={current:e},t.memoizedState=e},useState:function(e){e=Os(e);var t=e.queue,n=hc.bind(null,M,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ec,useDeferredValue:function(e,t){return rc(ps(),e,t)},useTransition:function(){var e=Os(!1);return e=ac.bind(null,M,e.queue,!0,!1),ps().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=M,i=ps();if(A){if(n===void 0)throw Error(s(407));n=n()}else{if(n=t(),G===null)throw Error(s(349));q&127||Cs(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,Ks(Ts.bind(null,r,a,e),[e]),r.flags|=2048,Hs(9,{destroy:void 0},ws.bind(null,r,a,n,t),null),n},useId:function(){var e=ps(),t=G.identifierPrefix;if(A){var n=la,r=ca;n=(r&~(1<<32-dt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=ts++,0<\/script>`,a=a.removeChild(a.firstChild);break;case`select`:a=typeof r.is==`string`?o.createElement(`select`,{is:r.is}):o.createElement(`select`),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=typeof r.is==`string`?o.createElement(i,{is:r.is}):o.createElement(i)}}a[Ft]=t,a[It]=r;a:for(o=t.child;o!==null;){if(o.tag===5||o.tag===6)a.appendChild(o.stateNode);else if(o.tag!==4&&o.tag!==27&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===t)break a;for(;o.sibling===null;){if(o.return===null||o.return===t)break a;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=a;a:switch(np(a,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&vl(t)}}return z(t),t.subtreeFlags&=-33554433,yl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&vl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(s(166));if(e=Fe.current,xa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=O,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[Ft]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||va(t,!0)}else e=lp(e).createTextNode(r),e[Ft]=t,t.stateNode=e}return z(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=xa(t),n!==null){if(e===null){if(!r)throw Error(s(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(s(557));e[Ft]=t}else Sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),e=!1}else n=Ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Ko(t),t):(Ko(t),null);if(t.flags&128)throw Error(s(558))}return z(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=xa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(s(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(s(317));i[Ft]=t}else Sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),i=!1}else i=Ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Ko(t),t):(Ko(t),null)}return Ko(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),a=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(a=r.memoizedState.cachePool.pool),a!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),xl(t,t.updateQueue),z(t),null);case 4:return Re(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,z(t),null;case 10:return ka(t.type),z(t),null;case 19:if(Yo(t),r=t.memoizedState,r===null)return z(t),null;if(i=!!(t.flags&128),a=r.rendering,a===null){if(i)Sl(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(a=Xo(e),a!==null){for(t.flags|=128,Sl(r,!1),e=a.updateQueue,t.updateQueue=e,xl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)qi(n,e),n=n.sibling;return Jo(t,qo.current&1|2),A&&ua(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&$e()>_d&&(t.flags|=128,i=!0,Sl(r,!1),t.lanes=4194304)}}else{if(!i){if(e=Xo(a),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,xl(t,e),Sl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!a.alternate&&!A)return z(t),null}else 2*$e()-r.renderingStartTime>_d&&n!==536870912&&(t.flags|=128,i=!0,Sl(r,!1),t.lanes=4194304)}r.isBackwards?(a.sibling=t.child,t.child=a):(e=r.last,e===null?t.child=a:e.sibling=a,r.last=a)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=$e(),e.sibling=null,a=qo.current,a=i?a&1|2:a&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||A?Jo(t,a):(n=a,T(Bo,t),T(qo,n),Vo===null&&(Vo=t)),A&&ua(t,r.treeForkCount),e}return z(t),null;case 22:case 23:return Ko(t),zo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(z(t),t.subtreeFlags&6&&(t.flags|=8192)):z(t),n=t.updateQueue,n!==null&&xl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Me(eo),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ka(j),z(t),null;case 25:return null;case 30:return t.flags|=33554432,z(t),null}throw Error(s(156,t.tag))}function wl(e,t){switch(pa(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ka(j),Re(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Be(t),null;case 31:if(t.memoizedState!==null){if(Ko(t),t.alternate===null)throw Error(s(340));Sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ko(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));Sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Yo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Re(),null;case 10:return ka(t.type),null;case 22:case 23:return Ko(t),zo(),e!==null&&Me(eo),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ka(j),null;case 25:return null;default:return null}}function Tl(e,t){switch(pa(t),t.tag){case 3:ka(j),Re();break;case 26:case 27:case 5:Be(t);break;case 4:Re();break;case 31:t.memoizedState!==null&&Ko(t);break;case 13:Ko(t);break;case 19:Yo(t);break;case 10:ka(t.type);break;case 22:case 23:Ko(t),zo(),e!==null&&Me(eo);break;case 24:ka(j)}}function El(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Dl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Ol(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Po(t,n)}catch(t){Z(e,e.return,t)}}}function kl(e,t,n){n.props=kc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Al(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=ki(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function jl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Ml(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[Ft]=e,E(r),t=r;break a;case`link`:if(a=Gm(`link`,`href`,i).get(t+(n.href||``))){for(o=0;og&&(o=g,g=h,h=o);var _=ri(s,h),v=ri(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,C.T=null,n=wd,wd=null;var a=bd,o=Sd;if(X=0,xd=bd=null,Sd=0,W&6)throw Error(s(331));var c=W;if(W|=4,Zu(a.current),Uu(a,a.current,o,n),W=c,Df(0,!1),lt&&typeof lt.onPostCommitFiberRoot==`function`)try{lt.onPostCommitFiberRoot(ct,a)}catch{}return!0}finally{w.p=i,C.T=r,uf(e,t)}}function pf(e,t,n){t=ea(n,t),t=Fc(e.stateNode,t,2),e=Do(e,t,2),e!==null&&(Tt(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(yd===null||!yd.has(r))){e=ea(n,e),n=Ic(2),r=Do(t,n,2),r!==null&&(Lc(n,r,t,e),Tt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new td;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(ad=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>$e()-hd?W&2?ld|=n:Vd(e,0):ld|=n,dd===q&&(dd=0)),Ef(e)}function gf(e,t){t===0&&(t=Ct()),e=zi(e,t),e!==null&&(Tt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Ye(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-dt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=q,a=yt(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||bt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=$e(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}X!==0&&X!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=hn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),E(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+hn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+hn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+hn(n.imageSizes)+`"]`)):i+=`[href="`+hn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=S({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Ut]=!0,o.onload=o.onerror=function(){Yt(o)}),E(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+hn(r)+`"][href="`+hn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=S({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),E(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Jt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=S({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);E(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Jt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),E(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Jt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),E(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=Fe.current)?bm(i):null;if(!i)throw Error(s(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Jt(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var a=Jt(i).hoistableStyles,o=a.get(e);if(o||(i=i.ownerDocument||i,o={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},a.set(e,o),(a=i.querySelector(Fm(e)))?a._p||(o.instance=a,o.state.loading=5):(a=vm.get(e),a||(a={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,a)),Lm(i,e,a,o.state))),t&&r===null)throw Error(s(528,``));return o}if(t&&r!==null)throw Error(s(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Jt(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(s(444,e))}}function Pm(e){return`href="`+hn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ut]){r.loading=1;return}}else t=e.createElement(`link`),t[Ut]=!0,t.onload=t.onerror=Yt.bind(null,t),np(t,`link`,n),E(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+hn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+hn(n.href)+`"]`);if(r)return t.instance=r,E(r),r;var i=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),E(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var a=e.querySelector(Fm(i));if(a)return t.state.loading|=4,t.instance=a,E(a),a;r=Im(n),(i=vm.get(i))&&Hm(r,i),a=(e.ownerDocument||e).createElement(`link`),E(a);var o=a;return o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),t.state.loading|=4,Vm(a,n.precedence,e),t.instance=a;case`script`:return a=Rm(n.src),(i=e.querySelector(zm(a)))?(t.instance=i,E(i),i):(r=n,(i=vm.get(a))&&(r=S({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),E(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(s(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,E(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),E(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=s()}));n();var l=c(),u=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),d=e(((e,t)=>{t.exports=u()}))();function f({rel:e,name:t,alt:n,caption:r,feature:i=``}){return(0,d.jsxs)(`figure`,{className:`shot ${i}`,children:[(0,d.jsx)(`a`,{href:`${e}img/${t}`,target:`_blank`,rel:`noopener noreferrer`,children:(0,d.jsx)(`img`,{src:`${e}img/${t}`,alt:n,loading:`lazy`,decoding:`async`})}),r&&(0,d.jsx)(`figcaption`,{children:r})]})}function p({children:e,label:t}){return(0,d.jsxs)(`div`,{className:`code-block`,children:[t&&(0,d.jsx)(`span`,{className:`code-label`,children:t}),(0,d.jsx)(`pre`,{children:(0,d.jsx)(`code`,{children:e})})]})}function m({children:e}){return(0,d.jsx)(`kbd`,{className:`kbd`,children:e})}function h({tone:e=`ok`,children:t}){return(0,d.jsx)(`span`,{className:`badge badge-${e}`,children:t})}function g({kicker:e,title:t,lede:n}){return(0,d.jsxs)(`header`,{className:`page-head`,children:[e&&(0,d.jsx)(`p`,{className:`kicker`,children:e}),(0,d.jsx)(`h1`,{children:t}),n&&(0,d.jsx)(`p`,{className:`lede`,children:n})]})}function _({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(`div`,{className:`hero`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`p`,{className:`kicker yellow`,children:`docker · github actions · kubernetes`}),(0,d.jsxs)(`h1`,{children:[`DevOps scaffolding,`,(0,d.jsx)(`br`,{}),`deterministically.`]}),(0,d.jsx)(`p`,{className:`lede`,children:`DevOpsGen reads your Go or Node.js project and writes a complete, opinionated DevOps baseline: hardened Dockerfile, GitHub Actions pipeline and ready-to-apply Kubernetes manifests — with dry-run plans, automatic backups and config validation built in.`}),(0,d.jsxs)(`div`,{className:`hero-cta`,children:[(0,d.jsx)(`a`,{className:`btn`,href:`${e}getting-started/`,children:`Get started`}),(0,d.jsx)(`a`,{className:`btn btn-pink`,href:`${e}wizard/`,children:`Take the wizard tour`})]})]}),(0,d.jsx)(f,{rel:e,name:`wizard.png`,alt:`DevOpsGen interactive wizard running in a Windows terminal, asking for the project stack`,caption:`The interactive wizard — press Enter to accept smart defaults.`,feature:`shot-feature`})]}),(0,d.jsx)(`h2`,{children:`Why DevOpsGen`}),(0,d.jsxs)(`div`,{className:`cards`,children:[(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`Deterministic`}),(0,d.jsxs)(`p`,{children:[`Same inputs, same bytes — every run. Machine-friendly for code review: a second generation with `,(0,d.jsx)(`code`,{children:`--force`}),` produces bit-identical files.`]})]}),(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`Safe by default`}),(0,d.jsxs)(`p`,{children:[`Existing files are never overwritten without `,(0,d.jsx)(`code`,{children:`--force`}),`. Overwrites get`,` `,(0,d.jsx)(`code`,{children:`.bak`}),` backups, failed runs roll back automatically, and`,` `,(0,d.jsx)(`code`,{children:`--dry-run`}),` prints the full plan first.`]})]}),(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`Validated output`}),(0,d.jsxs)(`p`,{children:[`Built-in validation checks Dockerfile `,(0,d.jsx)(`code`,{children:`FROM`}),` digests, workflow action pinning, Kubernetes naming and health probes before anything ships.`]})]}),(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`Stack aware`}),(0,d.jsxs)(`p`,{children:[`Detects Go and Node.js projects (npm, pnpm, Express, Next.js, Vite, NestJS) from`,` `,(0,d.jsx)(`code`,{children:`go.mod`}),` / `,(0,d.jsx)(`code`,{children:`package.json`}),` and tailors templates accordingly.`]})]})]}),(0,d.jsx)(`h2`,{children:`Everything a project needs on day one`}),(0,d.jsxs)(`p`,{children:[`One `,(0,d.jsx)(`code`,{children:`init`}),` command writes the whole baseline tree. Preview the real terminal output of every command below — all screenshots are live captures, not mockups.`]}),(0,d.jsx)(p,{label:`generated in one command`,children:`$ devopsgen init --stack go --ci github-actions --registry ghcr --image you/myapp --port 8080 +created 5 file(s), replaced 0 file(s) in . +exit code: 0`}),(0,d.jsxs)(`div`,{className:`screen-strip`,children:[(0,d.jsx)(f,{rel:e,name:`init-success.png`,alt:`Terminal showing a successful DevOpsGen init run creating five files with exit code 0`,caption:`init — first run creates the complete baseline and exits 0.`}),(0,d.jsx)(f,{rel:e,name:`init-conflict.png`,alt:`Terminal showing DevOpsGen refusing to overwrite five files and exiting with code 3`,caption:`init on a second run refuses to overwrite files — exit code 3 without --force.`}),(0,d.jsx)(f,{rel:e,name:`dry-run.png`,alt:`Terminal showing a DevOpsGen dry-run plan listing replace and conflict entries before exiting with code 3`,caption:`--dry-run prints the exact write plan, unresolved conflicts included.`})]}),(0,d.jsx)(`h2`,{children:`What gets generated`}),(0,d.jsx)(`div`,{className:`table-wrap`,children:(0,d.jsxs)(`table`,{children:[(0,d.jsx)(`thead`,{children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{children:`Template set`}),(0,d.jsx)(`th`,{children:`Files`}),(0,d.jsx)(`th`,{children:`Purpose`})]})}),(0,d.jsxs)(`tbody`,{children:[(0,d.jsxs)(`tr`,{children:[(0,d.jsxs)(`td`,{children:[(0,d.jsx)(`code`,{children:`docker`}),` (+ `,(0,d.jsx)(`code`,{children:`.dockerignore`}),`)`]}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`Dockerfile`})}),(0,d.jsx)(`td`,{children:`Hardened image build with non-root user, health check hooks, install/prune commands derived from package manager (npm / pnpm) and lockfile detection.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`github-actions`})}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`.github/workflows/ci.yaml`})}),(0,d.jsx)(`td`,{children:`Test/build across Go and Node.js versions, docker build & push, coverage floors, manifest validation.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`kubernetes`})}),(0,d.jsxs)(`td`,{children:[(0,d.jsx)(`code`,{children:`deployment.yaml`}),`, `,(0,d.jsx)(`code`,{children:`service.yaml`}),`, optional `,(0,d.jsx)(`code`,{children:`ingress.yaml`})]}),(0,d.jsx)(`td`,{children:`Non-root security context, probes using your health path, RFC 1123-validated names, optional host-based Ingress.`})]})]})]})}),(0,d.jsx)(`h2`,{children:`Explore the docs`}),(0,d.jsx)(`div`,{className:`cards core`,children:x.filter(e=>e.path!==``).map(t=>(0,d.jsxs)(`a`,{className:`card`,style:{display:`block`},href:`${e}${t.path}/`,children:[(0,d.jsx)(`h3`,{children:t.path.replace(/-/g,` `)}),(0,d.jsx)(`p`,{children:t.description})]},t.path))}),(0,d.jsx)(`h2`,{children:`Command cheatsheet`}),(0,d.jsxs)(`div`,{className:`screen-strip`,children:[(0,d.jsx)(f,{rel:e,name:`help.png`,alt:`Terminal showing the full devopsgen help output listing all commands`,caption:`devopsgen --help — all commands at a glance.`}),(0,d.jsx)(f,{rel:e,name:`list.png`,alt:`Terminal showing the devopsgen list output with available stacks, app types and registries`,caption:`devopsgen list — supported stacks, app types and registries.`}),(0,d.jsx)(f,{rel:e,name:`version.png`,alt:`Terminal showing the devopsgen version output`,caption:`devopsgen version.`})]})]})}function v({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{kicker:`getting started`,title:`Zero to CI in one command`,lede:`Install DevOpsGen, point it at any Go or Node.js project, and get a full Docker + GitHub Actions + Kubernetes baseline in seconds.`}),(0,d.jsx)(`h2`,{children:`Install`}),(0,d.jsx)(p,{label:`go install (go 1.22+)`,children:`go install devopsgen.dev/devopsgen@latest`}),(0,d.jsxs)(`p`,{children:[`Or grab a prebuilt binary from the project`,` `,(0,d.jsx)(`a`,{href:`https://github.com/Bangkahdev/DevOpsGen/releases`,target:`_blank`,rel:`noopener noreferrer`,children:`GitHub releases`}),`, or build from source:`]}),(0,d.jsx)(p,{label:`from source`,children:`git clone https://github.com/Bangkahdev/DevOpsGen.git +cd DevOpsGen +make build`}),(0,d.jsx)(`h2`,{children:`Two ways to run it`}),(0,d.jsxs)(`ul`,{className:`step-list`,children:[(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Interactive:`}),` run `,(0,d.jsx)(`code`,{children:`devopsgen init`}),` in a terminal — the wizard detects your stack and interviews you step by step.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Headless:`}),` pass every required parameter as flags — the process never waits for stdin, which makes it script- and CI-friendly.`]})]}),(0,d.jsx)(`h2`,{children:`Headless quickstart`}),(0,d.jsx)(p,{label:`inside your project`,children:`devopsgen init --stack go --ci github-actions --registry ghcr --image you/myapp --port 8080`}),(0,d.jsx)(f,{rel:e,name:`init-success.png`,alt:`Terminal capture of devopsgen init completing successfully and reporting five files created`,caption:`A successful first run — five files created, exit code 0.`,feature:`shot-feature`}),(0,d.jsx)(`p`,{children:`Inside a Go project this writes:`}),(0,d.jsx)(p,{label:`what you get`,children:`.github/workflows/ci.yaml # test, vet, build, docker publish +Kubernetes/deployment.yaml # non-root, probes, DNS-1053 names +Kubernetes/service.yaml # cluster service +Kubernetes/ingress.yaml # optional, needs --ingress +Dockerfile # hardened multi-stage build + .dockerignore`}),(0,d.jsxs)(`div`,{className:`callout`,children:[`Second runs are safe: DevOpsGen refuses to overwrite without `,(0,d.jsx)(`code`,{children:`--force`}),` and exits with code 3 — see `,(0,d.jsx)(`a`,{href:`${e}init/`,children:`the init reference`}),`.`]}),(0,d.jsx)(`h2`,{children:`Next steps`}),(0,d.jsxs)(`ul`,{children:[(0,d.jsxs)(`li`,{children:[`Prefer point-and-press? Tour the `,(0,d.jsx)(`a`,{href:`${e}wizard/`,children:`interactive wizard`}),`.`]}),(0,d.jsxs)(`li`,{children:[`Every `,(0,d.jsx)(`code`,{children:`init`}),` flag explained: `,(0,d.jsx)(`a`,{href:`${e}init/`,children:`init command`}),`.`]}),(0,d.jsxs)(`li`,{children:[`Building your own CI around it? Read the `,(0,d.jsx)(`a`,{href:`${e}exit-codes/`,children:`exit codes`}),`.`]})]})]})}function y({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{kicker:`interactive wizard`,title:`The TUI wizard`,lede:`When you run devopsgen init in a real terminal without a flags-only invocation, a keyboard-driven wizard takes over — Enter accepts the recommended default at every step.`}),(0,d.jsx)(f,{rel:e,name:`wizard.png`,alt:`DevOpsGen wizard TUI showing the stack selection list with a highlighted highlighted selection and instructions`,caption:`Step 1 — stack choice. DevOpsGen pre-selects what its detector recommends.`,feature:`shot-feature`}),(0,d.jsx)(`h2`,{children:`How the interview flows`}),(0,d.jsxs)(`ul`,{className:`step-list`,children:[(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Stack`}),` — `,(0,d.jsx)(`code`,{children:`go`}),` or `,(0,d.jsx)(`code`,{children:`nodejs`}),`, pre-selected by the detector (`,(0,d.jsx)(`a`,{href:`${e}detect/`,children:`detect`}),` runs first).`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Application type`}),` (Node.js only) — express, nextjs, vite, nestjs or generic; Go projects build binaries by default.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Port`}),` — the application port, 1–65535, validated on the spot.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Container image`}),` — `,(0,d.jsx)(`code`,{children:`namespace/repository`}),`, no host, no tag.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Registry`}),` — Docker Hub or GHCR (also shipped as the`,` `,(0,d.jsx)(`code`,{children:`--registry`}),` flag).`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Kubernetes`}),` — manifests are generated by default; opt into a host-based `,(0,d.jsx)(`strong`,{children:`Ingress`}),` with an RFC 1123 hostname.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`strong`,{children:`Summary & confirm`}),` — review every chosen value, confirm, and the files are written to the project root.`]})]}),(0,d.jsxs)(`div`,{className:`callout callout-info`,children:[`A wizard run is fully replayable: the same answers as equivalent flags. To automate the same result, pass the flags headless (`,(0,d.jsx)(`a`,{href:`${e}init/`,children:`init reference`}),`).`]}),(0,d.jsx)(`h2`,{children:`Keyboard`}),(0,d.jsx)(`div`,{className:`table-wrap`,children:(0,d.jsxs)(`table`,{children:[(0,d.jsx)(`thead`,{children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{children:`Key`}),(0,d.jsx)(`th`,{children:`Action`})]})}),(0,d.jsxs)(`tbody`,{children:[(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(m,{children:`Enter`})}),(0,d.jsx)(`td`,{children:`Confirm current selection / printed default`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsxs)(`td`,{children:[(0,d.jsx)(m,{children:`↑`}),` `,(0,d.jsx)(m,{children:`↓`})]}),(0,d.jsx)(`td`,{children:`Move within list choices`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:`typed text`}),(0,d.jsx)(`td`,{children:`Fill textual answers (port, image, host)`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(m,{children:`Ctrl+C`})}),(0,d.jsx)(`td`,{children:`Abort the wizard without writing anything`})]})]})]})}),(0,d.jsx)(`h2`,{children:`Safety during the run`}),(0,d.jsxs)(`p`,{children:[`Everything until the final confirmation is bound to memory only — aborting leaves the project untouched. The write itself follows the same rules as headless mode: never-overwrite-unless-`,(0,d.jsx)(`code`,{children:`--force`}),`, backups, and rollback on mid-run failure.`]})]})}function b({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{kicker:`command reference`,title:`devopsgen init`,lede:`Initialize DevOps configuration. In an interactive terminal with no complete configuration the TUI wizard is launched; when all required parameters are supplied via flags the process runs headless and never waits for stdin.`}),(0,d.jsx)(p,{label:`synopsis`,children:`devopsgen init [flags]`}),(0,d.jsx)(`h2`,{children:`Flags`}),(0,d.jsx)(`div`,{className:`table-wrap`,children:(0,d.jsxs)(`table`,{children:[(0,d.jsx)(`thead`,{children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{children:`Flag`}),(0,d.jsx)(`th`,{children:`Default`}),(0,d.jsx)(`th`,{children:`Description`})]})}),(0,d.jsxs)(`tbody`,{children:[(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--stack`}),(0,d.jsx)(`td`,{children:`auto-detected`}),(0,d.jsxs)(`td`,{children:[`Project stack: `,(0,d.jsx)(`code`,{children:`go`}),` or `,(0,d.jsx)(`code`,{children:`nodejs`}),`.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--app-type`}),(0,d.jsx)(`td`,{children:`auto-detected`}),(0,d.jsxs)(`td`,{children:[`Application type (see `,(0,d.jsx)(`code`,{children:`devopsgen list`}),`).`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--ci`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`github-actions`})}),(0,d.jsx)(`td`,{children:`CI provider.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--registry`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`dockerhub`})}),(0,d.jsxs)(`td`,{children:[`Container registry: `,(0,d.jsx)(`code`,{children:`dockerhub`}),` or `,(0,d.jsx)(`code`,{children:`ghcr`}),`.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--image`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsxs)(`td`,{children:[`Image repository as `,(0,d.jsx)(`code`,{children:`namespace/repository`}),` — no host and no tag.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--tag`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`latest`})}),(0,d.jsx)(`td`,{children:`Additional image tag alias.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--port`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsx)(`td`,{children:`Application port, 1–65535.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--k8s`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`true`})}),(0,d.jsx)(`td`,{children:`Generate Kubernetes manifests.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--ingress`}),(0,d.jsx)(`td`,{children:`off`}),(0,d.jsxs)(`td`,{children:[`Enable Kubernetes Ingress (requires `,(0,d.jsx)(`code`,{children:`--ingress-host`}),`).`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--ingress-host`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsx)(`td`,{children:`Ingress hostname, validated as RFC 1123.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--health-path`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsx)(`td`,{children:`HTTP health probe path wired into manifests.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--build-cmd`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsx)(`td`,{children:`Build command.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--build-path`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`.`})}),(0,d.jsx)(`td`,{children:`Go package path to build inside the container.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--start-cmd`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsx)(`td`,{children:`Startup command.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--test-cmd`}),(0,d.jsx)(`td`,{children:`—`}),(0,d.jsx)(`td`,{children:`Test command.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--output-dir`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`.`})}),(0,d.jsx)(`td`,{children:`Output directory.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--dry-run`}),(0,d.jsx)(`td`,{children:`off`}),(0,d.jsx)(`td`,{children:`Simulate without writing anything.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`flag-name`,children:`--force`}),(0,d.jsx)(`td`,{children:`off`}),(0,d.jsx)(`td`,{children:`Overwrite existing regular files.`})]})]})]})}),(0,d.jsx)(`h2`,{children:`Success & conflicts`}),(0,d.jsxs)(`p`,{children:[`A clean run writes every template and exits with`,` `,(0,d.jsx)(h,{tone:`ok`,children:`0`}),`. A second run over an existing project stops before touching anything and exits with `,(0,d.jsx)(h,{tone:`warn`,children:`3`}),` until you add `,(0,d.jsx)(`code`,{children:`--force`}),`:`]}),(0,d.jsxs)(`div`,{className:`screen-strip`,children:[(0,d.jsx)(f,{rel:e,name:`init-success.png`,alt:`devopsgen init success output with exit code 0`,caption:`First run: five files created, exit code 0.`}),(0,d.jsx)(f,{rel:e,name:`init-conflict.png`,alt:`devopsgen init conflict error refusing to overwrite files with exit code 3`,caption:`Re-run without --force: exit code 3, zero files touched.`})]}),(0,d.jsx)(`h2`,{children:`Preview plans with --dry-run`}),(0,d.jsxs)(`p`,{children:[(0,d.jsx)(`code`,{children:`--dry-run`}),` prints the byte-plan: which files would be created, which would be replaced, and which are in conflict. With a conflict present it exits`,` `,(0,d.jsx)(h,{tone:`warn`,children:`3`}),`; combined with `,(0,d.jsx)(`code`,{children:`--force`}),` a fully green plan exits`,` `,(0,d.jsx)(h,{tone:`ok`,children:`0`}),` without writing anything:`]}),(0,d.jsxs)(`div`,{className:`screen-strip`,children:[(0,d.jsx)(f,{rel:e,name:`dry-run.png`,alt:`devopsgen dry-run plan output showing replace and conflict entries with exit code 3`,caption:`--dry-run over an existing project: conflict entries, exit code 3.`}),(0,d.jsx)(f,{rel:e,name:`dry-run-force.png`,alt:`devopsgen dry-run force plan output where every file would be replaced, exit code 0`,caption:`--dry-run --force: every file replaced in plan form, exit code 0.`})]}),(0,d.jsx)(`h2`,{children:`Config validation`}),(0,d.jsxs)(`p`,{children:[`Invalid configuration fails fast with `,(0,d.jsx)(h,{tone:`err`,children:`2`}),` before any file is planned — e.g. an image that must be `,(0,d.jsx)(`code`,{children:`namespace/repository`}),` without host or tag, a port outside 1–65535, or an Ingress without a host:`]}),(0,d.jsx)(f,{rel:e,name:`invalid-config.png`,alt:`devopsgen init failing config validation on an invalid image with exit code 2`,caption:`Config errors exit with code 2 and never write files.`,feature:`shot-feature`}),(0,d.jsxs)(`div`,{className:`callout callout-ok`,children:[`Overwrites performed with `,(0,d.jsx)(`code`,{children:`--force`}),` create `,(0,d.jsx)(`code`,{children:`.bak`}),` backups, and any failure mid-run automatically rolls back to the pre-run state.`]})]})}function ee({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{kicker:`command reference`,title:`devopsgen detect`,lede:`Inspect the current project and report what DevOpsGen would scaffold for it: the programming stack, the exact files that shaped the decision, and the candidate application types.`}),(0,d.jsx)(f,{rel:e,name:`detect.png`,alt:`devopsgen detect output in a terminal reporting stack go with indicators go.mod`,caption:`devopsgen detect inside a Go module — chain of evidence straight from the filesystem.`,feature:`shot-feature`}),(0,d.jsx)(`h2`,{children:`Reading the output`}),(0,d.jsx)(`div`,{className:`table-wrap`,children:(0,d.jsxs)(`table`,{children:[(0,d.jsx)(`thead`,{children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{children:`Line`}),(0,d.jsx)(`th`,{children:`Meaning`})]})}),(0,d.jsxs)(`tbody`,{children:[(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`stack: go`})}),(0,d.jsxs)(`td`,{children:[`The detected programming stack (`,(0,d.jsx)(`code`,{children:`go`}),` or `,(0,d.jsx)(`code`,{children:`nodejs`}),`).`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`indicators: go.mod, ...`})}),(0,d.jsx)(`td`,{children:`The files that produced evidence — your audit trail for why the stack matched.`})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{children:(0,d.jsx)(`code`,{children:`app-type candidates: binary`})}),(0,d.jsx)(`td`,{children:`Application types plausible for this project; the wizard default comes from here too.`})]})]})]})}),(0,d.jsx)(`h2`,{children:`How it decides`}),(0,d.jsxs)(`ul`,{children:[(0,d.jsxs)(`li`,{children:[`Go — `,(0,d.jsx)(`code`,{children:`go.mod`}),` and its module directive looking like`,` `,(0,d.jsx)(`code`,{children:`module example.com/app`}),`.`]}),(0,d.jsxs)(`li`,{children:[`Node.js — `,(0,d.jsx)(`code`,{children:`package.json`}),`, plus its dependencies, and lockfile flavours (npm / pnpm) that later steer Docker image commands.`]}),(0,d.jsxs)(`li`,{children:[`Ambiguity or zero indicators produce a distinct exit code (see`,` `,(0,d.jsx)(`a`,{href:`${e}exit-codes/`,children:`exit codes`}),`), so scripts can branch safely.`]})]}),(0,d.jsxs)(`div`,{className:`callout`,children:[`Detection semantics: DevOpsGen detects in the current working directory, not in`,` `,(0,d.jsx)(`code`,{children:`--output-dir`}),`. Run it from the project you want scanned.`]})]})}function te({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{kicker:`command reference`,title:`devopsgen validate`,lede:`Statically lint DevOpsGen output — Dockerfiles, GitHub Actions workflows and Kubernetes manifests — so problems surface on your laptop instead of pipeline number forty.`}),(0,d.jsx)(f,{rel:e,name:`validate.png`,alt:`devopsgen validate passing with the message internal validation passed and exit code 0`,caption:`Everything checks out — exit code 0.`,feature:`shot-feature`}),(0,d.jsx)(p,{label:`synopsis`,children:`devopsgen validate [flags] # validate the current project +devopsgen validate --output-dir ./configs`}),(0,d.jsx)(`h2`,{children:`What it checks`}),(0,d.jsxs)(`div`,{className:`cards`,children:[(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`Docker`}),(0,d.jsxs)(`ul`,{children:[(0,d.jsxs)(`li`,{children:[(0,d.jsx)(`code`,{children:`FROM`}),` base images are pinned to digest form`]}),(0,d.jsx)(`li`,{children:`Required install/prune steps match the package manager`}),(0,d.jsx)(`li`,{children:`Non-root user declared`})]})]}),(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`GitHub Actions`}),(0,d.jsxs)(`ul`,{children:[(0,d.jsx)(`li`,{children:`Workflow documents carry required structure and names`}),(0,d.jsx)(`li`,{children:`Actions are pinned, config files complete`}),(0,d.jsx)(`li`,{children:`Checkout steps reference valid refs`})]})]}),(0,d.jsxs)(`div`,{className:`card`,children:[(0,d.jsx)(`h3`,{children:`Kubernetes`}),(0,d.jsxs)(`ul`,{children:[(0,d.jsx)(`li`,{children:`Resources are DNS 1123/1035 rename-clean`}),(0,d.jsx)(`li`,{children:`Service ↔ Ingress wiring is consistent`}),(0,d.jsx)(`li`,{children:`Probe/health requirements satisfied`})]})]})]}),(0,d.jsx)(`h2`,{children:`Exit behaviour`}),(0,d.jsxs)(`ul`,{children:[(0,d.jsxs)(`li`,{children:[(0,d.jsx)(h,{tone:`ok`,children:`0`}),` — all documents passed.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(h,{tone:`err`,children:`4`}),` — at least one document failed validation.`]}),(0,d.jsxs)(`li`,{children:[(0,d.jsx)(h,{tone:`err`,children:`2`}),` — malformed input (unreadable paths, invalid flags).`]})]}),(0,d.jsxs)(`p`,{children:[`Combine with `,(0,d.jsx)(`code`,{children:`devopsgen init`}),` in CI: generate, commit, validate, deploy — the`,` `,(0,d.jsx)(`a`,{href:`${e}exit-codes/`,children:`exit codes`}),` page maps every failure class.`]})]})}function ne({rel:e}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{kicker:`ci integration`,title:`Exit codes`,lede:`Every DevOpsGen command exits with a stable, documented status code so shells, scripts and CI jobs can branch deterministically — no output parsing required.`}),(0,d.jsx)(`div`,{className:`table-wrap`,children:(0,d.jsxs)(`table`,{children:[(0,d.jsx)(`thead`,{children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{children:`Code`}),(0,d.jsx)(`th`,{children:`Classification`}),(0,d.jsx)(`th`,{children:`Meaning`}),(0,d.jsx)(`th`,{children:`Typical example`})]})}),(0,d.jsxs)(`tbody`,{children:[(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`num`,children:`0`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`span`,{className:`badge badge-ok`,children:`success`})}),(0,d.jsx)(`td`,{children:`Everything requested completed; dry-run plans that resolved cleanly also end here.`}),(0,d.jsxs)(`td`,{children:[(0,d.jsx)(`code`,{children:`init`}),` created 5 files; `,(0,d.jsx)(`code`,{children:`--dry-run --force`}),` plan is green.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`num`,children:`1`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`span`,{className:`badge badge-err`,children:`general error`})}),(0,d.jsx)(`td`,{children:`Unexpected failure — I/O errors, template issues, or a run that failed mid-write and rolled back.`}),(0,d.jsxs)(`td`,{children:[`Disk full while writing `,(0,d.jsx)(`code`,{children:`deployment.yaml`}),`.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`num`,children:`2`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`span`,{className:`badge badge-err`,children:`invalid input`})}),(0,d.jsx)(`td`,{children:`Configuration failed validation before anything was planned or written.`}),(0,d.jsxs)(`td`,{children:[(0,d.jsx)(`code`,{children:`--image BANGKAH/my-app`}),`; port `,(0,d.jsx)(`code`,{children:`-1`}),`; Ingress without host.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`num`,children:`3`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`span`,{className:`badge badge-warn`,children:`conflict`})}),(0,d.jsxs)(`td`,{children:[`Target files already exist and would be overwritten; nothing was written. Retried with `,(0,d.jsx)(`code`,{children:`--force`}),`.`]}),(0,d.jsxs)(`td`,{children:[`Second `,(0,d.jsx)(`code`,{children:`init`}),` without `,(0,d.jsx)(`code`,{children:`--force`}),`.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`num`,children:`4`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`span`,{className:`badge badge-err`,children:`validation failed`})}),(0,d.jsx)(`td`,{children:`Generated documents exist but do not pass static lint rules.`}),(0,d.jsxs)(`td`,{children:[`Unpinned workflow action in `,(0,d.jsx)(`code`,{children:`ci.yaml`}),`.`]})]}),(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`td`,{className:`num`,children:`5`}),(0,d.jsx)(`td`,{children:(0,d.jsx)(`span`,{className:`badge badge-warn`,children:`detection`})}),(0,d.jsx)(`td`,{children:`Stack detection was ambiguous or found nothing at all.`}),(0,d.jsxs)(`td`,{children:[`Empty directory without `,(0,d.jsx)(`code`,{children:`go.mod`}),` / `,(0,d.jsx)(`code`,{children:`package.json`}),`.`]})]})]})]})}),(0,d.jsx)(`h2`,{children:`In practice`}),(0,d.jsxs)(`div`,{className:`screen-strip`,children:[(0,d.jsx)(f,{rel:e,name:`invalid-config.png`,alt:`devopsgen exiting with code 2 after failing image validation`,caption:`Exit 2 — config rejected before planning.`}),(0,d.jsx)(f,{rel:e,name:`init-conflict.png`,alt:`devopsgen exiting with code 3 on existing files`,caption:`Exit 3 — conflict, nothing written.`})]}),(0,d.jsx)(p,{label:`shell script branching`,children:`devopsgen init --stack go --registry ghcr --image you/myapp --port 8080 +case $? in + 0) echo "ready" ;; + 3) devopsgen init --force --stack go --registry ghcr --image you/myapp --port 8080 ;; + 2) echo "fix your flags" >&2 ;; + *) echo "see devopsgen validate output" >&2 ;; +esac`}),(0,d.jsx)(`div`,{className:`callout callout-info`,children:`Codes are part of DevOpsGen's compatibility promise: bumping a major version may add new codes, but existing ones keep their meaning.`})]})}var re=`https://bangkahdev.github.io/DevOpsGen/`,x=[{path:``,component:_,title:`DevOpsGen — DevOps scaffolding for Go & Node.js projects`,description:`DevOpsGen generates production-ready Dockerfiles, GitHub Actions pipelines and Kubernetes manifests for Go and Node.js projects, with safe dry-run plans, automatic backups and config validation.`,keywords:`DevOpsGen, dockerfile generator, github actions generator, kubernetes manifests, go, nodejs, scaffolding, ci cd`,ogImage:`img/init-success.png`},{path:`getting-started`,component:v,title:`Getting Started — DevOpsGen Docs`,description:`Install DevOpsGen via go install or a release binary, then generate a complete Docker, CI and Kubernetes setup for your project with a single command.`,keywords:`DevOpsGen install, go install, quickstart, getting started`,ogImage:`img/init-success.png`},{path:`wizard`,component:y,title:`Interactive Wizard — DevOpsGen Docs`,description:`DevOpsGen launches an interactive TUI wizard that walks through stack detection, ports, container images and Kubernetes options, then writes the generated configuration.`,keywords:`DevOpsGen wizard, tui, bubbletea, interactive`,ogImage:`img/wizard.png`},{path:`init`,component:b,title:`init command — DevOpsGen Docs`,description:`Full reference for devopsgen init flags: stack, app type, CI provider, registry, image, port, Kubernetes ingress, health path, dry-run and force overwrite behaviour.`,keywords:`devopsgen init, flags, dry-run, force, image, ingress`,ogImage:`img/init-success.png`},{path:`detect`,component:ee,title:`detect command — DevOpsGen Docs`,description:`devopsgen detect inspects the current project and reports the programming stack, the files it based its decision on, and candidate application types.`,keywords:`devopsgen detect, stack detection, go.mod, package.json`,ogImage:`img/detect.png`},{path:`validate`,component:te,title:`validate command — DevOpsGen Docs`,description:`devopsgen validate statically checks generated Dockerfiles, GitHub Actions workflows and Kubernetes manifests: FROM digests, action pinning, naming rules, probes and more.`,keywords:`devopsgen validate, dockerfile lint, workflow lint, kubernetes manifest lint`,ogImage:`img/validate.png`},{path:`exit-codes`,component:ne,title:`Exit codes — DevOpsGen Docs`,description:`Every devopsgen command exits with a documented status code: 0 success, 1 general error, 2 invalid configuration, 3 file conflicts, 4 validation failure, 5 ambiguous detection.`,keywords:`devopsgen exit codes, ci integration, pipeline status`,ogImage:`img/invalid-config.png`}];function ie({rel:e,children:t}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`a`,{className:`skip`,href:`#main`,children:`skip to content`}),(0,d.jsxs)(`header`,{className:`topbar`,children:[(0,d.jsxs)(`a`,{className:`brand`,href:e||`./`,children:[(0,d.jsx)(`span`,{className:`brand-mark`,children:`DG`}),(0,d.jsxs)(`span`,{children:[`DevOpsGen`,(0,d.jsx)(`span`,{className:`brand-sub`,children:`DOCS`})]})]}),(0,d.jsx)(`nav`,{"aria-label":`Main navigation`,children:(0,d.jsx)(`ul`,{children:x.filter(e=>e.path!==``).map(t=>(0,d.jsx)(`li`,{children:(0,d.jsx)(`a`,{className:e===``?`nav-link`:`nav-link nav-sub`,href:`${e}${t.path}/`,children:t.path.replace(/-/g,` `)})},t.path))})}),(0,d.jsx)(`a`,{className:`gh-pill`,href:`https://github.com/Bangkahdev/DevOpsGen`,rel:`noopener noreferrer`,target:`_blank`,children:`GitHub`})]}),(0,d.jsx)(`main`,{id:`main`,children:t}),(0,d.jsxs)(`footer`,{className:`footer`,children:[(0,d.jsxs)(`p`,{children:[`DevOpsGen — deterministic DevOps scaffolding for Go & Node.js.`,` `,(0,d.jsx)(`a`,{href:`${e}getting-started/`,children:`Get started`}),` or browse the`,` `,(0,d.jsx)(`a`,{href:`${e}exit-codes/`,children:`exit codes`}),`.`]}),(0,d.jsxs)(`p`,{className:`footer-links`,children:[(0,d.jsx)(`a`,{href:re,children:`canonical site`}),` · `,(0,d.jsx)(`a`,{href:`https://github.com/Bangkahdev/DevOpsGen`,children:`source code`})]})]})]})}var S=x.find(e=>e.path===location.pathname.replace(/\/$/,``).replace(/^.*\//,``))??null,ae=S&&S.path===``?``:`../`,oe=S??x[0];(0,l.createRoot)(document.getElementById(`root`)).render((0,d.jsx)(ie,{rel:ae,children:(0,d.jsx)(oe.component,{rel:ae})})); \ No newline at end of file diff --git a/docs/web/dist/assets/site.css b/docs/web/dist/assets/site.css new file mode 100644 index 0000000..99c559f --- /dev/null +++ b/docs/web/dist/assets/site.css @@ -0,0 +1 @@ +:root{--paper:#fff8e7;--ink:#000;--pink:#ff5d8f;--yellow:#ffd400;--blue:#38b6ff;--lime:#b8ff5c;--purple:#b15de6;--red:#ff4b33;--green:#00c46e;--border:4px solid var(--ink);--shadow:8px 8px 0 var(--ink);--shadow-sm:4px 4px 0 var(--ink);--font:"Archivo", "Arial Black", "Segoe UI", Tahoma, sans-serif;--mono:"Cascadia Code", "Consolas", "JetBrains Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#0000000f 1px,#0000 1px),linear-gradient(90deg,#0000000f 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}.skip{background:var(--yellow);border:var(--border);z-index:99;padding:8px 16px;font-weight:900;position:absolute;top:0;left:-9999px}.skip:focus{left:8px}.topbar{z-index:50;background:var(--ink);color:var(--paper);border:var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 12px;padding:8px 14px;display:flex;position:sticky;top:8px}.brand{color:var(--paper);letter-spacing:.5px;align-items:center;gap:10px;font-size:1.15rem;font-weight:900;text-decoration:none;display:inline-flex}.brand-mark{background:var(--pink);color:var(--ink);border:3px solid var(--paper);padding:2px 8px;font-weight:900;transform:rotate(-3deg)}.brand-sub{background:var(--blue);color:var(--ink);margin-left:8px;padding:1px 6px;font-size:.62rem;transform:rotate(2deg)}.topbar nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--paper);text-transform:uppercase;border:3px solid #0000;padding:4px 10px;font-size:.82rem;font-weight:800;text-decoration:none;display:inline-block}.nav-link:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}.gh-pill{background:var(--yellow);color:var(--ink);border:3px solid var(--paper);box-shadow:3px 3px 0 var(--paper);margin-left:auto;padding:4px 14px;font-weight:900;text-decoration:none}.gh-pill:hover{box-shadow:5px 5px 0 var(--paper);transform:translate(-2px,-2px)}main{z-index:1;max-width:1080px;margin:32px auto;padding:0 20px;position:relative}.page-head{margin-bottom:28px}.kicker{background:var(--lime);border:var(--border);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:2px;margin:0 0 14px;padding:4px 12px;font-size:.78rem;font-weight:900;display:inline-block;transform:rotate(-1deg)}.violet{background:var(--purple)}.blue{background:var(--blue)}.pink{background:var(--pink)}.yellow{background:var(--yellow)}h1{text-transform:uppercase;letter-spacing:-1px;margin:0 0 16px;font-size:clamp(2.4rem,6vw,4rem);font-weight:900;line-height:1.02}.lede{background:var(--yellow);border:var(--border);max-width:720px;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:1.15rem;display:inline-block}h2{text-transform:uppercase;border-left:12px solid var(--ink);margin:44px 0 14px;padding-left:12px;font-size:1.7rem;font-weight:900}h3{text-transform:uppercase;margin:28px 0 10px;font-size:1.2rem;font-weight:900}p,li{font-size:1.02rem}strong{background:var(--lime);padding:0 3px}code{font-family:var(--mono);color:#7fffd4;background:#000;padding:2px 6px;font-size:.92em}a{color:inherit;text-decoration-thickness:3px;-webkit-text-decoration-color:var(--pink);text-decoration-color:var(--pink)}a:hover{background:var(--pink)}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:24px;margin-bottom:20px;display:grid}.hero-badges{flex-wrap:wrap;gap:10px;margin:18px 0 22px;display:flex}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.btn{text-transform:uppercase;border:var(--border);box-shadow:var(--shadow);background:var(--blue);color:var(--ink);padding:12px 22px;font-size:1rem;font-weight:900;text-decoration:none;display:inline-block}.btn:hover{box-shadow:12px 12px 0 var(--ink);transform:translate(-4px,-4px)}.btn-pink{background:var(--pink)}.btn-yellow{background:var(--yellow)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.card{border:var(--border);box-shadow:var(--shadow);background:#fff;padding:18px;position:relative}.card h3{margin-top:0}.card:nth-child(3n+1){background:var(--yellow);border-radius:0}.card:nth-child(3n+2){background:#fff}.card:nth-child(3n){background:var(--blue)}.card:hover{box-shadow:11px 11px 0 var(--ink);transform:translate(-3px,-3px)}.core .card{background:#fff}.core .card:hover{background:var(--lime)}.shot{border:var(--border);box-shadow:var(--shadow);background:#fff;max-width:100%;margin:22px 0;padding:12px}.shot img{border:2px solid var(--ink);width:100%;height:auto;display:block}.shot figcaption{border-top:3px dashed var(--ink);margin-top:10px;padding-top:8px;font-size:.9rem;font-weight:700}.shot a:hover{background:0 0}.shot img:hover{transform:translate(-2px,-2px)}.shot-feature{max-width:860px}.screen-strip{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:22px;display:grid}.screen-strip .shot{margin:0 0 12px}.code-block{color:#e6edf3;border:var(--border);box-shadow:var(--shadow);background:#0d1117;margin:18px 0;position:relative}.code-label{background:var(--purple);border:3px solid var(--ink);text-transform:uppercase;letter-spacing:1px;padding:2px 10px;font-size:.72rem;font-weight:900;position:absolute;top:-16px;left:12px}.code-block pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:.88rem;line-height:1.5;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0}.table-wrap{border:var(--border);box-shadow:var(--shadow);background:#fff;margin:18px 0;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border:3px solid var(--ink);text-align:left;vertical-align:top;padding:10px 12px}th{background:var(--ink);color:var(--paper);text-transform:uppercase;letter-spacing:1px;font-size:.8rem}tbody tr:nth-child(2n) td{background:var(--yellow)}td code{white-space:nowrap}.num{font-size:1.05rem;font-weight:900}.badge{text-transform:uppercase;border:3px solid var(--ink);margin-right:6px;padding:3px 10px;font-size:.8rem;font-weight:900;display:inline-block;transform:rotate(-1.5deg)}.badge-ok{background:var(--green);color:#fff}.badge-warn{background:var(--yellow)}.badge-err{background:var(--red);color:#fff}.badge-info{background:var(--blue)}.kbd{font-family:var(--mono);border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;padding:2px 8px;font-size:.85rem;font-weight:700;display:inline-block}.callout{border:var(--border);box-shadow:var(--shadow-sm);background:var(--pink);margin:22px 0;padding:14px 18px;font-weight:700}.callout-info{background:var(--blue)}.callout-ok{background:var(--lime)}.file-tree{font-family:var(--mono);white-space:pre;font-size:.9rem;overflow-x:auto}.inline-shot{vertical-align:top;max-width:560px;display:inline-block}.inline-shot+.inline-shot{margin-left:8px}.footer{z-index:1;border:var(--border);box-shadow:var(--shadow);background:var(--ink);color:var(--paper);margin:48px 12px 12px;padding:18px 22px;font-size:.9rem;position:relative}.footer a{color:var(--yellow);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow)}.footer a:hover{background:var(--yellow);color:var(--ink)}.footer-links{margin-top:6px}ul{padding-left:22px}li+li{margin-top:4px}.step-list{counter-reset:steps;padding-left:0;list-style:none}.step-list li{counter-increment:steps;margin-top:14px;padding-left:52px;position:relative}.step-list li:before{content:counter(steps);background:var(--purple);color:#fff;border:3px solid var(--ink);width:34px;height:34px;box-shadow:3px 3px 0 var(--ink);place-items:center;font-weight:900;display:grid;position:absolute;top:-4px;left:0}.flag-name{font-family:var(--mono);font-weight:700}@media (width<=720px){.hero{grid-template-columns:1fr}.topbar{gap:8px}.gh-pill{margin-left:0}main{margin:18px auto}} diff --git a/docs/web/dist/detect/index.html b/docs/web/dist/detect/index.html new file mode 100644 index 0000000..0773353 --- /dev/null +++ b/docs/web/dist/detect/index.html @@ -0,0 +1,26 @@ + + + + + + detect command — DevOpsGen Docs + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

command reference

devopsgen detect

Inspect the current project and report what DevOpsGen would scaffold for it: the programming stack, the exact files that shaped the decision, and the candidate application types.

devopsgen detect output in a terminal reporting stack go with indicators go.mod
devopsgen detect inside a Go module — chain of evidence straight from the filesystem.

Reading the output

LineMeaning
stack: goThe detected programming stack (go or nodejs).
indicators: go.mod, ...The files that produced evidence — your audit trail for why the stack matched.
app-type candidates: binaryApplication types plausible for this project; the wizard default comes from here too.

How it decides

  • Go — go.mod and its module directive looking like module example.com/app.
  • Node.js — package.json, plus its dependencies, and lockfile flavours (npm / pnpm) that later steer Docker image commands.
  • Ambiguity or zero indicators produce a distinct exit code (see exit codes), so scripts can branch safely.
Detection semantics: DevOpsGen detects in the current working directory, not in --output-dir. Run it from the project you want scanned.
+ + \ No newline at end of file diff --git a/docs/web/dist/exit-codes/index.html b/docs/web/dist/exit-codes/index.html new file mode 100644 index 0000000..a4cb6b7 --- /dev/null +++ b/docs/web/dist/exit-codes/index.html @@ -0,0 +1,32 @@ + + + + + + Exit codes — DevOpsGen Docs + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

ci integration

Exit codes

Every DevOpsGen command exits with a stable, documented status code so shells, scripts and CI jobs can branch deterministically — no output parsing required.

CodeClassificationMeaningTypical example
0successEverything requested completed; dry-run plans that resolved cleanly also end here.init created 5 files; --dry-run --force plan is green.
1general errorUnexpected failure — I/O errors, template issues, or a run that failed mid-write and rolled back.Disk full while writing deployment.yaml.
2invalid inputConfiguration failed validation before anything was planned or written.--image BANGKAH/my-app; port -1; Ingress without host.
3conflictTarget files already exist and would be overwritten; nothing was written. Retried with --force.Second init without --force.
4validation failedGenerated documents exist but do not pass static lint rules.Unpinned workflow action in ci.yaml.
5detectionStack detection was ambiguous or found nothing at all.Empty directory without go.mod / package.json.

In practice

devopsgen exiting with code 2 after failing image validation
Exit 2 — config rejected before planning.
devopsgen exiting with code 3 on existing files
Exit 3 — conflict, nothing written.
shell script branching
devopsgen init --stack go --registry ghcr --image you/myapp --port 8080
+case $? in
+  0) echo "ready" ;;
+  3) devopsgen init --force --stack go --registry ghcr --image you/myapp --port 8080 ;;
+  2) echo "fix your flags" >&2 ;;
+  *) echo "see devopsgen validate output" >&2 ;;
+esac
Codes are part of DevOpsGen's compatibility promise: bumping a major version may add new codes, but existing ones keep their meaning.
+ + \ No newline at end of file diff --git a/docs/web/dist/getting-started/index.html b/docs/web/dist/getting-started/index.html new file mode 100644 index 0000000..5b2cb75 --- /dev/null +++ b/docs/web/dist/getting-started/index.html @@ -0,0 +1,32 @@ + + + + + + Getting Started — DevOpsGen Docs + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

getting started

Zero to CI in one command

Install DevOpsGen, point it at any Go or Node.js project, and get a full Docker + GitHub Actions + Kubernetes baseline in seconds.

Install

go install (go 1.22+)
go install devopsgen.dev/devopsgen@latest

Or grab a prebuilt binary from the project GitHub releases, or build from source:

from source
git clone https://github.com/Bangkahdev/DevOpsGen.git
+cd DevOpsGen
+make build

Two ways to run it

  • Interactive: run devopsgen init in a terminal — the wizard detects your stack and interviews you step by step.
  • Headless: pass every required parameter as flags — the process never waits for stdin, which makes it script- and CI-friendly.

Headless quickstart

inside your project
devopsgen init   --stack go   --ci github-actions   --registry ghcr   --image you/myapp   --port 8080
Terminal capture of devopsgen init completing successfully and reporting five files created
A successful first run — five files created, exit code 0.

Inside a Go project this writes:

what you get
.github/workflows/ci.yaml   # test, vet, build, docker publish
+Kubernetes/deployment.yaml  # non-root, probes, DNS-1053 names
+Kubernetes/service.yaml     # cluster service
+Kubernetes/ingress.yaml     # optional, needs --ingress
+Dockerfile                  # hardened multi-stage build + .dockerignore
Second runs are safe: DevOpsGen refuses to overwrite without --force and exits with code 3 — see the init reference.

Next steps

+ + \ No newline at end of file diff --git a/docs/web/dist/img/detect.png b/docs/web/dist/img/detect.png new file mode 100644 index 0000000000000000000000000000000000000000..f60b80a315176a22bac6b5dfe217330dfb8cd167 GIT binary patch literal 9057 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�gJxZZh%KV7EYXt3WiW_*2a zziUAkM3v!47E?-fy%=+pnA=YYfuGakDW1(;#^E@~;rcw1S9mMpbNp9RuIhfu+M}*p zH$K#ab2$smY+nd&2sIn&I8Sx=LlPax)6pWJZe<^))F&UFjWWMZC%}cE;|x6_zGlj_ zm{{#FY07I1QuxD3Tt#sOn%%TrI9e90VTzAn?&?_at_@ee8{5JS2O37~l{q#^!K7kM(EK zy@^EgepRE`qdzNqYA?>v2qlcX>JDORA2Xc(2-YA(J~g{{>|r`P9h8a;6XXI%o^hUZ zmtoa=Z+c(@Crnn^@p@-SNdbD9ENHl6UFlwW+L7NviQk4rs?>G2wxVk;Q>=Kypr9V} z(a?f*N!BoY-)>`Mb$kT|Mv95|g`IL1Ex(ObbU%YQ;ts=oqBQtH;PgIrXjdfo=2n2w z?AbrpnvuDD(5iYC^_Y1dCI3`0*6bdAg^EUvel-E=_gC}M<`_Vnoqrz7w^2zfG#Dqn z{c_dYB`?G%@4^d1{Y57|;U{;$ndwNCcife}cqYSIA+@!}tSi5H*%TxDI)87z$|CYZ z8+vevk_E!R)XW0K0}n%Ri6;;z?4M5b8aU9pn5HD=lfRg|G?>NpBdlH5|IHcxmgc@i z&;2Q9p|CW!2VHdrdw@xFIhMnRq%3Nu=xRY1Y)Zq*N9-j*ah5wIEuRg5{roYJC)>v zL#lm)K>j~JSrcH642Z;m4@a&d>~kw?(z@HkTNB%Elhur_xAD8cgbxSARMSCX2gt;w z4AsjYaO$2NrknFd)+dByIBU_E0!)}8&J0?(kbV&(VzZnfUJR)(9>P%?{L1aWDW9H0 z(8pEF^P)QNCm3pPs@Y5Yx~W}7-KJ+oh_lWzh`ImnkR2Y2pZ6Uf<1~;DmAnnqI}=Bv zPT7!#u=}@Aj|7Hl^jPP3ZtriP6Dm1pafl*YE~4`bn(EY1K9AG@C~6>FF}NmLlV5%r zb`2`7a5-92h|`1X1Hmb$8)-1)e?2!85V!WU|B~`%ZkX3{^^F$c*xMgz{1E--xj6~U zu3no#a{#;>&ilcwdTtMTfEzNJbCCD4k>WxqID)3|Plx8Y*g>;fQ?k1=MNbrm39x@o zx7FFQ zD)4f<_-~?)UA>PCO%xzOsk7v@E?8n_s0=-aKu zoXeCKu2#WU%(tzz-vEw$=mm zM9cr64y98mTDI%%C2oxI4pXvAk+sqfdJm>|-`NqZZTGu8xFfQc)SxGF6T#R2E}wX4 zduPkx(`QT4Pl#h&pBdfTi^w|H)<0#V%yh{er7%}A9q(@J?P55(y~Y_sl6O~wP)lO&^kO);g_AMXd-92 zU|0ZRtPJ-tW2ibVpt$0CfDB|7&U`%%O;I0o6nqwp z&46ZfMV>8jIGDBct4ZT<(q$Xr{_I8X`qadq>9(F2@wK`f_}X8EdYZ3&DEk$V z8~7m=uG=#ht`pEP0(B*F%w%4&>%L2}kv3gqlBFATv!n<2e=LloDfo9w;s5&yg`zc# Wp?QjB?D-za($CsBp02XGobVron(G4q literal 0 HcmV?d00001 diff --git a/docs/web/dist/img/dry-run-force.png b/docs/web/dist/img/dry-run-force.png new file mode 100644 index 0000000000000000000000000000000000000000..55ea52be5dabca21cda9bebd60c86b5867b81dcd GIT binary patch literal 48550 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 Wf^&x5#a%q$$Mk^t{_K5D*Z&uUt{p}I literal 0 HcmV?d00001 diff --git a/docs/web/dist/img/dry-run.png b/docs/web/dist/img/dry-run.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3bd6ef69ca52805601fa9c0c6309fe9ae838d1 GIT binary patch literal 50824 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 P1pf4OjE-d=wZ8FR#q*)i literal 0 HcmV?d00001 diff --git a/docs/web/dist/img/help.png b/docs/web/dist/img/help.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad0437ae82ba356a2a943903dc2dfb5ef285d2b GIT binary patch literal 37954 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 U>G)(T?x){RTAs-N?T=gk3pt=ilmGw# literal 0 HcmV?d00001 diff --git a/docs/web/dist/img/init-conflict.png b/docs/web/dist/img/init-conflict.png new file mode 100644 index 0000000000000000000000000000000000000000..0be48f909b7b53aafcc123bb03e3e97c55e1227d GIT binary patch literal 11062 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 literal 0 HcmV?d00001 diff --git a/docs/web/dist/img/wizard.png b/docs/web/dist/img/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7944bb324687581783ad7a15669ccb4c22f255 GIT binary patch literal 8542 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/web/dist/index.html b/docs/web/dist/index.html new file mode 100644 index 0000000..ecdebf4 --- /dev/null +++ b/docs/web/dist/index.html @@ -0,0 +1,28 @@ + + + + + + DevOpsGen — DevOps scaffolding for Go & Node.js projects + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

docker · github actions · kubernetes

DevOps scaffolding,
deterministically.

DevOpsGen reads your Go or Node.js project and writes a complete, opinionated DevOps baseline: hardened Dockerfile, GitHub Actions pipeline and ready-to-apply Kubernetes manifests — with dry-run plans, automatic backups and config validation built in.

DevOpsGen interactive wizard running in a Windows terminal, asking for the project stack
The interactive wizard — press Enter to accept smart defaults.

Why DevOpsGen

Deterministic

Same inputs, same bytes — every run. Machine-friendly for code review: a second generation with --force produces bit-identical files.

Safe by default

Existing files are never overwritten without --force. Overwrites get .bak backups, failed runs roll back automatically, and --dry-run prints the full plan first.

Validated output

Built-in validation checks Dockerfile FROM digests, workflow action pinning, Kubernetes naming and health probes before anything ships.

Stack aware

Detects Go and Node.js projects (npm, pnpm, Express, Next.js, Vite, NestJS) from go.mod / package.json and tailors templates accordingly.

Everything a project needs on day one

One init command writes the whole baseline tree. Preview the real terminal output of every command below — all screenshots are live captures, not mockups.

generated in one command
$ devopsgen init --stack go --ci github-actions --registry ghcr --image you/myapp --port 8080
+created 5 file(s), replaced 0 file(s) in .
+exit code: 0
Terminal showing a successful DevOpsGen init run creating five files with exit code 0
init — first run creates the complete baseline and exits 0.
Terminal showing DevOpsGen refusing to overwrite five files and exiting with code 3
init on a second run refuses to overwrite files — exit code 3 without --force.
Terminal showing a DevOpsGen dry-run plan listing replace and conflict entries before exiting with code 3
--dry-run prints the exact write plan, unresolved conflicts included.

What gets generated

Template setFilesPurpose
docker (+ .dockerignore)DockerfileHardened image build with non-root user, health check hooks, install/prune commands derived from package manager (npm / pnpm) and lockfile detection.
github-actions.github/workflows/ci.yamlTest/build across Go and Node.js versions, docker build & push, coverage floors, manifest validation.
kubernetesdeployment.yaml, service.yaml, optional ingress.yamlNon-root security context, probes using your health path, RFC 1123-validated names, optional host-based Ingress.

Explore the docs

Command cheatsheet

Terminal showing the full devopsgen help output listing all commands
devopsgen --help — all commands at a glance.
Terminal showing the devopsgen list output with available stacks, app types and registries
devopsgen list — supported stacks, app types and registries.
Terminal showing the devopsgen version output
devopsgen version.
+ + \ No newline at end of file diff --git a/docs/web/dist/init/index.html b/docs/web/dist/init/index.html new file mode 100644 index 0000000..fd0e19d --- /dev/null +++ b/docs/web/dist/init/index.html @@ -0,0 +1,26 @@ + + + + + + init command — DevOpsGen Docs + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

command reference

devopsgen init

Initialize DevOps configuration. In an interactive terminal with no complete configuration the TUI wizard is launched; when all required parameters are supplied via flags the process runs headless and never waits for stdin.

synopsis
devopsgen init [flags]

Flags

FlagDefaultDescription
--stackauto-detectedProject stack: go or nodejs.
--app-typeauto-detectedApplication type (see devopsgen list).
--cigithub-actionsCI provider.
--registrydockerhubContainer registry: dockerhub or ghcr.
--image—Image repository as namespace/repository — no host and no tag.
--taglatestAdditional image tag alias.
--port—Application port, 1–65535.
--k8strueGenerate Kubernetes manifests.
--ingressoffEnable Kubernetes Ingress (requires --ingress-host).
--ingress-host—Ingress hostname, validated as RFC 1123.
--health-path—HTTP health probe path wired into manifests.
--build-cmd—Build command.
--build-path.Go package path to build inside the container.
--start-cmd—Startup command.
--test-cmd—Test command.
--output-dir.Output directory.
--dry-runoffSimulate without writing anything.
--forceoffOverwrite existing regular files.

Success & conflicts

A clean run writes every template and exits with 0. A second run over an existing project stops before touching anything and exits with 3 until you add --force:

devopsgen init success output with exit code 0
First run: five files created, exit code 0.
devopsgen init conflict error refusing to overwrite files with exit code 3
Re-run without --force: exit code 3, zero files touched.

Preview plans with --dry-run

--dry-run prints the byte-plan: which files would be created, which would be replaced, and which are in conflict. With a conflict present it exits 3; combined with --force a fully green plan exits 0 without writing anything:

devopsgen dry-run plan output showing replace and conflict entries with exit code 3
--dry-run over an existing project: conflict entries, exit code 3.
devopsgen dry-run force plan output where every file would be replaced, exit code 0
--dry-run --force: every file replaced in plan form, exit code 0.

Config validation

Invalid configuration fails fast with 2 before any file is planned — e.g. an image that must be namespace/repository without host or tag, a port outside 1–65535, or an Ingress without a host:

devopsgen init failing config validation on an invalid image with exit code 2
Config errors exit with code 2 and never write files.
Overwrites performed with --force create .bak backups, and any failure mid-run automatically rolls back to the pre-run state.
+ + \ No newline at end of file diff --git a/docs/web/dist/robots.txt b/docs/web/dist/robots.txt new file mode 100644 index 0000000..43ea56e --- /dev/null +++ b/docs/web/dist/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://bangkahdev.github.io/DevOpsGen/sitemap.xml diff --git a/docs/web/dist/sitemap.xml b/docs/web/dist/sitemap.xml new file mode 100644 index 0000000..46517e4 --- /dev/null +++ b/docs/web/dist/sitemap.xml @@ -0,0 +1,10 @@ + + + https://bangkahdev.github.io/DevOpsGen/2026-10-22weekly1.0 + https://bangkahdev.github.io/DevOpsGen/getting-started/2026-10-22monthly0.8 + https://bangkahdev.github.io/DevOpsGen/wizard/2026-10-22monthly0.8 + https://bangkahdev.github.io/DevOpsGen/init/2026-10-22monthly0.8 + https://bangkahdev.github.io/DevOpsGen/detect/2026-10-22monthly0.8 + https://bangkahdev.github.io/DevOpsGen/validate/2026-10-22monthly0.8 + https://bangkahdev.github.io/DevOpsGen/exit-codes/2026-10-22monthly0.8 + diff --git a/docs/web/dist/validate/index.html b/docs/web/dist/validate/index.html new file mode 100644 index 0000000..0437481 --- /dev/null +++ b/docs/web/dist/validate/index.html @@ -0,0 +1,27 @@ + + + + + + validate command — DevOpsGen Docs + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

command reference

devopsgen validate

Statically lint DevOpsGen output — Dockerfiles, GitHub Actions workflows and Kubernetes manifests — so problems surface on your laptop instead of pipeline number forty.

devopsgen validate passing with the message internal validation passed and exit code 0
Everything checks out — exit code 0.
synopsis
devopsgen validate [flags]          # validate the current project
+devopsgen validate --output-dir ./configs

What it checks

Docker

  • FROM base images are pinned to digest form
  • Required install/prune steps match the package manager
  • Non-root user declared

GitHub Actions

  • Workflow documents carry required structure and names
  • Actions are pinned, config files complete
  • Checkout steps reference valid refs

Kubernetes

  • Resources are DNS 1123/1035 rename-clean
  • Service ↔ Ingress wiring is consistent
  • Probe/health requirements satisfied

Exit behaviour

  • 0 — all documents passed.
  • 4 — at least one document failed validation.
  • 2 — malformed input (unreadable paths, invalid flags).

Combine with devopsgen init in CI: generate, commit, validate, deploy — the exit codes page maps every failure class.

+ + \ No newline at end of file diff --git a/docs/web/dist/wizard/index.html b/docs/web/dist/wizard/index.html new file mode 100644 index 0000000..9c7bb0a --- /dev/null +++ b/docs/web/dist/wizard/index.html @@ -0,0 +1,26 @@ + + + + + + Interactive Wizard — DevOpsGen Docs + + + + + + + + + + + + + + + + + +
DGDevOpsGenDOCSGitHub

interactive wizard

The TUI wizard

When you run devopsgen init in a real terminal without a flags-only invocation, a keyboard-driven wizard takes over — Enter accepts the recommended default at every step.

DevOpsGen wizard TUI showing the stack selection list with a highlighted highlighted selection and instructions
Step 1 — stack choice. DevOpsGen pre-selects what its detector recommends.

How the interview flows

  • Stack — go or nodejs, pre-selected by the detector (detect runs first).
  • Application type (Node.js only) — express, nextjs, vite, nestjs or generic; Go projects build binaries by default.
  • Port — the application port, 1–65535, validated on the spot.
  • Container image — namespace/repository, no host, no tag.
  • Registry — Docker Hub or GHCR (also shipped as the --registry flag).
  • Kubernetes — manifests are generated by default; opt into a host-based Ingress with an RFC 1123 hostname.
  • Summary & confirm — review every chosen value, confirm, and the files are written to the project root.
A wizard run is fully replayable: the same answers as equivalent flags. To automate the same result, pass the flags headless (init reference).

Keyboard

KeyAction
EnterConfirm current selection / printed default
↑ ↓Move within list choices
typed textFill textual answers (port, image, host)
Ctrl+CAbort the wizard without writing anything

Safety during the run

Everything until the final confirmation is bound to memory only — aborting leaves the project untouched. The write itself follows the same rules as headless mode: never-overwrite-unless---force, backups, and rollback on mid-run failure.

+ + \ No newline at end of file diff --git a/docs/web/index.html b/docs/web/index.html new file mode 100644 index 0000000..05d26ef --- /dev/null +++ b/docs/web/index.html @@ -0,0 +1,12 @@ + + + + + + DevOpsGen Docs + + +
+ + + diff --git a/docs/web/package-lock.json b/docs/web/package-lock.json new file mode 100644 index 0000000..0d9ad62 --- /dev/null +++ b/docs/web/package-lock.json @@ -0,0 +1,891 @@ +{ + "name": "web", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "react": "^19.3.1", + "react-dom": "^19.3.1" + }, + "devDependencies": { + "@vitejs/plugin-react": "^6.1.2", + "vite": "^8.3.5" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.155.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.155.0.tgz", + "integrity": "sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.15.tgz", + "integrity": "sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.15.tgz", + "integrity": "sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.15.tgz", + "integrity": "sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.15.tgz", + "integrity": "sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.15.tgz", + "integrity": "sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.15.tgz", + "integrity": "sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.15.tgz", + "integrity": "sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.15.tgz", + "integrity": "sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.15.tgz", + "integrity": "sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.15.tgz", + "integrity": "sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.15.tgz", + "integrity": "sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.15.tgz", + "integrity": "sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.15.tgz", + "integrity": "sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.15.tgz", + "integrity": "sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.15.tgz", + "integrity": "sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.1.2.tgz", + "integrity": "sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "oxc-transform-react": "^0.152.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "oxc-transform-react": { + "optional": true + } + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/nanoid": { + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.31.tgz", + "integrity": "sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.20", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz", + "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz", + "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.28.0" + }, + "peerDependencies": { + "react": "^19.3.1" + } + }, + "node_modules/rolldown": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.15.tgz", + "integrity": "sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.155.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm-eabi": "1.2.15", + "@rolldown/binding-android-arm64": "1.2.15", + "@rolldown/binding-darwin-arm64": "1.2.15", + "@rolldown/binding-darwin-x64": "1.2.15", + "@rolldown/binding-freebsd-x64": "1.2.15", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.15", + "@rolldown/binding-linux-arm64-gnu": "1.2.15", + "@rolldown/binding-linux-arm64-musl": "1.2.15", + "@rolldown/binding-linux-ppc64-gnu": "1.2.15", + "@rolldown/binding-linux-s390x-gnu": "1.2.15", + "@rolldown/binding-linux-x64-gnu": "1.2.15", + "@rolldown/binding-linux-x64-musl": "1.2.15", + "@rolldown/binding-openharmony-arm64": "1.2.15", + "@rolldown/binding-win32-arm64-msvc": "1.2.15", + "@rolldown/binding-win32-x64-msvc": "1.2.15" + } + }, + "node_modules/scheduler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vite": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.5.tgz", + "integrity": "sha512-z1YpjieJ9g0ebTmQpLBv/oq9E3F9EIlOe+7LahW8SrE3LTiG3udBRUXQOlYXP9b+IC2q2phHeVxj9xGlw34OEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.30", + "rolldown": "~1.2.14", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.7.1 || ^0.8.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/docs/web/package.json b/docs/web/package.json new file mode 100644 index 0000000..e3eae32 --- /dev/null +++ b/docs/web/package.json @@ -0,0 +1,20 @@ +{ + "name": "devopsgen-docs", + "private": true, + "version": "1.0.0", + "description": "React documentation site for DevOpsGen, statically prerendered for SEO", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build && vite build --ssr src/entry-server.jsx --outDir .ssr && node scripts/prerender.mjs", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.3.1", + "react-dom": "^19.3.1" + }, + "devDependencies": { + "@vitejs/plugin-react": "^6.1.2", + "vite": "^8.3.5" + } +} diff --git a/docs/web/public/img/detect.png b/docs/web/public/img/detect.png new file mode 100644 index 0000000000000000000000000000000000000000..f60b80a315176a22bac6b5dfe217330dfb8cd167 GIT binary patch literal 9057 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�gJxZZh%KV7EYXt3WiW_*2a zziUAkM3v!47E?-fy%=+pnA=YYfuGakDW1(;#^E@~;rcw1S9mMpbNp9RuIhfu+M}*p zH$K#ab2$smY+nd&2sIn&I8Sx=LlPax)6pWJZe<^))F&UFjWWMZC%}cE;|x6_zGlj_ zm{{#FY07I1QuxD3Tt#sOn%%TrI9e90VTzAn?&?_at_@ee8{5JS2O37~l{q#^!K7kM(EK zy@^EgepRE`qdzNqYA?>v2qlcX>JDORA2Xc(2-YA(J~g{{>|r`P9h8a;6XXI%o^hUZ zmtoa=Z+c(@Crnn^@p@-SNdbD9ENHl6UFlwW+L7NviQk4rs?>G2wxVk;Q>=Kypr9V} z(a?f*N!BoY-)>`Mb$kT|Mv95|g`IL1Ex(ObbU%YQ;ts=oqBQtH;PgIrXjdfo=2n2w z?AbrpnvuDD(5iYC^_Y1dCI3`0*6bdAg^EUvel-E=_gC}M<`_Vnoqrz7w^2zfG#Dqn z{c_dYB`?G%@4^d1{Y57|;U{;$ndwNCcife}cqYSIA+@!}tSi5H*%TxDI)87z$|CYZ z8+vevk_E!R)XW0K0}n%Ri6;;z?4M5b8aU9pn5HD=lfRg|G?>NpBdlH5|IHcxmgc@i z&;2Q9p|CW!2VHdrdw@xFIhMnRq%3Nu=xRY1Y)Zq*N9-j*ah5wIEuRg5{roYJC)>v zL#lm)K>j~JSrcH642Z;m4@a&d>~kw?(z@HkTNB%Elhur_xAD8cgbxSARMSCX2gt;w z4AsjYaO$2NrknFd)+dByIBU_E0!)}8&J0?(kbV&(VzZnfUJR)(9>P%?{L1aWDW9H0 z(8pEF^P)QNCm3pPs@Y5Yx~W}7-KJ+oh_lWzh`ImnkR2Y2pZ6Uf<1~;DmAnnqI}=Bv zPT7!#u=}@Aj|7Hl^jPP3ZtriP6Dm1pafl*YE~4`bn(EY1K9AG@C~6>FF}NmLlV5%r zb`2`7a5-92h|`1X1Hmb$8)-1)e?2!85V!WU|B~`%ZkX3{^^F$c*xMgz{1E--xj6~U zu3no#a{#;>&ilcwdTtMTfEzNJbCCD4k>WxqID)3|Plx8Y*g>;fQ?k1=MNbrm39x@o zx7FFQ zD)4f<_-~?)UA>PCO%xzOsk7v@E?8n_s0=-aKu zoXeCKu2#WU%(tzz-vEw$=mm zM9cr64y98mTDI%%C2oxI4pXvAk+sqfdJm>|-`NqZZTGu8xFfQc)SxGF6T#R2E}wX4 zduPkx(`QT4Pl#h&pBdfTi^w|H)<0#V%yh{er7%}A9q(@J?P55(y~Y_sl6O~wP)lO&^kO);g_AMXd-92 zU|0ZRtPJ-tW2ibVpt$0CfDB|7&U`%%O;I0o6nqwp z&46ZfMV>8jIGDBct4ZT<(q$Xr{_I8X`qadq>9(F2@wK`f_}X8EdYZ3&DEk$V z8~7m=uG=#ht`pEP0(B*F%w%4&>%L2}kv3gqlBFATv!n<2e=LloDfo9w;s5&yg`zc# Wp?QjB?D-za($CsBp02XGobVron(G4q literal 0 HcmV?d00001 diff --git a/docs/web/public/img/dry-run-force.png b/docs/web/public/img/dry-run-force.png new file mode 100644 index 0000000000000000000000000000000000000000..55ea52be5dabca21cda9bebd60c86b5867b81dcd GIT binary patch literal 48550 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 Wf^&x5#a%q$$Mk^t{_K5D*Z&uUt{p}I literal 0 HcmV?d00001 diff --git a/docs/web/public/img/dry-run.png b/docs/web/public/img/dry-run.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3bd6ef69ca52805601fa9c0c6309fe9ae838d1 GIT binary patch literal 50824 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 P1pf4OjE-d=wZ8FR#q*)i literal 0 HcmV?d00001 diff --git a/docs/web/public/img/help.png b/docs/web/public/img/help.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad0437ae82ba356a2a943903dc2dfb5ef285d2b GIT binary patch literal 37954 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 U>G)(T?x){RTAs-N?T=gk3pt=ilmGw# literal 0 HcmV?d00001 diff --git a/docs/web/public/img/init-conflict.png b/docs/web/public/img/init-conflict.png new file mode 100644 index 0000000000000000000000000000000000000000..0be48f909b7b53aafcc123bb03e3e97c55e1227d GIT binary patch literal 11062 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 literal 0 HcmV?d00001 diff --git a/docs/web/public/img/wizard.png b/docs/web/public/img/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7944bb324687581783ad7a15669ccb4c22f255 GIT binary patch literal 8542 zcmd^kc{r5q+yAuFDw7^r5;Brf_MNhX7!)CEA^X^uWEmk$VLT)<7?tcswy`gTnbgB* z>?Z4oY)!TqjN!d!>iHhe`yR*dINta8zVBbZKe(^C@B6yW<@%hT^E|H`VQi>#>@d$^ z5D0WkPgmc&KcH01#J$|=!G(ebczB%B>e&_4Z>mX1$^2ql61Hf-~ zZ{53oAkgtP=HDK?SAio4bZ%8o>$>Sf+oe&XxCeK$M7?P{g&L>COl4r7K2+Syc-%h! zr0K#(w~#NrGLD*8c%qB${#A7PiAEwR1jL_*=Y+&#e9;%=8UkI8l2eZcr# zMMj-WUStx}5BDC(`neh$5IhEqTR*wY5YrE9@Brh8)c(KTN^(h@A~sS-+@0;Vh-uww zyPE`b*o-tPQ5qTYsFSD2ejm)!T!UENwJLpQAv^?RpJ zD1u!f6dAsvTGtlZDvd`!w+)uHSo|wl$P^hPh9% z2#y)j_zu<7sQmIs-&VOc+bV+sZ#m|Mg(;i<-nAO7?c;;v3l3mlLhE|v`G~v38SeV4 zdBvr#So%HEUA5aKsoUu;ov^?^h?Y^`cz+^qL@inda0KHL`@I)ciZ3Le*Of#-`dHg4 zlDoOS%NWesA;Y)w=j;TJ)!f?8KTaQ`E;` z`hx7%Oxt*RRfN>8B_ElFW-K}rNDL-q!+G^WweNvp4v~B?yk!-#>}Uv%1G1$*Y#wid z1i$#00~s@NKO{4$6f4uR)nC>fzD*V|S}*9pS{?#{BnZhMCq0zIca4`AY)nQl0M;XJ zv2QdrGPaAz{?*>Py3z-w1S2!pET`yf22;gjHVC?*tfFK?{-RJHYHviJl0kP=)cMR*9oz*#1ii{&ED ziJDz&cSF@5d-2ICbA{Rnot%0l!9(=NxQRfyqj>fJRKQ0Fp)|>>PSie?3utkmPeh%- z#$08g^Of7om-NF|3iuNxIEkj4cNW~EWyqHemKR?pk*4U|pBT6Z5!y2~ds!%^sK-}L*DHfgYkt}%SVL)2;r9qSrWUwm^=#&s!Y1`;hZSz0ruWWE4I zQGTw|*@VKMkt35X<4KTdbAHj9ez{mcxu__=w+5jCBxx-K!qXsP)hvI5r!C6^{K{Zp z<#Agu$)rFKTE$M@7p!*t?1`s*epV~SWX0A1W51-|dg|&{mH`{QES@c5 zqM6L*Cgjp-1bYg9Gg_-8h{c=7C<~fT#;43m=61$%1_4-|JOzYMB|$S%nH2$fMK5(6 zE;i-_Dkya%9klo%rIGQBlgR+`ce+$~OePOhw|!9)?9%Sri3nh^ImVF1Q0qwt6`;%& zB8p9Zv3u)fU?YQ9yX5mn?kGCx`u(*EfWou+H?4ajpn_eJ{L)O~uQmA1?_W9p>k8*{ z>*lQ@FiOB>6-W!7Wh};hodki%+3ju(=IaS~hh1WlAjm?8rN=GZRUEHZX4p4zyO)r# z*7fD;vaqG?pt_xKVEQ|j^bZ3`5VM~4+#l70w#p%MZ`1Oat2Az}e4Z_K-7gEQl~%?i zte=tTtqD`7^DV9m=R8IMVNw>pUOd}E+6>tNNPWz5-RmsidP`QGxKaRC0w#i}=Krgy zjmeE5ka+QbKX>}+H?DkYQKr*db_Xlr+j#ZtrkyQ#I#!^U)*KZ0gRr}Os23n3P;DYh z?=(*0bgr_t!p}7L<`t8MYJjfb>hxIn27J~*n{9az&UjX-POpTkS6gZBXNRxK@2+mv z*-#&%+G{1lqpt*z#u=l#FEx-GYDh(l`RHsqOXIIHto$m@?uvVthixhd8r$5IF^ucU zJ91TG>dMX(I?w0!e&K4ygZapG8`6}ec54+ipst`XX8j=mhlzSt4zhOB1&`~T<0y8i zIDK6Q1~2%oOz-L!^bt40NZs{YH;hkZ-01mJ+<9u8O&z1O!5x*(t-RAkN*6l%3}zl? z5X(ZXcki!UqMEDcqi@`Y;}SjjdKz|9cDpu&rj8z*pGO@HeGS7R)Npcj^$`50Yr=b9 z^Ih3VV7QMD%V}Q)lYF_L+l}JeLxHyB<@OEo^5SYqx(c36ZpAE5Wt>mG8Tr#q1^v}| zu{eA60x7;m|C@!wgjo%~&as7D*HQhM)G=k5Se!EN1K8CXaEA$w+KMEn%yvA1JfHF9 zA?h~9`pmw>%nAIo+P=6)#kUeuC%d>$_bp3t5BZZ!V`LP~qM>Aq{^ZpWe-*_6&R`Wu z+i>(_GpZ_|_m-!G0!p-cfT1>-~pN1xwwOl+{M4 z*xvY(Z->*Y!%}K4e_MjqWjrv~O>uZ|A(`NS=n=(#>JcIJHQ!E5#an4U`|8yh+)qYC z2-ENKm`)#l&MoSQE{F97JEC9?@iot2mcu4q_ZM&n9E(%rZ^> z7Bd=v7vY(Wgc1w~m9Ps1%v~elrsJv8FVag7akUM;u7|ktD3O%y{H( z5Oe5Eb6@Oy;&|*)Yh03}hZTKEZB#5O3Ra`s5l$W=-+Z~D=2cyUx7N%6gd8|Swzx|Y z!FMsH8do1Jfr%bRTr_N-Eem#&VK?=0AANk$e4^$%9wR`$24UW?`0Z_s%pHRjzy<}y zGF-E-Jz7vhtw0VIGU1h&`u_b!(uk>fjla~rGf{|(zhw+Np>u>rW&;q6*W=5x<>Q8D z{mvRKqKX}FdkD0pK0IcU$hEuEZ^uCXfg^Cquh+?~zbJeNotFeiu{D6jS+&Uksm_#F zI5a{pwC9HQ=7SP&-fs=JG}lzIhNfk zm9lD$49TC|bbk67)o>&anT(?&SYmKq4pcYYTjLak$c%5VpOH zH{rEi+o4m?P4piPCRtrmVO*3lW-%D?nbmeFT*%%0*>-}EtrEPV;uyU4{Y&uA+a#Fp zYv+6@=KU7-=0!Wsal`ZRj3ub->CB9|V^Fg{`aV7gH z-pQK=Rq9*c-&E!sp|hX;e2X0yfe_7465GphJ`^w{E4jA&gn(M+ynEfJ1;0BEtZc3D z;&dFT$aanfDg?iS17l(>HLJ6#_^XveBHy zFr3xv`g6|ax|O-;^hM`~r>4wG*!J369o&oRTgD>D@eYW7t#aQBR3sYj+!2rG7`%W~ zg?9&*8;wbw4(kXg75{U-JP;ppb5NAdixkC^oJ$mTN;;~C{gp?ttA}lLS0~;_ty(T! z2~RAS@T=woOs@G=T~L4+sZh0G~u#oJIDVt^5RSB5adGNR|R@zpEf>!g+L9l~AnSJ;1Tg-d~07g$zup8lx;bdQ4 zg#_3)U(PM02Qu1kK84be)ME#g0*L6>atEava8F_D=|M}q2{vV&SMU) zgEKuzPF3zeZw<20WEF&zq`a6*f|?nb{`jTy`sSDXCp9gJgglaMkpk8wjUcY5b#{SU zVtPrN9xXFW(Dn*as$S?V++#Z=XXeRkJ~6#y=+Ig*-8e7%Ijp{4_5G3|uyo140-#uU z#q7l+UOge*o|3WRr5)O>nW0>^bhe`{{UAAO#S zF@TK4;G3X^TMioNnw9pJIw@g|$Z|?wX#pav0(tbVn|Duw&BAD%z`~ZJLaJPod|<+z zGOulwW}OP8&1}C-Wn;fvD4Wk&qnI1(765_Yvty;+Cd~{|32MzQmAm1H8Q`0U-rx2A z;-rNjw1gYsvvBz)aKF{{H@#E6Qw5=4r@%F1)9F6qhCw6_;HmecU&lHbs@4y5QwTu_ zN#T;=wL&B2#5ooX{5wZSPntA&&{F$>#opQc1_eZoa|<9lXG+WN&Ty7;P~H;o6jbx~ z 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 literal 0 HcmV?d00001 diff --git a/docs/web/scripts/prerender.mjs b/docs/web/scripts/prerender.mjs new file mode 100644 index 0000000..47f2599 --- /dev/null +++ b/docs/web/scripts/prerender.mjs @@ -0,0 +1,67 @@ +import { mkdir, writeFile, copyFile, readdir } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const root = path.resolve(here, '..'); + +const { ROUTES, SITE_URL, renderDocument } = await import( + pathToFileURL(path.join(root, '.ssr', 'entry-server.js')).href +); + +const outDir = path.join(root, 'dist'); + +for (const route of ROUTES) { + const html = renderDocument(route); + if (route.path === '') { + await writeFile(path.join(outDir, 'index.html'), html, 'utf8'); + } else { + const dir = path.join(outDir, route.path); + await mkdir(dir, { recursive: true }); + await writeFile(path.join(dir, 'index.html'), html, 'utf8'); + } + console.log(`prerendered: ${route.path === '' ? '/ (home)' : '/' + route.path + '/'}`); +} + +// lastmod = build time (freshness signal) +const buildDate = new Date().toISOString().slice(0, 10); +const sitemapEntries = ROUTES.map((route) => { + const url = route.path === '' ? SITE_URL : SITE_URL + route.path + '/'; + const priority = route.path === '' ? '1.0' : '0.8'; + const freq = route.path === '' ? 'weekly' : 'monthly'; + return ` ${url}${buildDate}${freq}${priority}`; +}).join('\n'); + +await writeFile( + path.join(outDir, 'sitemap.xml'), + ` + +${sitemapEntries} + +`, + 'utf8', +); + +await writeFile( + path.join(outDir, 'robots.txt'), + `User-agent: * +Allow: / + +Sitemap: ${SITE_URL}sitemap.xml +`, + 'utf8', +); + +// Final pages are JS-free (content fully prerendered); the compiled CSS from the +// client build is copied to a stable path so every page references it relatively. +const assetsDir = path.join(outDir, 'assets'); +const assetEntries = await readdir(assetsDir); +const css = assetEntries.find((f) => f.endsWith('.css')); +if (css) { + await copyFile(path.join(assetsDir, css), path.join(assetsDir, 'site.css')); + console.log('site.css ready (from ' + css + ')'); +} else { + throw new Error('no css asset emitted by vite build'); +} + +console.log('sitemap + robots written'); diff --git a/docs/web/src/components/Code.jsx b/docs/web/src/components/Code.jsx new file mode 100644 index 0000000..8fffd5c --- /dev/null +++ b/docs/web/src/components/Code.jsx @@ -0,0 +1,10 @@ +export default function Code({ children, label }) { + return ( +
+ {label && {label}} +
+        {children}
+      
+
+ ); +} diff --git a/docs/web/src/components/Layout.jsx b/docs/web/src/components/Layout.jsx new file mode 100644 index 0000000..cac643f --- /dev/null +++ b/docs/web/src/components/Layout.jsx @@ -0,0 +1,43 @@ +import { ROUTES, SITE_URL } from '../routes.jsx'; + +export default function Layout({ rel, children }) { + return ( + <> +
skip to content +
+ + DG + DevOpsGenDOCS + + + + GitHub + +
+
{children}
+ + + ); +} diff --git a/docs/web/src/components/Shot.jsx b/docs/web/src/components/Shot.jsx new file mode 100644 index 0000000..d52f59f --- /dev/null +++ b/docs/web/src/components/Shot.jsx @@ -0,0 +1,10 @@ +export default function Shot({ rel, name, alt, caption, feature = '' }) { + return ( +
+ + {alt} + + {caption &&
{caption}
} +
+ ); +} diff --git a/docs/web/src/components/Ui.jsx b/docs/web/src/components/Ui.jsx new file mode 100644 index 0000000..966fae3 --- /dev/null +++ b/docs/web/src/components/Ui.jsx @@ -0,0 +1,17 @@ +export function Kbd({ children }) { + return {children}; +} + +export function Badge({ tone = 'ok', children }) { + return {children}; +} + +export function PageHead({ kicker, title, lede }) { + return ( +
+ {kicker &&

{kicker}

} +

{title}

+ {lede &&

{lede}

} +
+ ); +} diff --git a/docs/web/src/entry-client.jsx b/docs/web/src/entry-client.jsx new file mode 100644 index 0000000..4139fec --- /dev/null +++ b/docs/web/src/entry-client.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import './styles/site.css'; +import Layout from './components/Layout.jsx'; +import { ROUTES } from './routes.jsx'; + +const route = ROUTES.find((r) => r.path === location.pathname.replace(/\/$/, '').replace(/^.*\//, '')) ?? + null; + +const rel = route && route.path === '' ? '' : '../'; +const page = route ?? ROUTES[0]; + +createRoot(document.getElementById('root')).render( + + + , +); diff --git a/docs/web/src/entry-server.jsx b/docs/web/src/entry-server.jsx new file mode 100644 index 0000000..4b6c466 --- /dev/null +++ b/docs/web/src/entry-server.jsx @@ -0,0 +1,79 @@ +import { renderToStaticMarkup } from 'react-dom/server'; +import React from 'react'; +import { ROUTES, SITE_URL, SITE_NAME } from './routes.jsx'; +import Layout from './components/Layout.jsx'; + +export { ROUTES, SITE_URL, SITE_NAME }; + +const escapeHtml = (s) => + s.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + +export function relPrefix(path) { + return path === '' ? '' : '../'; +} + +export function pageUrl(path) { + return `${SITE_URL}${path === '' ? '' : path + '/'}`; +} + +export function renderDocument(route) { + const rel = relPrefix(route.path); + const url = pageUrl(route.path); + const image = `${SITE_URL}${route.ogImage}`; + const body = renderToStaticMarkup( + + + , + ); + const r = route.path === '' ? [{ '@type': 'ListItem', position: 1, name: 'Home', item: url }] : [ + { '@type': 'ListItem', position: 1, name: 'Home', item: SITE_URL }, + { + '@type': 'ListItem', + position: 2, + name: route.path.replace(/-/g, ' '), + item: url, + }, + ]; + const jsonLd = { + '@context': 'https://schema.org', + '@graph': [ + { + '@type': 'SoftwareApplication', + name: 'DevOpsGen', + applicationCategory: 'DeveloperApplication', + operatingSystem: 'Linux, Windows, macOS', + description: route.description, + url: SITE_URL, + offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, + }, + { '@type': 'BreadcrumbList', itemListElement: r }, + ], + }; + + return ` + + + + + ${escapeHtml(route.title)} + + + + + + + + + + + + + + + + + +${body} + +`; +} diff --git a/docs/web/src/pages/Detect.jsx b/docs/web/src/pages/Detect.jsx new file mode 100644 index 0000000..0dd8d7b --- /dev/null +++ b/docs/web/src/pages/Detect.jsx @@ -0,0 +1,69 @@ +import Shot from '../components/Shot.jsx'; +import { PageHead } from '../components/Ui.jsx'; + +export default function Detect({ rel }) { + return ( + <> + + + + +

Reading the output

+
+ + + + + + + + + + + + + + + + + + + + + +
LineMeaning
stack: goThe detected programming stack (go or nodejs).
indicators: go.mod, ...The files that produced evidence — your audit trail for why the stack matched.
app-type candidates: binaryApplication types plausible for this project; the wizard default comes from here too.
+
+ +

How it decides

+
    +
  • + Go — go.mod and its module directive looking like{' '} + module example.com/app. +
  • +
  • + Node.js — package.json, plus its dependencies, and lockfile flavours + (npm / pnpm) that later steer Docker image commands. +
  • +
  • + Ambiguity or zero indicators produce a distinct exit code (see{' '} + exit codes), so scripts can branch safely. +
  • +
+ +
+ Detection semantics: DevOpsGen detects in the current working directory, not in{' '} + --output-dir. Run it from the project you want scanned. +
+ + ); +} diff --git a/docs/web/src/pages/ExitCodes.jsx b/docs/web/src/pages/ExitCodes.jsx new file mode 100644 index 0000000..46a1253 --- /dev/null +++ b/docs/web/src/pages/ExitCodes.jsx @@ -0,0 +1,101 @@ +import Shot from '../components/Shot.jsx'; +import Code from '../components/Code.jsx'; +import { PageHead } from '../components/Ui.jsx'; + +export default function ExitCodes({ rel }) { + return ( + <> + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeClassificationMeaningTypical example
0successEverything requested completed; dry-run plans that resolved cleanly also end here.init created 5 files; --dry-run --force plan is green.
1general error + Unexpected failure — I/O errors, template issues, or a run that failed mid-write + and rolled back. + Disk full while writing deployment.yaml.
2invalid inputConfiguration failed validation before anything was planned or written.--image BANGKAH/my-app; port -1; Ingress without host.
3conflict + Target files already exist and would be overwritten; nothing was written. + Retried with --force. + Second init without --force.
4validation failedGenerated documents exist but do not pass static lint rules.Unpinned workflow action in ci.yaml.
5detectionStack detection was ambiguous or found nothing at all.Empty directory without go.mod / package.json.
+
+ +

In practice

+
+ + +
+ + {`devopsgen init --stack go --registry ghcr --image you/myapp --port 8080 +case $? in + 0) echo "ready" ;; + 3) devopsgen init --force --stack go --registry ghcr --image you/myapp --port 8080 ;; + 2) echo "fix your flags" >&2 ;; + *) echo "see devopsgen validate output" >&2 ;; +esac`} + +
+ Codes are part of DevOpsGen's compatibility promise: bumping a major version may add new + codes, but existing ones keep their meaning. +
+ + ); +} diff --git a/docs/web/src/pages/GettingStarted.jsx b/docs/web/src/pages/GettingStarted.jsx new file mode 100644 index 0000000..50ac56a --- /dev/null +++ b/docs/web/src/pages/GettingStarted.jsx @@ -0,0 +1,78 @@ +import Shot from '../components/Shot.jsx'; +import Code from '../components/Code.jsx'; +import { PageHead } from '../components/Ui.jsx'; + +export default function GettingStarted({ rel }) { + return ( + <> + + +

Install

+ {`go install devopsgen.dev/devopsgen@latest`} +

+ Or grab a prebuilt binary from the project{' '} + + GitHub releases + + , or build from source: +

+ {`git clone https://github.com/Bangkahdev/DevOpsGen.git +cd DevOpsGen +make build`} + +

Two ways to run it

+
    +
  • + Interactive: run devopsgen init in a terminal — the wizard + detects your stack and interviews you step by step. +
  • +
  • + Headless: pass every required parameter as flags — the process never + waits for stdin, which makes it script- and CI-friendly. +
  • +
+ +

Headless quickstart

+ {`devopsgen init \ + --stack go \ + --ci github-actions \ + --registry ghcr \ + --image you/myapp \ + --port 8080`} + +

Inside a Go project this writes:

+ {`.github/workflows/ci.yaml # test, vet, build, docker publish +Kubernetes/deployment.yaml # non-root, probes, DNS-1053 names +Kubernetes/service.yaml # cluster service +Kubernetes/ingress.yaml # optional, needs --ingress +Dockerfile # hardened multi-stage build + .dockerignore`} +
+ Second runs are safe: DevOpsGen refuses to overwrite without --force and + exits with code 3 — see the init reference. +
+ +

Next steps

+ + + ); +} diff --git a/docs/web/src/pages/Home.jsx b/docs/web/src/pages/Home.jsx new file mode 100644 index 0000000..c8e03eb --- /dev/null +++ b/docs/web/src/pages/Home.jsx @@ -0,0 +1,174 @@ +import { ROUTES, SITE_NAME } from '../routes.jsx'; +import Shot from '../components/Shot.jsx'; +import Code from '../components/Code.jsx'; +import { PageHead } from '../components/Ui.jsx'; + +export default function Home({ rel }) { + return ( + <> +
+
+

docker · github actions · kubernetes

+

+ DevOps scaffolding, +
+ deterministically. +

+

+ DevOpsGen reads your Go or Node.js project and writes a complete, opinionated DevOps + baseline: hardened Dockerfile, GitHub Actions pipeline and ready-to-apply Kubernetes + manifests — with dry-run plans, automatic backups and config validation built in. +

+ +
+ +
+ +

Why DevOpsGen

+
+
+

Deterministic

+

+ Same inputs, same bytes — every run. Machine-friendly for code review: a second + generation with --force produces bit-identical files. +

+
+
+

Safe by default

+

+ Existing files are never overwritten without --force. Overwrites get{' '} + .bak backups, failed runs roll back automatically, and{' '} + --dry-run prints the full plan first. +

+
+
+

Validated output

+

+ Built-in validation checks Dockerfile FROM digests, workflow action + pinning, Kubernetes naming and health probes before anything ships. +

+
+
+

Stack aware

+

+ Detects Go and Node.js projects (npm, pnpm, Express, Next.js, Vite, NestJS) from{' '} + go.mod / package.json and tailors templates accordingly. +

+
+
+ +

Everything a project needs on day one

+

+ One init command writes the whole baseline tree. Preview the real terminal + output of every command below — all screenshots are live captures, not mockups. +

+ {`$ devopsgen init --stack go --ci github-actions --registry ghcr --image you/myapp --port 8080 +created 5 file(s), replaced 0 file(s) in . +exit code: 0`} +
+ + + +
+ +

What gets generated

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template setFilesPurpose
docker (+ .dockerignore)Dockerfile + Hardened image build with non-root user, health check hooks, install/prune + commands derived from package manager (npm / pnpm) and lockfile detection. +
github-actions.github/workflows/ci.yaml + Test/build across Go and Node.js versions, docker build & push, coverage + floors, manifest validation. +
kubernetesdeployment.yaml, service.yaml, optional ingress.yaml + Non-root security context, probes using your health path, RFC 1123-validated + names, optional host-based Ingress. +
+
+ +

Explore the docs

+
+ {ROUTES.filter((r) => r.path !== '').map((r) => ( + +

{r.path.replace(/-/g, ' ')}

+

{r.description}

+
+ ))} +
+ +

Command cheatsheet

+
+ + + +
+ + ); +} diff --git a/docs/web/src/pages/InitCmd.jsx b/docs/web/src/pages/InitCmd.jsx new file mode 100644 index 0000000..752869e --- /dev/null +++ b/docs/web/src/pages/InitCmd.jsx @@ -0,0 +1,185 @@ +import Shot from '../components/Shot.jsx'; +import Code from '../components/Code.jsx'; +import { PageHead, Badge } from '../components/Ui.jsx'; + +export default function InitCmd({ rel }) { + return ( + <> + + + {`devopsgen init [flags]`} + +

Flags

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlagDefaultDescription
--stackauto-detectedProject stack: go or nodejs.
--app-typeauto-detectedApplication type (see devopsgen list).
--cigithub-actionsCI provider.
--registrydockerhubContainer registry: dockerhub or ghcr.
--image— + Image repository as namespace/repository — no host and no tag. +
--taglatestAdditional image tag alias.
--port—Application port, 1–65535.
--k8strueGenerate Kubernetes manifests.
--ingressoffEnable Kubernetes Ingress (requires --ingress-host).
--ingress-host—Ingress hostname, validated as RFC 1123.
--health-path—HTTP health probe path wired into manifests.
--build-cmd—Build command.
--build-path.Go package path to build inside the container.
--start-cmd—Startup command.
--test-cmd—Test command.
--output-dir.Output directory.
--dry-runoffSimulate without writing anything.
--forceoffOverwrite existing regular files.
+
+ +

Success & conflicts

+

+ A clean run writes every template and exits with{' '} + 0. A second run over an existing project stops before touching + anything and exits with 3 until you add --force: +

+
+ + +
+ +

Preview plans with --dry-run

+

+ --dry-run prints the byte-plan: which files would be created, which would be + replaced, and which are in conflict. With a conflict present it exits{' '} + 3; combined with --force a fully green plan exits{' '} + 0 without writing anything: +

+
+ + +
+ +

Config validation

+

+ Invalid configuration fails fast with 2 before any file is + planned — e.g. an image that must be namespace/repository without host or + tag, a port outside 1–65535, or an Ingress without a host: +

+ +
+ Overwrites performed with --force create .bak backups, and any + failure mid-run automatically rolls back to the pre-run state. +
+ + ); +} diff --git a/docs/web/src/pages/Validate.jsx b/docs/web/src/pages/Validate.jsx new file mode 100644 index 0000000..5f73f6d --- /dev/null +++ b/docs/web/src/pages/Validate.jsx @@ -0,0 +1,71 @@ +import Shot from '../components/Shot.jsx'; +import Code from '../components/Code.jsx'; +import { PageHead, Badge } from '../components/Ui.jsx'; + +export default function Validate({ rel }) { + return ( + <> + + + + + {`devopsgen validate [flags] # validate the current project +devopsgen validate --output-dir ./configs`} + +

What it checks

+
+
+

Docker

+
    +
  • FROM base images are pinned to digest form
  • +
  • Required install/prune steps match the package manager
  • +
  • Non-root user declared
  • +
+
+
+

GitHub Actions

+
    +
  • Workflow documents carry required structure and names
  • +
  • Actions are pinned, config files complete
  • +
  • Checkout steps reference valid refs
  • +
+
+
+

Kubernetes

+
    +
  • Resources are DNS 1123/1035 rename-clean
  • +
  • Service ↔ Ingress wiring is consistent
  • +
  • Probe/health requirements satisfied
  • +
+
+
+ +

Exit behaviour

+
    +
  • + 0 — all documents passed. +
  • +
  • + 4 — at least one document failed validation. +
  • +
  • + 2 — malformed input (unreadable paths, invalid flags). +
  • +
+

+ Combine with devopsgen init in CI: generate, commit, validate, deploy — the{' '} + exit codes page maps every failure class. +

+ + ); +} diff --git a/docs/web/src/pages/Wizard.jsx b/docs/web/src/pages/Wizard.jsx new file mode 100644 index 0000000..5fa8ae2 --- /dev/null +++ b/docs/web/src/pages/Wizard.jsx @@ -0,0 +1,95 @@ +import Shot from '../components/Shot.jsx'; +import Code from '../components/Code.jsx'; +import { PageHead, Kbd } from '../components/Ui.jsx'; + +export default function Wizard({ rel }) { + return ( + <> + + + + +

How the interview flows

+
    +
  • + Stack — go or nodejs, pre-selected by the + detector (detect runs first). +
  • +
  • + Application type (Node.js only) — express, nextjs, vite, nestjs or + generic; Go projects build binaries by default. +
  • +
  • + Port — the application port, 1–65535, validated on the spot. +
  • +
  • + Container image — namespace/repository, no host, no tag. +
  • +
  • + Registry — Docker Hub or GHCR (also shipped as the{' '} + --registry flag). +
  • +
  • + Kubernetes — manifests are generated by default; opt into a + host-based Ingress with an RFC 1123 hostname. +
  • +
  • + Summary & confirm — review every chosen value, confirm, and the + files are written to the project root. +
  • +
+ +
+ A wizard run is fully replayable: the same answers as equivalent flags. To automate the + same result, pass the flags headless (init reference). +
+ +

Keyboard

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
KeyAction
EnterConfirm current selection / printed default
↑ ↓Move within list choices
typed textFill textual answers (port, image, host)
Ctrl+CAbort the wizard without writing anything
+
+ +

Safety during the run

+

+ Everything until the final confirmation is bound to memory only — aborting leaves the + project untouched. The write itself follows the same rules as headless mode: + never-overwrite-unless---force, backups, and rollback on mid-run failure. +

+ + ); +} diff --git a/docs/web/src/routes.jsx b/docs/web/src/routes.jsx new file mode 100644 index 0000000..f3320cf --- /dev/null +++ b/docs/web/src/routes.jsx @@ -0,0 +1,76 @@ +import Home from './pages/Home.jsx'; +import GettingStarted from './pages/GettingStarted.jsx'; +import Wizard from './pages/Wizard.jsx'; +import InitCmd from './pages/InitCmd.jsx'; +import Detect from './pages/Detect.jsx'; +import Validate from './pages/Validate.jsx'; +import ExitCodes from './pages/ExitCodes.jsx'; + +export const SITE_URL = 'https://bangkahdev.github.io/DevOpsGen/'; +export const SITE_NAME = 'DevOpsGen'; + +export const ROUTES = [ + { + path: '', + component: Home, + title: 'DevOpsGen — DevOps scaffolding for Go & Node.js projects', + description: + 'DevOpsGen generates production-ready Dockerfiles, GitHub Actions pipelines and Kubernetes manifests for Go and Node.js projects, with safe dry-run plans, automatic backups and config validation.', + keywords: 'DevOpsGen, dockerfile generator, github actions generator, kubernetes manifests, go, nodejs, scaffolding, ci cd', + ogImage: 'img/init-success.png', + }, + { + path: 'getting-started', + component: GettingStarted, + title: 'Getting Started — DevOpsGen Docs', + description: + 'Install DevOpsGen via go install or a release binary, then generate a complete Docker, CI and Kubernetes setup for your project with a single command.', + keywords: 'DevOpsGen install, go install, quickstart, getting started', + ogImage: 'img/init-success.png', + }, + { + path: 'wizard', + component: Wizard, + title: 'Interactive Wizard — DevOpsGen Docs', + description: + 'DevOpsGen launches an interactive TUI wizard that walks through stack detection, ports, container images and Kubernetes options, then writes the generated configuration.', + keywords: 'DevOpsGen wizard, tui, bubbletea, interactive', + ogImage: 'img/wizard.png', + }, + { + path: 'init', + component: InitCmd, + title: 'init command — DevOpsGen Docs', + description: + 'Full reference for devopsgen init flags: stack, app type, CI provider, registry, image, port, Kubernetes ingress, health path, dry-run and force overwrite behaviour.', + keywords: 'devopsgen init, flags, dry-run, force, image, ingress', + ogImage: 'img/init-success.png', + }, + { + path: 'detect', + component: Detect, + title: 'detect command — DevOpsGen Docs', + description: + 'devopsgen detect inspects the current project and reports the programming stack, the files it based its decision on, and candidate application types.', + keywords: 'devopsgen detect, stack detection, go.mod, package.json', + ogImage: 'img/detect.png', + }, + { + path: 'validate', + component: Validate, + title: 'validate command — DevOpsGen Docs', + description: + 'devopsgen validate statically checks generated Dockerfiles, GitHub Actions workflows and Kubernetes manifests: FROM digests, action pinning, naming rules, probes and more.', + keywords: 'devopsgen validate, dockerfile lint, workflow lint, kubernetes manifest lint', + ogImage: 'img/validate.png', + }, + { + path: 'exit-codes', + component: ExitCodes, + title: 'Exit codes — DevOpsGen Docs', + description: + 'Every devopsgen command exits with a documented status code: 0 success, 1 general error, 2 invalid configuration, 3 file conflicts, 4 validation failure, 5 ambiguous detection.', + keywords: 'devopsgen exit codes, ci integration, pipeline status', + ogImage: 'img/invalid-config.png', + }, +]; diff --git a/docs/web/src/styles/site.css b/docs/web/src/styles/site.css new file mode 100644 index 0000000..022cbfd --- /dev/null +++ b/docs/web/src/styles/site.css @@ -0,0 +1,430 @@ +/* ============ DevOpsGen Docs — Neo Brutalism ============ */ +:root { + --paper: #fff8e7; + --ink: #000000; + --pink: #ff5d8f; + --yellow: #ffd400; + --blue: #38b6ff; + --lime: #b8ff5c; + --purple: #b15de6; + --red: #ff4b33; + --green: #00c46e; + --border: 4px solid var(--ink); + --shadow: 8px 8px 0 var(--ink); + --shadow-sm: 4px 4px 0 var(--ink); + --font: "Archivo", "Arial Black", "Segoe UI", Tahoma, sans-serif; + --mono: "Cascadia Code", "Consolas", "JetBrains Mono", monospace; +} + +* { box-sizing: border-box; } + +html { scroll-behavior: smooth; } + +body { + margin: 0; + font-family: var(--font); + background: var(--paper); + color: var(--ink); + line-height: 1.55; + -webkit-font-smoothing: antialiased; +} + +/* subtle brutal grid background */ +body::before { + content: ""; + position: fixed; + inset: 0; + pointer-events: none; + z-index: 0; + background-image: + linear-gradient(rgba(0, 0, 0, 0.06) 1px, transparent 1px), + linear-gradient(90deg, rgba(0, 0, 0, 0.06) 1px, transparent 1px); + background-size: 32px 32px; +} + +.skip { + position: absolute; + left: -9999px; + top: 0; + background: var(--yellow); + border: var(--border); + padding: 8px 16px; + font-weight: 900; + z-index: 99; +} +.skip:focus { left: 8px; } + +/* ---------- top bar ---------- */ +.topbar { + position: sticky; + top: 8px; + z-index: 50; + margin: 8px 12px; + padding: 8px 14px; + background: var(--ink); + color: var(--paper); + border: var(--border); + box-shadow: var(--shadow); + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; +} + +.brand { + display: inline-flex; + align-items: center; + gap: 10px; + color: var(--paper); + text-decoration: none; + font-weight: 900; + font-size: 1.15rem; + letter-spacing: 0.5px; +} + +.brand-mark { + background: var(--pink); + color: var(--ink); + border: 3px solid var(--paper); + padding: 2px 8px; + font-weight: 900; + transform: rotate(-3deg); +} + +.brand-sub { + background: var(--blue); + color: var(--ink); + font-size: 0.62rem; + padding: 1px 6px; + margin-left: 8px; + transform: rotate(2deg); +} + +.topbar nav ul { + display: flex; + flex-wrap: wrap; + gap: 4px; + list-style: none; + margin: 0; + padding: 0; +} + +.nav-link { + display: inline-block; + color: var(--paper); + text-decoration: none; + font-weight: 800; + font-size: 0.82rem; + text-transform: uppercase; + padding: 4px 10px; + border: 3px solid transparent; +} +.nav-link:hover { background: var(--paper); color: var(--ink); border-color: var(--paper); } + +.gh-pill { + margin-left: auto; + background: var(--yellow); + color: var(--ink); + text-decoration: none; + font-weight: 900; + padding: 4px 14px; + border: 3px solid var(--paper); + box-shadow: 3px 3px 0 var(--paper); +} +.gh-pill:hover { transform: translate(-2px, -2px); box-shadow: 5px 5px 0 var(--paper); } + +/* ---------- layout ---------- */ +main { + position: relative; + z-index: 1; + max-width: 1080px; + margin: 32px auto; + padding: 0 20px; +} + +.page-head { margin-bottom: 28px; } + +.kicker { + display: inline-block; + background: var(--lime); + border: var(--border); + box-shadow: var(--shadow-sm); + font-weight: 900; + text-transform: uppercase; + font-size: 0.78rem; + letter-spacing: 2px; + padding: 4px 12px; + margin: 0 0 14px 0; + transform: rotate(-1deg); +} + +.violet { background: var(--purple); } +.blue { background: var(--blue); } +.pink { background: var(--pink); } +.yellow { background: var(--yellow); } + +h1 { + font-size: clamp(2.4rem, 6vw, 4rem); + line-height: 1.02; + margin: 0 0 16px 0; + text-transform: uppercase; + font-weight: 900; + letter-spacing: -1px; +} + +.lede { + font-size: 1.15rem; + max-width: 720px; + background: var(--yellow); + border: var(--border); + box-shadow: var(--shadow-sm); + padding: 12px 16px; + display: inline-block; +} + +h2 { + font-size: 1.7rem; + text-transform: uppercase; + font-weight: 900; + margin: 44px 0 14px; + padding-left: 12px; + border-left: 12px solid var(--ink); +} + +h3 { + font-size: 1.2rem; + text-transform: uppercase; + font-weight: 900; + margin: 28px 0 10px; +} + +p, li { font-size: 1.02rem; } +strong { background: var(--lime); padding: 0 3px; } +code { font-family: var(--mono); font-size: 0.92em; background: #000; color: #7fffd4; padding: 2px 6px; } + +a { color: inherit; text-decoration-thickness: 3px; text-decoration-color: var(--pink); } +a:hover { background: var(--pink); } + +/* ---------- hero (home) ---------- */ +.hero { + display: grid; + grid-template-columns: 1.1fr 0.9fr; + gap: 24px; + align-items: start; + margin-bottom: 20px; +} + +.hero-badges { display: flex; flex-wrap: wrap; gap: 10px; margin: 18px 0 22px; } + +.hero-cta { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 8px; } + +.btn { + display: inline-block; + font-weight: 900; + text-transform: uppercase; + text-decoration: none; + padding: 12px 22px; + border: var(--border); + box-shadow: var(--shadow); + font-size: 1rem; + background: var(--blue); + color: var(--ink); +} +.btn:hover { transform: translate(-4px, -4px); box-shadow: 12px 12px 0 var(--ink); } +.btn-pink { background: var(--pink); } +.btn-yellow { background: var(--yellow); } + +/* ---------- cards ---------- */ +.cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 20px; +} + +.card { + background: #fff; + border: var(--border); + box-shadow: var(--shadow); + padding: 18px; + position: relative; +} +.card h3 { margin-top: 0; } +.card:nth-child(3n + 1) { background: var(--yellow); border-radius: 0; } +.card:nth-child(3n + 2) { background: #fff; } +.card:nth-child(3n) { background: var(--blue); } +.card:hover { transform: translate(-3px, -3px); box-shadow: 11px 11px 0 var(--ink); } + +.core .card { background: #fff; } +.core .card:hover { background: var(--lime); } + +/* ---------- screenshots ---------- */ +.shot { + margin: 22px 0; + padding: 12px; + background: #fff; + border: var(--border); + box-shadow: var(--shadow); + max-width: 100%; +} +.shot img { display: block; width: 100%; height: auto; border: 2px solid var(--ink); } +.shot figcaption { + margin-top: 10px; + font-weight: 700; + font-size: 0.9rem; + border-top: 3px dashed var(--ink); + padding-top: 8px; +} +.shot a:hover { background: transparent; } +.shot img:hover { transform: translate(-2px, -2px); } +.shot-feature { max-width: 860px; } + +.screen-strip { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 22px; + align-items: start; +} +.screen-strip .shot { margin: 0 0 12px 0; } + +/* ---------- code ---------- */ +.code-block { + position: relative; + background: #0d1117; + color: #e6edf3; + border: var(--border); + box-shadow: var(--shadow); + margin: 18px 0; +} +.code-label { + position: absolute; + top: -16px; + left: 12px; + background: var(--purple); + border: 3px solid var(--ink); + font-size: 0.72rem; + font-weight: 900; + text-transform: uppercase; + padding: 2px 10px; + letter-spacing: 1px; +} +.code-block pre { + margin: 0; + padding: 16px 18px; + overflow-x: auto; + font-family: var(--mono); + font-size: 0.88rem; + line-height: 1.5; +} +.code-block code { background: transparent; color: inherit; padding: 0; } + +/* ---------- tables ---------- */ +.table-wrap { overflow-x: auto; border: var(--border); box-shadow: var(--shadow); background: #fff; margin: 18px 0; } +table { border-collapse: collapse; width: 100%; } +th, td { border: 3px solid var(--ink); padding: 10px 12px; text-align: left; vertical-align: top; } +th { background: var(--ink); color: var(--paper); text-transform: uppercase; font-size: 0.8rem; letter-spacing: 1px; } +tbody tr:nth-child(2n) td { background: var(--yellow); } +td code { white-space: nowrap; } +.num { font-weight: 900; font-size: 1.05rem; } + +/* ---------- badges & kbd ---------- */ +.badge { + display: inline-block; + font-weight: 900; + font-size: 0.8rem; + text-transform: uppercase; + padding: 3px 10px; + border: 3px solid var(--ink); + transform: rotate(-1.5deg); + margin-right: 6px; +} +.badge-ok { background: var(--green); color: #fff; } +.badge-warn { background: var(--yellow); } +.badge-err { background: var(--red); color: #fff; } +.badge-info { background: var(--blue); } + +.kbd { + font-family: var(--mono); + font-weight: 700; + border: 3px solid var(--ink); + box-shadow: 3px 3px 0 var(--ink); + padding: 2px 8px; + font-size: 0.85rem; + background: #fff; + display: inline-block; +} + +/* ---------- misc ---------- */ +.callout { + border: var(--border); + box-shadow: var(--shadow-sm); + background: var(--pink); + padding: 14px 18px; + margin: 22px 0; + font-weight: 700; +} +.callout-info { background: var(--blue); } +.callout-ok { background: var(--lime); } + +.file-tree { + font-family: var(--mono); + font-size: 0.9rem; + white-space: pre; + overflow-x: auto; +} + +.inline-shot { + display: inline-block; + max-width: 560px; + vertical-align: top; +} +.inline-shot + .inline-shot { margin-left: 8px; } + +.footer { + position: relative; + z-index: 1; + margin: 48px 12px 12px; + padding: 18px 22px; + border: var(--border); + box-shadow: var(--shadow); + background: var(--ink); + color: var(--paper); + font-size: 0.9rem; +} +.footer a { color: var(--yellow); text-decoration-color: var(--yellow); } +.footer a:hover { background: var(--yellow); color: var(--ink); } +.footer-links { margin-top: 6px; } + +ul { padding-left: 22px; } +li + li { margin-top: 4px; } + +.step-list { counter-reset: steps; list-style: none; padding-left: 0; } +.step-list li { + counter-increment: steps; + position: relative; + padding-left: 52px; + margin-top: 14px; +} +.step-list li::before { + content: counter(steps); + position: absolute; + left: 0; + top: -4px; + width: 34px; + height: 34px; + display: grid; + place-items: center; + background: var(--purple); + color: #fff; + border: 3px solid var(--ink); + box-shadow: 3px 3px 0 var(--ink); + font-weight: 900; +} + +.flag-name { font-family: var(--mono); font-weight: 700; } + +@media (max-width: 720px) { + .hero { grid-template-columns: 1fr; } + .topbar { gap: 8px; } + .gh-pill { margin-left: 0; } + main { margin: 18px auto; } +} diff --git a/docs/web/vite.config.mjs b/docs/web/vite.config.mjs new file mode 100644 index 0000000..c7ab49d --- /dev/null +++ b/docs/web/vite.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + base: './', + plugins: [react()], + build: { + outDir: 'dist', + }, +}); From 81a1c91f4ba2faa9e3d0cfb3e1ec37c3097e10fe Mon Sep 17 00:00:00 2001 From: Muhammad Dhiyaul Atha Date: Thu, 22 Oct 2026 19:04:46 +0700 Subject: [PATCH 2/2] docs: soften neo-brutalism palette and typography --- .../{index-D3XNhmpo.js => index--kteW9Ru.js} | 0 docs/web/dist/assets/index-BVPC7Imb.css | 1 - docs/web/dist/assets/index-CVCe6Y9v.css | 1 + docs/web/dist/assets/site.css | 2 +- docs/web/src/styles/site.css | 213 +++++++++--------- 5 files changed, 106 insertions(+), 111 deletions(-) rename docs/web/dist/assets/{index-D3XNhmpo.js => index--kteW9Ru.js} (100%) delete mode 100644 docs/web/dist/assets/index-BVPC7Imb.css create mode 100644 docs/web/dist/assets/index-CVCe6Y9v.css diff --git a/docs/web/dist/assets/index-D3XNhmpo.js b/docs/web/dist/assets/index--kteW9Ru.js similarity index 100% rename from docs/web/dist/assets/index-D3XNhmpo.js rename to docs/web/dist/assets/index--kteW9Ru.js diff --git a/docs/web/dist/assets/index-BVPC7Imb.css b/docs/web/dist/assets/index-BVPC7Imb.css deleted file mode 100644 index 99c559f..0000000 --- a/docs/web/dist/assets/index-BVPC7Imb.css +++ /dev/null @@ -1 +0,0 @@ -:root{--paper:#fff8e7;--ink:#000;--pink:#ff5d8f;--yellow:#ffd400;--blue:#38b6ff;--lime:#b8ff5c;--purple:#b15de6;--red:#ff4b33;--green:#00c46e;--border:4px solid var(--ink);--shadow:8px 8px 0 var(--ink);--shadow-sm:4px 4px 0 var(--ink);--font:"Archivo", "Arial Black", "Segoe UI", Tahoma, sans-serif;--mono:"Cascadia Code", "Consolas", "JetBrains Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#0000000f 1px,#0000 1px),linear-gradient(90deg,#0000000f 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}.skip{background:var(--yellow);border:var(--border);z-index:99;padding:8px 16px;font-weight:900;position:absolute;top:0;left:-9999px}.skip:focus{left:8px}.topbar{z-index:50;background:var(--ink);color:var(--paper);border:var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 12px;padding:8px 14px;display:flex;position:sticky;top:8px}.brand{color:var(--paper);letter-spacing:.5px;align-items:center;gap:10px;font-size:1.15rem;font-weight:900;text-decoration:none;display:inline-flex}.brand-mark{background:var(--pink);color:var(--ink);border:3px solid var(--paper);padding:2px 8px;font-weight:900;transform:rotate(-3deg)}.brand-sub{background:var(--blue);color:var(--ink);margin-left:8px;padding:1px 6px;font-size:.62rem;transform:rotate(2deg)}.topbar nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--paper);text-transform:uppercase;border:3px solid #0000;padding:4px 10px;font-size:.82rem;font-weight:800;text-decoration:none;display:inline-block}.nav-link:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}.gh-pill{background:var(--yellow);color:var(--ink);border:3px solid var(--paper);box-shadow:3px 3px 0 var(--paper);margin-left:auto;padding:4px 14px;font-weight:900;text-decoration:none}.gh-pill:hover{box-shadow:5px 5px 0 var(--paper);transform:translate(-2px,-2px)}main{z-index:1;max-width:1080px;margin:32px auto;padding:0 20px;position:relative}.page-head{margin-bottom:28px}.kicker{background:var(--lime);border:var(--border);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:2px;margin:0 0 14px;padding:4px 12px;font-size:.78rem;font-weight:900;display:inline-block;transform:rotate(-1deg)}.violet{background:var(--purple)}.blue{background:var(--blue)}.pink{background:var(--pink)}.yellow{background:var(--yellow)}h1{text-transform:uppercase;letter-spacing:-1px;margin:0 0 16px;font-size:clamp(2.4rem,6vw,4rem);font-weight:900;line-height:1.02}.lede{background:var(--yellow);border:var(--border);max-width:720px;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:1.15rem;display:inline-block}h2{text-transform:uppercase;border-left:12px solid var(--ink);margin:44px 0 14px;padding-left:12px;font-size:1.7rem;font-weight:900}h3{text-transform:uppercase;margin:28px 0 10px;font-size:1.2rem;font-weight:900}p,li{font-size:1.02rem}strong{background:var(--lime);padding:0 3px}code{font-family:var(--mono);color:#7fffd4;background:#000;padding:2px 6px;font-size:.92em}a{color:inherit;text-decoration-thickness:3px;-webkit-text-decoration-color:var(--pink);text-decoration-color:var(--pink)}a:hover{background:var(--pink)}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:24px;margin-bottom:20px;display:grid}.hero-badges{flex-wrap:wrap;gap:10px;margin:18px 0 22px;display:flex}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.btn{text-transform:uppercase;border:var(--border);box-shadow:var(--shadow);background:var(--blue);color:var(--ink);padding:12px 22px;font-size:1rem;font-weight:900;text-decoration:none;display:inline-block}.btn:hover{box-shadow:12px 12px 0 var(--ink);transform:translate(-4px,-4px)}.btn-pink{background:var(--pink)}.btn-yellow{background:var(--yellow)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.card{border:var(--border);box-shadow:var(--shadow);background:#fff;padding:18px;position:relative}.card h3{margin-top:0}.card:nth-child(3n+1){background:var(--yellow);border-radius:0}.card:nth-child(3n+2){background:#fff}.card:nth-child(3n){background:var(--blue)}.card:hover{box-shadow:11px 11px 0 var(--ink);transform:translate(-3px,-3px)}.core .card{background:#fff}.core .card:hover{background:var(--lime)}.shot{border:var(--border);box-shadow:var(--shadow);background:#fff;max-width:100%;margin:22px 0;padding:12px}.shot img{border:2px solid var(--ink);width:100%;height:auto;display:block}.shot figcaption{border-top:3px dashed var(--ink);margin-top:10px;padding-top:8px;font-size:.9rem;font-weight:700}.shot a:hover{background:0 0}.shot img:hover{transform:translate(-2px,-2px)}.shot-feature{max-width:860px}.screen-strip{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:22px;display:grid}.screen-strip .shot{margin:0 0 12px}.code-block{color:#e6edf3;border:var(--border);box-shadow:var(--shadow);background:#0d1117;margin:18px 0;position:relative}.code-label{background:var(--purple);border:3px solid var(--ink);text-transform:uppercase;letter-spacing:1px;padding:2px 10px;font-size:.72rem;font-weight:900;position:absolute;top:-16px;left:12px}.code-block pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:.88rem;line-height:1.5;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0}.table-wrap{border:var(--border);box-shadow:var(--shadow);background:#fff;margin:18px 0;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border:3px solid var(--ink);text-align:left;vertical-align:top;padding:10px 12px}th{background:var(--ink);color:var(--paper);text-transform:uppercase;letter-spacing:1px;font-size:.8rem}tbody tr:nth-child(2n) td{background:var(--yellow)}td code{white-space:nowrap}.num{font-size:1.05rem;font-weight:900}.badge{text-transform:uppercase;border:3px solid var(--ink);margin-right:6px;padding:3px 10px;font-size:.8rem;font-weight:900;display:inline-block;transform:rotate(-1.5deg)}.badge-ok{background:var(--green);color:#fff}.badge-warn{background:var(--yellow)}.badge-err{background:var(--red);color:#fff}.badge-info{background:var(--blue)}.kbd{font-family:var(--mono);border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;padding:2px 8px;font-size:.85rem;font-weight:700;display:inline-block}.callout{border:var(--border);box-shadow:var(--shadow-sm);background:var(--pink);margin:22px 0;padding:14px 18px;font-weight:700}.callout-info{background:var(--blue)}.callout-ok{background:var(--lime)}.file-tree{font-family:var(--mono);white-space:pre;font-size:.9rem;overflow-x:auto}.inline-shot{vertical-align:top;max-width:560px;display:inline-block}.inline-shot+.inline-shot{margin-left:8px}.footer{z-index:1;border:var(--border);box-shadow:var(--shadow);background:var(--ink);color:var(--paper);margin:48px 12px 12px;padding:18px 22px;font-size:.9rem;position:relative}.footer a{color:var(--yellow);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow)}.footer a:hover{background:var(--yellow);color:var(--ink)}.footer-links{margin-top:6px}ul{padding-left:22px}li+li{margin-top:4px}.step-list{counter-reset:steps;padding-left:0;list-style:none}.step-list li{counter-increment:steps;margin-top:14px;padding-left:52px;position:relative}.step-list li:before{content:counter(steps);background:var(--purple);color:#fff;border:3px solid var(--ink);width:34px;height:34px;box-shadow:3px 3px 0 var(--ink);place-items:center;font-weight:900;display:grid;position:absolute;top:-4px;left:0}.flag-name{font-family:var(--mono);font-weight:700}@media (width<=720px){.hero{grid-template-columns:1fr}.topbar{gap:8px}.gh-pill{margin-left:0}main{margin:18px auto}} diff --git a/docs/web/dist/assets/index-CVCe6Y9v.css b/docs/web/dist/assets/index-CVCe6Y9v.css new file mode 100644 index 0000000..58f7954 --- /dev/null +++ b/docs/web/dist/assets/index-CVCe6Y9v.css @@ -0,0 +1 @@ +:root{--paper:#faf7f0;--ink:#37322b;--outline:#4a443c;--border:3px solid var(--outline);--shadow:6px 6px 0 var(--outline);--shadow-sm:3px 3px 0 var(--outline);--yellow:#f2e3bd;--pink:#f3cfcb;--blue:#c9dced;--lime:#d3e6cf;--purple:#ddcfe9;--red-b:#e8b0a6;--green-b:#b5d9c2;--nav-bg:#3b352e;--nav-ink:#faf3e3;--font:"Segoe UI", "Verdana", "Tahoma", sans-serif;--mono:"Cascadia Code", "Consolas", "JetBrains Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#4a443c0d 1px,#0000 1px),linear-gradient(90deg,#4a443c0d 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}.skip{background:var(--yellow);border:var(--border);z-index:99;padding:8px 16px;font-weight:700;position:absolute;top:0;left:-9999px}.skip:focus{left:8px}.topbar{z-index:50;background:var(--nav-bg);color:var(--nav-ink);border:var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 12px;padding:8px 14px;display:flex;position:sticky;top:8px}.brand{color:var(--nav-ink);letter-spacing:.3px;align-items:center;gap:10px;font-size:1.1rem;font-weight:800;text-decoration:none;display:inline-flex}.brand-mark{background:var(--pink);color:var(--ink);border:2px solid var(--nav-ink);padding:2px 8px;font-weight:800;transform:rotate(-1.5deg)}.brand-sub{background:var(--blue);color:var(--ink);margin-left:8px;padding:1px 6px;font-size:.62rem;transform:rotate(1deg)}.topbar nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--nav-ink);text-transform:uppercase;letter-spacing:.8px;border:2px solid #0000;padding:4px 10px;font-size:.82rem;font-weight:700;text-decoration:none;display:inline-block}.nav-link:hover{background:var(--nav-ink);color:var(--nav-bg);border-color:var(--nav-ink)}.gh-pill{background:var(--yellow);color:var(--ink);border:2px solid var(--nav-ink);box-shadow:2px 2px 0 var(--nav-ink);margin-left:auto;padding:4px 14px;font-weight:800;text-decoration:none}.gh-pill:hover{box-shadow:3px 3px 0 var(--nav-ink);transform:translate(-1px,-1px)}main{z-index:1;max-width:1080px;margin:36px auto;padding:0 20px;position:relative}.page-head{margin-bottom:28px}.kicker{background:var(--lime);border:var(--border);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:1.6px;margin:0 0 14px;padding:4px 12px;font-size:.75rem;font-weight:800;display:inline-block}.violet{background:var(--purple)}.blue{background:var(--blue)}.pink{background:var(--pink)}.yellow{background:var(--yellow)}h1{letter-spacing:-.5px;text-transform:uppercase;margin:0 0 16px;font-size:clamp(2.1rem,5vw,3.4rem);font-weight:800;line-height:1.08}.lede{background:var(--yellow);border:var(--border);max-width:740px;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:1.12rem;display:inline-block}h2{border-left:10px solid var(--outline);margin:44px 0 14px;padding-left:12px;font-size:1.55rem;font-weight:800}h3{margin:26px 0 10px;font-size:1.12rem;font-weight:800}p,li{font-size:1.02rem}strong{background:var(--lime);padding:0 3px}code{font-family:var(--mono);background:var(--nav-bg);color:var(--nav-ink);padding:2px 6px;font-size:.92em}a{color:var(--ink);text-decoration-thickness:2px;-webkit-text-decoration-color:var(--red-b);text-decoration-color:var(--red-b)}a:hover{background:var(--pink)}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:24px;margin-bottom:20px;display:grid}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.btn{text-transform:uppercase;border:var(--border);box-shadow:var(--shadow);background:var(--blue);color:var(--ink);padding:11px 20px;font-size:.95rem;font-weight:800;text-decoration:none;display:inline-block}.btn:hover{box-shadow:8px 8px 0 var(--outline);transform:translate(-2px,-2px)}.btn-pink{background:var(--pink)}.btn-yellow{background:var(--yellow)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.card{border:var(--border);box-shadow:var(--shadow);background:#fffdf8;padding:18px;position:relative}.card h3{margin-top:0}.card:nth-child(3n+1){background:var(--yellow)}.card:nth-child(3n+2){background:#fffdf8}.card:nth-child(3n){background:var(--blue)}.card:hover{box-shadow:8px 8px 0 var(--outline);transform:translate(-2px,-2px)}.core .card{background:#fffdf8}.core .card:hover{background:var(--lime)}.shot{border:var(--border);box-shadow:var(--shadow);background:#fffdf8;max-width:100%;margin:22px 0;padding:12px}.shot img{border:2px solid var(--outline);width:100%;height:auto;display:block}.shot figcaption{border-top:2px dashed var(--outline);margin-top:10px;padding-top:8px;font-size:.9rem;font-weight:600}.shot a:hover{background:0 0}.shot img:hover{transform:translate(-1px,-1px)}.shot-feature{max-width:860px}.screen-strip{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:22px;display:grid}.screen-strip .shot{margin:0 0 12px}.code-block{background:var(--nav-bg);color:var(--nav-ink);border:var(--border);box-shadow:var(--shadow);margin:18px 0;position:relative}.code-label{background:var(--purple);border:2px solid var(--outline);text-transform:uppercase;letter-spacing:1px;color:var(--ink);padding:2px 10px;font-size:.72rem;font-weight:800;position:absolute;top:-15px;left:12px}.code-block pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:.88rem;line-height:1.55;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0}.table-wrap{border:var(--border);box-shadow:var(--shadow);background:#fffdf8;margin:18px 0;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border:2px solid var(--outline);text-align:left;vertical-align:top;padding:10px 12px}th{background:var(--nav-bg);color:var(--nav-ink);text-transform:uppercase;letter-spacing:1px;font-size:.78rem}tbody tr:nth-child(2n) td{background:var(--yellow)}td code{white-space:nowrap}.num{font-size:1.05rem;font-weight:800}.badge{text-transform:uppercase;letter-spacing:.8px;border:2px solid var(--outline);margin-right:6px;padding:3px 10px;font-size:.78rem;font-weight:800;display:inline-block;transform:rotate(-1deg)}.badge-ok{background:var(--green-b);color:var(--ink)}.badge-warn{background:var(--yellow)}.badge-err{background:var(--red-b);color:var(--ink)}.badge-info{background:var(--blue)}.kbd{font-family:var(--mono);border:2px solid var(--outline);box-shadow:2px 2px 0 var(--outline);background:#fffdf8;padding:2px 8px;font-size:.85rem;font-weight:700;display:inline-block}.callout{border:var(--border);box-shadow:var(--shadow-sm);background:var(--pink);margin:22px 0;padding:14px 18px;font-weight:600}.callout-info{background:var(--blue)}.callout-ok{background:var(--lime)}.file-tree{font-family:var(--mono);white-space:pre;font-size:.9rem;overflow-x:auto}.footer{z-index:1;border:var(--border);box-shadow:var(--shadow);background:var(--nav-bg);color:var(--nav-ink);margin:48px 12px 12px;padding:18px 22px;font-size:.9rem;position:relative}.footer a{color:var(--yellow);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow)}.footer a:hover{background:var(--yellow);color:var(--ink)}.footer-links{margin-top:6px}ul{padding-left:22px}li+li{margin-top:4px}.step-list{counter-reset:steps;padding-left:0;list-style:none}.step-list li{counter-increment:steps;margin-top:14px;padding-left:52px;position:relative}.step-list li:before{content:counter(steps);background:var(--purple);width:32px;height:32px;color:var(--ink);border:2px solid var(--outline);box-shadow:2px 2px 0 var(--outline);place-items:center;font-weight:800;display:grid;position:absolute;top:-4px;left:0}.flag-name{font-family:var(--mono);font-weight:700}@media (width<=720px){.hero{grid-template-columns:1fr}.topbar{gap:8px}.gh-pill{margin-left:0}main{margin:18px auto}} diff --git a/docs/web/dist/assets/site.css b/docs/web/dist/assets/site.css index 99c559f..58f7954 100644 --- a/docs/web/dist/assets/site.css +++ b/docs/web/dist/assets/site.css @@ -1 +1 @@ -:root{--paper:#fff8e7;--ink:#000;--pink:#ff5d8f;--yellow:#ffd400;--blue:#38b6ff;--lime:#b8ff5c;--purple:#b15de6;--red:#ff4b33;--green:#00c46e;--border:4px solid var(--ink);--shadow:8px 8px 0 var(--ink);--shadow-sm:4px 4px 0 var(--ink);--font:"Archivo", "Arial Black", "Segoe UI", Tahoma, sans-serif;--mono:"Cascadia Code", "Consolas", "JetBrains Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#0000000f 1px,#0000 1px),linear-gradient(90deg,#0000000f 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}.skip{background:var(--yellow);border:var(--border);z-index:99;padding:8px 16px;font-weight:900;position:absolute;top:0;left:-9999px}.skip:focus{left:8px}.topbar{z-index:50;background:var(--ink);color:var(--paper);border:var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 12px;padding:8px 14px;display:flex;position:sticky;top:8px}.brand{color:var(--paper);letter-spacing:.5px;align-items:center;gap:10px;font-size:1.15rem;font-weight:900;text-decoration:none;display:inline-flex}.brand-mark{background:var(--pink);color:var(--ink);border:3px solid var(--paper);padding:2px 8px;font-weight:900;transform:rotate(-3deg)}.brand-sub{background:var(--blue);color:var(--ink);margin-left:8px;padding:1px 6px;font-size:.62rem;transform:rotate(2deg)}.topbar nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--paper);text-transform:uppercase;border:3px solid #0000;padding:4px 10px;font-size:.82rem;font-weight:800;text-decoration:none;display:inline-block}.nav-link:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}.gh-pill{background:var(--yellow);color:var(--ink);border:3px solid var(--paper);box-shadow:3px 3px 0 var(--paper);margin-left:auto;padding:4px 14px;font-weight:900;text-decoration:none}.gh-pill:hover{box-shadow:5px 5px 0 var(--paper);transform:translate(-2px,-2px)}main{z-index:1;max-width:1080px;margin:32px auto;padding:0 20px;position:relative}.page-head{margin-bottom:28px}.kicker{background:var(--lime);border:var(--border);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:2px;margin:0 0 14px;padding:4px 12px;font-size:.78rem;font-weight:900;display:inline-block;transform:rotate(-1deg)}.violet{background:var(--purple)}.blue{background:var(--blue)}.pink{background:var(--pink)}.yellow{background:var(--yellow)}h1{text-transform:uppercase;letter-spacing:-1px;margin:0 0 16px;font-size:clamp(2.4rem,6vw,4rem);font-weight:900;line-height:1.02}.lede{background:var(--yellow);border:var(--border);max-width:720px;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:1.15rem;display:inline-block}h2{text-transform:uppercase;border-left:12px solid var(--ink);margin:44px 0 14px;padding-left:12px;font-size:1.7rem;font-weight:900}h3{text-transform:uppercase;margin:28px 0 10px;font-size:1.2rem;font-weight:900}p,li{font-size:1.02rem}strong{background:var(--lime);padding:0 3px}code{font-family:var(--mono);color:#7fffd4;background:#000;padding:2px 6px;font-size:.92em}a{color:inherit;text-decoration-thickness:3px;-webkit-text-decoration-color:var(--pink);text-decoration-color:var(--pink)}a:hover{background:var(--pink)}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:24px;margin-bottom:20px;display:grid}.hero-badges{flex-wrap:wrap;gap:10px;margin:18px 0 22px;display:flex}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.btn{text-transform:uppercase;border:var(--border);box-shadow:var(--shadow);background:var(--blue);color:var(--ink);padding:12px 22px;font-size:1rem;font-weight:900;text-decoration:none;display:inline-block}.btn:hover{box-shadow:12px 12px 0 var(--ink);transform:translate(-4px,-4px)}.btn-pink{background:var(--pink)}.btn-yellow{background:var(--yellow)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.card{border:var(--border);box-shadow:var(--shadow);background:#fff;padding:18px;position:relative}.card h3{margin-top:0}.card:nth-child(3n+1){background:var(--yellow);border-radius:0}.card:nth-child(3n+2){background:#fff}.card:nth-child(3n){background:var(--blue)}.card:hover{box-shadow:11px 11px 0 var(--ink);transform:translate(-3px,-3px)}.core .card{background:#fff}.core .card:hover{background:var(--lime)}.shot{border:var(--border);box-shadow:var(--shadow);background:#fff;max-width:100%;margin:22px 0;padding:12px}.shot img{border:2px solid var(--ink);width:100%;height:auto;display:block}.shot figcaption{border-top:3px dashed var(--ink);margin-top:10px;padding-top:8px;font-size:.9rem;font-weight:700}.shot a:hover{background:0 0}.shot img:hover{transform:translate(-2px,-2px)}.shot-feature{max-width:860px}.screen-strip{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:22px;display:grid}.screen-strip .shot{margin:0 0 12px}.code-block{color:#e6edf3;border:var(--border);box-shadow:var(--shadow);background:#0d1117;margin:18px 0;position:relative}.code-label{background:var(--purple);border:3px solid var(--ink);text-transform:uppercase;letter-spacing:1px;padding:2px 10px;font-size:.72rem;font-weight:900;position:absolute;top:-16px;left:12px}.code-block pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:.88rem;line-height:1.5;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0}.table-wrap{border:var(--border);box-shadow:var(--shadow);background:#fff;margin:18px 0;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border:3px solid var(--ink);text-align:left;vertical-align:top;padding:10px 12px}th{background:var(--ink);color:var(--paper);text-transform:uppercase;letter-spacing:1px;font-size:.8rem}tbody tr:nth-child(2n) td{background:var(--yellow)}td code{white-space:nowrap}.num{font-size:1.05rem;font-weight:900}.badge{text-transform:uppercase;border:3px solid var(--ink);margin-right:6px;padding:3px 10px;font-size:.8rem;font-weight:900;display:inline-block;transform:rotate(-1.5deg)}.badge-ok{background:var(--green);color:#fff}.badge-warn{background:var(--yellow)}.badge-err{background:var(--red);color:#fff}.badge-info{background:var(--blue)}.kbd{font-family:var(--mono);border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:#fff;padding:2px 8px;font-size:.85rem;font-weight:700;display:inline-block}.callout{border:var(--border);box-shadow:var(--shadow-sm);background:var(--pink);margin:22px 0;padding:14px 18px;font-weight:700}.callout-info{background:var(--blue)}.callout-ok{background:var(--lime)}.file-tree{font-family:var(--mono);white-space:pre;font-size:.9rem;overflow-x:auto}.inline-shot{vertical-align:top;max-width:560px;display:inline-block}.inline-shot+.inline-shot{margin-left:8px}.footer{z-index:1;border:var(--border);box-shadow:var(--shadow);background:var(--ink);color:var(--paper);margin:48px 12px 12px;padding:18px 22px;font-size:.9rem;position:relative}.footer a{color:var(--yellow);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow)}.footer a:hover{background:var(--yellow);color:var(--ink)}.footer-links{margin-top:6px}ul{padding-left:22px}li+li{margin-top:4px}.step-list{counter-reset:steps;padding-left:0;list-style:none}.step-list li{counter-increment:steps;margin-top:14px;padding-left:52px;position:relative}.step-list li:before{content:counter(steps);background:var(--purple);color:#fff;border:3px solid var(--ink);width:34px;height:34px;box-shadow:3px 3px 0 var(--ink);place-items:center;font-weight:900;display:grid;position:absolute;top:-4px;left:0}.flag-name{font-family:var(--mono);font-weight:700}@media (width<=720px){.hero{grid-template-columns:1fr}.topbar{gap:8px}.gh-pill{margin-left:0}main{margin:18px auto}} +:root{--paper:#faf7f0;--ink:#37322b;--outline:#4a443c;--border:3px solid var(--outline);--shadow:6px 6px 0 var(--outline);--shadow-sm:3px 3px 0 var(--outline);--yellow:#f2e3bd;--pink:#f3cfcb;--blue:#c9dced;--lime:#d3e6cf;--purple:#ddcfe9;--red-b:#e8b0a6;--green-b:#b5d9c2;--nav-bg:#3b352e;--nav-ink:#faf3e3;--font:"Segoe UI", "Verdana", "Tahoma", sans-serif;--mono:"Cascadia Code", "Consolas", "JetBrains Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#4a443c0d 1px,#0000 1px),linear-gradient(90deg,#4a443c0d 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}.skip{background:var(--yellow);border:var(--border);z-index:99;padding:8px 16px;font-weight:700;position:absolute;top:0;left:-9999px}.skip:focus{left:8px}.topbar{z-index:50;background:var(--nav-bg);color:var(--nav-ink);border:var(--border);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:16px;margin:8px 12px;padding:8px 14px;display:flex;position:sticky;top:8px}.brand{color:var(--nav-ink);letter-spacing:.3px;align-items:center;gap:10px;font-size:1.1rem;font-weight:800;text-decoration:none;display:inline-flex}.brand-mark{background:var(--pink);color:var(--ink);border:2px solid var(--nav-ink);padding:2px 8px;font-weight:800;transform:rotate(-1.5deg)}.brand-sub{background:var(--blue);color:var(--ink);margin-left:8px;padding:1px 6px;font-size:.62rem;transform:rotate(1deg)}.topbar nav ul{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--nav-ink);text-transform:uppercase;letter-spacing:.8px;border:2px solid #0000;padding:4px 10px;font-size:.82rem;font-weight:700;text-decoration:none;display:inline-block}.nav-link:hover{background:var(--nav-ink);color:var(--nav-bg);border-color:var(--nav-ink)}.gh-pill{background:var(--yellow);color:var(--ink);border:2px solid var(--nav-ink);box-shadow:2px 2px 0 var(--nav-ink);margin-left:auto;padding:4px 14px;font-weight:800;text-decoration:none}.gh-pill:hover{box-shadow:3px 3px 0 var(--nav-ink);transform:translate(-1px,-1px)}main{z-index:1;max-width:1080px;margin:36px auto;padding:0 20px;position:relative}.page-head{margin-bottom:28px}.kicker{background:var(--lime);border:var(--border);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:1.6px;margin:0 0 14px;padding:4px 12px;font-size:.75rem;font-weight:800;display:inline-block}.violet{background:var(--purple)}.blue{background:var(--blue)}.pink{background:var(--pink)}.yellow{background:var(--yellow)}h1{letter-spacing:-.5px;text-transform:uppercase;margin:0 0 16px;font-size:clamp(2.1rem,5vw,3.4rem);font-weight:800;line-height:1.08}.lede{background:var(--yellow);border:var(--border);max-width:740px;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:1.12rem;display:inline-block}h2{border-left:10px solid var(--outline);margin:44px 0 14px;padding-left:12px;font-size:1.55rem;font-weight:800}h3{margin:26px 0 10px;font-size:1.12rem;font-weight:800}p,li{font-size:1.02rem}strong{background:var(--lime);padding:0 3px}code{font-family:var(--mono);background:var(--nav-bg);color:var(--nav-ink);padding:2px 6px;font-size:.92em}a{color:var(--ink);text-decoration-thickness:2px;-webkit-text-decoration-color:var(--red-b);text-decoration-color:var(--red-b)}a:hover{background:var(--pink)}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:24px;margin-bottom:20px;display:grid}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:8px;display:flex}.btn{text-transform:uppercase;border:var(--border);box-shadow:var(--shadow);background:var(--blue);color:var(--ink);padding:11px 20px;font-size:.95rem;font-weight:800;text-decoration:none;display:inline-block}.btn:hover{box-shadow:8px 8px 0 var(--outline);transform:translate(-2px,-2px)}.btn-pink{background:var(--pink)}.btn-yellow{background:var(--yellow)}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;display:grid}.card{border:var(--border);box-shadow:var(--shadow);background:#fffdf8;padding:18px;position:relative}.card h3{margin-top:0}.card:nth-child(3n+1){background:var(--yellow)}.card:nth-child(3n+2){background:#fffdf8}.card:nth-child(3n){background:var(--blue)}.card:hover{box-shadow:8px 8px 0 var(--outline);transform:translate(-2px,-2px)}.core .card{background:#fffdf8}.core .card:hover{background:var(--lime)}.shot{border:var(--border);box-shadow:var(--shadow);background:#fffdf8;max-width:100%;margin:22px 0;padding:12px}.shot img{border:2px solid var(--outline);width:100%;height:auto;display:block}.shot figcaption{border-top:2px dashed var(--outline);margin-top:10px;padding-top:8px;font-size:.9rem;font-weight:600}.shot a:hover{background:0 0}.shot img:hover{transform:translate(-1px,-1px)}.shot-feature{max-width:860px}.screen-strip{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:22px;display:grid}.screen-strip .shot{margin:0 0 12px}.code-block{background:var(--nav-bg);color:var(--nav-ink);border:var(--border);box-shadow:var(--shadow);margin:18px 0;position:relative}.code-label{background:var(--purple);border:2px solid var(--outline);text-transform:uppercase;letter-spacing:1px;color:var(--ink);padding:2px 10px;font-size:.72rem;font-weight:800;position:absolute;top:-15px;left:12px}.code-block pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:.88rem;line-height:1.55;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0}.table-wrap{border:var(--border);box-shadow:var(--shadow);background:#fffdf8;margin:18px 0;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border:2px solid var(--outline);text-align:left;vertical-align:top;padding:10px 12px}th{background:var(--nav-bg);color:var(--nav-ink);text-transform:uppercase;letter-spacing:1px;font-size:.78rem}tbody tr:nth-child(2n) td{background:var(--yellow)}td code{white-space:nowrap}.num{font-size:1.05rem;font-weight:800}.badge{text-transform:uppercase;letter-spacing:.8px;border:2px solid var(--outline);margin-right:6px;padding:3px 10px;font-size:.78rem;font-weight:800;display:inline-block;transform:rotate(-1deg)}.badge-ok{background:var(--green-b);color:var(--ink)}.badge-warn{background:var(--yellow)}.badge-err{background:var(--red-b);color:var(--ink)}.badge-info{background:var(--blue)}.kbd{font-family:var(--mono);border:2px solid var(--outline);box-shadow:2px 2px 0 var(--outline);background:#fffdf8;padding:2px 8px;font-size:.85rem;font-weight:700;display:inline-block}.callout{border:var(--border);box-shadow:var(--shadow-sm);background:var(--pink);margin:22px 0;padding:14px 18px;font-weight:600}.callout-info{background:var(--blue)}.callout-ok{background:var(--lime)}.file-tree{font-family:var(--mono);white-space:pre;font-size:.9rem;overflow-x:auto}.footer{z-index:1;border:var(--border);box-shadow:var(--shadow);background:var(--nav-bg);color:var(--nav-ink);margin:48px 12px 12px;padding:18px 22px;font-size:.9rem;position:relative}.footer a{color:var(--yellow);-webkit-text-decoration-color:var(--yellow);text-decoration-color:var(--yellow)}.footer a:hover{background:var(--yellow);color:var(--ink)}.footer-links{margin-top:6px}ul{padding-left:22px}li+li{margin-top:4px}.step-list{counter-reset:steps;padding-left:0;list-style:none}.step-list li{counter-increment:steps;margin-top:14px;padding-left:52px;position:relative}.step-list li:before{content:counter(steps);background:var(--purple);width:32px;height:32px;color:var(--ink);border:2px solid var(--outline);box-shadow:2px 2px 0 var(--outline);place-items:center;font-weight:800;display:grid;position:absolute;top:-4px;left:0}.flag-name{font-family:var(--mono);font-weight:700}@media (width<=720px){.hero{grid-template-columns:1fr}.topbar{gap:8px}.gh-pill{margin-left:0}main{margin:18px auto}} diff --git a/docs/web/src/styles/site.css b/docs/web/src/styles/site.css index 022cbfd..59f2727 100644 --- a/docs/web/src/styles/site.css +++ b/docs/web/src/styles/site.css @@ -1,18 +1,22 @@ -/* ============ DevOpsGen Docs — Neo Brutalism ============ */ +/* ============ DevOpsGen Docs — Neo Brutalism, soft & slightly formal ============ */ :root { - --paper: #fff8e7; - --ink: #000000; - --pink: #ff5d8f; - --yellow: #ffd400; - --blue: #38b6ff; - --lime: #b8ff5c; - --purple: #b15de6; - --red: #ff4b33; - --green: #00c46e; - --border: 4px solid var(--ink); - --shadow: 8px 8px 0 var(--ink); - --shadow-sm: 4px 4px 0 var(--ink); - --font: "Archivo", "Arial Black", "Segoe UI", Tahoma, sans-serif; + --paper: #faf7f0; + --ink: #37322b; /* warm charcoal instead of pure black */ + --outline: #4a443c; /* border/shadow tone */ + --border: 3px solid var(--outline); + --shadow: 6px 6px 0 var(--outline); + --shadow-sm: 3px 3px 0 var(--outline); + /* soft palette */ + --yellow: #f2e3bd; /* soft butter */ + --pink: #f3cfcb; /* dusty rose */ + --blue: #c9dced; /* soft periwinkle */ + --lime: #d3e6cf; /* soft sage */ + --purple: #ddcfe9; /* soft lavender */ + --red-b: #e8b0a6; /* muted terracotta */ + --green-b: #b5d9c2; /* soft mint */ + --nav-bg: #3b352e; + --nav-ink: #faf3e3; + --font: "Segoe UI", "Verdana", "Tahoma", sans-serif; --mono: "Cascadia Code", "Consolas", "JetBrains Mono", monospace; } @@ -25,11 +29,11 @@ body { font-family: var(--font); background: var(--paper); color: var(--ink); - line-height: 1.55; + line-height: 1.65; -webkit-font-smoothing: antialiased; } -/* subtle brutal grid background */ +/* faint warm grid */ body::before { content: ""; position: fixed; @@ -37,8 +41,8 @@ body::before { pointer-events: none; z-index: 0; background-image: - linear-gradient(rgba(0, 0, 0, 0.06) 1px, transparent 1px), - linear-gradient(90deg, rgba(0, 0, 0, 0.06) 1px, transparent 1px); + linear-gradient(rgba(74, 68, 60, 0.05) 1px, transparent 1px), + linear-gradient(90deg, rgba(74, 68, 60, 0.05) 1px, transparent 1px); background-size: 32px 32px; } @@ -49,7 +53,7 @@ body::before { background: var(--yellow); border: var(--border); padding: 8px 16px; - font-weight: 900; + font-weight: 700; z-index: 99; } .skip:focus { left: 8px; } @@ -61,8 +65,8 @@ body::before { z-index: 50; margin: 8px 12px; padding: 8px 14px; - background: var(--ink); - color: var(--paper); + background: var(--nav-bg); + color: var(--nav-ink); border: var(--border); box-shadow: var(--shadow); display: flex; @@ -75,20 +79,20 @@ body::before { display: inline-flex; align-items: center; gap: 10px; - color: var(--paper); + color: var(--nav-ink); text-decoration: none; - font-weight: 900; - font-size: 1.15rem; - letter-spacing: 0.5px; + font-weight: 800; + font-size: 1.1rem; + letter-spacing: 0.3px; } .brand-mark { background: var(--pink); color: var(--ink); - border: 3px solid var(--paper); + border: 2px solid var(--nav-ink); padding: 2px 8px; - font-weight: 900; - transform: rotate(-3deg); + font-weight: 800; + transform: rotate(-1.5deg); } .brand-sub { @@ -97,7 +101,7 @@ body::before { font-size: 0.62rem; padding: 1px 6px; margin-left: 8px; - transform: rotate(2deg); + transform: rotate(1deg); } .topbar nav ul { @@ -111,34 +115,35 @@ body::before { .nav-link { display: inline-block; - color: var(--paper); + color: var(--nav-ink); text-decoration: none; - font-weight: 800; + font-weight: 700; font-size: 0.82rem; text-transform: uppercase; + letter-spacing: 0.8px; padding: 4px 10px; - border: 3px solid transparent; + border: 2px solid transparent; } -.nav-link:hover { background: var(--paper); color: var(--ink); border-color: var(--paper); } +.nav-link:hover { background: var(--nav-ink); color: var(--nav-bg); border-color: var(--nav-ink); } .gh-pill { margin-left: auto; background: var(--yellow); color: var(--ink); text-decoration: none; - font-weight: 900; + font-weight: 800; padding: 4px 14px; - border: 3px solid var(--paper); - box-shadow: 3px 3px 0 var(--paper); + border: 2px solid var(--nav-ink); + box-shadow: 2px 2px 0 var(--nav-ink); } -.gh-pill:hover { transform: translate(-2px, -2px); box-shadow: 5px 5px 0 var(--paper); } +.gh-pill:hover { transform: translate(-1px, -1px); box-shadow: 3px 3px 0 var(--nav-ink); } /* ---------- layout ---------- */ main { position: relative; z-index: 1; max-width: 1080px; - margin: 32px auto; + margin: 36px auto; padding: 0 20px; } @@ -149,13 +154,12 @@ main { background: var(--lime); border: var(--border); box-shadow: var(--shadow-sm); - font-weight: 900; + font-weight: 800; text-transform: uppercase; - font-size: 0.78rem; - letter-spacing: 2px; + font-size: 0.75rem; + letter-spacing: 1.6px; padding: 4px 12px; margin: 0 0 14px 0; - transform: rotate(-1deg); } .violet { background: var(--purple); } @@ -164,17 +168,17 @@ main { .yellow { background: var(--yellow); } h1 { - font-size: clamp(2.4rem, 6vw, 4rem); - line-height: 1.02; + font-size: clamp(2.1rem, 5vw, 3.4rem); + line-height: 1.08; margin: 0 0 16px 0; + font-weight: 800; + letter-spacing: -0.5px; text-transform: uppercase; - font-weight: 900; - letter-spacing: -1px; } .lede { - font-size: 1.15rem; - max-width: 720px; + font-size: 1.12rem; + max-width: 740px; background: var(--yellow); border: var(--border); box-shadow: var(--shadow-sm); @@ -183,26 +187,24 @@ h1 { } h2 { - font-size: 1.7rem; - text-transform: uppercase; - font-weight: 900; + font-size: 1.55rem; + font-weight: 800; margin: 44px 0 14px; padding-left: 12px; - border-left: 12px solid var(--ink); + border-left: 10px solid var(--outline); } h3 { - font-size: 1.2rem; - text-transform: uppercase; - font-weight: 900; - margin: 28px 0 10px; + font-size: 1.12rem; + font-weight: 800; + margin: 26px 0 10px; } p, li { font-size: 1.02rem; } strong { background: var(--lime); padding: 0 3px; } -code { font-family: var(--mono); font-size: 0.92em; background: #000; color: #7fffd4; padding: 2px 6px; } +code { font-family: var(--mono); font-size: 0.92em; background: var(--nav-bg); color: var(--nav-ink); padding: 2px 6px; } -a { color: inherit; text-decoration-thickness: 3px; text-decoration-color: var(--pink); } +a { color: var(--ink); text-decoration-thickness: 2px; text-decoration-color: var(--red-b); } a:hover { background: var(--pink); } /* ---------- hero (home) ---------- */ @@ -214,23 +216,21 @@ a:hover { background: var(--pink); } margin-bottom: 20px; } -.hero-badges { display: flex; flex-wrap: wrap; gap: 10px; margin: 18px 0 22px; } - .hero-cta { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 8px; } .btn { display: inline-block; - font-weight: 900; + font-weight: 800; text-transform: uppercase; text-decoration: none; - padding: 12px 22px; + padding: 11px 20px; border: var(--border); box-shadow: var(--shadow); - font-size: 1rem; + font-size: 0.95rem; background: var(--blue); color: var(--ink); } -.btn:hover { transform: translate(-4px, -4px); box-shadow: 12px 12px 0 var(--ink); } +.btn:hover { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--outline); } .btn-pink { background: var(--pink); } .btn-yellow { background: var(--yellow); } @@ -242,40 +242,40 @@ a:hover { background: var(--pink); } } .card { - background: #fff; + background: #fffdf8; border: var(--border); box-shadow: var(--shadow); padding: 18px; position: relative; } .card h3 { margin-top: 0; } -.card:nth-child(3n + 1) { background: var(--yellow); border-radius: 0; } -.card:nth-child(3n + 2) { background: #fff; } +.card:nth-child(3n + 1) { background: var(--yellow); } +.card:nth-child(3n + 2) { background: #fffdf8; } .card:nth-child(3n) { background: var(--blue); } -.card:hover { transform: translate(-3px, -3px); box-shadow: 11px 11px 0 var(--ink); } +.card:hover { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--outline); } -.core .card { background: #fff; } +.core .card { background: #fffdf8; } .core .card:hover { background: var(--lime); } /* ---------- screenshots ---------- */ .shot { margin: 22px 0; padding: 12px; - background: #fff; + background: #fffdf8; border: var(--border); box-shadow: var(--shadow); max-width: 100%; } -.shot img { display: block; width: 100%; height: auto; border: 2px solid var(--ink); } +.shot img { display: block; width: 100%; height: auto; border: 2px solid var(--outline); } .shot figcaption { margin-top: 10px; - font-weight: 700; + font-weight: 600; font-size: 0.9rem; - border-top: 3px dashed var(--ink); + border-top: 2px dashed var(--outline); padding-top: 8px; } .shot a:hover { background: transparent; } -.shot img:hover { transform: translate(-2px, -2px); } +.shot img:hover { transform: translate(-1px, -1px); } .shot-feature { max-width: 860px; } .screen-strip { @@ -289,23 +289,24 @@ a:hover { background: var(--pink); } /* ---------- code ---------- */ .code-block { position: relative; - background: #0d1117; - color: #e6edf3; + background: var(--nav-bg); + color: var(--nav-ink); border: var(--border); box-shadow: var(--shadow); margin: 18px 0; } .code-label { position: absolute; - top: -16px; + top: -15px; left: 12px; background: var(--purple); - border: 3px solid var(--ink); + border: 2px solid var(--outline); font-size: 0.72rem; - font-weight: 900; + font-weight: 800; text-transform: uppercase; padding: 2px 10px; letter-spacing: 1px; + color: var(--ink); } .code-block pre { margin: 0; @@ -313,43 +314,44 @@ a:hover { background: var(--pink); } overflow-x: auto; font-family: var(--mono); font-size: 0.88rem; - line-height: 1.5; + line-height: 1.55; } .code-block code { background: transparent; color: inherit; padding: 0; } /* ---------- tables ---------- */ -.table-wrap { overflow-x: auto; border: var(--border); box-shadow: var(--shadow); background: #fff; margin: 18px 0; } +.table-wrap { overflow-x: auto; border: var(--border); box-shadow: var(--shadow); background: #fffdf8; margin: 18px 0; } table { border-collapse: collapse; width: 100%; } -th, td { border: 3px solid var(--ink); padding: 10px 12px; text-align: left; vertical-align: top; } -th { background: var(--ink); color: var(--paper); text-transform: uppercase; font-size: 0.8rem; letter-spacing: 1px; } +th, td { border: 2px solid var(--outline); padding: 10px 12px; text-align: left; vertical-align: top; } +th { background: var(--nav-bg); color: var(--nav-ink); text-transform: uppercase; font-size: 0.78rem; letter-spacing: 1px; } tbody tr:nth-child(2n) td { background: var(--yellow); } td code { white-space: nowrap; } -.num { font-weight: 900; font-size: 1.05rem; } +.num { font-weight: 800; font-size: 1.05rem; } /* ---------- badges & kbd ---------- */ .badge { display: inline-block; - font-weight: 900; - font-size: 0.8rem; + font-weight: 800; + font-size: 0.78rem; text-transform: uppercase; + letter-spacing: 0.8px; padding: 3px 10px; - border: 3px solid var(--ink); - transform: rotate(-1.5deg); + border: 2px solid var(--outline); + transform: rotate(-1deg); margin-right: 6px; } -.badge-ok { background: var(--green); color: #fff; } +.badge-ok { background: var(--green-b); color: var(--ink); } .badge-warn { background: var(--yellow); } -.badge-err { background: var(--red); color: #fff; } +.badge-err { background: var(--red-b); color: var(--ink); } .badge-info { background: var(--blue); } .kbd { font-family: var(--mono); font-weight: 700; - border: 3px solid var(--ink); - box-shadow: 3px 3px 0 var(--ink); + border: 2px solid var(--outline); + box-shadow: 2px 2px 0 var(--outline); padding: 2px 8px; font-size: 0.85rem; - background: #fff; + background: #fffdf8; display: inline-block; } @@ -360,7 +362,7 @@ td code { white-space: nowrap; } background: var(--pink); padding: 14px 18px; margin: 22px 0; - font-weight: 700; + font-weight: 600; } .callout-info { background: var(--blue); } .callout-ok { background: var(--lime); } @@ -372,13 +374,6 @@ td code { white-space: nowrap; } overflow-x: auto; } -.inline-shot { - display: inline-block; - max-width: 560px; - vertical-align: top; -} -.inline-shot + .inline-shot { margin-left: 8px; } - .footer { position: relative; z-index: 1; @@ -386,8 +381,8 @@ td code { white-space: nowrap; } padding: 18px 22px; border: var(--border); box-shadow: var(--shadow); - background: var(--ink); - color: var(--paper); + background: var(--nav-bg); + color: var(--nav-ink); font-size: 0.9rem; } .footer a { color: var(--yellow); text-decoration-color: var(--yellow); } @@ -409,15 +404,15 @@ li + li { margin-top: 4px; } position: absolute; left: 0; top: -4px; - width: 34px; - height: 34px; + width: 32px; + height: 32px; display: grid; place-items: center; background: var(--purple); - color: #fff; - border: 3px solid var(--ink); - box-shadow: 3px 3px 0 var(--ink); - font-weight: 900; + color: var(--ink); + border: 2px solid var(--outline); + box-shadow: 2px 2px 0 var(--outline); + font-weight: 800; } .flag-name { font-family: var(--mono); font-weight: 700; }