@cimplify/cli 0.2.8 → 0.3.1
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.
- package/dist/{add-7PTWJV4F.mjs → add-OUMIT4YX.mjs} +10 -10
- package/dist/assets-DMK2QOPD.mjs +208 -0
- package/dist/chunk-42PFJBC6.mjs +5707 -0
- package/dist/{chunk-4SBJVRGM.mjs → chunk-C4M3DXKC.mjs} +3 -1
- package/dist/{chunk-NC3GKHDD.mjs → chunk-D7WMSGKK.mjs} +1 -1
- package/dist/{chunk-NZ4RG62Z.mjs → chunk-I3XQSSOT.mjs} +4 -1
- package/dist/chunk-I6P3I2YJ.mjs +259 -0
- package/dist/{chunk-UPEHLREA.mjs → chunk-IQJ45AK3.mjs} +3 -3
- package/dist/{chunk-JJYWETGA.mjs → chunk-LS2VTSMQ.mjs} +8 -2
- package/dist/{chunk-JOUXICGV.mjs → chunk-MOZQODQS.mjs} +1 -1
- package/dist/{chunk-KPGRCXQY.mjs → chunk-QGBXGDA5.mjs} +5 -5
- package/dist/chunk-RRY3NEZZ.mjs +79 -0
- package/dist/{chunk-L6474RPL.mjs → chunk-RZQTHTXX.mjs} +1 -1
- package/dist/{chunk-4YSOZ6LY.mjs → chunk-YI7UMMM7.mjs} +1 -1
- package/dist/{deploy-6KVOROT3.mjs → deploy-UKOOPJAE.mjs} +8 -82
- package/dist/{dev-AQP6TMYK.mjs → dev-FD4PM3UD.mjs} +5 -5
- package/dist/dispatcher.mjs +34 -22
- package/dist/doctor-AY7VDIJZ.mjs +314 -0
- package/dist/{domains-2ZQ7AG27.mjs → domains-JQMV6GAP.mjs} +5 -5
- package/dist/{env-FDBPGU3W.mjs → env-EVMYQUIK.mjs} +6 -6
- package/dist/explain-QZVAK5I3.mjs +223 -0
- package/dist/introspect-MNTC26UY.mjs +8 -0
- package/dist/{link-P4K2HRXY.mjs → link-X3E4UZBF.mjs} +4 -4
- package/dist/{list-44MLIFI2.mjs → list-TEQ73IR7.mjs} +3 -3
- package/dist/{login-RSKGT6GU.mjs → login-7O7ZXKU3.mjs} +9 -15
- package/dist/{logout-ZFZLSJ32.mjs → logout-DJDINVDF.mjs} +2 -2
- package/dist/{logs-E2AGTDCF.mjs → logs-KUKGEXR2.mjs} +4 -4
- package/dist/{projects-5CJOZ3MT.mjs → projects-364HGWHO.mjs} +13 -11
- package/dist/repo-26N2CHF6.mjs +8 -0
- package/dist/{rollback-36O4NOEL.mjs → rollback-5YALPQXL.mjs} +5 -5
- package/dist/{status-6AT4HF63.mjs → status-W4HW3CX3.mjs} +4 -4
- package/dist/{unlink-5ABCT7B6.mjs → unlink-HIIW57OO.mjs} +2 -2
- package/dist/{update-6KEG7EWK.mjs → update-2DCENLHM.mjs} +7 -7
- package/dist/{whoami-DIJZYZIN.mjs → whoami-LACWBSNL.mjs} +3 -3
- package/package.json +3 -3
- package/templates/storefront-auto/.claude/skills/cimplify-storefront/SKILL.md +145 -0
- package/templates/storefront-auto/.cursor/rules/cimplify-storefront.mdc +25 -0
- package/templates/storefront-auto/.env.example +22 -0
- package/templates/storefront-auto/AGENTS.md +95 -0
- package/templates/storefront-auto/CLAUDE.md +22 -0
- package/templates/storefront-auto/README.md +48 -0
- package/templates/storefront-auto/__tests__/brand.test.ts +4 -0
- package/templates/storefront-auto/__tests__/cart-flow.test.ts +4 -0
- package/templates/storefront-auto/__tests__/contract.test.ts +4 -0
- package/templates/storefront-auto/app/.well-known/ucp/route.ts +65 -0
- package/templates/storefront-auto/app/about/page.tsx +41 -0
- package/templates/storefront-auto/app/accessibility/page.tsx +11 -0
- package/templates/storefront-auto/app/account/addresses/page.tsx +21 -0
- package/templates/storefront-auto/app/account/orders/page.tsx +21 -0
- package/templates/storefront-auto/app/account/page.tsx +22 -0
- package/templates/storefront-auto/app/account/settings/page.tsx +21 -0
- package/templates/storefront-auto/app/cart/page.tsx +9 -0
- package/templates/storefront-auto/app/categories/[slug]/listing-client.tsx +19 -0
- package/templates/storefront-auto/app/categories/[slug]/page.tsx +130 -0
- package/templates/storefront-auto/app/checkout/page.tsx +17 -0
- package/templates/storefront-auto/app/collections/[slug]/listing-client.tsx +20 -0
- package/templates/storefront-auto/app/collections/[slug]/page.tsx +130 -0
- package/templates/storefront-auto/app/contact/contact-form.tsx +109 -0
- package/templates/storefront-auto/app/contact/page.tsx +54 -0
- package/templates/storefront-auto/app/error.tsx +61 -0
- package/templates/storefront-auto/app/faq/page.tsx +46 -0
- package/templates/storefront-auto/app/globals.css +47 -0
- package/templates/storefront-auto/app/layout.tsx +77 -0
- package/templates/storefront-auto/app/llms.txt/route.ts +94 -0
- package/templates/storefront-auto/app/login/page.tsx +17 -0
- package/templates/storefront-auto/app/not-found.tsx +39 -0
- package/templates/storefront-auto/app/opensearch.xml/route.ts +37 -0
- package/templates/storefront-auto/app/orders/[id]/page.tsx +24 -0
- package/templates/storefront-auto/app/page.tsx +94 -0
- package/templates/storefront-auto/app/privacy/page.tsx +44 -0
- package/templates/storefront-auto/app/products/[slug]/page.tsx +165 -0
- package/templates/storefront-auto/app/products/[slug]/product-detail.tsx +70 -0
- package/templates/storefront-auto/app/returns/page.tsx +11 -0
- package/templates/storefront-auto/app/robots.ts +18 -0
- package/templates/storefront-auto/app/search/page.tsx +38 -0
- package/templates/storefront-auto/app/search/search-client.tsx +7 -0
- package/templates/storefront-auto/app/shipping/page.tsx +16 -0
- package/templates/storefront-auto/app/shop/page.tsx +63 -0
- package/templates/storefront-auto/app/shop/shop-client.tsx +32 -0
- package/templates/storefront-auto/app/signup/page.tsx +17 -0
- package/templates/storefront-auto/app/sitemap-page/page.tsx +167 -0
- package/templates/storefront-auto/app/sitemap.ts +59 -0
- package/templates/storefront-auto/app/terms/page.tsx +44 -0
- package/templates/storefront-auto/app/track-order/page.tsx +24 -0
- package/templates/storefront-auto/app/track-order/track-order-form.tsx +69 -0
- package/templates/storefront-auto/components/account-iframe.tsx +13 -0
- package/templates/storefront-auto/components/auto-hero.tsx +85 -0
- package/templates/storefront-auto/components/brand-marquee.tsx +27 -0
- package/templates/storefront-auto/components/cart-drawer.tsx +14 -0
- package/templates/storefront-auto/components/cart-pill.tsx +36 -0
- package/templates/storefront-auto/components/category-grid.tsx +28 -0
- package/templates/storefront-auto/components/category-tiles.tsx +104 -0
- package/templates/storefront-auto/components/collection-strip.tsx +45 -0
- package/templates/storefront-auto/components/feature-hero.tsx +84 -0
- package/templates/storefront-auto/components/fitment-finder.tsx +184 -0
- package/templates/storefront-auto/components/footer.tsx +153 -0
- package/templates/storefront-auto/components/header.tsx +45 -0
- package/templates/storefront-auto/components/hero.tsx +28 -0
- package/templates/storefront-auto/components/nav-link.tsx +20 -0
- package/templates/storefront-auto/components/newsletter.tsx +50 -0
- package/templates/storefront-auto/components/policy-page.tsx +49 -0
- package/templates/storefront-auto/components/promo-banner.tsx +41 -0
- package/templates/storefront-auto/components/providers.tsx +35 -0
- package/templates/storefront-auto/components/section-heading.tsx +37 -0
- package/templates/storefront-auto/components/service-brief.tsx +65 -0
- package/templates/storefront-auto/components/store-product-card.tsx +88 -0
- package/templates/storefront-auto/components/trade-in-cta.tsx +54 -0
- package/templates/storefront-auto/components/trust-bar.tsx +66 -0
- package/templates/storefront-auto/lib/brand.ts +744 -0
- package/templates/storefront-auto/lib/cart.ts +12 -0
- package/templates/storefront-auto/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-auto/next.config.ts +45 -0
- package/templates/storefront-auto/package.json +35 -0
- package/templates/storefront-auto/postcss.config.mjs +7 -0
- package/templates/storefront-auto/tsconfig.json +23 -0
- package/templates/storefront-auto/vitest.config.ts +9 -0
- package/templates/storefront-bakery/.env.example +2 -2
- package/templates/storefront-bakery/README.md +1 -1
- package/templates/storefront-bakery/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-bakery/next.config.ts +3 -0
- package/templates/storefront-bakery/package.json +1 -1
- package/templates/storefront-fashion/.env.example +2 -2
- package/templates/storefront-fashion/README.md +1 -1
- package/templates/storefront-fashion/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-fashion/next.config.ts +3 -0
- package/templates/storefront-fashion/package.json +1 -1
- package/templates/storefront-grocery/.env.example +2 -2
- package/templates/storefront-grocery/README.md +1 -1
- package/templates/storefront-grocery/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-grocery/next.config.ts +3 -0
- package/templates/storefront-grocery/package.json +1 -1
- package/templates/storefront-pharmacy/.claude/skills/cimplify-storefront/SKILL.md +145 -0
- package/templates/storefront-pharmacy/.cursor/rules/cimplify-storefront.mdc +25 -0
- package/templates/storefront-pharmacy/.env.example +22 -0
- package/templates/storefront-pharmacy/AGENTS.md +118 -0
- package/templates/storefront-pharmacy/CLAUDE.md +22 -0
- package/templates/storefront-pharmacy/README.md +87 -0
- package/templates/storefront-pharmacy/__tests__/brand.test.ts +4 -0
- package/templates/storefront-pharmacy/__tests__/cart-flow.test.ts +4 -0
- package/templates/storefront-pharmacy/__tests__/contract.test.ts +4 -0
- package/templates/storefront-pharmacy/app/.well-known/ucp/route.ts +65 -0
- package/templates/storefront-pharmacy/app/about/page.tsx +41 -0
- package/templates/storefront-pharmacy/app/accessibility/page.tsx +11 -0
- package/templates/storefront-pharmacy/app/account/addresses/page.tsx +21 -0
- package/templates/storefront-pharmacy/app/account/orders/page.tsx +21 -0
- package/templates/storefront-pharmacy/app/account/page.tsx +22 -0
- package/templates/storefront-pharmacy/app/account/settings/page.tsx +21 -0
- package/templates/storefront-pharmacy/app/cart/page.tsx +9 -0
- package/templates/storefront-pharmacy/app/categories/[slug]/listing-client.tsx +19 -0
- package/templates/storefront-pharmacy/app/categories/[slug]/page.tsx +130 -0
- package/templates/storefront-pharmacy/app/checkout/page.tsx +17 -0
- package/templates/storefront-pharmacy/app/collections/[slug]/listing-client.tsx +20 -0
- package/templates/storefront-pharmacy/app/collections/[slug]/page.tsx +130 -0
- package/templates/storefront-pharmacy/app/contact/contact-form.tsx +109 -0
- package/templates/storefront-pharmacy/app/contact/page.tsx +54 -0
- package/templates/storefront-pharmacy/app/error.tsx +61 -0
- package/templates/storefront-pharmacy/app/faq/page.tsx +46 -0
- package/templates/storefront-pharmacy/app/globals.css +47 -0
- package/templates/storefront-pharmacy/app/layout.tsx +77 -0
- package/templates/storefront-pharmacy/app/llms.txt/route.ts +94 -0
- package/templates/storefront-pharmacy/app/login/page.tsx +17 -0
- package/templates/storefront-pharmacy/app/not-found.tsx +39 -0
- package/templates/storefront-pharmacy/app/opensearch.xml/route.ts +37 -0
- package/templates/storefront-pharmacy/app/orders/[id]/page.tsx +24 -0
- package/templates/storefront-pharmacy/app/page.tsx +78 -0
- package/templates/storefront-pharmacy/app/privacy/page.tsx +44 -0
- package/templates/storefront-pharmacy/app/products/[slug]/page.tsx +165 -0
- package/templates/storefront-pharmacy/app/products/[slug]/product-detail.tsx +70 -0
- package/templates/storefront-pharmacy/app/returns/page.tsx +11 -0
- package/templates/storefront-pharmacy/app/robots.ts +18 -0
- package/templates/storefront-pharmacy/app/search/page.tsx +38 -0
- package/templates/storefront-pharmacy/app/search/search-client.tsx +7 -0
- package/templates/storefront-pharmacy/app/shipping/page.tsx +16 -0
- package/templates/storefront-pharmacy/app/shop/page.tsx +63 -0
- package/templates/storefront-pharmacy/app/shop/shop-client.tsx +32 -0
- package/templates/storefront-pharmacy/app/signup/page.tsx +17 -0
- package/templates/storefront-pharmacy/app/sitemap-page/page.tsx +167 -0
- package/templates/storefront-pharmacy/app/sitemap.ts +59 -0
- package/templates/storefront-pharmacy/app/terms/page.tsx +44 -0
- package/templates/storefront-pharmacy/app/track-order/page.tsx +24 -0
- package/templates/storefront-pharmacy/app/track-order/track-order-form.tsx +69 -0
- package/templates/storefront-pharmacy/components/account-iframe.tsx +13 -0
- package/templates/storefront-pharmacy/components/brand-marquee.tsx +27 -0
- package/templates/storefront-pharmacy/components/cart-drawer.tsx +14 -0
- package/templates/storefront-pharmacy/components/cart-pill.tsx +36 -0
- package/templates/storefront-pharmacy/components/category-grid.tsx +28 -0
- package/templates/storefront-pharmacy/components/category-tiles.tsx +104 -0
- package/templates/storefront-pharmacy/components/collection-strip.tsx +45 -0
- package/templates/storefront-pharmacy/components/feature-hero.tsx +84 -0
- package/templates/storefront-pharmacy/components/footer.tsx +153 -0
- package/templates/storefront-pharmacy/components/header.tsx +45 -0
- package/templates/storefront-pharmacy/components/health-brief.tsx +65 -0
- package/templates/storefront-pharmacy/components/hero.tsx +28 -0
- package/templates/storefront-pharmacy/components/nav-link.tsx +20 -0
- package/templates/storefront-pharmacy/components/newsletter.tsx +50 -0
- package/templates/storefront-pharmacy/components/pharmacy-hero.tsx +95 -0
- package/templates/storefront-pharmacy/components/policy-page.tsx +49 -0
- package/templates/storefront-pharmacy/components/promo-banner.tsx +41 -0
- package/templates/storefront-pharmacy/components/providers.tsx +35 -0
- package/templates/storefront-pharmacy/components/section-heading.tsx +37 -0
- package/templates/storefront-pharmacy/components/store-product-card.tsx +88 -0
- package/templates/storefront-pharmacy/components/symptom-finder.tsx +108 -0
- package/templates/storefront-pharmacy/components/trade-in-cta.tsx +54 -0
- package/templates/storefront-pharmacy/components/trust-bar.tsx +66 -0
- package/templates/storefront-pharmacy/components/urgent-ctas.tsx +117 -0
- package/templates/storefront-pharmacy/lib/brand.ts +790 -0
- package/templates/storefront-pharmacy/lib/cart.ts +12 -0
- package/templates/storefront-pharmacy/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-pharmacy/next.config.ts +45 -0
- package/templates/storefront-pharmacy/package.json +35 -0
- package/templates/storefront-pharmacy/postcss.config.mjs +7 -0
- package/templates/storefront-pharmacy/tsconfig.json +23 -0
- package/templates/storefront-pharmacy/vitest.config.ts +9 -0
- package/templates/storefront-restaurant/.env.example +2 -2
- package/templates/storefront-restaurant/README.md +1 -1
- package/templates/storefront-restaurant/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-restaurant/next.config.ts +3 -0
- package/templates/storefront-restaurant/package.json +1 -1
- package/templates/storefront-retail/.env.example +2 -2
- package/templates/storefront-retail/README.md +1 -1
- package/templates/storefront-retail/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-retail/next.config.ts +3 -0
- package/templates/storefront-retail/package.json +1 -1
- package/templates/storefront-services/.env.example +2 -2
- package/templates/storefront-services/README.md +1 -1
- package/templates/storefront-services/lib/cimplify-loader.ts +19 -0
- package/templates/storefront-services/next.config.ts +3 -0
- package/templates/storefront-services/package.json +1 -1
- package/dist/chunk-H2HJQGFY.mjs +0 -3911
- package/dist/repo-E6SBKVDG.mjs +0 -8
|
@@ -0,0 +1,790 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand & content configuration — the **single source of truth** for every
|
|
3
|
+
* visible string in this storefront.
|
|
4
|
+
*
|
|
5
|
+
* To rebrand the entire site, edit this file. Every page, component,
|
|
6
|
+
* metadata block, JSON-LD object, sitemap, robots.txt, and llms.txt entry
|
|
7
|
+
* reads from `brand`.
|
|
8
|
+
*
|
|
9
|
+
* Schema is intentionally generous: optional fields (tradeIn, trustItems,
|
|
10
|
+
* brandStrip, promo) only render when present, so the same Brand type
|
|
11
|
+
* works across industry templates.
|
|
12
|
+
*/
|
|
13
|
+
import type { SeedName } from "@cimplify/sdk/testing/suite";
|
|
14
|
+
|
|
15
|
+
export interface BrandSocial {
|
|
16
|
+
/** Display label (Instagram, X, YouTube, …). Used as aria-label and footer chip. */
|
|
17
|
+
label: string;
|
|
18
|
+
href: string;
|
|
19
|
+
/** Optional icon override — defaults to inline SVG keyed by `label`. */
|
|
20
|
+
icon?: "instagram" | "x" | "tiktok" | "facebook" | "youtube" | "linkedin" | "whatsapp";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface BrandFaqEntry {
|
|
24
|
+
q: string;
|
|
25
|
+
a: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface BrandFaqSection {
|
|
29
|
+
title: string;
|
|
30
|
+
items: BrandFaqEntry[];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface BrandPolicySection {
|
|
34
|
+
heading: string;
|
|
35
|
+
/** Plain prose, or { intro + bullets } for list-style sections. */
|
|
36
|
+
body: string | { intro: string; bullets: string[] };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface BrandSitemapSection {
|
|
40
|
+
title: string;
|
|
41
|
+
links: { label: string; href: string }[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface Brand {
|
|
45
|
+
// ─── Identity ─────────────────────────────────────────────────
|
|
46
|
+
name: string;
|
|
47
|
+
/** Short brand mark for compact spaces. */
|
|
48
|
+
shortName: string;
|
|
49
|
+
/** Microtag shown in the header beside the brand mark. */
|
|
50
|
+
microTag: string;
|
|
51
|
+
/** SEO description and default OG description. */
|
|
52
|
+
description: string;
|
|
53
|
+
/** Schema.org `@type` for the Organization JSON-LD on the layout. */
|
|
54
|
+
schemaType:
|
|
55
|
+
| "Store"
|
|
56
|
+
| "Bakery"
|
|
57
|
+
| "Restaurant"
|
|
58
|
+
| "BeautySalon"
|
|
59
|
+
| "GroceryStore"
|
|
60
|
+
| "LocalBusiness"
|
|
61
|
+
| "Pharmacy"
|
|
62
|
+
| "Organization";
|
|
63
|
+
|
|
64
|
+
// ─── Currency / locale ────────────────────────────────────────
|
|
65
|
+
currency: string;
|
|
66
|
+
locale: string;
|
|
67
|
+
|
|
68
|
+
// ─── Contact ──────────────────────────────────────────────────
|
|
69
|
+
contact: {
|
|
70
|
+
address: string;
|
|
71
|
+
streetAddress: string;
|
|
72
|
+
city: string;
|
|
73
|
+
countryCode: string;
|
|
74
|
+
/** Display phone, with formatting. */
|
|
75
|
+
phone: string;
|
|
76
|
+
/** Phone in `tel:` format (digits + country code). */
|
|
77
|
+
phoneTel: string;
|
|
78
|
+
email: string;
|
|
79
|
+
privacyEmail: string;
|
|
80
|
+
supportEmail?: string;
|
|
81
|
+
businessEmail?: string;
|
|
82
|
+
hours: string;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
socials: BrandSocial[];
|
|
86
|
+
|
|
87
|
+
// ─── Header ───────────────────────────────────────────────────
|
|
88
|
+
header: {
|
|
89
|
+
/** Top-level nav links. Order is preserved. */
|
|
90
|
+
nav: { label: string; href: string }[];
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// ─── Hero ─────────────────────────────────────────────────────
|
|
94
|
+
hero: {
|
|
95
|
+
badge: string;
|
|
96
|
+
title: string;
|
|
97
|
+
/** Subtitle. May span multiple paragraphs by separating with \n\n. */
|
|
98
|
+
subtitle: string;
|
|
99
|
+
primaryCtaLabel: string;
|
|
100
|
+
secondaryCtaLabel?: string;
|
|
101
|
+
secondaryCtaHref?: string;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// ─── Trust bar (optional) ─────────────────────────────────────
|
|
105
|
+
trustItems?: { label: string; value: string; description: string; iconKey: string }[];
|
|
106
|
+
|
|
107
|
+
// ─── Brand authority strip (optional) ─────────────────────────
|
|
108
|
+
brandStrip?: {
|
|
109
|
+
headline: string;
|
|
110
|
+
brands: string[];
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// ─── Promo banner (optional) ──────────────────────────────────
|
|
114
|
+
promo?: {
|
|
115
|
+
badge: string;
|
|
116
|
+
title: string;
|
|
117
|
+
body: string;
|
|
118
|
+
ctaLabel: string;
|
|
119
|
+
ctaHref: string;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// ─── Trade-in CTA (kept for cross-template compat; not rendered on
|
|
123
|
+
// the pharmacy home page — the prescription CTA lives in `urgentCtas`). ─
|
|
124
|
+
tradeIn?: {
|
|
125
|
+
eyebrow: string;
|
|
126
|
+
title: string;
|
|
127
|
+
body: string;
|
|
128
|
+
primaryCtaLabel: string;
|
|
129
|
+
primaryCtaHref: string;
|
|
130
|
+
secondaryCtaLabel: string;
|
|
131
|
+
secondaryCtaHref: string;
|
|
132
|
+
steps: { step: string; title: string; body: string }[];
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// ─── Urgent CTAs (pharmacy-specific) ──────────────────────────
|
|
136
|
+
/**
|
|
137
|
+
* Two action panels rendered as a full-width split right under the hero.
|
|
138
|
+
* Prescription upload (left) and pharmacist consult (right) — the two
|
|
139
|
+
* things a pharmacy visitor is most likely to want.
|
|
140
|
+
*/
|
|
141
|
+
urgentCtas: {
|
|
142
|
+
prescription: {
|
|
143
|
+
eyebrow: string;
|
|
144
|
+
title: string;
|
|
145
|
+
body: string;
|
|
146
|
+
ctaLabel: string;
|
|
147
|
+
ctaHref: string;
|
|
148
|
+
badge: string;
|
|
149
|
+
};
|
|
150
|
+
consult: {
|
|
151
|
+
eyebrow: string;
|
|
152
|
+
title: string;
|
|
153
|
+
body: string;
|
|
154
|
+
ctaLabel: string;
|
|
155
|
+
ctaHref: string;
|
|
156
|
+
pharmacistName: string;
|
|
157
|
+
hoursLabel: string;
|
|
158
|
+
hoursValue: string;
|
|
159
|
+
badge: string;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// ─── Symptom finder (pharmacy-specific) ───────────────────────
|
|
164
|
+
/**
|
|
165
|
+
* Symptom-led entry point. Instead of "browse categories", show "what's
|
|
166
|
+
* bothering you?" and link to the relevant category landing page. Each
|
|
167
|
+
* tile is a category link with an inline-SVG icon keyed by `iconKey`.
|
|
168
|
+
*/
|
|
169
|
+
symptomFinder: {
|
|
170
|
+
eyebrow: string;
|
|
171
|
+
title: string;
|
|
172
|
+
description: string;
|
|
173
|
+
tiles: {
|
|
174
|
+
label: string;
|
|
175
|
+
href: string;
|
|
176
|
+
iconKey:
|
|
177
|
+
| "pain"
|
|
178
|
+
| "cold"
|
|
179
|
+
| "allergy"
|
|
180
|
+
| "sleep"
|
|
181
|
+
| "baby"
|
|
182
|
+
| "first-aid"
|
|
183
|
+
| "vitamins"
|
|
184
|
+
| "diabetes";
|
|
185
|
+
}[];
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
// ─── Health brief (pharmacy-specific) ─────────────────────────
|
|
189
|
+
/**
|
|
190
|
+
* Three seasonal/health-tip cards — the pharmacy answer to the retail
|
|
191
|
+
* "best sellers" row. Editorially curated by the pharmacist team
|
|
192
|
+
* around the time of year (harmattan, malaria season, flu shots, etc.).
|
|
193
|
+
*/
|
|
194
|
+
healthBrief: {
|
|
195
|
+
eyebrow: string;
|
|
196
|
+
title: string;
|
|
197
|
+
cards: {
|
|
198
|
+
eyebrow: string;
|
|
199
|
+
title: string;
|
|
200
|
+
body: string;
|
|
201
|
+
ctaLabel: string;
|
|
202
|
+
ctaHref: string;
|
|
203
|
+
}[];
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
// ─── Newsletter ───────────────────────────────────────────────
|
|
207
|
+
newsletter: {
|
|
208
|
+
eyebrow: string;
|
|
209
|
+
title: string;
|
|
210
|
+
body: string;
|
|
211
|
+
placeholder: string;
|
|
212
|
+
submitLabel: string;
|
|
213
|
+
successLabel: string;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// ─── About page ───────────────────────────────────────────────
|
|
217
|
+
about: {
|
|
218
|
+
eyebrow: string;
|
|
219
|
+
/** Title — supports a single \n for a hard line break. */
|
|
220
|
+
title: string;
|
|
221
|
+
paragraphs: string[];
|
|
222
|
+
sections: { heading: string; body: string }[];
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
// ─── FAQ ──────────────────────────────────────────────────────
|
|
226
|
+
faq: {
|
|
227
|
+
eyebrow: string;
|
|
228
|
+
title: string;
|
|
229
|
+
sections: BrandFaqSection[];
|
|
230
|
+
contactPrompt: string;
|
|
231
|
+
contactEmail: string;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
// ─── Terms ────────────────────────────────────────────────────
|
|
235
|
+
terms: {
|
|
236
|
+
eyebrow: string;
|
|
237
|
+
title: string;
|
|
238
|
+
lastUpdated: string;
|
|
239
|
+
sections: BrandPolicySection[];
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
// ─── Privacy ──────────────────────────────────────────────────
|
|
243
|
+
privacy: {
|
|
244
|
+
eyebrow: string;
|
|
245
|
+
title: string;
|
|
246
|
+
lastUpdated: string;
|
|
247
|
+
sections: BrandPolicySection[];
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
// ─── Standalone policy pages ──────────────────────────────────
|
|
251
|
+
shipping: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
252
|
+
returns: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
253
|
+
accessibility: { eyebrow: string; title: string; lastUpdated: string; sections: BrandPolicySection[] };
|
|
254
|
+
|
|
255
|
+
// ─── Auth + account UX copy ───────────────────────────────────
|
|
256
|
+
account: {
|
|
257
|
+
loginEyebrow: string; loginTitle: string; loginSubtitle: string;
|
|
258
|
+
signupEyebrow: string; signupTitle: string; signupSubtitle: string;
|
|
259
|
+
accountEyebrow: string; accountTitle: string;
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// ─── Contact form copy ────────────────────────────────────────
|
|
263
|
+
contactPage: {
|
|
264
|
+
eyebrow: string; title: string; body: string;
|
|
265
|
+
reasons: string[];
|
|
266
|
+
directLines: { label: string; value: string; href: string }[];
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// ─── Track-order page copy ────────────────────────────────────
|
|
270
|
+
trackOrder: { eyebrow: string; title: string; body: string };
|
|
271
|
+
|
|
272
|
+
// ─── Footer ───────────────────────────────────────────────────
|
|
273
|
+
footer: {
|
|
274
|
+
blurb: string;
|
|
275
|
+
sitemap: BrandSitemapSection[];
|
|
276
|
+
poweredBy?: { label: string; href: string };
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// ─── llms.txt summary (LLM-friendly site index) ───────────────
|
|
280
|
+
llms: {
|
|
281
|
+
summary: string;
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
// ─── Mock seed ────────────────────────────────────────────────
|
|
285
|
+
mock: {
|
|
286
|
+
seed: SeedName;
|
|
287
|
+
businessId: string;
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export const brand: Brand = {
|
|
292
|
+
name: "Wellspring Pharmacy",
|
|
293
|
+
shortName: "Wellspring",
|
|
294
|
+
microTag: "PHARMACY",
|
|
295
|
+
description:
|
|
296
|
+
"Licensed community pharmacy in Accra — over-the-counter remedies, prescription fulfilment, vitamins, baby care, and pharmacist consults. Same-day delivery on every order.",
|
|
297
|
+
schemaType: "Pharmacy",
|
|
298
|
+
|
|
299
|
+
currency: "GHS",
|
|
300
|
+
locale: "en_GH",
|
|
301
|
+
|
|
302
|
+
contact: {
|
|
303
|
+
address: "Ring Road Central, Adabraka, Accra",
|
|
304
|
+
streetAddress: "Ring Road Central, Adabraka",
|
|
305
|
+
city: "Accra",
|
|
306
|
+
countryCode: "GH",
|
|
307
|
+
phone: "+233 244 700 700",
|
|
308
|
+
phoneTel: "+233244700700",
|
|
309
|
+
email: "care@wellspringpharmacy.test",
|
|
310
|
+
privacyEmail: "privacy@wellspringpharmacy.test",
|
|
311
|
+
supportEmail: "care@wellspringpharmacy.test",
|
|
312
|
+
businessEmail: "wholesale@wellspringpharmacy.test",
|
|
313
|
+
hours: "Mon–Sat · 8am–10pm · Sun 10am–8pm",
|
|
314
|
+
},
|
|
315
|
+
|
|
316
|
+
socials: [
|
|
317
|
+
{ label: "Instagram", href: "https://instagram.com/wellspringpharmacy", icon: "instagram" },
|
|
318
|
+
{ label: "Facebook", href: "https://facebook.com/wellspringpharmacy", icon: "facebook" },
|
|
319
|
+
{ label: "WhatsApp", href: "https://wa.me/233244700700", icon: "whatsapp" },
|
|
320
|
+
],
|
|
321
|
+
|
|
322
|
+
header: {
|
|
323
|
+
nav: [
|
|
324
|
+
{ label: "Shop", href: "/shop" },
|
|
325
|
+
{ label: "Prescriptions", href: "/categories/cold-flu" },
|
|
326
|
+
{ label: "Consult", href: "/contact" },
|
|
327
|
+
],
|
|
328
|
+
},
|
|
329
|
+
|
|
330
|
+
hero: {
|
|
331
|
+
badge: "LICENSED · TRUSTED · DISCREET",
|
|
332
|
+
title: "Care that's open when you need it.",
|
|
333
|
+
subtitle:
|
|
334
|
+
"Genuine medicines, vitamins, and personal-care essentials — dispensed by registered pharmacists. Upload a script, talk to a pharmacist, or shop OTC. Free same-day delivery in Greater Accra.",
|
|
335
|
+
primaryCtaLabel: "Shop pharmacy",
|
|
336
|
+
secondaryCtaLabel: "Upload prescription",
|
|
337
|
+
secondaryCtaHref: "/categories/cold-flu",
|
|
338
|
+
},
|
|
339
|
+
|
|
340
|
+
trustItems: [
|
|
341
|
+
{
|
|
342
|
+
label: "Registered",
|
|
343
|
+
value: "Pharmacy Council of Ghana",
|
|
344
|
+
description: "Every dispensed medicine is signed off by a licensed pharmacist.",
|
|
345
|
+
iconKey: "verified",
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
label: "Same-day delivery",
|
|
349
|
+
value: "Free across Accra",
|
|
350
|
+
description: "Order by 8pm. Discreet, temperature-controlled.",
|
|
351
|
+
iconKey: "delivery",
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
label: "Pharmacist on call",
|
|
355
|
+
value: "Free consults · 8am–10pm",
|
|
356
|
+
description: "WhatsApp, phone, or in-store. No appointment.",
|
|
357
|
+
iconKey: "support",
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
label: "Insurance",
|
|
361
|
+
value: "NHIS + private accepted",
|
|
362
|
+
description: "Acacia, Glico, Apex, Premier — we bill direct.",
|
|
363
|
+
iconKey: "payment",
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
|
|
367
|
+
brandStrip: {
|
|
368
|
+
headline: "Genuine medicines · cold-chain stored · pharmacist-verified",
|
|
369
|
+
brands: [
|
|
370
|
+
"Panadol",
|
|
371
|
+
"Pfizer",
|
|
372
|
+
"GSK",
|
|
373
|
+
"Sanofi",
|
|
374
|
+
"Bayer",
|
|
375
|
+
"Centrum",
|
|
376
|
+
"Nestlé",
|
|
377
|
+
"Johnson & Johnson",
|
|
378
|
+
"Omron",
|
|
379
|
+
"Accu-Chek",
|
|
380
|
+
],
|
|
381
|
+
},
|
|
382
|
+
|
|
383
|
+
promo: {
|
|
384
|
+
badge: "New · pharmacist-led",
|
|
385
|
+
title: "Free 15-minute pharmacist consults, every weekday.",
|
|
386
|
+
body: "Got a question about a side effect, a dose, or which OTC to pick? Book a free 15-min consult with a registered pharmacist — phone, WhatsApp, or in-store.",
|
|
387
|
+
ctaLabel: "Book a consult",
|
|
388
|
+
ctaHref: "/contact",
|
|
389
|
+
},
|
|
390
|
+
|
|
391
|
+
urgentCtas: {
|
|
392
|
+
prescription: {
|
|
393
|
+
eyebrow: "Prescription",
|
|
394
|
+
title: "Send us your script. We'll dispense and deliver.",
|
|
395
|
+
body: "Upload a photo of your doctor's prescription. A registered pharmacist reviews it, checks interactions, and fills it — usually within four hours in Accra. NHIS and major private insurers billed direct.",
|
|
396
|
+
ctaLabel: "Upload prescription",
|
|
397
|
+
ctaHref: "/categories/cold-flu",
|
|
398
|
+
badge: "End-to-end encrypted",
|
|
399
|
+
},
|
|
400
|
+
consult: {
|
|
401
|
+
eyebrow: "Pharmacist on call",
|
|
402
|
+
title: "15 minutes with a pharmacist. Free.",
|
|
403
|
+
body: "Drug interactions, side-effects, what to take for the kids, what's safe in pregnancy — ask anything. WhatsApp, phone, or walk in. Weekdays 9am–6pm.",
|
|
404
|
+
ctaLabel: "Book a consult",
|
|
405
|
+
ctaHref: "/contact",
|
|
406
|
+
pharmacistName: "Aunt Margaret",
|
|
407
|
+
hoursLabel: "On now",
|
|
408
|
+
hoursValue: "Mon–Fri · 9am–6pm",
|
|
409
|
+
badge: "No appointment needed",
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
|
|
413
|
+
symptomFinder: {
|
|
414
|
+
eyebrow: "What do you need today?",
|
|
415
|
+
title: "Tell us how you feel.",
|
|
416
|
+
description: "Skip the aisles. Pick a symptom and we'll show you the OTC remedies our pharmacists actually recommend.",
|
|
417
|
+
tiles: [
|
|
418
|
+
{ label: "Pain & fever", href: "/categories/pain-relief", iconKey: "pain" },
|
|
419
|
+
{ label: "Cold & flu", href: "/categories/cold-flu", iconKey: "cold" },
|
|
420
|
+
{ label: "Allergies", href: "/categories/cold-flu", iconKey: "allergy" },
|
|
421
|
+
{ label: "Sleep & calm", href: "/categories/vitamins", iconKey: "sleep" },
|
|
422
|
+
{ label: "Baby care", href: "/categories/baby", iconKey: "baby" },
|
|
423
|
+
{ label: "First aid", href: "/categories/first-aid", iconKey: "first-aid" },
|
|
424
|
+
{ label: "Vitamins", href: "/categories/vitamins", iconKey: "vitamins" },
|
|
425
|
+
{ label: "Diabetes & BP", href: "/categories/devices", iconKey: "diabetes" },
|
|
426
|
+
],
|
|
427
|
+
},
|
|
428
|
+
|
|
429
|
+
healthBrief: {
|
|
430
|
+
eyebrow: "The pharmacist's brief",
|
|
431
|
+
title: "What to know this season.",
|
|
432
|
+
cards: [
|
|
433
|
+
{
|
|
434
|
+
eyebrow: "Harmattan",
|
|
435
|
+
title: "Dry skin, sore throats, cracked lips.",
|
|
436
|
+
body: "Lip balm, glycerine soap, throat lozenges, and saline nasal spray are the four things every household should stock during harmattan. We've curated a starter kit.",
|
|
437
|
+
ctaLabel: "Browse harmattan kit",
|
|
438
|
+
ctaHref: "/categories/personal-care",
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
eyebrow: "Malaria season",
|
|
442
|
+
title: "Don't wait for the fever.",
|
|
443
|
+
body: "ACTs are most effective when started within 24 hours of symptoms. Keep a 3-day course at home, and don't forget paracetamol for the fever and oral rehydration sachets for kids.",
|
|
444
|
+
ctaLabel: "See malaria essentials",
|
|
445
|
+
ctaHref: "/categories/pain-relief",
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
eyebrow: "Flu shots",
|
|
449
|
+
title: "Now in stock.",
|
|
450
|
+
body: "This year's quadrivalent flu vaccine is in the fridge. Walk-in at the Adabraka counter — under 5 minutes, GH₵85, NHIS-covered for over-60s and pregnant women.",
|
|
451
|
+
ctaLabel: "Book a flu shot",
|
|
452
|
+
ctaHref: "/contact",
|
|
453
|
+
},
|
|
454
|
+
],
|
|
455
|
+
},
|
|
456
|
+
|
|
457
|
+
newsletter: {
|
|
458
|
+
eyebrow: "Wellness brief",
|
|
459
|
+
title: "Health tips and seasonal restocks, weekly.",
|
|
460
|
+
body: "One short email a week from our lead pharmacist — what's in stock, what's running low, what's worth picking up before the rainy season. No spam, unsubscribe anytime.",
|
|
461
|
+
placeholder: "you@email.com",
|
|
462
|
+
submitLabel: "Subscribe",
|
|
463
|
+
successLabel: "Subscribed ✓",
|
|
464
|
+
},
|
|
465
|
+
|
|
466
|
+
about: {
|
|
467
|
+
eyebrow: "About Wellspring",
|
|
468
|
+
title: "A neighbourhood pharmacy.\nDispensing since 2012.",
|
|
469
|
+
paragraphs: [
|
|
470
|
+
"We opened Wellspring in 2012 with a simple idea: a community pharmacy should be the place you go when something's wrong and you need someone with the training and the patience to actually help. Not a counter that points at a shelf.",
|
|
471
|
+
"Today our team has four registered pharmacists, two pharmacy technicians, and a delivery network covering all of Greater Accra. We're licensed by the Pharmacy Council of Ghana, we source every medicine from authorised distributors, and we maintain a cold-chain for insulin, vaccines, and biologics.",
|
|
472
|
+
"We accept NHIS and bill major private insurers (Acacia, Glico, Apex, Premier) direct. Same-day delivery in Accra is free, every order is reviewed by a pharmacist before dispatch, and a pharmacist is on call from 8am to 10pm every weekday for free consults.",
|
|
473
|
+
],
|
|
474
|
+
sections: [
|
|
475
|
+
{
|
|
476
|
+
heading: "Prescription service",
|
|
477
|
+
body: "Upload a script via the prescription page or WhatsApp. We verify, fill, and deliver — usually within 4 hours in Accra. Schedule II controlled substances require an in-person collection with photo ID.",
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
heading: "Pharmacist consults",
|
|
481
|
+
body: "Free 15-minute consults Monday–Friday, 9am–6pm. Phone, WhatsApp, or walk-in. Ask about side effects, interactions, OTC choices, baby health, or what to pack for travel.",
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
heading: "Visit",
|
|
485
|
+
body: "Ring Road Central, Adabraka, Accra · Mon–Sat 8am–10pm · Sun 10am–8pm. Free parking at the back.",
|
|
486
|
+
},
|
|
487
|
+
],
|
|
488
|
+
},
|
|
489
|
+
|
|
490
|
+
faq: {
|
|
491
|
+
eyebrow: "Help",
|
|
492
|
+
title: "Common questions.",
|
|
493
|
+
sections: [
|
|
494
|
+
{
|
|
495
|
+
title: "Prescriptions",
|
|
496
|
+
items: [
|
|
497
|
+
{
|
|
498
|
+
q: "How do I send you a prescription?",
|
|
499
|
+
a: "Upload a clear photo on any prescription-required product (look for the upload field on the product page), or WhatsApp it to +233 244 700 700. Our pharmacist reviews every script before dispensing.",
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
q: "Do you fill prescriptions from any doctor?",
|
|
503
|
+
a: "We fill scripts from any registered medical practitioner in Ghana. For prescriptions from outside Ghana, our pharmacist will reach out to verify before dispensing.",
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
q: "What about controlled medicines?",
|
|
507
|
+
a: "Schedule II drugs (e.g. some painkillers, stimulants) require in-person collection at our Adabraka store with photo ID matching the prescription.",
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
q: "Can I get a repeat prescription?",
|
|
511
|
+
a: "Yes. Create an account, save your script, and we'll remind you when it's due. We never auto-dispense — you confirm each refill.",
|
|
512
|
+
},
|
|
513
|
+
],
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
title: "Delivery & pickup",
|
|
517
|
+
items: [
|
|
518
|
+
{
|
|
519
|
+
q: "How fast is delivery?",
|
|
520
|
+
a: "Free same-day delivery within Greater Accra for orders placed before 8pm. Outside Accra, we use a partner courier — usually 1–3 business days, fully tracked.",
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
q: "Is delivery discreet?",
|
|
524
|
+
a: "Yes. Plain packaging, no Wellspring branding. The pharmacist will ring you discreetly on arrival; no contents are mentioned at the door.",
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
q: "Do you deliver cold-chain medicines?",
|
|
528
|
+
a: "Yes — insulin, vaccines, and biologics ship in temperature-monitored coolers. We confirm a delivery window with you within 30 minutes of order confirmation.",
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
q: "Can I pick up in store?",
|
|
532
|
+
a: "Yes. Choose pickup at checkout. Most orders are ready within 30 minutes; prescription orders may take longer if pharmacist verification is needed.",
|
|
533
|
+
},
|
|
534
|
+
],
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
title: "Insurance & payment",
|
|
538
|
+
items: [
|
|
539
|
+
{
|
|
540
|
+
q: "Do you accept NHIS?",
|
|
541
|
+
a: "Yes. Bring your active NHIS card to the store, or attach a photo when uploading your prescription. We bill NHIS direct for covered medicines and you pay only the co-pay.",
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
q: "Which private insurers do you bill direct?",
|
|
545
|
+
a: "Acacia, Glico, Apex Health, Premier Health Insurance, and Equity Health. For others, we provide a detailed receipt for your own claim.",
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
q: "What other payment methods do you accept?",
|
|
549
|
+
a: "Mobile Money (MTN, Telecel, AirtelTigo), Visa/Mastercard, and cash on delivery for Accra orders.",
|
|
550
|
+
},
|
|
551
|
+
],
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
title: "Pharmacist consults",
|
|
555
|
+
items: [
|
|
556
|
+
{
|
|
557
|
+
q: "Are the consults really free?",
|
|
558
|
+
a: "Yes. 15 minutes with a registered pharmacist, weekdays 9am–6pm, no purchase needed. We'd rather you get the right advice than the wrong product.",
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
q: "When should I see a doctor instead?",
|
|
562
|
+
a: "Our pharmacists will tell you. We refer to local clinics for anything that needs a diagnosis, prescription, or hands-on examination — and we'll fill the prescription when you come back.",
|
|
563
|
+
},
|
|
564
|
+
],
|
|
565
|
+
},
|
|
566
|
+
],
|
|
567
|
+
contactPrompt: "Still stuck? Email",
|
|
568
|
+
contactEmail: "care@wellspringpharmacy.test",
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
terms: {
|
|
572
|
+
eyebrow: "Terms of service",
|
|
573
|
+
title: "Terms of Service",
|
|
574
|
+
lastUpdated: "1 May 2026",
|
|
575
|
+
sections: [
|
|
576
|
+
{
|
|
577
|
+
heading: "1. Who we are",
|
|
578
|
+
body: "Wellspring Pharmacy (\"we\", \"us\") is a registered community pharmacy at Ring Road Central, Adabraka, Accra, licensed by the Pharmacy Council of Ghana. By placing an order, you (\"you\", \"customer\") agree to these terms.",
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
heading: "2. Licensed dispensing",
|
|
582
|
+
body: "We dispense medicines only after a registered pharmacist has reviewed the order. Prescription-only medicines require a valid prescription from a registered medical practitioner. We reserve the right to refuse to dispense any order at the pharmacist's professional discretion.",
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
heading: "3. Pricing and payment",
|
|
586
|
+
body: "Prices are in Ghana Cedis (GH₵) and include VAT where applicable. We accept Mobile Money, card, NHIS for covered medicines, and direct billing with partner private insurers. Cash on delivery is available within Accra.",
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
heading: "4. Prescription verification",
|
|
590
|
+
body: "We may contact your prescriber to verify a prescription before dispensing. If we cannot reach the prescriber or have safety concerns, we will pause the order and contact you. Schedule II controlled substances require in-person collection with photo ID.",
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
heading: "5. Returns",
|
|
594
|
+
body: "Under Ghanaian pharmacy law we cannot accept returns of dispensed medicines once they have left the premises, except where we have made an error or the product is defective. Personal-care items in sealed, unopened packaging may be returned within 7 days.",
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
heading: "6. Cold-chain medicines",
|
|
598
|
+
body: "Insulin, vaccines, and biologics are shipped in temperature-monitored coolers. If a cold-chain product arrives outside its safe range, we will replace it free of charge.",
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
heading: "7. Liability",
|
|
602
|
+
body: "To the maximum extent permitted by Ghanaian law, our liability is limited to the value of the order. We are not liable for indirect or consequential losses. This does not exclude our duty of care as registered healthcare professionals.",
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
heading: "8. Governing law",
|
|
606
|
+
body: "These terms are governed by the laws of Ghana. Disputes will be resolved in the courts of Greater Accra.",
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
heading: "9. Contact",
|
|
610
|
+
body: "Questions? Email care@wellspringpharmacy.test.",
|
|
611
|
+
},
|
|
612
|
+
],
|
|
613
|
+
},
|
|
614
|
+
|
|
615
|
+
privacy: {
|
|
616
|
+
eyebrow: "Privacy",
|
|
617
|
+
title: "Privacy Policy",
|
|
618
|
+
lastUpdated: "1 May 2026",
|
|
619
|
+
sections: [
|
|
620
|
+
{
|
|
621
|
+
heading: "What we collect",
|
|
622
|
+
body: "We collect what we need to dispense safely and deliver to you: name, date of birth, phone, delivery address, email, allergies and current medications you disclose, and uploaded prescription images. Payment details are processed by our payment partners and never stored on our servers.",
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
heading: "How we use it",
|
|
626
|
+
body: {
|
|
627
|
+
intro: "We use your health data only to:",
|
|
628
|
+
bullets: [
|
|
629
|
+
"Verify and dispense your prescriptions safely.",
|
|
630
|
+
"Screen for drug interactions and allergy contraindications.",
|
|
631
|
+
"Deliver your order discreetly.",
|
|
632
|
+
"Send order updates by SMS and email.",
|
|
633
|
+
"Contact your prescriber if we need to clarify the script.",
|
|
634
|
+
"Maintain dispensing records as required by the Pharmacy Council of Ghana.",
|
|
635
|
+
],
|
|
636
|
+
},
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
heading: "Who we share it with",
|
|
640
|
+
body: "Your health data is shared only with: the pharmacist dispensing your order, your prescriber when verification is needed, your insurer when billing them direct, and our delivery courier (who sees only the delivery address — never the contents). We never sell health data.",
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
heading: "Sensitive health data",
|
|
644
|
+
body: "Prescriptions, diagnoses, and uploaded medical documents are stored encrypted, accessible only to the pharmacists on your account. We retain dispensing records for 7 years as required by Ghanaian pharmacy law.",
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
heading: "Cookies",
|
|
648
|
+
body: "We use a small number of strictly-necessary cookies to keep your cart working and your session signed in, plus optional analytics cookies (you can disable these in our cookie banner).",
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
heading: "Your rights",
|
|
652
|
+
body: "Under the Ghana Data Protection Act, 2012 (Act 843), you have the right to access the data we hold about you and correct it. Deletion is subject to our regulatory obligation to retain dispensing records for 7 years. Email privacy@wellspringpharmacy.test.",
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
heading: "Changes",
|
|
656
|
+
body: "If we make material changes to this policy, we'll email customers on our wellness brief and update the \"last updated\" date above.",
|
|
657
|
+
},
|
|
658
|
+
],
|
|
659
|
+
},
|
|
660
|
+
|
|
661
|
+
shipping: {
|
|
662
|
+
eyebrow: "Delivery",
|
|
663
|
+
title: "Delivery & Pickup",
|
|
664
|
+
lastUpdated: "1 May 2026",
|
|
665
|
+
sections: [
|
|
666
|
+
{ heading: "Same-day Greater Accra", body: "Free for every order. Place by 8pm; delivered the same evening, discreet packaging." },
|
|
667
|
+
{ heading: "Outside Accra", body: "Partner courier nationwide; 1–3 business days. Cold-chain orders shipped in temperature-monitored coolers." },
|
|
668
|
+
{ heading: "Pickup", body: "Ring Road Central, Adabraka. Mon–Sat 8am–10pm, Sun 10am–8pm. Most orders ready in 30 minutes." },
|
|
669
|
+
{ heading: "Controlled medicines", body: "Schedule II drugs require in-person collection with the original prescription and photo ID matching the script." },
|
|
670
|
+
{ heading: "Cold-chain", body: "Insulin, vaccines, biologics: temperature-monitored coolers, delivery window confirmed within 30 minutes of order." },
|
|
671
|
+
],
|
|
672
|
+
},
|
|
673
|
+
|
|
674
|
+
returns: {
|
|
675
|
+
eyebrow: "Returns",
|
|
676
|
+
title: "Returns & Replacements",
|
|
677
|
+
lastUpdated: "1 May 2026",
|
|
678
|
+
sections: [
|
|
679
|
+
{ heading: "Dispensed medicines", body: "Under Ghanaian pharmacy law we cannot accept returns of dispensed medicines once they have left our premises, except where we have made a dispensing error or the product is defective." },
|
|
680
|
+
{ heading: "Personal-care & devices", body: "Sealed, unopened personal-care items and devices: 7-day return window with original receipt." },
|
|
681
|
+
{ heading: "Damaged or wrong order", body: "Contact us within 24 hours of delivery. We'll arrange a free pickup and ship a replacement same-day." },
|
|
682
|
+
{ heading: "Cold-chain failures", body: "If a cold-chain product arrives outside its safe temperature range, we replace it free of charge. Show us the cooler's temperature log." },
|
|
683
|
+
{ heading: "How to start", body: "WhatsApp +233 244 700 700 or email care@wellspringpharmacy.test with your order number. We'll arrange pickup or a replacement." },
|
|
684
|
+
],
|
|
685
|
+
},
|
|
686
|
+
|
|
687
|
+
accessibility: {
|
|
688
|
+
eyebrow: "Accessibility",
|
|
689
|
+
title: "Accessibility Statement",
|
|
690
|
+
lastUpdated: "1 May 2026",
|
|
691
|
+
sections: [
|
|
692
|
+
{ heading: "Our commitment", body: "Healthcare should be reachable. We aim for WCAG 2.1 AA on this site and test against it on every release." },
|
|
693
|
+
{ heading: "What we've done", body: { intro: "Specifically, we've:", bullets: [
|
|
694
|
+
"Maintained a minimum 4.5:1 contrast ratio on body text.",
|
|
695
|
+
"Ensured every interactive element is keyboard-reachable with visible focus.",
|
|
696
|
+
"Labelled images, icons, and form fields for screen-reader users.",
|
|
697
|
+
"Provided phone, WhatsApp, and in-store alternatives for every online action.",
|
|
698
|
+
"Respected `prefers-reduced-motion`.",
|
|
699
|
+
] } },
|
|
700
|
+
{ heading: "In-store accessibility", body: "Ramped entrance, accessible counter, large-print signage. Ask any staff member if you need help." },
|
|
701
|
+
{ heading: "Reporting issues", body: "Email care@wellspringpharmacy.test. We respond within 5 business days." },
|
|
702
|
+
],
|
|
703
|
+
},
|
|
704
|
+
|
|
705
|
+
account: {
|
|
706
|
+
loginEyebrow: "Welcome back",
|
|
707
|
+
loginTitle: "Sign in to Wellspring",
|
|
708
|
+
loginSubtitle: "Save your scripts, track orders, and manage repeat prescriptions.",
|
|
709
|
+
signupEyebrow: "Welcome",
|
|
710
|
+
signupTitle: "Create your Wellspring account",
|
|
711
|
+
signupSubtitle: "Save your insurance details, store prescriptions securely, and set up repeat reminders so you never run out.",
|
|
712
|
+
accountEyebrow: "Your account",
|
|
713
|
+
accountTitle: "Welcome back",
|
|
714
|
+
},
|
|
715
|
+
|
|
716
|
+
contactPage: {
|
|
717
|
+
eyebrow: "Contact",
|
|
718
|
+
title: "Talk to a pharmacist.",
|
|
719
|
+
body: "Question about a medicine, an order, or your insurance? A registered pharmacist is on call 8am–10pm. We reply to email within a few hours.",
|
|
720
|
+
reasons: ["A medicine question", "Prescription help", "An order issue", "Insurance billing", "Pharmacist consult booking", "Wholesale enquiry"],
|
|
721
|
+
directLines: [
|
|
722
|
+
{ label: "WhatsApp", value: "+233 244 700 700", href: "https://wa.me/233244700700" },
|
|
723
|
+
{ label: "Phone", value: "+233 244 700 700", href: "tel:+233244700700" },
|
|
724
|
+
{ label: "Email", value: "care@wellspringpharmacy.test", href: "mailto:care@wellspringpharmacy.test" },
|
|
725
|
+
],
|
|
726
|
+
},
|
|
727
|
+
|
|
728
|
+
trackOrder: {
|
|
729
|
+
eyebrow: "Track an order",
|
|
730
|
+
title: "Where's my order?",
|
|
731
|
+
body: "Enter your order number and email. We'll show the live status, courier tracking, and ETA.",
|
|
732
|
+
},
|
|
733
|
+
|
|
734
|
+
footer: {
|
|
735
|
+
blurb:
|
|
736
|
+
"Licensed by the Pharmacy Council of Ghana. Same-day delivery across Greater Accra; nationwide via partner courier. NHIS and major private insurance accepted.",
|
|
737
|
+
sitemap: [
|
|
738
|
+
{
|
|
739
|
+
title: "Shop",
|
|
740
|
+
links: [
|
|
741
|
+
{ label: "All products", href: "/shop" },
|
|
742
|
+
{ label: "Pain relief", href: "/categories/pain-relief" },
|
|
743
|
+
{ label: "Cold & flu", href: "/categories/cold-flu" },
|
|
744
|
+
{ label: "Vitamins", href: "/categories/vitamins" },
|
|
745
|
+
{ label: "First aid", href: "/categories/first-aid" },
|
|
746
|
+
{ label: "Baby care", href: "/categories/baby" },
|
|
747
|
+
],
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
title: "Care",
|
|
751
|
+
links: [
|
|
752
|
+
{ label: "Contact a pharmacist", href: "/contact" },
|
|
753
|
+
{ label: "Track an order", href: "/track-order" },
|
|
754
|
+
{ label: "Delivery", href: "/shipping" },
|
|
755
|
+
{ label: "Returns", href: "/returns" },
|
|
756
|
+
{ label: "FAQ", href: "/faq" },
|
|
757
|
+
],
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
title: "Account",
|
|
761
|
+
links: [
|
|
762
|
+
{ label: "Sign in", href: "/login" },
|
|
763
|
+
{ label: "Create account", href: "/signup" },
|
|
764
|
+
{ label: "Your orders", href: "/account/orders" },
|
|
765
|
+
{ label: "Settings", href: "/account/settings" },
|
|
766
|
+
],
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
title: "Legal",
|
|
770
|
+
links: [
|
|
771
|
+
{ label: "Terms of Service", href: "/terms" },
|
|
772
|
+
{ label: "Privacy Policy", href: "/privacy" },
|
|
773
|
+
{ label: "Accessibility", href: "/accessibility" },
|
|
774
|
+
{ label: "Sitemap", href: "/sitemap-page" },
|
|
775
|
+
],
|
|
776
|
+
},
|
|
777
|
+
],
|
|
778
|
+
poweredBy: { label: "Cimplify", href: "https://app.cimplify.io" },
|
|
779
|
+
},
|
|
780
|
+
|
|
781
|
+
llms: {
|
|
782
|
+
summary:
|
|
783
|
+
"Licensed community pharmacy in Accra. Dispenses prescription and over-the-counter medicines, stocks vitamins, baby care, first aid, and health devices. Free pharmacist consults weekdays 9am–6pm. Free same-day delivery in Greater Accra. NHIS and major private insurance billed direct. Schedule II controlled substances require in-person collection.",
|
|
784
|
+
},
|
|
785
|
+
|
|
786
|
+
mock: {
|
|
787
|
+
seed: "pharmacy",
|
|
788
|
+
businessId: "bus_wellspring_pharmacy",
|
|
789
|
+
},
|
|
790
|
+
};
|