Skip to content

@imansi/templates

29 páginas completas + 3 layouts para el ecosistema Imansi. Auth, marketing, dashboard y extras — todas visuales, listas para conectar a tu backend.

npm versionLicense: MIT


¿Qué es?

@imansi/templates es el paquete de páginas completas del ecosistema Imansi. Contiene 29 plantillas listas para copiar, pegar y usar: login, landing, dashboard, checkout, blog, docs y más.

A diferencia de @imansi/ui (componentes genéricos), este paquete te da páginas enteras ya armadas con esos componentes.

Son puramente visuales. No tienen lógica de negocio, no llaman APIs, no manejan estado global. Reciben props y callbacks. Vos decidís cómo conectarlas.


Instalación

bash
npm install @imansi/templates @imansi/ui @imansi/tailwind react-router-dom

Requiere:

DependenciaVersión mínima
React18 o 19
React Router6.0
Tailwind CSS4.0
@imansi/tailwind^0.1.1
@imansi/ui^0.1.1

Uso básico

jsx
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import { LoginPage, LandingPage, DashboardHome } from '@imansi/templates';

export default function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<LandingPage />} />
        <Route path="/login" element={<LoginPage />} />
        <Route path="/panel" element={<DashboardHome />} />
      </Routes>
    </BrowserRouter>
  );
}

Páginas disponibles

Auth (5)

Todas usan AuthLayout (split-pane con branding).

PáginaDescripción
LoginPageLogin con email/password + OAuth + link a 2FA
RegisterPageRegistro con validación y términos
ForgotPasswordPageSolicitud de recuperación
ResetPasswordPageNueva contraseña con token
Verify2FAPageVerificación de código de 6 dígitos

Marketing (8)

Páginas públicas para presentar tu producto.

PáginaDescripción
LandingPageHero + features + tabs + testimonios
HomePageHome tipo negocio físico (panadería, restaurante)
PricingPagePlanes + tabla comparativa + FAQ
BlogPageListado con filtros y búsqueda
BlogPostPageArtículo con TOC + sidebar + related
ContactPageFormulario + métodos + oficinas
AboutPageHistoria + valores + equipo + stats
DocsPageDocumentación con sidebar + TOC

Dashboard (6)

Todas usan DashboardLayout (sidebar + topbar + content).

PáginaDescripción
DashboardHomeKPIs + chart + actividad + top items
UsersTablePageTabla con tabs, búsqueda, bulk actions
SettingsPage4 tabs: Perfil, Cuenta, Notificaciones, Seguridad
ProfilePageEditar perfil con avatar + stats
BillingPagePlan actual + tarjeta + facturas
NotificationsPageCentro de notificaciones

Extras (10)

PáginaDescripción
ErrorPage404, 500, 403 con código gigante
ComingSoonPageBadge pulsante + email capture
MaintenancePageCountdown en vivo
OnboardingPageStepper de N pasos
CheckoutPageFormulario de pago + resumen sticky
InvoicePageFactura imprimible
ChangelogPageTimeline de releases
CareersPageBeneficios + posiciones abiertas
LegalPageTérminos con TOC lateral
StatusPageEstado de servicios + incidentes

Layouts (3)

LayoutUsado por
AuthLayoutLoginPage, RegisterPage, etc.
MarketingLayoutLandingPage, PricingPage, BlogPage
DashboardLayoutDashboardHome, UsersTablePage

Conectar un backend

jsx
import { LoginPage } from '@imansi/templates';

function LoginRoute() {
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  async function handleSubmit({ correo, contrasena }) {
    setLoading(true);
    setError(null);

    try {
      const res = await fetch('/api/auth/login', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ correo, contrasena }),
      });

      if (!res.ok) throw new Error('Credenciales inválidas');

      const { token } = await res.json();
      localStorage.setItem('token', token);
      window.location.href = '/panel';
    } catch (err) {
      setError(err.message);
    } finally {
      setLoading(false);
    }
  }

  return (
    <LoginPage
      onSubmit={handleSubmit}
      loading={loading}
      error={error}
      oauthProviders={['github', 'google']}
    />
  );
}

Personalización

Todas las páginas aceptan props para personalizar textos, rutas y callbacks.

jsx
<LoginPage
  title="Iniciar sesión"
  subtitle="Ingresá con tu cuenta"
  submitText="Entrar"
  brandName="Mi Empresa"
  brandTagline="Autenticación moderna"
  registerHref="/registro"
  forgotPasswordHref="/recuperar"
  onSubmit={async (datos) => { /* ... */ }}
  onOAuthClick={(provider) => { /* ... */ }}
  loading={loading}
  error={error}
/>

Temas y modos

Funciona con los 6 temas de @imansi/tailwind:

TemaIdeal para
minimalAuth, SaaS profesionales
modernProductos modernos, tech
compactDashboards densos
warmHome de negocio físico, blog
redAlertas, monitoreo
yellowApps creativas
js
document.documentElement.dataset.theme = 'warm';
document.documentElement.dataset.mode = 'dark';

Próximos pasos

Hecho con ❤️ en Argentina