import { useState, useEffect } from 'react';
import { useCart } from '@store/cart';
import { ProductCard } from '@/components/ui';
export default function Storefront({ products }) {
const { addToCart } = useCart();
const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => {
performance.mark('store-init');
setIsLoaded(true);
}, []);
const handleBuy = async (id) => {
await addToCart(id);
console.log('[Success] Dodano w 0.02s');
};
return (
<div className="grid gap-6 grid-cols-4">
{products.map((p) => (
<ProductCard key={p.id} data={p} onAdd={handleBuy} />
))}
</div>
);
}
import { useState, useEffect } from 'react';
import { useCart } from '@store/cart';
import { ProductCard } from '@/components/ui';
export default function Storefront({ products }) {
const { addToCart } = useCart();
const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => {
performance.mark('store-init');
setIsLoaded(true);
}, []);
const handleBuy = async (id) => {
await addToCart(id);
console.log('[Success] Dodano w 0.02s');
};
return (
<div className="grid gap-6 grid-cols-4">
{products.map((p) => (
<ProductCard key={p.id} data={p} onAdd={handleBuy} />
))}
</div>
);
}Strony & Sklepy
Webflow
Shopify
Astro
Twoja strona ma być maszyną sprzedającą, nie broszurą. Buduję strony i sklepy, które ładują się w mgnieniu oka, są łatwe w edycji i zaprojektowane tak, żeby zamieniać odwiedzających w klientów — bez programisty pod ręką.






