// KineSuite landing — phone mockup (aligned with app UI: index.tsx + EvaluationCard). // Matches assets/logo-mark.svg and app LogoMark (AnimatedMark assembly @ t=1). function LandingMark({ size = 28, fg = '#fff' }) { return ( ); } /** App icon (favicon.svg) — nav, footer, anywhere the full tile is shown. */ function LandingBrandIcon({ size = 32 }) { return ( ); } function LandingWordmark({ size = 22, light = false }) { return ( Kine Suite ); } function LandingPhone({ width = 360, children }) { const height = Math.round(width * (852 / 392)); const radius = Math.round(width * 0.115); const innerRadius = radius - 8; return (
9:41
{children}
); } function LandingCatalogScreen({ lang }) { const visible = LANDING_SCALES.filter((s) => ['berg', 'tug', 'womac', 'tm6m', 'moca'].includes(s.id) ); const chips = lang === 'es' ? [ { label: 'Todas', active: true }, { label: 'Neurología', cat: 'neuro' }, { label: 'MSK', cat: 'msk' }, { label: 'Cardio', cat: 'cardio' }, ] : [ { label: 'All', active: true }, { label: 'Neurology', cat: 'neuro' }, { label: 'MSK', cat: 'msk' }, { label: 'Cardio', cat: 'cardio' }, ]; return (
{/* Header — matches app/(tabs)/index.tsx */}
{lang === 'es' ? 'Evaluaciones' : 'Assessments'}
{LANDING_CATALOG_TOTAL} {lang === 'es' ? 'escalas validadas' : 'validated scales'}
K
{/* Search — height 42, radius 10 */}
{lang === 'es' ? 'Buscar escala, ítem, autor…' : 'Search scale, item, author…'}
{/* Category chips */}
{chips.map((c, i) => (
{c.cat && ( )} {c.label}
))}
{/* Scale list — EvaluationCard layout */}
{visible.map((scale) => ( ))}
{/* Tab bar — Evaluaciones · Pacientes · Historial · Ajustes */}
{[ { label: lang === 'es' ? 'Evaluaciones' : 'Assessments', icon: 'grid', active: true }, { label: lang === 'es' ? 'Pacientes' : 'Patients', icon: 'people' }, { label: lang === 'es' ? 'Historial' : 'History', icon: 'time' }, { label: lang === 'es' ? 'Ajustes' : 'Settings', icon: 'settings' }, ].map((tab, i) => (
{tab.label}
))}
); } function TabIcon({ kind }) { const c = 'currentColor'; const stroke = { fill: 'none', stroke: c, strokeWidth: 1.8, strokeLinecap: 'round', strokeLinejoin: 'round' }; if (kind === 'grid') return ( ); if (kind === 'people') return ( ); if (kind === 'time') return ( ); return ( ); } function LandingScaleCard({ scale, lang }) { const catColor = `var(--cat-${scale.cat})`; const name = lang === 'es' ? scale.name_es : scale.name_en; const tags = (lang === 'es' ? scale.tags_es : scale.tags_en).slice(0, 3); const cat = LANDING_CAT_LABEL[scale.cat][lang]; return (
{cat}
{name}
{scale.items} {lang === 'es' ? 'ítems' : 'items'} {scale.timed ? ` · ${lang === 'es' ? 'Cronometrada' : 'Timed'}` : ''}
{tags.length > 0 && (
{tags.map((tg) => ( #{tg} ))}
)}
); } Object.assign(window, { LandingMark, LandingBrandIcon, LandingWordmark, LandingPhone, LandingCatalogScreen, });