Mobile First UI Library
Filosofía: Diseña para el pulgar. Optimiza para la batería. Respeta la plataforma.
Core: iOS Human Interface Guidelines + Material Design 3 + PWA best practices.
Use this skill when
- Diseñando o implementando UI para apps mobile-first (PWA, React Native, o web responsive)
- Eligiendo entre componentes (¿sheet o modal? ¿tabs o drawer? ¿card o list?)
- Implementando gestos (swipe, pull-to-refresh, long press)
- Necesitando patrones de navegación para bottom tabs + stack navigation en Next.js
- Integrando cámara del navegador en una PWA
- Configurando safe areas, viewport, y touch targets
- Creando design tokens y sistema de colores mobile-first
Do not use this skill when
- El target es exclusivamente desktop (>1024px)
- Se trata de diseño de APIs o backend
- Es una CLI o herramienta sin interfaz visual
Instructions
- Identificar la plataforma target (iOS PWA, Android, web app de gestión)
- Para web apps (Strata, FeedbackIA, dashboards): leer primero
resources/web-app-patterns.md
- Consultar el catálogo de componentes (
resources/component-catalog.md)
- Aplicar patrones iOS específicos (
resources/ios-patterns.md)
- Seguir patrones de navegación (
resources/navigation-patterns.md)
- Implementar con los snippets del playbook (
resources/implementation-playbook.md)
Reglas absolutas (aplicar siempre, sin excepción)
- Headers mobile: >1 acción secundaria → colapsar en menú ⋮ (
sm:hidden / hidden sm:flex)
- Dropdowns: borde visible +
ChevronDown que rota 180° + z-50 en panel
- Acciones destructivas: siempre doble confirmación inline (3 estados en el mismo botón)
- Streaming/generación: tokens visibles en tiempo real con cursor parpadeante, nunca pantalla vacía
- Secciones colapsadas: 0 acciones visibles, solo título + indicador + chevron
- Guardar: feedback visual inmediato (idle → saving → saved 2s → idle)
- Sin emojis en UI de gestión/productividad
- Touch targets: mínimo
py-2.5 (≥44px) en cualquier elemento interactivo
Quick Reference
iOS Sizing (points)
Bottom Tab Bar: 49pt + env(safe-area-inset-bottom)
Navigation Bar: 44pt + env(safe-area-inset-top)
Touch Target: min 44×44pt
Button Height: 50pt
Input Height: 44pt
Card Radius: 12-16pt
Sheet Radius: 12pt (top corners only)
Status Bar: ~54pt (Dynamic Island) / ~44pt (notch) / ~20pt (legacy)
Home Indicator: ~34pt
Typography (SF Pro / System)
Large Title: 34pt Bold → text-[34px] font-bold
Title 1: 28pt Bold → text-[28px] font-bold
Title 2: 22pt Bold → text-[22px] font-bold
Title 3: 20pt Semi → text-[20px] font-semibold
Headline: 17pt Semi → text-[17px] font-semibold
Body: 17pt Regular → text-[17px]
Callout: 16pt Regular → text-base
Subhead: 15pt Regular → text-[15px]
Footnote: 13pt Regular → text-[13px]
Caption: 12pt Regular → text-xs
Spacing Scale
xs: 4px → p-1
sm: 8px → p-2
md: 12px → p-3
lg: 16px → p-4
xl: 20px → p-5
2xl: 24px → p-6
3xl: 32px → p-8
Component Decision Tree
¿Necesitas mostrar contenido?
├─ Lista de items → <List> (grouped/inset style para iOS)
├─ Datos con acciones → <Card>
├─ Dato simple → <Cell> (label + value + chevron)
└─ Dashboard resumen → <StatCard> (icon + number + label)
¿Necesitas input del usuario?
├─ Acción rápida (1 tap) → <Button> (mín 44pt)
├─ Texto corto → <Input> (44pt height)
├─ Texto largo → <Textarea>
├─ Selección binaria → <Switch> (iOS style)
├─ Selección 1 de N → <SegmentedControl> (2-5 opciones)
│ → <Select/Picker> (>5 opciones)
├─ Selección M de N → <Checkbox> group
├─ Número → <Stepper> o <NumericKeypad>
└─ Fecha/Hora → Native date/time picker
¿Necesitas overlay?
├─ Acción contextual → <ActionSheet> (iOS) / Bottom Sheet
├─ Confirmación → <Alert> nativo (window.confirm en PWA)
├─ Formulario rápido → <Sheet> (half/full screen)
├─ Detalle completo → Push navigation (no modal)
└─ Media/Preview → <Fullscreen Modal>
¿Necesitas navegación?
├─ Top level (2-5 destinos) → <BottomTabBar>
├─ Dentro de sección → Stack push/pop
├─ Filtrar contenido → <SegmentedControl>
├─ Sub-secciones muchas → <ScrollableTabBar>
└─ Acción primaria flotante → <FAB> (solo Android)
Color System Template
/* Light */
--background: #F2F2F7; /* iOS System Gray 6 */
--surface: #FFFFFF;
--text-primary: #1C1C1E;
--text-secondary: #8E8E93;
--separator: #C6C6C8;
--accent: /* Tu color principal */
--positive: #34C759; /* iOS Green */
--negative: #FF3B30; /* iOS Red */
--warning: #FF9500; /* iOS Orange */
/* Dark */
--background: #000000;
--surface: #1C1C1E;
--text-primary: #FFFFFF;
--text-secondary: #8E8E93;
--separator: #38383A;
Resources
For detailed implementation:
resources/dashboard-patterns.md ⭐ — Dashboards y hubs (Activity Stream, Project Cards, Search hero, Empty States, Sidebar mínima). Leer primero para cualquier página de inicio/dashboard.
resources/web-app-patterns.md ⭐ — Patrones para web apps de gestión (Headers, dropdowns, secciones, streaming, destructivos, guardar). Leer para cualquier página de detalle/edición.
resources/component-catalog.md — Cuándo usar cada componente
resources/ios-patterns.md — Checklist iOS HIG para web apps
resources/navigation-patterns.md — Tabs, gestos, stack en Next.js
resources/implementation-playbook.md — Snippets listos para copiar
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: mobile-first-ui-library3description: Biblioteca de componentes y patrones UI mobile-first para PWAs iOS/Android. Cubre navegación, gestos, componentes, cámara, safe areas, y patterns de Tailwind + shadcn/ui optimizados para móvil. Cumple iOS HIG y Material Design 3. Use when this capability is needed.4---56# Mobile First UI Library78> **Filosofía:** Diseña para el pulgar. Optimiza para la batería. Respeta la plataforma.9> **Core:** iOS Human Interface Guidelines + Material Design 3 + PWA best practices.1011---1213## Use this skill when1415- Diseñando o implementando UI para apps mobile-first (PWA, React Native, o web responsive)16- Eligiendo entre componentes (¿sheet o modal? ¿tabs o drawer? ¿card o list?)17- Implementando gestos (swipe, pull-to-refresh, long press)18- Necesitando patrones de navegación para bottom tabs + stack navigation en Next.js19- Integrando cámara del navegador en una PWA20- Configurando safe areas, viewport, y touch targets21- Creando design tokens y sistema de colores mobile-first2223## Do not use this skill when2425- El target es exclusivamente desktop (>1024px)26- Se trata de diseño de APIs o backend27- Es una CLI o herramienta sin interfaz visual2829## Instructions30311. Identificar la plataforma target (iOS PWA, Android, web app de gestión)322. **Para web apps (Strata, FeedbackIA, dashboards):** leer primero `resources/web-app-patterns.md`333. Consultar el catálogo de componentes (`resources/component-catalog.md`)344. Aplicar patrones iOS específicos (`resources/ios-patterns.md`)355. Seguir patrones de navegación (`resources/navigation-patterns.md`)366. Implementar con los snippets del playbook (`resources/implementation-playbook.md`)3738## Reglas absolutas (aplicar siempre, sin excepción)3940- **Headers mobile:** >1 acción secundaria → colapsar en menú ⋮ (`sm:hidden` / `hidden sm:flex`)41- **Dropdowns:** borde visible + `ChevronDown` que rota 180° + `z-50` en panel42- **Acciones destructivas:** siempre doble confirmación inline (3 estados en el mismo botón)43- **Streaming/generación:** tokens visibles en tiempo real con cursor parpadeante, nunca pantalla vacía44- **Secciones colapsadas:** 0 acciones visibles, solo título + indicador + chevron45- **Guardar:** feedback visual inmediato (idle → saving → saved 2s → idle)46- **Sin emojis** en UI de gestión/productividad47- **Touch targets:** mínimo `py-2.5` (≥44px) en cualquier elemento interactivo4849---5051## Quick Reference5253### iOS Sizing (points)54```55Bottom Tab Bar: 49pt + env(safe-area-inset-bottom)56Navigation Bar: 44pt + env(safe-area-inset-top)57Touch Target: min 44×44pt58Button Height: 50pt59Input Height: 44pt60Card Radius: 12-16pt61Sheet Radius: 12pt (top corners only)62Status Bar: ~54pt (Dynamic Island) / ~44pt (notch) / ~20pt (legacy)63Home Indicator: ~34pt64```6566### Typography (SF Pro / System)67```68Large Title: 34pt Bold → text-[34px] font-bold69Title 1: 28pt Bold → text-[28px] font-bold 70Title 2: 22pt Bold → text-[22px] font-bold71Title 3: 20pt Semi → text-[20px] font-semibold72Headline: 17pt Semi → text-[17px] font-semibold73Body: 17pt Regular → text-[17px]74Callout: 16pt Regular → text-base75Subhead: 15pt Regular → text-[15px]76Footnote: 13pt Regular → text-[13px]77Caption: 12pt Regular → text-xs78```7980### Spacing Scale81```82xs: 4px → p-183sm: 8px → p-284md: 12px → p-385lg: 16px → p-486xl: 20px → p-5872xl: 24px → p-6883xl: 32px → p-889```9091### Component Decision Tree9293```94¿Necesitas mostrar contenido?95├─ Lista de items → <List> (grouped/inset style para iOS)96├─ Datos con acciones → <Card>97├─ Dato simple → <Cell> (label + value + chevron)98└─ Dashboard resumen → <StatCard> (icon + number + label)99100¿Necesitas input del usuario?101├─ Acción rápida (1 tap) → <Button> (mín 44pt)102├─ Texto corto → <Input> (44pt height)103├─ Texto largo → <Textarea>104├─ Selección binaria → <Switch> (iOS style)105├─ Selección 1 de N → <SegmentedControl> (2-5 opciones)106│ → <Select/Picker> (>5 opciones)107├─ Selección M de N → <Checkbox> group108├─ Número → <Stepper> o <NumericKeypad>109└─ Fecha/Hora → Native date/time picker110111¿Necesitas overlay?112├─ Acción contextual → <ActionSheet> (iOS) / Bottom Sheet113├─ Confirmación → <Alert> nativo (window.confirm en PWA)114├─ Formulario rápido → <Sheet> (half/full screen)115├─ Detalle completo → Push navigation (no modal)116└─ Media/Preview → <Fullscreen Modal>117118¿Necesitas navegación?119├─ Top level (2-5 destinos) → <BottomTabBar>120├─ Dentro de sección → Stack push/pop121├─ Filtrar contenido → <SegmentedControl>122├─ Sub-secciones muchas → <ScrollableTabBar>123└─ Acción primaria flotante → <FAB> (solo Android)124```125126### Color System Template127```css128/* Light */129--background: #F2F2F7; /* iOS System Gray 6 */130--surface: #FFFFFF;131--text-primary: #1C1C1E;132--text-secondary: #8E8E93;133--separator: #C6C6C8;134--accent: /* Tu color principal */135--positive: #34C759; /* iOS Green */136--negative: #FF3B30; /* iOS Red */137--warning: #FF9500; /* iOS Orange */138139/* Dark */140--background: #000000;141--surface: #1C1C1E;142--text-primary: #FFFFFF;143--text-secondary: #8E8E93;144--separator: #38383A;145```146147---148149## Resources150151For detailed implementation:152- `resources/dashboard-patterns.md` ⭐ — **Dashboards y hubs** (Activity Stream, Project Cards, Search hero, Empty States, Sidebar mínima). Leer primero para cualquier página de inicio/dashboard.153- `resources/web-app-patterns.md` ⭐ — **Patrones para web apps de gestión** (Headers, dropdowns, secciones, streaming, destructivos, guardar). Leer para cualquier página de detalle/edición.154- `resources/component-catalog.md` — Cuándo usar cada componente155- `resources/ios-patterns.md` — Checklist iOS HIG para web apps156- `resources/navigation-patterns.md` — Tabs, gestos, stack en Next.js157- `resources/implementation-playbook.md` — Snippets listos para copiar158159---160> Converted and distributed by [TomeVault](https://tomevault.io/claim/vjrivmon) — claim your Tome and manage your conversions.161<!-- tomevault:4.0:skill_md:2026-04-13 -->