Catálogo de componentes

24 bloques · @nidus/ui

Cada componente de la librería, en cada uno de sus estados. Sustituye a Storybook: mismo objetivo, pero dentro de la app real, con el mismo build y los mismos tokens, así que lo que se ve aquí es lo que se ve en producción. Cambia el tema con el interruptor de arriba — pone data-theme en <html>, que es exactamente como funciona fuera de esta página.

01

Color

Los nueve tokens, tal y como los resuelve el tema activo.

bg
surface
ink
primary
border
muted
accent
success
accent-ink
02

Tipografía

La escala completa y única. Tres tamaños serif para lo que titula —cifra protagonista, título de página, título de bloque— y dos pesos sans para lo que acompaña —rótulo de ítem y rótulo de sección—, más cuerpo y secundario. Todo sale de textClasses(variante): si un texto no encaja en un rol, es que falta el rol, no que haya que inventar una combinación suelta en la pantalla.

textClasses(variante) · de display a caption
39,00 €display
Tu perfilpage
Próxima reservatitle
Mis reservaseyebrow
Ana Villarlabel
Entras y sales con el mismo QR.body
IVA incluido.caption
04

Button

Tres variantes, dos tamaños, estado deshabilitado.

variant="primary"
variant="secondary"
variant="ghost"
05

Tag

Etiqueta breve. Cuatro tonos.

tone="default"
Sala A
tone="accent"
Se libera pronto
tone="success"
Libre
tone="warning"
Última hora
06

Card

Contenedor base. Sin props más allá de los del div.

Card

Sala A · planta baja

48 puestos, luz natural, sin reservas de grupo.

07

SelectableCard, ChoiceChip, Switch e IconChip

Las piezas de elegir. La frontera es estrecha a propósito: poseen el marco y el estado, y el interior y el relleno se quedan en className — por eso sirven igual para una ficha de plan, una casilla de complemento y un día de la tira. Switch es solo el dibujo: el elemento pulsable es el botón que lo contiene.

selected={false}
disabled
ChoiceChip · selected / no
Switch + IconChip
08

ListRow, ListGroup y SectionHeading

Fila de dato, separador entre filas y rótulo de sección. Existían como componentes privados con tres nombres distintos en tres pantallas.

ListGroup bordered + tres densidades
CentroNidus Ensanche
Horario16:00–19:00
Tu baseMañanas39,00 €al mes
SectionHeading · con y sin action

Mis reservas

Próximas

Ver todas
09

EmptyState

Lo que se ve cuando no hay nada que ver: dice qué falta y ofrece la salida. Un hueco en blanco no es un estado, es un olvido.

description

No tienes ninguna reserva por delante.

title + action

Sin plan todavía

Elige una base y añade lo que necesites.

10

FeatureCard

Puerta a algo que merece destacarse dentro de la pantalla. Se distingue de una ficha normal en que va teñida de primario: invita en vez de esperar.

glyph + hint + trailing
11

Accordion

Sobre <details> y no sobre estado: abre y cierra sin JavaScript, y el buscador del navegador encuentra el texto aunque esté plegado.

items
¿Puedo cancelar?
¿Y si llego tarde?
12

ChatBubble

Quien escribe se distingue por lado, color y la esquina recortada del lado desde el que habla.

from="agent" / from="user"

Hola, ¿en qué te ayudo?

No me abre la puerta.

13

Field

Campo de formulario con etiqueta, pista y error. Comparte el andamiaje de etiqueta con TextArea.

base
hint

Los 6 dígitos del QR de la puerta.

error

Ese correo no es válido.

required
disabled
14

TextArea

Lo mismo que Field cuando lo que se escribe no cabe en una línea.

base
hint + error

Ese token no es válido.

15

Select

Etiqueta dentro del control y sitio para una nota por opción — el sobrecoste de esa hora. Es un listbox propio, no un <select>: el nativo no deja dar formato a una opción.

align="center" · valor controlado
hint por opción y opción deshabilitada
sin valor (placeholder)
disabled
16

OccupancyBar

Ocupación de la sala, de 0 a 100.

value={0}
Vacía
value={35}
35 % ocupada
value={50} · dato de mock.ts
Ahora · 50 %
value={100}
Completa
sin label
17

Notice

Aviso en bloque. Cuatro tonos, descartable opcional. Sin cuerpo se queda solo el título, que muchas veces basta.

tone="info"

Horario de hoy

La sala cierra a las 23:00. El acceso con QR se corta 15 minutos antes.
tone="success"

Reserva confirmada

Puesto D2, de 15:00 a 19:00.
tone="warning"

Tu bono se acaba

Te quedan 3 horas de las 50 del bono.
tone="danger"
dismissible

Descartable

Este aviso se puede cerrar.
sin children · solo título
18

SegmentedControl

Dos o tres vistas de lo mismo. La semántica no es cosmética: «tabs» cuando cambia el contenido de al lado, «radio» cuando elige un ajuste — es lo que anuncia el lector de pantalla. El interruptor de tema de arriba es este mismo componente.

semantics="tabs" · con badge
semantics="radio" · size="sm" · fill={false}
19

AppBar

El marco de la aplicación: el logotipo en el mismo sitio en todas las pantallas. Es una referencia, no un sitio donde poner acciones — para eso está Header.

solo logotipo
Nidus
homeHref · el logotipo lleva al inicio
trailing
NidusEn sala
20

Dialog, Sheet y Toast

Van en portal con posición fija, así que se muestran con un disparador en vez de en línea. Dialog confirma; Sheet se queda con la pantalla entera para un flujo de varios pasos.

Dialog · open / onOpenChange
Toast · tone="success"
Sheet · pantalla completa en móvil, panel centrado en sm+
21

StepDots

Progreso de un flujo lineal corto. El punto activo se alarga: la posición no depende solo del color.

total={3} current={1}
total={3} current={2}
total={3} current={3}
22

FloorPlan

El plano real: fondo SVG por versión + puestos como datos en cm, con zoom y desplazamiento. Si el puesto se ve pequeño, el primer toque acerca y el segundo selecciona.

6 puestos, todos los estados · seleccionado: ninguno
23

LocationMap

Vista de ciudad dibujada de las coordenadas reales, sin teselas ni servicio externo: proyecta los puntos, los encuadra y añade anillos de distancia, que a esta escala sí dicen algo. Los alfileres son pulsables.

2 puntos · seleccionado: ens
0.5 km1 km12
24

TabBar

Navegación principal móvil, en la zona del pulgar. Aquí se muestra sin flotar (floating={false}).

4 destinos · activo: Hoy
El color sale de public/brand/tokens.css, única fuente de verdad. Esta página revienta al cargar si falta algún token.
    ··

    Ilustraciones

    Kit decorativo de marca, en public/img. Trazo con currentColor, así que se tiñen con las utilidades de texto y siguen al tema. Tres tamaños por pieza (s, m, l); aquí se muestra la m.

    sala
    Nueva reserva
    puesto-estudio
    Hoy · sin plan
    planes
    Planes · sin plan
    pausa
    Mis reservas · vacío
    confirmacion
    Reserva confirmada
    como-llegar
    sin colocar
    equipamiento
    sin colocar
    plano-sala
    sin colocar
    portatil-libros
    sin colocar
    reserva-expirada
    sin colocar
    reserva-horario
    sin colocar
    filete
    sin colocar
    silencio
    sin colocar
    taquilla
    sin colocar
    ventana
    sin colocar