diff --git a/app.js b/app.js index 674d438..7a7915c 100644 --- a/app.js +++ b/app.js @@ -466,7 +466,7 @@ function InstallSection({ contentRef }) { const [copied, setCopied] = useState(false); - const cmd = "curl -fsSL https://facere.ai/install.sh | sh"; + const cmd = `curl -fsSL https://raw.githubusercontent.com/ZhaoYiping789/facere-installer/main/bootstrap.sh | FACERE_GH_TOKEN="contact us for demo"`; const copy = async () => { try { await navigator.clipboard.writeText(cmd); @@ -515,7 +515,9 @@ function InstallSection({ className: "cmd-led led-cyan" }), /*#__PURE__*/React.createElement("span", { className: "cmd-title" - }, "~/facere \u2014 bash")), /*#__PURE__*/React.createElement("div", { + }, "~/facere \u2014 bash"), /*#__PURE__*/React.createElement("span", { + className: "cmd-bar-hint" + }, copied ? "✓ COPIED" : "CLICK TO COPY")), /*#__PURE__*/React.createElement("div", { className: "cmd-body" }, /*#__PURE__*/React.createElement("span", { className: "cmd-prompt" @@ -523,9 +525,7 @@ function InstallSection({ className: "cmd-text" }, cmd), /*#__PURE__*/React.createElement("span", { className: "cmd-cursor" - })), /*#__PURE__*/React.createElement("div", { - className: "cmd-hint" - }, copied ? "✓ COPIED" : "CLICK TO COPY")), /*#__PURE__*/React.createElement("a", { + }))), /*#__PURE__*/React.createElement("a", { className: "docs-link", href: "#", onClick: e => e.preventDefault() diff --git a/app.jsx b/app.jsx index c6637ea..0601c5d 100644 --- a/app.jsx +++ b/app.jsx @@ -434,7 +434,7 @@ function ProductSection({ bgRef, contentRef }) { /* ───────────────── InstallSection ───────────────── */ function InstallSection({ bgRef, contentRef }) { const [copied, setCopied] = useState(false); - const cmd = "curl -fsSL https://facere.ai/install.sh | sh"; + const cmd = `curl -fsSL https://raw.githubusercontent.com/ZhaoYiping789/facere-installer/main/bootstrap.sh | FACERE_GH_TOKEN="contact us for demo"`; const copy = async () => { try { @@ -475,15 +475,15 @@ function InstallSection({ bgRef, contentRef }) { ~/facere — bash + + {copied ? "✓ COPIED" : "CLICK TO COPY"} +
$ {cmd}
-
- {copied ? "✓ COPIED" : "CLICK TO COPY"} -
e.preventDefault()}> diff --git a/deploy/build.sh b/deploy/build.sh index 1685476..3a082c9 100755 --- a/deploy/build.sh +++ b/deploy/build.sh @@ -15,13 +15,20 @@ BUILD_DIR=".build" mkdir -p "$BUILD_DIR" if [ ! -f "$BUILD_DIR/package.json" ]; then - ( cd "$BUILD_DIR" && npm init -y >/dev/null \ - && npm install --silent --no-audit --no-fund \ - @babel/core@7 @babel/cli@7 @babel/preset-react@7 ) + # Write package.json directly — `npm init -y` rejects the leading-dot dir name. + cat > "$BUILD_DIR/package.json" <<'EOF' +{ "name": "facere-build", "version": "1.0.0", "private": true } +EOF +fi +if [ ! -d "$BUILD_DIR/node_modules/@babel/preset-react" ]; then + ( cd "$BUILD_DIR" && npm install --silent --no-audit --no-fund \ + @babel/core@7 @babel/cli@7 @babel/preset-react@7 ) fi +# Resolve the preset by absolute path: babel CLI runs from the repo root and +# wouldn't find it via the bare name (preset lives in .build/node_modules). "$BUILD_DIR/node_modules/.bin/babel" app.jsx \ - --presets=@babel/preset-react \ + --presets="$ROOT/$BUILD_DIR/node_modules/@babel/preset-react" \ -o app.js echo "Built app.js ($(wc -c < app.js) bytes)" diff --git a/facere.html b/facere.html index a177f3f..468d64a 100644 --- a/facere.html +++ b/facere.html @@ -13,14 +13,14 @@ - + - + @@ -42,6 +42,6 @@ - + diff --git a/styles.css b/styles.css index eb88e71..990799a 100644 --- a/styles.css +++ b/styles.css @@ -758,7 +758,15 @@ a { color: inherit; text-decoration: none; } } .cmd-led.led-amber { background: rgba(255, 138, 31, 0.4); border-color: rgba(255, 138, 31, 0.5); } .cmd-led.led-cyan { background: rgba(33, 234, 255, 0.4); border-color: rgba(33, 234, 255, 0.5); } -.cmd-title { margin-left: auto; font-size: 10px; } +.cmd-title { font-size: 11px; margin-left: 4px; opacity: 0.8; } +.cmd-bar-hint { + margin-left: auto; + font-size: 11px; + letter-spacing: 0.24em; + color: var(--cyan-muted); + transition: color 0.2s ease; +} +.cmd-box.copied .cmd-bar-hint { color: var(--cyan); } .cmd-body { display: flex; @@ -783,17 +791,6 @@ a { color: inherit; text-decoration: none; } 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } -.cmd-hint { - position: absolute; - top: 10px; - right: 14px; - font-size: 10px; - letter-spacing: 0.24em; - color: var(--cyan-muted); - pointer-events: none; - transition: color 0.2s ease; -} -.cmd-box.copied .cmd-hint { color: var(--cyan); } .cmd-box.copied { border-color: rgba(33, 234, 255, 0.55); } .docs-link { @@ -981,6 +978,7 @@ a { color: inherit; text-decoration: none; } .cmd-box { font-size: 14px; max-width: 100%; } .cmd-bar { padding: 7px 10px; font-size: 10px; letter-spacing: 0.14em; } .cmd-title { display: none; } + .cmd-bar-hint { font-size: 9px; letter-spacing: 0.18em; } .cmd-body { font-size: 13px; padding: 14px 12px 16px; @@ -989,7 +987,6 @@ a { color: inherit; text-decoration: none; } word-break: break-all; overflow-x: visible; } - .cmd-hint { display: none; } .docs-link { font-size: 13px; letter-spacing: 0.14em; }