Skip to main content

bsm-typography-rules

Reglas blindadas de tipografía y filtros visibles del storefront/admin. Aplica esto cada vez que crees o edites componentes UI en /marketplace, /admin, /superadmin, /tienda. Evita texto diminuto, garantiza filtros grandes/cuadrados, jerarquía visual con impacto. Usar SIEMPRE antes de tocar UI visible al cliente.

Datos de origen

Repositorio
Buleje/Mercado
Última actividad en el origen
28 de abril de 2026 a las 19:00
Idioma detectado de SKILL.md
español
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
bsm-typography-rules
description
Reglas blindadas de tipografía y filtros visibles del storefront/admin. Aplica esto cada vez que crees o edites componentes UI en /marketplace, /admin, /superadmin, /tienda. Evita texto diminuto, garantiza filtros grandes/cuadrados, jerarquía visual con impacto. Usar SIEMPRE antes de tocar UI visible al cliente.
user-invocable
true
model
sonnet
allowed-tools
Read, Grep, Glob
argument-hint
[storefront|admin|filtros|hero|tarjeta]
# Tipografía y filtros visuales — Buleje (reglas blindadas) > Brandon (2026-04-28): "Evita a toda costa en cualquier sección de marketplace o admin letras diminutas o pequeñas que no sean visibles. Siempre adapta letras claras que se puedan leer y tengan buen impacto. Filtros: cuadrados, más visibles, más grandes." Estas reglas son **NO NEGOCIABLES** para componentes vistos por el cliente final. --- ## 1. Tamaños mínimos por contexto | Contexto | Mínimo | Recomendado | NUNCA usar | |---|---|---|---| | Body text storefront (descripción tienda, producto, FAQ) | `text-base` (16px) | `text-base` o `text-lg` | `text-xs`, `text-2xs` | | Nombre de producto en card | `text-base` | `text-base sm:text-lg font-bold` | `text-sm` o menor | | Precio en card (CTA visual) | `text-xl` | `text-xl sm:text-2xl font-black` | < `text-lg` | | Categorías chips | `text-base font-bold` | `text-base font-bold` | `text-xs`, `text-sm` | | Filtros (search, sort, view-toggle) | `text-base h-12` | input de **48px alto** mín, `border-2`, `rounded-2xl` | `text-xs h-8` o inputs flacos | | Stats en hero (rating, delivery, ubicación) | `text-base` con `gap-x-4` | `text-base font-medium` con icons `h-4 w-4` | `text-xs gap-1.5` con icons `h-3 w-3` | | Empty state | `text-lg font-bold` | `text-lg font-bold` para titular | `text-sm` para titular | | CTA buttons | `text-base font-bold` mín | `text-base font-bold h-12` | `text-xs` o `h-7` | `text-2xs` (10px) **solo** se permite en: - `Kicker` / eyebrow uppercase tracking-wider - Sparkline values - Badge `Inactivo`/`Destacada` (no informativo, decorativo) - Position pills numéricos (`1/12`) --- ## 2. Filtros del storefront — formato cuadrado y grande ```tsx // ❌ MAL — input flaco con border 1px <input className="px-3 py-2 text-sm rounded-lg border" /> // ✅ BIEN — input grande, border 2px, padding generoso <input className="h-12 pl-12 pr-4 text-base rounded-2xl border-2 border-[var(--rule-base)] bg-[var(--surface-raised)]" /> ``` | Prop | Valor mínimo | |---|---| | Altura | `h-12` (48px) | | Border | `border-2` | | Radius | `rounded-2xl` (16px) | | Padding horizontal | `pl-12 pr-4` (con icono) o `px-4` | | Texto | `text-base font-medium` | | Focus | `focus:border-[var(--accent)] focus:ring-2 focus:ring-[var(--accent-muted)]` | | Icono dentro | `h-5 w-5` | **View toggles** (grid/list, etc): cuadrados `h-12 w-12` (no `h-8 w-8`), separados con `border-l-2` no `border-l`. --- ## 3. Categorías chips — cuadradas, no pílulas chiquitas ```tsx // ❌ MAL — chip pequeño tipo tag <button className="rounded-full px-3.5 py-1.5 text-sm"> // ✅ BIEN — card cuadrada vertical con count grande <button className="flex flex-col items-center gap-1.5 rounded-2xl px-5 py-3.5 min-w-[110px] text-base font-bold border-2 hover:-translate-y-0.5 hover:shadow-md"> <span className="text-base font-bold">{label}</span> <span className="h-6 px-2 rounded-full text-xs font-black tabular-nums">{count}</span> </button> ``` --- ## 4. Cards de producto — jerarquía con impacto | Elemento | Antes (chico) | Ahora (mín) | |---|---|---| | Padding card | `p-3` | `p-4` | | Nombre producto | `text-sm font-semibold` | `text-base sm:text-lg font-bold` | | Descripción | `text-xs text-secondary` | `text-sm font-medium leading-relaxed` | | Tienda | `text-xs text-tertiary` con icon `h-3` | `text-sm font-medium text-secondary` con icon `h-4` | | Precio | OK `text-xl sm:text-2xl font-black` | OK | | Stock | `text-xs` | `text-sm font-bold` | | Botón carrito | `h-12 w-12` | OK (mín `h-10 w-10`) | | `min-h` para nombre 2 líneas | `min-h-[2.5rem]` | `min-h-[2.75rem]` | --- ## 5. Tokens del DS (referencia rápida) ```css /* Tipografía */ --ts-2xs: 10px; /* SOLO kickers/sparklines/badges */ --ts-xs: 12px; /* SOLO meta/timestamps en admin tabular */ --ts-sm: 14px; /* Mínimo en admin/dashboards body */ --ts-base: 16px; /* MÍNIMO en storefront body */ --ts-lg: 18px; /* Subtítulos */ --ts-xl: 20px; /* Títulos sección/precios */ --ts-2xl: 24px; /* H2 módulo */ --ts-3xl: 30px; /* Hero KPI / page title */ ``` Para storefront, **prefiere clases nativas Tailwind** (`text-base`, `text-lg`, `text-xl`) sobre `text-[length:var(--ts-*)]` — son más legibles para el siguiente mantenedor. --- ## 6. Anti-patterns frecuentes a corregir | Anti-pattern | Reemplazo | |---|---| | `text-gray-500` sin `dark:` | `text-[var(--text-secondary)]` | | `text-gray-400` sin `dark:` | `text-[var(--text-tertiary)]` | | `border-gray-200` sin `dark:` | `border-[var(--rule-base)]` | | `bg-white` sin `dark:` | `bg-[var(--surface-raised)]` | | `bg-gray-50` sin `dark:` | `bg-[var(--surface-sunken)]` | | `text-emerald-500/600` saturado | `text-[var(--data-success)]` | | `text-rose-500/red-600` saturado | `text-[var(--data-error)]` | | `text-[10px]` o `text-[length:var(--ts-2xs)]` en body | Subir a `text-xs` mín, `text-sm` recomendado | El admin shell tiene **safety-net CSS** (`globals.css:2318+`) que auto-corrige `bg-gray-*`/`text-gray-*` en dark, pero **prefiere tokens del DS desde el principio** — el safety net no cubre todos los casos. --- ## 7. Filosofía visual (Brandon, 2026-04-28) > "Evita lo plano y aburrido. Siempre trata de ser visible visual todo aspecto de mejora." - **Hover states obligatorios** en cualquier card/botón clickable: `hover:-translate-y-0.5 hover:shadow-md` - **Border 2px** (`border-2`) en filtros y cards de selección — `border` (1px) se ve plano - **Radius generoso** — `rounded-2xl` para filtros/categorías, `rounded-xl` mínimo para cards de producto - **Sombras con tinte accent** en CTAs primarios: `shadow-[0_4px_14px_rgba(0,180,166,0.35)]` - **Iconos h-4/h-5** en stats — nunca `h-3` que apenas se ve - **Posición visual destacada** con halo `shadow-[0_0_0_2px_var(--accent-soft)]` en items #1 / featured --- ## 8. Cómo aplicar este skill Cuando recibas una tarea que toque cualquiera de: - `app/marketplace/**` - `components/marketplace/**` - `components/store/**` - `app/(store)/**` - `app/admin/**` (módulos visibles, no settings internos) → **Lee este SKILL.md primero**, luego edita. Si encontrás `text-xs`, `text-2xs`, `text-[10px]`, `border-gray-*` sin override, o filtros con `h-8/h-9` en componentes ya editados, **corrige al pasar** aunque no sea el foco de la tarea — es debt visual que rompe la regla blindada.
Ver en GitHub