@fayz-ai/storefront 0.7.0 → 0.8.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.
- package/README.md +3 -1
- package/dist/components/StorefrontHeader.d.ts.map +1 -1
- package/dist/createStorefrontApp.d.ts.map +1 -1
- package/dist/index.cjs +215 -98
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +215 -99
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +5 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/stores/cart.store.d.ts +5 -0
- package/dist/stores/cart.store.d.ts.map +1 -1
- package/dist/testids.d.ts +1 -0
- package/dist/testids.d.ts.map +1 -1
- package/dist/theme.d.ts +18 -2
- package/dist/theme.d.ts.map +1 -1
- package/dist/workflows/checkout.d.ts.map +1 -1
- package/package.json +13 -7
- package/src/components/StorefrontHeader.tsx +35 -8
- package/src/createStorefrontApp.tsx +18 -1
- package/src/index.ts +1 -0
- package/src/presets.ts +66 -0
- package/src/stores/cart.store.ts +16 -1
- package/src/testids.ts +1 -0
- package/src/theme.ts +33 -3
- package/src/workflows/checkout.ts +4 -1
package/dist/index.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export { StorefrontThemeStyle, themeToCss } from './theme';
|
|
|
44
44
|
export type { StorefrontTheme, StorefrontThemeColors, StorefrontThemeFont, StorefrontRadius, HeaderVariant, HeroVariant, CardStyle, } from './theme';
|
|
45
45
|
export type { StorefrontSection, HomeSection, HomeConfig, HeroSlide, MediaCarouselItem, NavLink, FooterConfig } from './sections';
|
|
46
46
|
export { bannerPlaceholder } from './sections';
|
|
47
|
-
export { storefrontTemplates, mareTemplate, sertaoTemplate, voltTemplate, atelierTemplate, } from './presets';
|
|
47
|
+
export { storefrontTemplates, mareTemplate, sertaoTemplate, voltTemplate, atelierTemplate, foodTemplate, } from './presets';
|
|
48
48
|
export type { StorefrontTemplate, StorefrontTemplateId } from './presets';
|
|
49
49
|
export { HomePage, StorefrontSections } from './pages/HomePage';
|
|
50
50
|
export { HeroSection } from './components/sections/HeroSection';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -206,92 +206,6 @@ function matchPath(pattern, path) {
|
|
|
206
206
|
function Link({ to, children, ...rest }) {
|
|
207
207
|
return React6.createElement("a", { href: `#${to}`, ...rest }, children);
|
|
208
208
|
}
|
|
209
|
-
var RADIUS_MAP = {
|
|
210
|
-
none: { button: "0px", card: "0px", input: "0px" },
|
|
211
|
-
soft: { button: "6px", card: "10px", input: "6px" },
|
|
212
|
-
round: { button: "10px", card: "16px", input: "10px" },
|
|
213
|
-
pill: { button: "999px", card: "20px", input: "999px" }
|
|
214
|
-
};
|
|
215
|
-
var COLOR_VAR_MAP = {
|
|
216
|
-
background: "--background",
|
|
217
|
-
foreground: "--foreground",
|
|
218
|
-
primary: "--primary",
|
|
219
|
-
primaryForeground: "--primary-foreground",
|
|
220
|
-
card: "--card",
|
|
221
|
-
cardForeground: "--card-foreground",
|
|
222
|
-
muted: "--muted",
|
|
223
|
-
mutedForeground: "--muted-foreground",
|
|
224
|
-
border: "--border",
|
|
225
|
-
headerBackground: "--sf-header-bg",
|
|
226
|
-
headerForeground: "--sf-header-fg",
|
|
227
|
-
announcementBackground: "--sf-announcement-bg",
|
|
228
|
-
announcementForeground: "--sf-announcement-fg"
|
|
229
|
-
};
|
|
230
|
-
function themeToCss(theme) {
|
|
231
|
-
const lines = [];
|
|
232
|
-
for (const [key, cssVar] of Object.entries(COLOR_VAR_MAP)) {
|
|
233
|
-
const value = theme.colors?.[key];
|
|
234
|
-
if (value) lines.push(`${cssVar}: ${value};`);
|
|
235
|
-
}
|
|
236
|
-
if (!theme.colors?.headerBackground && theme.colors?.background) {
|
|
237
|
-
lines.push(`--sf-header-bg: ${theme.colors.background};`);
|
|
238
|
-
}
|
|
239
|
-
if (!theme.colors?.headerForeground && theme.colors?.foreground) {
|
|
240
|
-
lines.push(`--sf-header-fg: ${theme.colors.foreground};`);
|
|
241
|
-
}
|
|
242
|
-
if (theme.font) {
|
|
243
|
-
const fallback = theme.font.fallback ?? "sans-serif";
|
|
244
|
-
lines.push(`--font-family: '${theme.font.body}', ${fallback};`);
|
|
245
|
-
lines.push(`--sf-font-heading: '${theme.font.heading}', ${fallback};`);
|
|
246
|
-
}
|
|
247
|
-
const radius = RADIUS_MAP[theme.radius ?? "soft"];
|
|
248
|
-
lines.push(`--button-radius: ${radius.button};`);
|
|
249
|
-
lines.push(`--card-radius: ${radius.card};`);
|
|
250
|
-
lines.push(`--input-radius: ${radius.input};`);
|
|
251
|
-
lines.push(`--sf-radius-button: ${radius.button};`);
|
|
252
|
-
lines.push(`--sf-radius-card: ${radius.card};`);
|
|
253
|
-
lines.push(`--sf-radius-input: ${radius.input};`);
|
|
254
|
-
let css = `:root {
|
|
255
|
-
${lines.join("\n ")}
|
|
256
|
-
}
|
|
257
|
-
`;
|
|
258
|
-
css += `body { font-family: var(--font-family); }
|
|
259
|
-
`;
|
|
260
|
-
css += `h1, h2, h3, h4, .sf-heading { font-family: var(--sf-font-heading, var(--font-family)); }
|
|
261
|
-
`;
|
|
262
|
-
if (theme.uppercaseButtons) {
|
|
263
|
-
css += `.sf-cta { text-transform: uppercase; letter-spacing: 0.08em; }
|
|
264
|
-
`;
|
|
265
|
-
}
|
|
266
|
-
if (theme.header?.uppercaseNav) {
|
|
267
|
-
css += `.sf-nav-link { text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8rem; }
|
|
268
|
-
`;
|
|
269
|
-
}
|
|
270
|
-
return css;
|
|
271
|
-
}
|
|
272
|
-
function googleFontsHref(theme) {
|
|
273
|
-
if (!theme.font) return null;
|
|
274
|
-
const families = theme.font.googleFonts ?? [theme.font.heading, theme.font.body];
|
|
275
|
-
const unique = [...new Set(families)];
|
|
276
|
-
const params = unique.map((f) => `family=${encodeURIComponent(f).replace(/%20/g, "+")}:wght@300;400;500;600;700`).join("&");
|
|
277
|
-
return `https://fonts.googleapis.com/css2?${params}&display=swap`;
|
|
278
|
-
}
|
|
279
|
-
function StorefrontThemeStyle({ theme }) {
|
|
280
|
-
const fontsHref = googleFontsHref(theme);
|
|
281
|
-
useEffect(() => {
|
|
282
|
-
if (!fontsHref) return;
|
|
283
|
-
const id = "sf-theme-fonts";
|
|
284
|
-
let link = document.getElementById(id);
|
|
285
|
-
if (!link) {
|
|
286
|
-
link = document.createElement("link");
|
|
287
|
-
link.id = id;
|
|
288
|
-
link.rel = "stylesheet";
|
|
289
|
-
document.head.appendChild(link);
|
|
290
|
-
}
|
|
291
|
-
link.href = fontsHref;
|
|
292
|
-
}, [fontsHref]);
|
|
293
|
-
return React6.createElement("style", { "data-sf-theme": theme.name }, themeToCss(theme));
|
|
294
|
-
}
|
|
295
209
|
|
|
296
210
|
// src/format.ts
|
|
297
211
|
function formatMoney(value, currency = "BRL", locale = "pt-BR") {
|
|
@@ -344,7 +258,7 @@ function productOptionSelectionKey(selection) {
|
|
|
344
258
|
// src/stores/cart.store.ts
|
|
345
259
|
var useCartStore = create()(
|
|
346
260
|
persist(
|
|
347
|
-
(set) => ({
|
|
261
|
+
(set, get) => ({
|
|
348
262
|
lines: [],
|
|
349
263
|
discountCode: null,
|
|
350
264
|
discountPercent: 0,
|
|
@@ -396,7 +310,16 @@ var useCartStore = create()(
|
|
|
396
310
|
clearDiscount: () => set({ discountCode: null, discountPercent: 0 }),
|
|
397
311
|
clear: () => set({ lines: [], discountCode: null, discountPercent: 0 }),
|
|
398
312
|
openDrawer: () => set({ isOpen: true }),
|
|
399
|
-
closeDrawer: () => set({ isOpen: false, justAddedLineId: null })
|
|
313
|
+
closeDrawer: () => set({ isOpen: false, justAddedLineId: null }),
|
|
314
|
+
reconcile: async (resolve) => {
|
|
315
|
+
const lines = get().lines;
|
|
316
|
+
if (lines.length === 0) return;
|
|
317
|
+
const keep = await Promise.all(
|
|
318
|
+
lines.map((line) => resolve(line).catch(() => true))
|
|
319
|
+
);
|
|
320
|
+
const kept = lines.filter((_, i) => keep[i]);
|
|
321
|
+
if (kept.length !== lines.length) set({ lines: kept });
|
|
322
|
+
}
|
|
400
323
|
}),
|
|
401
324
|
{
|
|
402
325
|
name: "fayz.storefront.cart.v1",
|
|
@@ -418,6 +341,102 @@ var selectShipping = (s, cfg) => {
|
|
|
418
341
|
return cfg.shipping.flatRate;
|
|
419
342
|
};
|
|
420
343
|
var selectTotal = (s, cfg) => roundCents(selectSubtotal(s) - selectDiscountTotal(s) + selectShipping(s, cfg));
|
|
344
|
+
var RADIUS_MAP = {
|
|
345
|
+
none: { button: "0px", card: "0px", input: "0px" },
|
|
346
|
+
soft: { button: "6px", card: "10px", input: "6px" },
|
|
347
|
+
round: { button: "10px", card: "16px", input: "10px" },
|
|
348
|
+
pill: { button: "999px", card: "20px", input: "999px" }
|
|
349
|
+
};
|
|
350
|
+
var COLOR_VAR_MAP = {
|
|
351
|
+
background: "--background",
|
|
352
|
+
foreground: "--foreground",
|
|
353
|
+
primary: "--primary",
|
|
354
|
+
primaryForeground: "--primary-foreground",
|
|
355
|
+
card: "--card",
|
|
356
|
+
cardForeground: "--card-foreground",
|
|
357
|
+
muted: "--muted",
|
|
358
|
+
mutedForeground: "--muted-foreground",
|
|
359
|
+
border: "--border",
|
|
360
|
+
headerBackground: "--sf-header-bg",
|
|
361
|
+
headerForeground: "--sf-header-fg",
|
|
362
|
+
announcementBackground: "--sf-announcement-bg",
|
|
363
|
+
announcementForeground: "--sf-announcement-fg",
|
|
364
|
+
accent: "--sf-accent",
|
|
365
|
+
accentForeground: "--sf-accent-foreground"
|
|
366
|
+
};
|
|
367
|
+
function themeToCss(theme) {
|
|
368
|
+
const lines = [];
|
|
369
|
+
for (const [key, cssVar] of Object.entries(COLOR_VAR_MAP)) {
|
|
370
|
+
const value = theme.colors?.[key];
|
|
371
|
+
if (value) lines.push(`${cssVar}: ${value};`);
|
|
372
|
+
}
|
|
373
|
+
if (!theme.colors?.headerBackground && theme.colors?.background) {
|
|
374
|
+
lines.push(`--sf-header-bg: ${theme.colors.background};`);
|
|
375
|
+
}
|
|
376
|
+
if (!theme.colors?.headerForeground && theme.colors?.foreground) {
|
|
377
|
+
lines.push(`--sf-header-fg: ${theme.colors.foreground};`);
|
|
378
|
+
}
|
|
379
|
+
if (theme.font) {
|
|
380
|
+
const fallback = theme.font.fallback ?? "sans-serif";
|
|
381
|
+
lines.push(`--font-family: '${theme.font.body}', ${fallback};`);
|
|
382
|
+
lines.push(`--sf-font-heading: '${theme.font.heading}', ${fallback};`);
|
|
383
|
+
if (theme.font.display) lines.push(`--sf-font-display: '${theme.font.display}', ${fallback};`);
|
|
384
|
+
if (theme.font.serif) lines.push(`--sf-font-serif: '${theme.font.serif}', serif;`);
|
|
385
|
+
}
|
|
386
|
+
for (const [key, value] of Object.entries(theme.tokens ?? {})) {
|
|
387
|
+
const name = key.startsWith("--") ? key : `--${key}`;
|
|
388
|
+
lines.push(`${name}: ${value};`);
|
|
389
|
+
}
|
|
390
|
+
const radius = RADIUS_MAP[theme.radius ?? "soft"];
|
|
391
|
+
lines.push(`--button-radius: ${radius.button};`);
|
|
392
|
+
lines.push(`--card-radius: ${radius.card};`);
|
|
393
|
+
lines.push(`--input-radius: ${radius.input};`);
|
|
394
|
+
lines.push(`--sf-radius-button: ${radius.button};`);
|
|
395
|
+
lines.push(`--sf-radius-card: ${radius.card};`);
|
|
396
|
+
lines.push(`--sf-radius-input: ${radius.input};`);
|
|
397
|
+
let css = `:root {
|
|
398
|
+
${lines.join("\n ")}
|
|
399
|
+
}
|
|
400
|
+
`;
|
|
401
|
+
css += `body { font-family: var(--font-family); }
|
|
402
|
+
`;
|
|
403
|
+
css += `h1, h2, h3, h4, .sf-heading { font-family: var(--sf-font-heading, var(--font-family)); }
|
|
404
|
+
`;
|
|
405
|
+
if (theme.uppercaseButtons) {
|
|
406
|
+
css += `.sf-cta { text-transform: uppercase; letter-spacing: 0.08em; }
|
|
407
|
+
`;
|
|
408
|
+
}
|
|
409
|
+
if (theme.header?.uppercaseNav) {
|
|
410
|
+
css += `.sf-nav-link { text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8rem; }
|
|
411
|
+
`;
|
|
412
|
+
}
|
|
413
|
+
return css;
|
|
414
|
+
}
|
|
415
|
+
function googleFontsHref(theme) {
|
|
416
|
+
if (!theme.font) return null;
|
|
417
|
+
const families = theme.font.googleFonts ?? [theme.font.heading, theme.font.body, theme.font.display, theme.font.serif].filter(
|
|
418
|
+
(f) => Boolean(f)
|
|
419
|
+
);
|
|
420
|
+
const unique = [...new Set(families)];
|
|
421
|
+
const params = unique.map((f) => `family=${encodeURIComponent(f).replace(/%20/g, "+")}:wght@300;400;500;600;700`).join("&");
|
|
422
|
+
return `https://fonts.googleapis.com/css2?${params}&display=swap`;
|
|
423
|
+
}
|
|
424
|
+
function StorefrontThemeStyle({ theme }) {
|
|
425
|
+
const fontsHref = googleFontsHref(theme);
|
|
426
|
+
useEffect(() => {
|
|
427
|
+
if (!fontsHref) return;
|
|
428
|
+
const id = "sf-theme-fonts";
|
|
429
|
+
let link = document.getElementById(id);
|
|
430
|
+
if (!link) {
|
|
431
|
+
link = document.createElement("link");
|
|
432
|
+
link.id = id;
|
|
433
|
+
link.rel = "stylesheet";
|
|
434
|
+
document.head.appendChild(link);
|
|
435
|
+
}
|
|
436
|
+
link.href = fontsHref;
|
|
437
|
+
}, [fontsHref]);
|
|
438
|
+
return React6.createElement("style", { "data-sf-theme": theme.name }, themeToCss(theme));
|
|
439
|
+
}
|
|
421
440
|
var initial = {
|
|
422
441
|
search: "",
|
|
423
442
|
categoryId: null,
|
|
@@ -526,6 +545,7 @@ function usePopOnChange(value) {
|
|
|
526
545
|
var TID = {
|
|
527
546
|
// header
|
|
528
547
|
headerSearch: "header-search",
|
|
548
|
+
headerSearchToggle: "header-search-toggle",
|
|
529
549
|
cartButton: "cart-button",
|
|
530
550
|
cartCount: "cart-count",
|
|
531
551
|
accountLink: "account-link",
|
|
@@ -714,12 +734,26 @@ function UtilityBar() {
|
|
|
714
734
|
/* @__PURE__ */ jsx("span", { className: "ml-auto flex items-center gap-4", children: social?.map((s) => /* @__PURE__ */ jsx("a", { href: s.href, target: "_blank", rel: "noreferrer", className: "hover:underline", children: s.label }, s.href)) })
|
|
715
735
|
] }) });
|
|
716
736
|
}
|
|
717
|
-
function SearchInput({ className }) {
|
|
737
|
+
function SearchInput({ className, iconOnly = false }) {
|
|
718
738
|
const config = useStorefrontConfig();
|
|
719
739
|
const search = useCatalogStore((s) => s.search);
|
|
720
740
|
const setSearch = useCatalogStore((s) => s.setSearch);
|
|
721
741
|
const path = useHashPath();
|
|
722
|
-
|
|
742
|
+
const [open, setOpen] = useState(false);
|
|
743
|
+
if (iconOnly && !open) {
|
|
744
|
+
return /* @__PURE__ */ jsx(
|
|
745
|
+
"button",
|
|
746
|
+
{
|
|
747
|
+
type: "button",
|
|
748
|
+
"aria-label": "Buscar produtos",
|
|
749
|
+
"data-testid": TID.headerSearchToggle,
|
|
750
|
+
onClick: () => setOpen(true),
|
|
751
|
+
className: "rounded-full p-2.5 transition-opacity hover:opacity-70",
|
|
752
|
+
children: /* @__PURE__ */ jsx(Search, { className: "h-5 w-5" })
|
|
753
|
+
}
|
|
754
|
+
);
|
|
755
|
+
}
|
|
756
|
+
return /* @__PURE__ */ jsxs("div", { className: `relative ${iconOnly ? "w-full max-w-xs" : className ?? ""}`, children: [
|
|
723
757
|
/* @__PURE__ */ jsx(Search, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 opacity-60" }),
|
|
724
758
|
/* @__PURE__ */ jsx(
|
|
725
759
|
"input",
|
|
@@ -728,10 +762,17 @@ function SearchInput({ className }) {
|
|
|
728
762
|
type: "search",
|
|
729
763
|
placeholder: "Buscar produtos...",
|
|
730
764
|
value: search,
|
|
765
|
+
autoFocus: iconOnly,
|
|
731
766
|
onChange: (e) => {
|
|
732
767
|
setSearch(e.target.value);
|
|
733
768
|
if (path !== config.catalogPath) navigateTo(config.catalogPath);
|
|
734
769
|
},
|
|
770
|
+
onKeyDown: (e) => {
|
|
771
|
+
if (e.key === "Escape" && iconOnly) setOpen(false);
|
|
772
|
+
},
|
|
773
|
+
onBlur: () => {
|
|
774
|
+
if (iconOnly && !search) setOpen(false);
|
|
775
|
+
},
|
|
735
776
|
className: "w-full border bg-white/10 py-2 pl-9 pr-4 text-sm outline-none transition-colors placeholder:opacity-60 focus:border-primary focus:bg-white focus:text-gray-900",
|
|
736
777
|
style: {
|
|
737
778
|
borderRadius: "var(--sf-radius-input)",
|
|
@@ -884,6 +925,7 @@ function StorefrontHeader() {
|
|
|
884
925
|
const variant = config.theme?.header?.variant ?? "classic";
|
|
885
926
|
const scrolled = useScrolled();
|
|
886
927
|
const showSearch = config.theme?.header?.showSearch !== false;
|
|
928
|
+
const iconSearch = config.theme?.header?.searchStyle === "icon";
|
|
887
929
|
const logo = /* @__PURE__ */ jsx(Link, { to: "/", className: "sf-heading shrink-0 text-xl font-bold tracking-tight", children: config.logo ?? config.name });
|
|
888
930
|
return /* @__PURE__ */ jsxs(
|
|
889
931
|
"header",
|
|
@@ -897,7 +939,7 @@ function StorefrontHeader() {
|
|
|
897
939
|
// Rio/Flex pattern: centered logo row, nav row below
|
|
898
940
|
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
899
941
|
/* @__PURE__ */ jsxs("div", { className: "mx-auto grid h-16 max-w-7xl grid-cols-[1fr_auto_1fr] items-center px-4 sm:px-6", children: [
|
|
900
|
-
showSearch ? /* @__PURE__ */ jsx(SearchInput, { className: "hidden w-full max-w-xs sm:block" }) : /* @__PURE__ */ jsx("div", {}),
|
|
942
|
+
showSearch ? /* @__PURE__ */ jsx(SearchInput, { iconOnly: iconSearch, className: "hidden w-full max-w-xs sm:block" }) : /* @__PURE__ */ jsx("div", {}),
|
|
901
943
|
/* @__PURE__ */ jsx("div", { className: "text-center", children: logo }),
|
|
902
944
|
/* @__PURE__ */ jsx("div", { className: "justify-self-end", children: /* @__PURE__ */ jsx(HeaderActions, {}) })
|
|
903
945
|
] }),
|
|
@@ -907,7 +949,7 @@ function StorefrontHeader() {
|
|
|
907
949
|
// Brasília pattern: prominent search left, logo center, actions right; nav row below
|
|
908
950
|
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
909
951
|
/* @__PURE__ */ jsxs("div", { className: "mx-auto grid h-16 max-w-7xl grid-cols-[1fr_auto_1fr] items-center gap-6 px-4 sm:px-6", children: [
|
|
910
|
-
showSearch ? /* @__PURE__ */ jsx(SearchInput, { className: "hidden w-full max-w-sm sm:block" }) : /* @__PURE__ */ jsx("div", {}),
|
|
952
|
+
showSearch ? /* @__PURE__ */ jsx(SearchInput, { iconOnly: iconSearch, className: "hidden w-full max-w-sm sm:block" }) : /* @__PURE__ */ jsx("div", {}),
|
|
911
953
|
/* @__PURE__ */ jsx("div", { className: "text-center", children: logo }),
|
|
912
954
|
/* @__PURE__ */ jsx("div", { className: "justify-self-end", children: /* @__PURE__ */ jsx(HeaderActions, {}) })
|
|
913
955
|
] }),
|
|
@@ -919,17 +961,19 @@ function StorefrontHeader() {
|
|
|
919
961
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-5", children: /* @__PURE__ */ jsx(NavLinks, { className: "hidden sm:flex" }) }),
|
|
920
962
|
/* @__PURE__ */ jsx("div", { className: "text-center", children: logo }),
|
|
921
963
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-3", children: [
|
|
922
|
-
showSearch && /* @__PURE__ */ jsx(SearchInput, { className: "hidden w-44 lg:block" }),
|
|
964
|
+
showSearch && /* @__PURE__ */ jsx(SearchInput, { iconOnly: iconSearch, className: "hidden w-44 lg:block" }),
|
|
923
965
|
/* @__PURE__ */ jsx(HeaderActions, {})
|
|
924
966
|
] })
|
|
925
967
|
] })
|
|
926
968
|
) : (
|
|
927
|
-
// classic: logo left,
|
|
969
|
+
// classic: logo left, nav, then a right-aligned search + actions cluster
|
|
928
970
|
/* @__PURE__ */ jsxs("div", { className: "mx-auto flex h-16 max-w-7xl items-center gap-6 px-4 sm:px-6", children: [
|
|
929
971
|
logo,
|
|
930
972
|
/* @__PURE__ */ jsx(NavLinks, { className: "hidden md:flex" }),
|
|
931
|
-
|
|
932
|
-
|
|
973
|
+
/* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2 sm:gap-3", children: [
|
|
974
|
+
showSearch && /* @__PURE__ */ jsx(SearchInput, { iconOnly: iconSearch, className: iconSearch ? "" : "hidden w-full max-w-sm sm:block" }),
|
|
975
|
+
/* @__PURE__ */ jsx(HeaderActions, {})
|
|
976
|
+
] })
|
|
933
977
|
] })
|
|
934
978
|
)
|
|
935
979
|
]
|
|
@@ -2937,7 +2981,8 @@ async function placeStorefrontOrder({
|
|
|
2937
2981
|
}))
|
|
2938
2982
|
});
|
|
2939
2983
|
if (markPaid) {
|
|
2940
|
-
await provider.
|
|
2984
|
+
if (provider.confirmPayment) await provider.confirmPayment(order.id);
|
|
2985
|
+
else await provider.updateOrder(order.id, { financialStatus: "paid" });
|
|
2941
2986
|
}
|
|
2942
2987
|
return { order, customerId: customerId ?? order.customerId ?? "" };
|
|
2943
2988
|
}
|
|
@@ -4417,6 +4462,15 @@ function initStorefrontRuntime(config) {
|
|
|
4417
4462
|
} else {
|
|
4418
4463
|
setShopProvider(createMockShopProvider(buildMockSeed(config)));
|
|
4419
4464
|
}
|
|
4465
|
+
const reconcileCart = () => {
|
|
4466
|
+
const provider = getShopProvider();
|
|
4467
|
+
void useCartStore.getState().reconcile(async (line) => {
|
|
4468
|
+
const product = await provider.getProduct(line.productId);
|
|
4469
|
+
return product != null;
|
|
4470
|
+
});
|
|
4471
|
+
};
|
|
4472
|
+
if (useCartStore.persist.hasHydrated()) reconcileCart();
|
|
4473
|
+
else useCartStore.persist.onFinishHydration(reconcileCart);
|
|
4420
4474
|
if (config.supabaseUrl || config.supabaseAnonKey) {
|
|
4421
4475
|
console.warn(
|
|
4422
4476
|
"@fayz-ai/shop: supabaseUrl/supabaseAnonKey are legacy fields. Pass an explicit provider/adapter or use the Fayz SDK broker path."
|
|
@@ -4776,13 +4830,75 @@ var atelierTemplate = {
|
|
|
4776
4830
|
]
|
|
4777
4831
|
})
|
|
4778
4832
|
};
|
|
4833
|
+
var foodTemplate = {
|
|
4834
|
+
id: "food",
|
|
4835
|
+
inspiration: "Delivery / restaurant storefront",
|
|
4836
|
+
announcement: "ENTREGA GR\xC1TIS ACIMA DE R$ 150 \xB7 PE\xC7A J\xC1",
|
|
4837
|
+
theme: {
|
|
4838
|
+
name: "food",
|
|
4839
|
+
colors: {
|
|
4840
|
+
background: "30 33% 97%",
|
|
4841
|
+
foreground: "20 14% 15%",
|
|
4842
|
+
primary: "14 84% 50%",
|
|
4843
|
+
primaryForeground: "0 0% 100%",
|
|
4844
|
+
card: "30 33% 99%",
|
|
4845
|
+
cardForeground: "20 14% 15%",
|
|
4846
|
+
muted: "28 20% 92%",
|
|
4847
|
+
mutedForeground: "22 10% 42%",
|
|
4848
|
+
border: "28 18% 85%",
|
|
4849
|
+
headerBackground: "20 14% 11%",
|
|
4850
|
+
headerForeground: "30 24% 96%",
|
|
4851
|
+
announcementBackground: "14 84% 50%",
|
|
4852
|
+
announcementForeground: "0 0% 100%"
|
|
4853
|
+
},
|
|
4854
|
+
font: { heading: "Poppins", body: "Inter" },
|
|
4855
|
+
radius: "round",
|
|
4856
|
+
header: { variant: "classic" },
|
|
4857
|
+
productCard: { style: "card", imageAspect: "square" }
|
|
4858
|
+
},
|
|
4859
|
+
home: (storeName, images) => ({
|
|
4860
|
+
sections: [
|
|
4861
|
+
{
|
|
4862
|
+
type: "hero",
|
|
4863
|
+
variant: "banner",
|
|
4864
|
+
height: "tall",
|
|
4865
|
+
slides: [
|
|
4866
|
+
{ title: "Sabor de verdade, na sua porta", subtitle: `${storeName} \u2014 feito na hora, do jeito que voc\xEA ama.`, cta: "Ver card\xE1pio", href: "/catalog", hue: 20, image: images?.hero?.[0] }
|
|
4867
|
+
]
|
|
4868
|
+
},
|
|
4869
|
+
{
|
|
4870
|
+
type: "benefits",
|
|
4871
|
+
items: [
|
|
4872
|
+
{ icon: "Flame", title: "Feito na hora", text: "Preparado com capricho" },
|
|
4873
|
+
{ icon: "Truck", title: "Entrega r\xE1pida", text: "Frete gr\xE1tis acima de R$ 150" },
|
|
4874
|
+
{ icon: "CreditCard", title: "Pagamento f\xE1cil", text: "Pix, cart\xE3o e mais" }
|
|
4875
|
+
]
|
|
4876
|
+
},
|
|
4877
|
+
{ type: "categories", style: "tiles", title: "Nosso card\xE1pio" },
|
|
4878
|
+
{ type: "products", title: "Mais pedidos", eyebrow: "favoritos da casa", filter: "all", limit: 8 },
|
|
4879
|
+
{ type: "banner", title: "Combo do dia", eyebrow: "oferta", subtitle: "Sele\xE7\xE3o especial com desconto", cta: "Aproveitar", hue: 14, image: images?.banners?.[0] },
|
|
4880
|
+
{ type: "products", title: "Novidades no card\xE1pio", filter: "new", limit: 4 },
|
|
4881
|
+
{
|
|
4882
|
+
type: "testimonials",
|
|
4883
|
+
title: "O que dizem por a\xED",
|
|
4884
|
+
items: [
|
|
4885
|
+
{ quote: "Chegou quentinho e absurdo de bom. Virei cliente!", author: "Rafael M." },
|
|
4886
|
+
{ quote: "Sabor de restaurante em casa, sem complica\xE7\xE3o.", author: "Beatriz L." },
|
|
4887
|
+
{ quote: "Entrega r\xE1pida e por\xE7\xE3o generosa. Recomendo demais.", author: "Diego S." }
|
|
4888
|
+
]
|
|
4889
|
+
},
|
|
4890
|
+
{ type: "newsletter", title: "Receba nossas ofertas", subtitle: "Promo\xE7\xF5es e novidades do card\xE1pio, direto no seu e-mail." }
|
|
4891
|
+
]
|
|
4892
|
+
})
|
|
4893
|
+
};
|
|
4779
4894
|
var storefrontTemplates = {
|
|
4780
4895
|
mare: mareTemplate,
|
|
4781
4896
|
sertao: sertaoTemplate,
|
|
4782
4897
|
volt: voltTemplate,
|
|
4783
|
-
atelier: atelierTemplate
|
|
4898
|
+
atelier: atelierTemplate,
|
|
4899
|
+
food: foodTemplate
|
|
4784
4900
|
};
|
|
4785
4901
|
|
|
4786
|
-
export { BenefitsRow, CartDrawer, CatalogPage, CategoryShowcase, CheckoutPage, FiltersPanel, HeroSection, HomePage, Link, ManifestoBlock, MediaCarousel, MyPurchasesPage, NewsletterBand, OrderConfirmationPage, OrderTrackingTimeline, Price, ProductCard, ProductDetailPage, ProductEnquiryForm, ProductGrid, ProductOptionSelector, ProductRail, ProductSlider, PromoBanner, QuantityInput, Reveal, SmoothImage, StorefrontFooter, StorefrontHeader, StorefrontScaffold, StorefrontSections, StorefrontShell, StorefrontThemeStyle, TID, Testimonials, atelierTemplate, bannerPlaceholder, createStorefront, createStorefrontApp, defineStorefront, defineStorefrontApp, defineStorefrontComponents, defineStorefrontConfig, defineStorefrontRoutes, defineStorefrontSections, establishCustomerSession, formatMoney, formatProductOptionSelection, getCustomerAuthAdapter, getProductOptionGroups, initStorefrontRuntime, mareTemplate, matchPath, navigateTo, normalizeProductOptionSelection, placeStorefrontOrder, prefersReducedMotion, productCardComponentContract, productOptionSelectionKey, registerStorefrontBlocks, resolveAuthAdapter, roundCents, sectionsToBlocks, selectCount, selectDiscountTotal, selectShipping, selectSubtotal, selectTotal, sertaoTemplate, signInByEmail, signOutCustomer, signUpCustomer, storefrontComponentContracts, storefrontTemplates, themeToCss, useCart, useCartStore, useCatalog, useCatalogStore, useCategories, useDiscountValidator, useEnquiry, useHashPath, useInView, useMyOrders, usePopOnChange, useProduct, useProducts, useScrolled, useSessionStore, useStorefront, useStorefrontActions, useStorefrontConfig, useStorefrontConfigOptional, voltTemplate };
|
|
4902
|
+
export { BenefitsRow, CartDrawer, CatalogPage, CategoryShowcase, CheckoutPage, FiltersPanel, HeroSection, HomePage, Link, ManifestoBlock, MediaCarousel, MyPurchasesPage, NewsletterBand, OrderConfirmationPage, OrderTrackingTimeline, Price, ProductCard, ProductDetailPage, ProductEnquiryForm, ProductGrid, ProductOptionSelector, ProductRail, ProductSlider, PromoBanner, QuantityInput, Reveal, SmoothImage, StorefrontFooter, StorefrontHeader, StorefrontScaffold, StorefrontSections, StorefrontShell, StorefrontThemeStyle, TID, Testimonials, atelierTemplate, bannerPlaceholder, createStorefront, createStorefrontApp, defineStorefront, defineStorefrontApp, defineStorefrontComponents, defineStorefrontConfig, defineStorefrontRoutes, defineStorefrontSections, establishCustomerSession, foodTemplate, formatMoney, formatProductOptionSelection, getCustomerAuthAdapter, getProductOptionGroups, initStorefrontRuntime, mareTemplate, matchPath, navigateTo, normalizeProductOptionSelection, placeStorefrontOrder, prefersReducedMotion, productCardComponentContract, productOptionSelectionKey, registerStorefrontBlocks, resolveAuthAdapter, roundCents, sectionsToBlocks, selectCount, selectDiscountTotal, selectShipping, selectSubtotal, selectTotal, sertaoTemplate, signInByEmail, signOutCustomer, signUpCustomer, storefrontComponentContracts, storefrontTemplates, themeToCss, useCart, useCartStore, useCatalog, useCatalogStore, useCategories, useDiscountValidator, useEnquiry, useHashPath, useInView, useMyOrders, usePopOnChange, useProduct, useProducts, useScrolled, useSessionStore, useStorefront, useStorefrontActions, useStorefrontConfig, useStorefrontConfigOptional, voltTemplate };
|
|
4787
4903
|
//# sourceMappingURL=index.js.map
|
|
4788
4904
|
//# sourceMappingURL=index.js.map
|