order: payment-first express checkout + fix dead Tawk chat widget
Conversion fix for the checkout drop-off (54 sessions reached an /order/ page over 3 days, 0 advanced to payment). Root cause was friction, not a bug: every order page dropped a cold email-click straight into a 28-field intake Wizard before showing any payment option. - New ExpressCheckout.astro: payment-first entry. Shows price + the minimal fields the API needs (prefilled from public records: ?dot= FMCSA census for trucking, ?npi= NPPES lookup for healthcare) + Continue to payment. Creates a single-service batch-of-one (POST /compliance-orders/batch, which does NOT gate Stripe on intake_data_validated) then create-session -> Stripe. Full intake is collected AFTER payment via the per-service 'Complete Your Intake Form' email the webhook already sends (links to /order/<slug>?order=CO-xxx, which re-enters the Wizard in paid-intake mode). - New OrderFlow.astro: single source of truth replacing ~50 near-identical thin Wizard wrappers. Trucking + healthcare default to payment-first (express on top, marketing hero moved BELOW the CTA). Telecom + corporate keep Wizard-first (rich pre-payment FCC/499 intake, no public-records prefill). Paid-intake re-entry (?order=/?token=) always renders the full Wizard. - Rewrote all 50 /order/*.astro pages to use OrderFlow (foreign-qualification keeps its multi-state toggle via slotted content). - Fixed the dead Tawk.to live-chat widget site-wide: the snippet set an invalid crossorigin='*' attribute, forcing the browser into anonymous CORS mode and blocking the script (0 chat requests fired anywhere). Removed it to match Tawk's official snippet (footer partial + 73 static public/*.html files). Verified: build clean; express on top with hero below; ?dot=/?npi= prefill; paid-intake re-entry swaps to Wizard; telecom stays wizard-first; batch-of-one -> live Stripe URL; both POST endpoints allow the prod origin via CORS.
This commit is contained in:
parent
ae68edbc58
commit
618fafe1d5
126 changed files with 766 additions and 1518 deletions
363
site/src/components/intake/ExpressCheckout.astro
Normal file
363
site/src/components/intake/ExpressCheckout.astro
Normal file
|
|
@ -0,0 +1,363 @@
|
|||
---
|
||||
/**
|
||||
* ExpressCheckout — payment-first order entry.
|
||||
*
|
||||
* The high-friction problem this solves: every /order/<slug> page used to drop a
|
||||
* cold email-click straight into a 28-field intake Wizard BEFORE the visitor
|
||||
* saw a payment option. Funnel data showed 100% drop at that step (54 reached
|
||||
* the order page over 3 days, 0 advanced to payment). Asking a stranger to do
|
||||
* 10 minutes of data entry before earning the sale is the classic conversion
|
||||
* killer.
|
||||
*
|
||||
* The fix (modeled on the batch / compliance-check flow): collect only the
|
||||
* minimal fields the API needs to CREATE the order + charge, then go straight to
|
||||
* Stripe. The full intake is collected AFTER payment via the per-service
|
||||
* "Complete Your Intake Form" email the webhook already sends (links back into
|
||||
* the Wizard in paid-intake mode at /order/<slug>?order=CO-xxx).
|
||||
*
|
||||
* Implementation: creates a single-service "batch of one" via
|
||||
* POST /api/v1/compliance-orders/batch (which, unlike the single-order create +
|
||||
* /validate path, does NOT gate Stripe checkout on intake_data_validated), then
|
||||
* POST /api/v1/checkout/create-session with order_type=compliance_batch and
|
||||
* redirects to the returned checkout_url.
|
||||
*
|
||||
* Prefill: the minimal fields auto-populate from public records exactly like the
|
||||
* Wizard does — ?dot=NNNN pulls the FMCSA census (trucking), ?npi=NNNN runs an
|
||||
* NPPES lookup (healthcare). The visitor confirms a couple of numbers and pays.
|
||||
*
|
||||
* Verticals with rich pre-payment intake that the API genuinely needs up front
|
||||
* (telecom 499 / corporate, which have no public-records prefill and many
|
||||
* conditional fields) keep the Wizard-first flow — those are gated by the
|
||||
* `express` prop the page sets (see OrderFlow.astro).
|
||||
*/
|
||||
import { SERVICE_META, formatUSD, slugVertical } from "../../lib/intake_manifest";
|
||||
import OrderPriceBanner from "../OrderPriceBanner.astro";
|
||||
import CheckoutTrustBand from "../CheckoutTrustBand.astro";
|
||||
|
||||
export interface Props {
|
||||
service_slug: string;
|
||||
/** Optional override of the human service name (e.g. foreign-qualification). */
|
||||
name?: string;
|
||||
}
|
||||
|
||||
const { service_slug, name } = Astro.props;
|
||||
const meta = SERVICE_META[service_slug];
|
||||
const vertical = slugVertical(service_slug);
|
||||
const serviceName = name || meta?.name || service_slug;
|
||||
|
||||
// Which minimal fields to show, per vertical. These are the smallest set the
|
||||
// API's create-order path needs; everything else is collected after payment.
|
||||
type FieldKind = "trucking" | "healthcare" | "generic";
|
||||
const kind: FieldKind =
|
||||
vertical === "trucking" ? "trucking"
|
||||
: vertical === "healthcare" ? "healthcare"
|
||||
: "generic";
|
||||
|
||||
const interval = meta?.billing_interval;
|
||||
const intervalLabel = interval === "month" ? "month" : interval === "year" ? "year" : null;
|
||||
|
||||
const ALL_METHODS = [
|
||||
{ value: "card", label: "Credit / Debit card" },
|
||||
{ value: "ach", label: "ACH (US bank)" },
|
||||
{ value: "paypal", label: "PayPal" },
|
||||
{ value: "klarna", label: "Klarna (pay over time)" },
|
||||
{ value: "crypto", label: "Cryptocurrency" },
|
||||
];
|
||||
const allowed = meta?.allowed_methods;
|
||||
const methods = allowed ? ALL_METHODS.filter(m => allowed.includes(m.value as any)) : ALL_METHODS;
|
||||
---
|
||||
|
||||
<section
|
||||
class="pw-express"
|
||||
data-slug={service_slug}
|
||||
data-vertical={vertical}
|
||||
data-kind={kind}
|
||||
data-price-cents={meta?.price_cents ?? ""}
|
||||
>
|
||||
<OrderPriceBanner
|
||||
priceCents={meta?.price_cents}
|
||||
govFeeLabel={meta?.gov_fee_label}
|
||||
serviceSlug={service_slug}
|
||||
note={kind === "trucking"
|
||||
? "Pay now and we'll email you a short form to finish the details. Choose card, ACH, or PayPal at payment."
|
||||
: kind === "healthcare"
|
||||
? "Pay now and we'll email you a quick form to finish the details. Choose card, ACH, or PayPal at payment."
|
||||
: "Choose card, ACH, or PayPal at payment."}
|
||||
/>
|
||||
|
||||
<form class="pw-express-form" id="pw-express-form" novalidate>
|
||||
<h2 class="pw-express-h2">Start your {serviceName}</h2>
|
||||
<p class="pw-express-sub">
|
||||
Just a few details to get started — you'll complete the full intake form
|
||||
after payment (we'll email you a link).
|
||||
</p>
|
||||
|
||||
{kind === "trucking" && (
|
||||
<div class="pw-express-grid">
|
||||
<label class="pw-xf">Business name <span class="pw-req">*</span>
|
||||
<input type="text" id="xf-legal-name" autocomplete="organization" required placeholder="As registered with FMCSA" /></label>
|
||||
<label class="pw-xf">USDOT number <span class="pw-req">*</span>
|
||||
<input type="text" id="xf-dot" inputmode="numeric" required placeholder="e.g. 1234567" /></label>
|
||||
<label class="pw-xf">Email <span class="pw-req">*</span>
|
||||
<input type="email" id="xf-email" autocomplete="email" required placeholder="you@company.com" /></label>
|
||||
<label class="pw-xf">Phone
|
||||
<input type="tel" id="xf-phone" autocomplete="tel" placeholder="(555) 123-4567" /></label>
|
||||
<label class="pw-xf">Base state <span class="pw-req">*</span>
|
||||
<select id="xf-base-state" required>
|
||||
<option value="">Select…</option>
|
||||
{["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC"].map(s => <option value={s}>{s}</option>)}
|
||||
</select></label>
|
||||
<label class="pw-xf">Power units (trucks) <span class="pw-req">*</span>
|
||||
<input type="number" id="xf-power-units" min="0" required placeholder="e.g. 5" /></label>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{kind === "healthcare" && (
|
||||
<div class="pw-express-grid">
|
||||
<label class="pw-xf">Provider / practice name <span class="pw-req">*</span>
|
||||
<input type="text" id="xf-provider-name" autocomplete="organization" required placeholder="As registered in NPPES" /></label>
|
||||
<label class="pw-xf">NPI number <span class="pw-req">*</span>
|
||||
<input type="text" id="xf-npi" inputmode="numeric" maxlength="10" required placeholder="e.g. 1234567893" />
|
||||
<span id="xf-npi-status" class="pw-xf-status" hidden></span></label>
|
||||
<label class="pw-xf">Email <span class="pw-req">*</span>
|
||||
<input type="email" id="xf-email" autocomplete="email" required placeholder="you@practice.com" /></label>
|
||||
<label class="pw-xf">Phone
|
||||
<input type="tel" id="xf-phone" autocomplete="tel" placeholder="(555) 123-4567" /></label>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{kind === "generic" && (
|
||||
<div class="pw-express-grid">
|
||||
<label class="pw-xf">Business / legal name <span class="pw-req">*</span>
|
||||
<input type="text" id="xf-legal-name" autocomplete="organization" required placeholder="Your legal entity name" /></label>
|
||||
<label class="pw-xf">Email <span class="pw-req">*</span>
|
||||
<input type="email" id="xf-email" autocomplete="email" required placeholder="you@company.com" /></label>
|
||||
<label class="pw-xf">Phone
|
||||
<input type="tel" id="xf-phone" autocomplete="tel" placeholder="(555) 123-4567" /></label>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<label class="pw-xf pw-xf-method">Payment method
|
||||
<select id="xf-pay-method">
|
||||
{methods.map(m => <option value={m.value}>{m.label}</option>)}
|
||||
</select></label>
|
||||
|
||||
<div id="pw-express-error" class="pw-express-error" hidden></div>
|
||||
|
||||
<button type="submit" id="pw-express-submit" class="pw-express-btn">
|
||||
Continue to payment{meta ? ` — ${intervalLabel ? `${formatUSD(meta.price_cents)}/${intervalLabel}` : formatUSD(meta.price_cents)}` : ""} →
|
||||
</button>
|
||||
<p class="pw-express-fineprint">
|
||||
Secure checkout by Stripe. You'll review the total before you pay.
|
||||
{kind !== "generic" && " The full intake form is emailed to you after payment."}
|
||||
</p>
|
||||
|
||||
<CheckoutTrustBand variant="compact" vertical={vertical} />
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<style>
|
||||
.pw-express { max-width: 820px; margin: 0 auto; }
|
||||
.pw-express-form {
|
||||
background: #fff; border: 1px solid #e2e8f0; border-radius: 12px;
|
||||
padding: 1.5rem 1.5rem 1.75rem; margin-top: 0.5rem;
|
||||
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.06);
|
||||
}
|
||||
.pw-express-h2 { margin: 0 0 0.35rem; color: var(--pw-navy, #1a2744); font-size: 1.35rem; }
|
||||
.pw-express-sub { margin: 0 0 1.25rem; color: var(--pw-muted, #64748b); font-size: 0.95rem; line-height: 1.5; }
|
||||
.pw-express-grid {
|
||||
display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem 1.1rem;
|
||||
}
|
||||
.pw-xf { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.85rem; font-weight: 600; color: #334155; }
|
||||
.pw-xf input, .pw-xf select {
|
||||
padding: 0.6rem 0.7rem; border: 1px solid #cbd5e1; border-radius: 7px;
|
||||
font-size: 0.95rem; font-weight: 400; color: #0f172a; background: #fff;
|
||||
}
|
||||
.pw-xf input:focus, .pw-xf select:focus { outline: 2px solid #2563eb; outline-offset: 0; border-color: #2563eb; }
|
||||
.pw-req { color: #dc2626; }
|
||||
.pw-xf-status { font-size: 0.78rem; font-weight: 500; color: #059669; }
|
||||
.pw-xf-status[data-state="error"] { color: #b45309; }
|
||||
.pw-xf-method { margin-top: 1.1rem; max-width: 22rem; }
|
||||
.pw-express-error {
|
||||
margin: 1rem 0 0; padding: 0.7rem 0.9rem; border-radius: 8px;
|
||||
background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; font-size: 0.88rem;
|
||||
}
|
||||
.pw-express-btn {
|
||||
margin-top: 1.25rem; width: 100%; padding: 0.95rem 1.4rem; border: 0;
|
||||
border-radius: 9px; background: #059669; color: #fff; font-weight: 800;
|
||||
font-size: 1.05rem; cursor: pointer; transition: background 0.15s;
|
||||
}
|
||||
.pw-express-btn:hover { background: #047857; }
|
||||
.pw-express-btn:disabled { opacity: 0.6; cursor: not-allowed; }
|
||||
.pw-express-fineprint { margin: 0.7rem 0 0; text-align: center; color: #94a3b8; font-size: 0.78rem; line-height: 1.5; }
|
||||
@media (max-width: 560px) {
|
||||
.pw-express-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
// ── ExpressCheckout client logic ────────────────────────────────────────
|
||||
const root = document.querySelector<HTMLElement>(".pw-express");
|
||||
if (root) {
|
||||
const slug = root.dataset.slug!;
|
||||
const kind = root.dataset.kind!;
|
||||
const API = (window as any).__PW_API || "";
|
||||
const form = document.getElementById("pw-express-form") as HTMLFormElement;
|
||||
const errBox = document.getElementById("pw-express-error")!;
|
||||
const submitBtn = document.getElementById("pw-express-submit") as HTMLButtonElement;
|
||||
const params = new URLSearchParams(location.search);
|
||||
|
||||
const $ = (id: string) => document.getElementById(id) as HTMLInputElement | HTMLSelectElement | null;
|
||||
const val = (id: string) => ($(id)?.value || "").trim();
|
||||
const setVal = (id: string, v: string) => { const el = $(id); if (el && !el.value && v) el.value = v; };
|
||||
|
||||
// ── Public-records prefill (same sources the Wizard uses) ──────────────
|
||||
async function prefill() {
|
||||
if (kind === "trucking") {
|
||||
const dot = (params.get("dot") || "").replace(/\D/g, "");
|
||||
if (dot) {
|
||||
setVal("xf-dot", dot);
|
||||
try {
|
||||
const r = await fetch(`${API}/api/v1/dot/census?dot=${dot}`);
|
||||
if (r.ok) {
|
||||
const c = await r.json();
|
||||
setVal("xf-legal-name", c.legal_name || "");
|
||||
setVal("xf-email", (c.email || "").toLowerCase());
|
||||
setVal("xf-phone", c.telephone || "");
|
||||
setVal("xf-base-state", c.phy_state || "");
|
||||
setVal("xf-power-units", c.power_units != null ? String(c.power_units) : "");
|
||||
}
|
||||
} catch { /* prefill is best-effort */ }
|
||||
}
|
||||
} else if (kind === "healthcare") {
|
||||
const npi = (params.get("npi") || "").replace(/\D/g, "").slice(0, 10);
|
||||
if (npi) {
|
||||
setVal("xf-npi", npi);
|
||||
await npiLookup(npi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function npiLookup(npi: string) {
|
||||
const status = document.getElementById("xf-npi-status");
|
||||
if (status) { status.hidden = false; status.removeAttribute("data-state"); status.textContent = "Looking up NPI…"; }
|
||||
try {
|
||||
const r = await fetch(`${API}/api/v1/npi/lookup?npi=${encodeURIComponent(npi)}`, { headers: { Accept: "application/json" } });
|
||||
if (r.ok) {
|
||||
const d = await r.json();
|
||||
const nm = d.provider_name || d.organization_name || d.name || "";
|
||||
setVal("xf-provider-name", nm);
|
||||
if (status) { status.removeAttribute("data-state"); status.textContent = nm ? `\u2713 ${nm}` : "Found"; }
|
||||
} else {
|
||||
if (status) { status.setAttribute("data-state", "error"); status.textContent = "NPI not found — you can still continue"; }
|
||||
}
|
||||
} catch {
|
||||
if (status) { status.hidden = true; }
|
||||
}
|
||||
}
|
||||
|
||||
// Re-run NPI lookup when the user edits the field manually.
|
||||
if (kind === "healthcare") {
|
||||
const npiEl = document.getElementById("xf-npi") as HTMLInputElement | null;
|
||||
npiEl?.addEventListener("blur", () => {
|
||||
const n = (npiEl.value || "").replace(/\D/g, "").slice(0, 10);
|
||||
if (n.length === 10) npiLookup(n);
|
||||
});
|
||||
}
|
||||
|
||||
function collect(): { ok: boolean; email: string; name: string; phone: string; intake: Record<string, any>; missing: string[] } {
|
||||
const email = val("xf-email");
|
||||
const phone = val("xf-phone");
|
||||
const missing: string[] = [];
|
||||
let name = "", intake: Record<string, any> = {};
|
||||
if (kind === "trucking") {
|
||||
name = val("xf-legal-name");
|
||||
intake = {
|
||||
legal_name: name, entity_name: name, dot_number: val("xf-dot").replace(/\D/g, ""),
|
||||
email, phone, base_state: val("xf-base-state"), power_units: val("xf-power-units"),
|
||||
};
|
||||
if (!name) missing.push("Business name");
|
||||
if (!intake.dot_number) missing.push("USDOT number");
|
||||
if (!email) missing.push("Email");
|
||||
if (!intake.base_state) missing.push("Base state");
|
||||
if (!intake.power_units) missing.push("Power units");
|
||||
} else if (kind === "healthcare") {
|
||||
name = val("xf-provider-name");
|
||||
intake = {
|
||||
provider_name: name, organization_name: name, npi: val("xf-npi").replace(/\D/g, ""),
|
||||
email, phone,
|
||||
};
|
||||
if (!name) missing.push("Provider / practice name");
|
||||
if (!intake.npi || intake.npi.length !== 10) missing.push("Valid 10-digit NPI");
|
||||
if (!email) missing.push("Email");
|
||||
} else {
|
||||
name = val("xf-legal-name");
|
||||
intake = { legal_name: name, entity_name: name, email, phone };
|
||||
if (!name) missing.push("Business / legal name");
|
||||
if (!email) missing.push("Email");
|
||||
}
|
||||
if (email && !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) missing.push("Valid email address");
|
||||
return { ok: missing.length === 0, email, name, phone, intake, missing };
|
||||
}
|
||||
|
||||
form.addEventListener("submit", async (e) => {
|
||||
e.preventDefault();
|
||||
errBox.hidden = true;
|
||||
const c = collect();
|
||||
if (!c.ok) {
|
||||
errBox.hidden = false;
|
||||
errBox.textContent = "Please complete: " + c.missing.join(", ") + ".";
|
||||
return;
|
||||
}
|
||||
submitBtn.disabled = true;
|
||||
const origLabel = submitBtn.innerHTML;
|
||||
submitBtn.textContent = "Starting secure checkout…";
|
||||
try {
|
||||
const code = (params.get("code") || "").toUpperCase().trim();
|
||||
// 1) Create a single-service "batch of one" — this path does NOT gate
|
||||
// Stripe checkout on intake_data_validated, so we can charge first
|
||||
// and collect the full intake after payment.
|
||||
const createResp = await fetch(`${API}/api/v1/compliance-orders/batch`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
services: [slug],
|
||||
customer_email: c.email,
|
||||
customer_name: c.name,
|
||||
customer_phone: c.phone || undefined,
|
||||
intake_data: c.intake,
|
||||
discount_code: code || undefined,
|
||||
}),
|
||||
});
|
||||
if (!createResp.ok) {
|
||||
const err = await createResp.json().catch(() => ({}));
|
||||
throw new Error(err.error || `Could not create order (HTTP ${createResp.status})`);
|
||||
}
|
||||
const created = await createResp.json();
|
||||
const batchId = created.batch_id;
|
||||
if (!batchId) throw new Error("Order created but no batch id returned.");
|
||||
|
||||
// 2) Start checkout for the batch.
|
||||
const paymentMethod = ($("xf-pay-method") as HTMLSelectElement)?.value || "card";
|
||||
const checkoutResp = await fetch(`${API}/api/v1/checkout/create-session`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ order_id: batchId, order_type: "compliance_batch", payment_method: paymentMethod }),
|
||||
});
|
||||
if (!checkoutResp.ok) throw new Error(`Could not start checkout (HTTP ${checkoutResp.status})`);
|
||||
const { checkout_url } = await checkoutResp.json();
|
||||
if (!checkout_url) throw new Error("No checkout URL returned.");
|
||||
// Fire a funnel event so we can see express conversions in Umami.
|
||||
try { (window as any).pwTrack?.("express-checkout-start", { slug, method: paymentMethod }); } catch {}
|
||||
window.location.href = checkout_url;
|
||||
} catch (e: any) {
|
||||
errBox.hidden = false;
|
||||
errBox.textContent = e?.message || "Could not start checkout. Please try again or call (888) 411-0383.";
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.innerHTML = origLabel;
|
||||
}
|
||||
});
|
||||
|
||||
prefill();
|
||||
}
|
||||
</script>
|
||||
157
site/src/components/intake/OrderFlow.astro
Normal file
157
site/src/components/intake/OrderFlow.astro
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
---
|
||||
/**
|
||||
* OrderFlow — the single source of truth for every /order/<slug> page.
|
||||
*
|
||||
* Replaces ~50 near-identical thin Wizard wrappers. It picks the right flow:
|
||||
*
|
||||
* 1. PAYMENT-FIRST (default for trucking + healthcare): show ExpressCheckout
|
||||
* (price + minimal prefillable fields + "Continue to payment") at the TOP,
|
||||
* with the marketing hero BELOW it. The full intake is collected after
|
||||
* payment via the per-service email link the webhook already sends.
|
||||
*
|
||||
* 2. WIZARD-FIRST (telecom / corporate, express=false): these have rich
|
||||
* pre-payment intake the API genuinely needs up front (FCC 499 conditional
|
||||
* fields, de minimis, LNPA) and no public-records prefill, so the full
|
||||
* Wizard stays first. Hero stays on top as before.
|
||||
*
|
||||
* 3. PAID-INTAKE re-entry (?order=CO-xxx or ?token=JWT): ALWAYS render the
|
||||
* full Wizard (it self-detects paid-intake mode, strips the payment step,
|
||||
* and hides the price). This is where the post-payment email lands so the
|
||||
* customer finishes the details. Detected client-side; both the express UI
|
||||
* and the wizard are rendered, and a tiny inline script shows the right one
|
||||
* (avoids a server round-trip / flash since Astro is static-built).
|
||||
*/
|
||||
import VerticalOrderHeader from "../VerticalOrderHeader.astro";
|
||||
import Wizard from "./Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../TaxDeductibilityNotice.astro";
|
||||
import TruckingValueNotice from "../TruckingValueNotice.astro";
|
||||
import ExpressCheckout from "./ExpressCheckout.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, slugVertical } from "../../lib/intake_manifest";
|
||||
|
||||
export interface Props {
|
||||
slug: string;
|
||||
/** Human title + description for the intro + <Base>. */
|
||||
title?: string;
|
||||
description?: string;
|
||||
/** Override the service display name passed to ExpressCheckout. */
|
||||
name?: string;
|
||||
/** Fallback step list when the manifest has none. */
|
||||
fallbackSteps?: string[];
|
||||
/**
|
||||
* Force the flow. Default: trucking + healthcare = payment-first ("express"),
|
||||
* telecom + corporate = wizard-first ("wizard"). Pages can override.
|
||||
*/
|
||||
flow?: "express" | "wizard";
|
||||
/** Which value-notice to show below the hero. */
|
||||
notice?: "tax" | "trucking" | "none";
|
||||
}
|
||||
|
||||
const {
|
||||
slug,
|
||||
title,
|
||||
description,
|
||||
name,
|
||||
fallbackSteps,
|
||||
flow,
|
||||
notice,
|
||||
} = Astro.props;
|
||||
|
||||
const meta = SERVICE_META[slug];
|
||||
const steps = INTAKE_MANIFEST[slug] ?? fallbackSteps ?? ["review", "payment"];
|
||||
const vertical = slugVertical(slug) ?? "telecom";
|
||||
const displayName = name || meta?.name || slug;
|
||||
const introTitle = title || (meta ? meta.name : "Order");
|
||||
|
||||
// Default flow per vertical. Trucking + healthcare go payment-first because they
|
||||
// prefill from public records (DOT census / NPPES) and the rest of the intake
|
||||
// can be finished after payment. Telecom + corporate keep the Wizard first.
|
||||
const resolvedFlow: "express" | "wizard" =
|
||||
flow ?? (vertical === "trucking" || vertical === "healthcare" ? "express" : "wizard");
|
||||
|
||||
// Default notice per vertical (matches the previous per-page choices).
|
||||
const resolvedNotice: "tax" | "trucking" | "none" =
|
||||
notice ?? (vertical === "trucking"
|
||||
? (slug.startsWith("dot-") || slug === "state-trucking-bundle" || slug === "state-dot-registration"
|
||||
|| slug === "intrastate-authority" || slug === "mc-authority" || slug === "boc3-filing"
|
||||
|| slug === "osow-permit" || slug === "dot-audit-prep"
|
||||
? "tax" : "trucking")
|
||||
: "none");
|
||||
---
|
||||
|
||||
<main class="pw-order-main" data-flow={resolvedFlow}>
|
||||
{resolvedFlow === "express" ? (
|
||||
<>
|
||||
{/* PAYMENT-FIRST: express checkout on top, hero + details below. */}
|
||||
<section class="pw-order-intro">
|
||||
<h1>{introTitle}</h1>
|
||||
{description && <p class="pw-desc">{description}</p>}
|
||||
</section>
|
||||
|
||||
<div id="pw-express-region">
|
||||
<ExpressCheckout service_slug={slug} name={displayName} />
|
||||
</div>
|
||||
|
||||
{/* Marketing hero + value notice moved BELOW the CTA. */}
|
||||
<div class="pw-below-fold">
|
||||
<VerticalOrderHeader vertical={vertical} />
|
||||
{resolvedNotice === "tax" && <TaxDeductibilityNotice />}
|
||||
{resolvedNotice === "trucking" && <TruckingValueNotice slug={slug} />}
|
||||
</div>
|
||||
|
||||
{/* PAID-INTAKE re-entry: full wizard, hidden until ?order=/?token= detected. */}
|
||||
<div id="pw-wizard-region" hidden>
|
||||
<Wizard service_slug={slug} steps={steps} title={displayName} />
|
||||
</div>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
{/* WIZARD-FIRST (telecom / corporate). */}
|
||||
<section class="pw-order-intro">
|
||||
<h1>{introTitle}</h1>
|
||||
{description && <p class="pw-desc">{description}</p>}
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical={vertical} />
|
||||
{resolvedNotice === "tax" && <TaxDeductibilityNotice />}
|
||||
{resolvedNotice === "trucking" && <TruckingValueNotice slug={slug} />}
|
||||
|
||||
<Wizard service_slug={slug} steps={steps} title={displayName} />
|
||||
</>
|
||||
)}
|
||||
|
||||
<slot />
|
||||
</main>
|
||||
|
||||
<script>
|
||||
// In paid-intake re-entry (?order=CO-xxx or ?token=JWT), the customer arrived
|
||||
// from the post-payment "Complete Your Intake Form" email. Swap the express
|
||||
// CTA for the full Wizard so they finish the details. Only relevant on
|
||||
// express-flow pages (wizard-flow pages already render the Wizard first; the
|
||||
// Wizard itself strips the payment step + price in paid-intake mode).
|
||||
(function () {
|
||||
const main = document.querySelector<HTMLElement>(".pw-order-main");
|
||||
if (!main || main.dataset.flow !== "express") return;
|
||||
const p = new URLSearchParams(location.search);
|
||||
const paidIntake = p.has("order") || p.has("token");
|
||||
if (!paidIntake) return;
|
||||
const express = document.getElementById("pw-express-region");
|
||||
const below = main.querySelector<HTMLElement>(".pw-below-fold");
|
||||
const wizard = document.getElementById("pw-wizard-region");
|
||||
if (express) express.hidden = true;
|
||||
if (below) below.hidden = true;
|
||||
if (wizard) wizard.hidden = false;
|
||||
})();
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.pw-order-main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.25rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
.pw-below-fold { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid #eef2f7; }
|
||||
.pw-below-fold::before {
|
||||
content: "Why Performance West";
|
||||
display: block; font-size: 0.75rem; font-weight: 800; letter-spacing: 0.08em;
|
||||
text-transform: uppercase; color: #94a3b8; margin-bottom: 1rem; text-align: center;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "bdc-broadband";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Availability data only (no voice subscription). For broadband-focused ISPs and fixed wireless providers.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "bdc-filing";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Both BDC blocks in one order — broadband deployment + voice subscription. For carriers with both.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "bdc-voice";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Voice subscriber counts only — the part of the legacy Form 477 that now files through BDC. For VoIP resellers + CLECs.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "boc3-filing";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Designate a process agent in all 48 states plus DC.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ca-mcp-carb";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "California Motor Carrier Permit (MCP) plus CARB Clean Truck Check compliance for carriers operating in California.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "calea-ssi";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "System Security and Integrity plan required of every common carrier under 47 USC § 229 / 47 CFR § 1.20003. Kept internally, provided to DOJ on subpoena.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "cdr-analysis";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Classified traffic study from your CDRs — feeds the 499-A with actual interstate/international percentages instead of the 64.9% safe harbor.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,35 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "clia-renewal";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Renew your CLIA laboratory certificate with CMS before it expires. CLIA certificates run on a 2-year cycle; an expired certificate stops you from legally performing or billing for lab testing.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "cores-frn-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Register your carrier in FCC CORES and obtain your FRN. Required before any other FCC filing.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "cpni-certification";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "47 CFR § 64.2009 annual CPNI certification filed at FCC ECFS docket 06-36. Due March 1.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Always hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ct-highway-use-fee";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Connecticut Highway Use Fee registration for heavy multi-unit carriers operating in Connecticut.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "dc-agent";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Your required D.C. registered agent for service of process (47 CFR § 413). Uses Northwest Registered Agent wholesale.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="corporate" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "dot-audit-prep";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Prepare for your 18-month FMCSA safety audit.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "dot-drug-alcohol";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Consortium enrollment, written policy, and DER designation.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "dot-full-compliance";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "MCS-150 + BOC-3 + UCR + Drug & Alcohol + Audit Prep.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "dot-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Register a new USDOT number with FMCSA.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "fcc-499-initial";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "New carrier registration with USAC — obtain your Filer ID (812xxx) and unlock all future 499-A filings.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "fcc-499a-499q";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Annual 499-A plus the four quarterly 499-Q filings — one bundle, full year covered.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "fcc-499a";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Annual Telecommunications Reporting Worksheet. Due April 1 for the prior year's revenue.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "fcc-63-11-notification";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "47 CFR § 63.11 notification filed with the FCC International Bureau. Required when U.S. carriers are affiliated with a foreign carrier serving the same route.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "fcc-compliance-checkup";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Diagnostic check — CORES, RMD, STIR/SHAKEN, CPNI, 499-A status. No filing, just a report.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "fcc-full-compliance";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "RMD + CPNI + STIR/SHAKEN + 499-A + 499-Q in one order. Every annual filing, 15% bundle discount.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
// URL param ?multi=1 selects the multi-state discounted SKU.
|
||||
const isMulti = Astro.url.searchParams.get("multi") === "1";
|
||||
const slug = isMulti ? "foreign-qualification-multi" : "foreign-qualification-single";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = "Foreign Qualification (Certificate of Authority)";
|
||||
const description =
|
||||
|
|
@ -18,49 +15,32 @@ const description =
|
|||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{title}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
|
||||
{!isMulti && (
|
||||
<p class="pw-multi-cta">
|
||||
Registering in multiple states?
|
||||
<a href="/order/foreign-qualification?multi=1">
|
||||
Switch to multi-state pricing ($99/state)
|
||||
</a>
|
||||
</p>
|
||||
)}
|
||||
{isMulti && (
|
||||
<p class="pw-multi-cta">
|
||||
Only need one state?
|
||||
<a href="/order/foreign-qualification">
|
||||
Switch to single-state pricing ($149)
|
||||
</a>
|
||||
</p>
|
||||
)}
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="corporate" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "foreign_qual", "review", "payment"]} title={title} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow
|
||||
slug={slug}
|
||||
title={title}
|
||||
description={description}
|
||||
fallbackSteps={["entity", "foreign_qual", "review", "payment"]}
|
||||
>
|
||||
{!isMulti && (
|
||||
<p class="pw-multi-cta">
|
||||
Registering in multiple states?
|
||||
<a href="/order/foreign-qualification?multi=1">
|
||||
Switch to multi-state pricing ($99/state)
|
||||
</a>
|
||||
</p>
|
||||
)}
|
||||
{isMulti && (
|
||||
<p class="pw-multi-cta">
|
||||
Only need one state?
|
||||
<a href="/order/foreign-qualification">
|
||||
Switch to single-state pricing ($149)
|
||||
</a>
|
||||
</p>
|
||||
)}
|
||||
</OrderFlow>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.5rem; }
|
||||
.pw-price-note { font-size: 0.9rem; font-weight: 400; color: #64748b; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
.pw-multi-cta { font-size: 0.9rem; color: #475569; margin-top: 0.5rem; }
|
||||
.pw-multi-cta { font-size: 0.9rem; color: #475569; margin-top: 1rem; }
|
||||
.pw-multi-cta a { color: #2563eb; text-decoration: underline; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "hazmat-phmsa";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "PHMSA hazardous-materials registration for carriers transporting placardable quantities of hazmat.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ifta-application";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "International Fuel Tax Agreement (IFTA) license and decals — one fuel-tax credential covering all your operating jurisdictions.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ifta-quarterly";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Quarterly IFTA fuel-tax return preparation and filing through your base state.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "intrastate-authority";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Intrastate operating authority application for carriers hauling for-hire within their home state.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "irp-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Apportioned (IRP) registration for interstate carriers — we file with your base state and obtain your apportioned plates and cab cards.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ky-kyu-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Kentucky KYU weight-distance tax license for carriers operating in Kentucky.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "mc-authority";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Apply for common or contract carrier operating authority.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "mcs150-update";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "FMCSA biennial update of company profile, fleet size, and mileage.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "medicare-enrollment";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Complete your Medicare enrollment in PECOS (CMS-855), including taxonomy, practice location, and authorized official.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,43 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "new-carrier-bundle";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Start-to-finish for a brand-new VoIP carrier: FRN + 499 Initial + RMD + CPNI + CALEA SSI. Everything you need to legally start billing customers.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "nm-weight-distance";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "New Mexico Weight-Distance Tax permit and account setup.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "npi-reactivation";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Reactivate a deactivated NPI in NPPES so you can resume billing, with a full record re-certification.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "npi-revalidation";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Prepare and file your Medicare revalidation in CMS PECOS. Revalidation is required every 5 years; missing it deactivates your billing privileges.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "nppes-update";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Update and re-attest your NPPES record. CMS requires updates within 30 days of any change.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ny-hut-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "New York Highway Use Tax (HUT) registration and decal for carriers operating in New York.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ocn-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Obtain an Operating Company Number from NECA. Required for STIR/SHAKEN signing authority and direct numbering access.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "oig-sam-screening";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Monthly OIG LEIE and SAM exclusion screening for you and your staff, with an audit-ready compliance certificate each month. $79/month, cancel anytime.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "or-weight-mile-tax";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Oregon Weight-Mile Tax enrollment and account setup for carriers operating in Oregon.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "osow-permit";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Oversize / Overweight (OS/OW) trip permit acquisition for non-standard loads.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "provider-compliance-bundle";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Annual provider compliance bundle: revalidation monitoring & filing, NPPES upkeep, and your first OIG/SAM exclusion screening in one package.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="healthcare" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["npi-intake", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Hide price + tax on intake pages — if the user is here, they've
|
||||
// already paid via the order page or batch checkout.
|
||||
const price = document.getElementById("pw-price");
|
||||
const tax = document.getElementById("pw-tax-notice");
|
||||
if (price) price.style.display = "none";
|
||||
if (tax) tax.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["npi-intake", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,43 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "rmd-filing";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Robocall Mitigation Database filing. Annual recertification required March 1 (March 2 in 2026).";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
// Always hide price + tax + FCC fee note on intake pages — if the user
|
||||
// is here, they've already paid via the order page or batch checkout.
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
const f = document.querySelector(".pw-order-intro p[style*='fefce8']") as HTMLElement;
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
if (f) f.style.display = "none";
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "state-dot-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Intrastate (state) DOT number registration for carriers operating within a single state.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "state-emissions";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "State clean-truck / emissions compliance (NY, CO, MD, NJ, MA Advanced Clean Trucks programs) — fleet reporting and certification.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "state-trucking-bundle";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "State Compliance Bundle — IRP, IFTA, state weight-distance taxes, and state permits handled together for one price.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TaxDeductibilityNotice />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import TaxDeductibilityNotice from "../../components/TaxDeductibilityNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META, formatUSD } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "stir-shaken";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Posture update + RMD refresh + STI-CA vendor coordination. For carriers moving from robocall-mitigation to partial implementation.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="telecom" />
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<script>
|
||||
if (new URLSearchParams(window.location.search).has("token")) {
|
||||
const p = document.getElementById("pw-price");
|
||||
const t = document.getElementById("pw-tax-notice");
|
||||
if (p) p.style.display = "none";
|
||||
if (t) t.style.display = "none";
|
||||
}
|
||||
</script>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,39 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "ucr-registration";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Unified Carrier Registration for interstate carriers.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["entity", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,14 @@
|
|||
---
|
||||
import Base from "../../layouts/Base.astro";
|
||||
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
||||
import Wizard from "../../components/intake/Wizard.astro";
|
||||
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
||||
|
||||
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
||||
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
||||
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
||||
import { SERVICE_META } from "../../lib/intake_manifest";
|
||||
|
||||
const slug = "usdot-reactivation";
|
||||
const steps = INTAKE_MANIFEST[slug];
|
||||
const meta = SERVICE_META[slug];
|
||||
const title = meta ? `Order ${meta.name}` : "Order";
|
||||
const description = "Reactivate an inactive or revoked USDOT number and bring your registration back into good standing.";
|
||||
---
|
||||
|
||||
<Base title={title} description={description}>
|
||||
<main>
|
||||
<section class="pw-order-intro">
|
||||
<h1>{meta?.name}</h1>
|
||||
<p class="pw-desc">{description}</p>
|
||||
</section>
|
||||
|
||||
<VerticalOrderHeader vertical="trucking" />
|
||||
|
||||
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
||||
<TruckingValueNotice slug={slug} />
|
||||
|
||||
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ Send reset link
|
|||
s1.async=true;
|
||||
s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph';
|
||||
s1.charset='UTF-8';
|
||||
s1.setAttribute('crossorigin','*');
|
||||
s0.parentNode.insertBefore(s1,s0);
|
||||
})();
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue