Skip to content
Livraison gratuite dès 50 € · Code WELCOME10 pour 10 % de réduction · C'est parti !
CuevasLab Storefront

Design System

Visual reference for design tokens, typography, spacing, shadows, and components used across the storefront. All values come directly from tailwind.config.js.

Colors

Brand palette

primary#C4923D
primary-foreground#FDFCFA
secondary#2E2A24
secondary-foreground#F7F5F2
accent#C87A5C
background#F7F5F2
foreground#1F1B16
card#FDFCFA
muted#EDE8DF
border#E0D9CD

Semantic colors

success#3a9e6a
warning#e07b0a
error#d93333
info#2a7fd4
accent#C87A5C

Grey scale

0
5
10
20
30
40
50
60
70
80
90

Typography

Type scale — Outfit

4xl — HeroProduct name
3xl — DisplayKitchen robots
2xl — HeadingProduct categories
xl — SubheadingFree shipping on all orders
lg — LeadPower, precision and elegance.
base — BodyDiscover our selection of professional kitchen robots.
sm — Secondary30-day returns · 2-year warranty · 24h support
xs — Caption© 2026 CuevasLab. All rights reserved.

Source Serif 4 — editorial / quotes

“Power, precision and elegance — designed for those who demand more.”

Families

--font-outfitOutfitHeadings · Body · UI labels
--font-serifSource Serif 4Editorial · Quotes

Border Radius

rounded-none0px
rounded-soft2px
rounded-base4px
rounded-rounded8px
rounded-large16px
rounded-circle9999px

Shadows

shadow-subtle
0 1px 3px rgba(0,0,0,0.06)
shadow-card
0 4px 16px rgba(0,0,0,0.08)
shadow-dropdown
0 8px 24px rgba(0,0,0,0.12)

Components

Buttons — variants

primary
secondary
outline
ghost
destructive
link

Buttons — sizes

h-8 px-3 text-xs
h-10 px-5 text-sm
h-12 px-7 text-base
w-full

Buttons — states

default
hover
focus
disabled
loading

Inputs — states

Este campo es obligatorio
Dirección validada

Inputs — sizes

Badges — semantic

PrimaryIn stockLow stockOut of stockInfoNewFree shippingSold out

Badges — product labels

SaleNewLast unitsIn stockExclusive–15%

Checkboxes & Radios

Checkbox
Radio
Toggle
Off
On

Select / Dropdown

Cards

Image
Product nameElectronics · 3 variants€ 299.00
Info cardFlat card, subtle shadow, token border.
FeaturedHighlighted with primary accent border and tint.
WarningUses warning token for feedback states.

Avatar

AC
xs
AC
sm
AC
md
AC
lg
AC
xl
placeholder

Counter / Notification dot

3
counter
dot

Inline feedback messages

Pedido confirmado correctamente.
Quedan pocas unidades disponibles.
Ha ocurrido un error. Inténtalo de nuevo.
El envío tardará entre 3–5 días hábiles.

Skeleton loaders

Checkout Components

Tab cards — selection toggle

Used in checkout for delivery method and payment method selection. Pattern: border-2 + aria-pressed + focus-visible:ring-2.

Phone input — country code dropdown

common/components/phone-input— EU country code selector + national number. Stores full phone with prefix (e.g. "+34 612345678"). 27 EU countries.

Bank transfer info card

Conditional card shown in checkout, confirmation page, and email when payment method is Bank Transfer. Data fetched from Strapi CMS bank-transfer single type.

Transfer Details

IBAN:ES91 2100 0418 4502 0005 1332BIC:CAIXESBBXXXBank:CaixaBankHolder:CuevasLab S.L.

Shipping speed radios

Radio cards for shipping method selection. Selected state uses border-primary bg-primary/5.

Address card — radio selection

checkout/components/address-card — Replaces the address dropdown in checkout. Shows alias (or street summary), full address with country, phone. Radio selection with default badge.

Form validation states

Input states for address validation feedback. Used when Google Address Validation returns different verdicts.

Please review the highlighted address fields

Suggested correction: Calle Gran Vía 123

Address verified

012 345 678

Phone input — with format validation

Updated phone-input now validates on blur against eu-countries.ts phone format regex. Shows format hint and error state.

012 345 678

Expected format: 012 345 678

Address validation modal

common/components/address-validation-modal — Shown when Google Address Validation returns verdict: "confirm". User picks suggested or original.

Verify address

We found a possible correction for your address.

VAT format hint

Shows example VAT format based on billing country. Updates dynamically when country changes. Uses eu-countries.ts vatExample data.

Format: ESA12345678

Modal — base pattern

common/components/modal — Used for address add/edit, validation confirmation. Structure: Title → Body (scrollable) → Footer with Cancel/Save.

Add address

Form fields go here (scrollable area with max-h).

Inline messages — error, warning, success, info

Inline feedback messages used throughout checkout and forms. Semantic colors: text-error, text-warning, text-success.

Suggested correction: Calle Gran Vía 123
VAT number valid ✓ — CuevasLab S.L.
Format: ESA12345678
Validating VAT number...

reCAPTCHA — v2 challenge fallback

common/components/recaptcha/use-recaptcha— v3 runs invisibly. If score < 0.5, v2 checkbox challenge renders in a centered container. Used in register, login, forgot-password.

reCAPTCHA v2 challenge

Rendered here when v3 score is too low

checkbox widget

Product Components

Price display

Regular price
€ 299.00
From (multiple variants)
desde€ 199.00
Sale price
€ 239.20€ 299.00–20%
Loading state

Rating stars

(1,284)
5.0 — perfect
(327)
4.5 — half star
(42)
3.5 — half star mid
(8)
2.0 — partial
0 — empty

Option select — variant picker

Size
Color

Breadcrumb

Product tabs — accordion

Descripción

Procesador A16 Bionic, pantalla Super Retina XDR de 6,1 pulgadas, cámara de 48 MP con modo fotográfico.

Especificaciones técnicas
Envío y devoluciones

Navigation & Layout

Pagination

Page 4 of 12
Page 1 of 3 (short)

Stepper — checkout progress

Carrito activo
1
2
3
Checkout activo
2
3
Confirmación activa
3

Step list — onboarding

1

Crea tu cuenta

Regístrate con tu email o accede con Google.

2

Añade tu dirección

Guarda una dirección de envío para agilizar el checkout.

3

Realiza tu primer pedido

Explora el catálogo y añade productos al carrito.

Cart & Checkout

Discount code input

Collapsed
Expanded
Applied
SUMMER20

Free shipping nudge

Carrito: € 32.00Envío gratis a partir de € 50.00
64%

Te faltan € 18.00 para el envío gratuito.

Spacing scale

0.52px
14px
1.56px
28px
2.510px
312px
416px
520px
624px
832px
1040px
1248px
1664px

Animation & Transitions

animate-pulse
animate-spin
duration-150
duration-200
scale hover

Search

Search dropdown — states

Initial — no query
Buscar productos…

Empieza a escribir para buscar

With results — query "iphone"
iphone
  • Apple iPhone 15

    Smartphones · 3 colores

    € 999.00
  • Apple iPhone 15 Pro

    Smartphones · 4 colores

    € 1.199.00
  • Apple iPhone 14

    Smartphones · 5 colores

    € 799.00
No results
xyzproducto123

Sin resultados para "xyzproducto123"

Account Components

Order card

#1042
4 Apr 2026€ 379.002 items

Address card

Andrés CuevasPrincipal
Calle Gran Vía 12328001 Madrid, Spain+34 612 345 678
Andrés Cuevas
Paseo de la Castellana 45, 3ºA28046 Madrid, Spain
Añadir nueva dirección

Account navigation

Reviews & Ratings

Rating summary bar

4.3
284 reseñas
5
58%
4
24%
3
10%
2
5%
1
3%

Review card

María G.Compra verificada🇪🇸
12 mar 2026

Excelente producto

Llegó antes de lo previsto y el embalaje estaba perfecto. La calidad es mejor de lo esperado, lo recomiendo totalmente.

James T.🇬🇧
3 feb 2026

Great value

Really happy with this purchase. Only minor issue was the packaging, but the product itself is excellent.

Review form

Deja tu reseña

Cart

Cart item — full & preview

Full (cart page)

Apple iPhone 15

Negro · 128GB

€ 999.00
1
Preview (checkout sidebar)

Apple iPhone 15

Negro · 128GB

€ 999.00

Cart totals

Subtotal (sin IVA)€ 826.45
EnvíoGratis
Descuento (SUMMER20)– € 82.64
Total (IVA incl.)€ 999.00

Empty cart state

Tu carrito está vacío

Explora el catálogo y añade productos para empezar.

Sign-in prompt

¿Ya tienes cuenta?

Accede para ver tus pedidos y tus datos.

Auth Components

Social login buttons

o continúa con

Password strength indicator

Insecure — < 8 chars or 1 type
ContraseñaInsegura
Medium — 2 types + length
ContraseñaMedia
Strong — 4 types
ContraseñaSegura

Layout Chrome

Announcement bar

