@carrierllc/mcp 0.11.17 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/{chunk-EHGZRVSO.js → chunk-J52VP7E7.js} +14 -2
  2. package/dist/chunk-J52VP7E7.js.map +1 -0
  3. package/dist/cli.js +13 -5
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/package.json +1 -1
  7. package/plugin/carrier/agents/carrier-storefront-builder.md +3 -3
  8. package/plugin/carrier/skills/storefront/SKILL.md +2 -2
  9. package/templates/storefront/src/app/activate/[orderId]/ActivateClient.tsx +145 -14
  10. package/templates/storefront/src/app/activate/[orderId]/page.tsx +1 -1
  11. package/templates/storefront/src/app/api/checkout/guest/route.ts +72 -9
  12. package/templates/storefront/src/app/api/orders/[orderId]/cancel/route.ts +33 -0
  13. package/templates/storefront/src/app/api/orders/[orderId]/top-up-options/route.ts +28 -0
  14. package/templates/storefront/src/app/api/orders/[orderId]/usage/route.ts +25 -0
  15. package/templates/storefront/src/app/api/profile/phone/route.ts +1 -1
  16. package/templates/storefront/src/app/checkout/[templateId]/CheckoutClient.tsx +142 -39
  17. package/templates/storefront/src/app/checkout/success/CheckoutSuccessClient.tsx +1 -1
  18. package/templates/storefront/src/app/checkout/success/page.tsx +1 -1
  19. package/templates/storefront/src/app/dashboard/EsimControls.tsx +293 -0
  20. package/templates/storefront/src/app/dashboard/page.tsx +12 -1
  21. package/templates/storefront/src/app/shop/ShopClient.tsx +126 -5
  22. package/templates/storefront/src/app/sign-up/[[...sign-up]]/StorefrontSignUpClient.tsx +1 -1
  23. package/templates/storefront/src/app/sign-up/[[...sign-up]]/page.tsx +1 -1
  24. package/templates/storefront/src/brand.config.ts +19 -0
  25. package/templates/storefront/src/components/checkout/EmbeddedStripeCheckout.tsx +191 -0
  26. package/templates/storefront/src/components/landing/PlanCard.tsx +12 -4
  27. package/templates/storefront/src/lib/checkout-order-claim.ts +68 -4
  28. package/templates/storefront/src/lib/order-route-guard.ts +85 -0
  29. package/templates/storefront/src/middleware.ts +1 -1
  30. package/templates/storefront/src/vendor/carrier/client.ts +86 -1
  31. package/templates/storefront/src/vendor/carrier/types.ts +34 -0
  32. package/templates/storefront/src/vendor/geo/index.ts +45 -0
  33. package/templates/storefront/src/vendor/ui/brand.ts +8 -1
  34. package/dist/chunk-EHGZRVSO.js.map +0 -1
package/dist/cli.js CHANGED
@@ -39,7 +39,7 @@ import {
39
39
  verifyStorefront,
40
40
  walletScreen,
41
41
  which
42
- } from "./chunk-EHGZRVSO.js";
42
+ } from "./chunk-J52VP7E7.js";
43
43
  import {
44
44
  copyTree,
45
45
  exists,
@@ -210,10 +210,8 @@ async function scaffoldStorefront(target, brand) {
210
210
  await copyTree(template, target);
211
211
  await pruneTree(template, target);
212
212
  const subs = [
213
- ["Mango", brand.name],
214
- ["\u{1F96D}", ""]
213
+ ...deriveAccentPaletteSubs(brand.colors.accent, brand.colors.accentDark)
215
214
  ];
216
- subs.push(...deriveAccentPaletteSubs(brand.colors.accent, brand.colors.accentDark));
217
215
  if (brand.colors.bg.toUpperCase() !== "#080C16") subs.push(["#080C16", brand.colors.bg]);
218
216
  if (brand.colors.text.toUpperCase() !== "#F5F1EA") subs.push(["#F5F1EA", brand.colors.text]);
219
217
  await replaceInTree(target, subs);
@@ -236,6 +234,10 @@ async function patchBrandConfig(path, brand) {
236
234
  setField("supportUrl", brand.supportUrl);
237
235
  setField("supportEmail", brand.supportEmail);
238
236
  setField("supportWhatsapp", brand.supportWhatsapp);
237
+ setField("description", brand.description);
238
+ setField("emailFromName", brand.emailFromName);
239
+ setField("emailFromMailbox", brand.emailFromMailbox);
240
+ setField("appUrl", brand.appUrl);
239
241
  setField("accent", brand.colors.accent);
240
242
  setField("accentDark", brand.colors.accentDark);
241
243
  setField("accentLight", deriveAccentLight(brand.colors.accent));
@@ -4266,10 +4268,13 @@ async function promptBrand(seed) {
4266
4268
  name,
4267
4269
  legalName: name,
4268
4270
  tagline: isCarrier ? seed.tagline : `Mobile connectivity by ${name}.`,
4271
+ description: isCarrier ? seed.description : `Mobile data from ${name}. Instant QR activation, no contract.`,
4269
4272
  domain,
4270
4273
  supportEmail,
4271
4274
  supportUrl: `https://${domain}/help`,
4272
4275
  supportWhatsapp: isCarrier ? seed.supportWhatsapp : "",
4276
+ emailFromName: name,
4277
+ appUrl: `https://${domain}`,
4273
4278
  social: isCarrier ? seed.social : {},
4274
4279
  colors: { ...seed.colors, accent, accentDark }
4275
4280
  };
@@ -5032,7 +5037,7 @@ program.command("dash [domain]").description(`Render a status screen in the term
5032
5037
  );
5033
5038
  });
5034
5039
  var site = program.command("site").description("Scaffold and deploy a white-labeled storefront.");
5035
- site.command("create [dir]").description("Scaffold a white-labeled storefront from the Mango template.").option("--name <name>", "Brand name").option("--domain <domain>", "Domain").option("--accent <hex>", "Accent color").option("--yes", "Carrier defaults, no prompts").action(async (dir, o) => {
5040
+ site.command("create [dir]").description("Scaffold a white-labeled storefront from the bundled template.").option("--name <name>", "Brand name").option("--domain <domain>", "Domain").option("--accent <hex>", "Accent color").option("--yes", "Carrier defaults, no prompts").action(async (dir, o) => {
5036
5041
  header();
5037
5042
  let brand = { ...CARRIER_BRAND };
5038
5043
  if (o.name || o.domain || o.accent) {
@@ -5045,9 +5050,12 @@ site.command("create [dir]").description("Scaffold a white-labeled storefront fr
5045
5050
  domain,
5046
5051
  legalName: o.name ?? brand.legalName,
5047
5052
  tagline: o.name ? `Mobile connectivity by ${o.name}.` : brand.tagline,
5053
+ description: o.name ? `Mobile data from ${o.name}. Instant QR activation, no contract.` : brand.description,
5048
5054
  supportEmail: `support@${domain}`,
5049
5055
  supportUrl: `https://${domain}/help`,
5050
5056
  supportWhatsapp: isCarrier ? brand.supportWhatsapp : "",
5057
+ emailFromName: name,
5058
+ appUrl: `https://${domain}`,
5051
5059
  social: isCarrier ? brand.social : {},
5052
5060
  colors: {
5053
5061
  ...brand.colors,