Default
🔥 Envío gratuito en pedidos superiores a 50 € · Ver condiciones

Trust bar

🚚

Envío gratis +50 €

🛡️

Compra segura

↩️

Devolución 30 días

Entrega en 24h

Cookie consent (external)

El banner de cookies lo gestiona cookie-script.com — se inyecta vía script externo condicionado a la config de Strapi. No tiene estilos propios en este sistema de diseño.

Activado en Strapi → integrations.cookie_consent.active = true

Cart toast notification

Añadido al carrito

Apple iPhone 15 · Negro · 128GB

Geo / language modal

Selecciona tu región e idioma

Modules

layout/templates/nav

Top navigation bar with logo, category bar, search, cart, account, and language switcher.

layout/templates/footer

Footer with brand tagline, category links, store links, and developer section.

layout/components/cart-dropdown

Cart flyout panel. Shows line items with quantity controls, a draggable Embla carousel for recommended products, total, and checkout CTA. Auto-opens on item add.

home/components/hero

Full-width CMS-driven hero section. Fetches from Strapi. Wrapped in Suspense with SkeletonHero fallback.

home/components/category-cards

CMS-driven category grid (desktop) / horizontal scroll (mobile). Fetches from Strapi. Wrapped in Suspense with SkeletonCategoryCards fallback.

home/components/hero/skeleton

SkeletonHero — animated pulse placeholder matching the 80vh hero layout. Used as Suspense fallback while Strapi CMS data loads.

home/components/category-cards/skeleton

SkeletonCategoryCards — animated pulse placeholder matching 4-col desktop / scroll mobile grid.

products/components

Product card (ProductPreview), Thumbnail (supports priority + lazy loading), image gallery, price, variants selector, rating stars, and tabs.

products/components/product-preview

Product card with image (lazy-loaded), badge, WishlistButton (shown when wishlistIds prop provided), color swatches, price, and quick-view overlay.

account/components/wishlist-button

WishlistButton — client component. Receives productId + isWishlisted. Calls toggleWishlist server action on click with optimistic state update. Heart icon fills accent when wishlisted.

cart/templates

Cart page with line items, quantity controls, and order summary.

checkout/components/single-page-checkout

Single-page checkout: Contact → Delivery (tabs) → AddressForm → Shipping → Invoice opt-in + Company/VAT → Payment (tabs) → Place Order.

order/templates

Order confirmation and order details templates.

account/templates

Account dashboard with profile, addresses, orders, and wishlist sections.

common/components/address-form

Reusable address form: Name, Surname, Street, Street No, Additional info, Postal Code, City, Province, Country, Phone. Supports alias, Google Autocomplete, and field prefix.

common/components/google-autocomplete

Google Places Autocomplete using PlaceAutocompleteElement (new API). Loads script dynamically, parses address components into form fields.

common/components/address-validation-modal

Modal for Google Address Validation corrections. Shows suggested vs original address with radio selection and confirmation checkbox.

common/components/recaptcha

reCAPTCHA v3 + v2 fallback. useReCaptcha hook loads v3 invisibly, shows v2 challenge widget if score is too low. Used in register and forgot password.

account/components/pickup-points

Pickup Points placeholder section with 'Coming soon' dummy card.

common/components

Shared primitives: Input, PhoneInput, NativeSelect, Modal, Checkbox, LineItem, CartTotals, LocalizedClientLink.

common/icons

Custom SVG icons: BankTransfer, Spinner, Trash, FastDelivery, MapPin, etc.

Pages

/Homepage — hero, trust bar, and product grid.
/storeProduct listing page with filters, sorting, and view modes.
/products/[handle]Product detail page with gallery, variants, and add-to-cart.
/category/[slug]Category listing — filtered PLP.
/cartCart page with summary and checkout CTA.
/checkoutSingle-page checkout: contact, delivery tabs, address + phone, shipping speed, billing + VAT, payment tabs, Place Order.
/order/confirmed/[id]Order confirmation page.
/accountAccount dashboard overview.
/account/@dashboard/profileProfile: Access Data (email, password) → Delivery Methods (address book with alias/default + pickup points placeholder) → Billing Address (invoice opt-in + Company/VAT).
/account/@dashboard/addressesSaved addresses book (also accessible from profile).
/account/@dashboard/ordersOrder history list.
/account/@dashboard/orders/details/[id]Order detail view.
/account/@dashboard/wishlistWishlist page. Fetches wishlisted product IDs from customer.metadata.wishlistIds, loads full product data, renders product grid. Shows empty state with store CTA.
/page/design-systemThis page — design token and component reference.