Interfaz de usuario multiplataforma y móvil · Nuevo recurso

Sistema de diseño Quasar.

Un flujo guiado nativo de Quasar con valores reales de marca y espaciado, validación de QForm, un creador de informes en tres pasos, opciones de formato con botones de radio y una agenda dinámica de cuarenta y cinco minutos.

Guía de OpenDesign9 capítulos29 entradas de referenciaGuía de aplicación original
01

Vista previa de la interfaz del sistema de diseño Quasar

Ponle un nombre a una sesión, elige un formato, ajusta el grupo y guarda un resumen claramente local.

Resumen de sesión guiadaAbrir ejemplo completo
Quasar 2.34.0 con Vue 3 y Material Icons incluidos localmente desde @quasar/extras 2.1.0. · Referencia de implementación
02

Referencia de diseño del sistema de diseño Quasar

Quasar 2.34.0 con Vue 3. Los colores son variables reales de tiempo de ejecución --q-*; las referencias de espaciado y tipografía proceden de los valores Sass predeterminados. El encabezado de la aplicación, la ilustración de la agenda y la sobrescritura de la fuente del sistema son originales. Material Icons se incluye localmente mediante @quasar/extras 2.1.0.

Roles de marca predeterminados de Quasar

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--q-primary#1976D2 Estado del indicador de pasos, acción principal y deslizador.
--q-secondary#26A69A Rol secundario.
--q-accent#9C27B0 Rol de acento.
--q-positive#21BA45 Rol de comentarios positivos.
--q-negative#C10015 Rol de validación y error.
--q-info#31CCEC Rol informativo.
--q-warning#F2C037 Rol de advertencia.

Ayudantes nativos de espaciado

Fuente
Nombre / ReglaValor / ConfiguraciónUso
$space-base16pxUnidad base de espaciado Sass.
q-pa-xs / q-ma-xs4pxUn cuarto del espaciado base.
q-pa-sm / q-ma-sm8pxLa mitad del espaciado base.
q-pa-md / q-ma-md16pxEspaciado base.
q-pa-lg / q-ma-lg24pxUna vez y media el espaciado base.
q-pa-xl / q-ma-xl48pxEl triple del espaciado base.
q-mt-md16px top marginSe utiliza encima del interruptor de participación remota.
q-ml-sm8px left marginSe utiliza entre las acciones de navegación.

Escala nativa de clases tipográficas

Fuente
Nombre / ReglaValor / ConfiguraciónUso
text-h42.125rem / 2.5rem, weight 400Utilidad predeterminada para encabezados de presentación.
text-h51.5rem / 2rem, weight 400Utilidad predeterminada para encabezados de sección.
text-h61.25rem / 2rem, weight 500Utilidad predeterminada para encabezados pequeños.
text-body11rem / 1.5rem, weight 400Utilidad predeterminada para texto de cuerpo grande.
text-body20.875rem / 1.25rem, weight 400Utilidad predeterminada para texto de cuerpo compacto.
Application fontsystem-ui, sans-serifSobrescritura original explícita; la familia Roboto predeterminada de Quasar no se descarga aquí.

Puntos de ruptura y geometría explícita de la aplicación

Fuente
Nombre / ReglaValor / ConfiguraciónUso
sm minimum600pxInicio del punto de ruptura nativo de Quasar.
md minimum1024pxInicio del punto de ruptura nativo de Quasar.
lg minimum1440pxInicio del punto de ruptura nativo de Quasar.
xl minimum1920pxInicio del punto de ruptura nativo de Quasar.
Application stack breakpoint740pxTransición original de dos columnas a diseño apilado.
Page title34px / 1.15; 29px mobileJerarquía tipográfica original.
Page gap / padding24px / 32pxComposición circundante original.
Participants slidermin 2, max 16, step 1Props reales de QSlider; no es solo un control visual de rango.
03

Guía completa del sistema de diseño Quasar

Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.

DESIGN-quasar.md

Orientación completa, un punto de partida para la implementación y enlaces al código fuente.

Descargar la guía

Los componentes de sistema de diseño Quasar permiten crear una tarea guiada completa

Los componentes de Quasar permiten crear una tarea guiada completa

Quasar proporciona componentes de Vue junto con ayudantes de estilos y un marco de aplicación. Este ejemplo utiliza los componentes directamente en una entrada de Vue 3: un indicador de pasos nativo coordina un formulario, un grupo de botones de opción, un deslizador, un interruptor y una confirmación final. No hace falta una estructura QLayout de pantalla completa solo para mostrar esos controles.

De esta guía de OpenDesign

El resumen de sesión tiene un propósito concreto: elegir un formato de trabajo y configurar el grupo mientras se consulta la agenda correspondiente. La biblioteca de componentes proporciona los controles y los estados de navegación; las tres agendas originales y sus totales de cuarenta y cinco minutos son contenido de la aplicación. Esto no implica que haya un servicio de programación.

Consulta la especificación complementaria

Las variables de marca y las clases de paleta con nombre coexisten en el sistema de diseño Quasar

Las variables de marca y las clases de paleta con nombre coexisten

El valor de tiempo de ejecución de --q-primary es #1976D2 en la hoja de estilos predeterminada verificada. QStepper, QBtn y QSlider reciben color="primary", por lo que sus estilos principales siguen ese rol. Secondary, accent, positive, negative, info y warning siguen siendo roles con nombre independientes, en vez de colores improvisados para cada control.

El aviso de confirmación utiliza utilidades de paleta verdes con nombre para crear una superficie clara y texto oscuro. Su frase explícita también comunica el éxito, además del color. La ilustración de anillos azules es un elemento decorativo original y está oculta para las tecnologías de asistencia; no representa ningún estado adicional del formulario.

Consulta la especificación complementaria

Lee literalmente los sufijos de espaciado de Quasar en el sistema de diseño Quasar

Lee literalmente los sufijos de espaciado de Quasar

Las clases de espaciado de Quasar combinan tipo, dirección y tamaño. q-mt-md significa margen superior con el valor mediano; q-ml-sm añade un margen izquierdo pequeño. El valor base predeterminado es de dieciséis píxeles: xs es cuatro, sm ocho, md dieciséis, lg veinticuatro y xl cuarenta y ocho. El salto a xl equivale a tres unidades base, no a un paso de treinta y dos píxeles supuesto.

La página utiliza estos ayudantes nativos dentro de los controles y elementos originales de CSS para la composición general. Entre las utilidades tipográficas predeterminadas están text-body2, de 0.875rem, y text-h5, de 1.5rem. El título original de la página mide treinta y cuatro píxeles, y la página cambia explícitamente la fuente a system-ui, conservando Material Icons para los glifos nativos de los componentes.

Consulta la especificación complementaria

Un indicador de pasos no valida el formulario por sí solo en el sistema de diseño Quasar

Un indicador de pasos no valida el formulario por sí solo

QStepper mantiene el número del paso actual y contiene tres secciones QStep con nombre. Un paso se marca como completado solo después de que la navegación avanza más allá de él. El ejemplo utiliza orientación vertical en ambos diseños para mantener una secuencia clara sin comprimir tres encabezados horizontales en la pantalla de un teléfono.

La primera acción Continuar corresponde a QForm. Su controlador espera a que termine la validación antes de asignar el paso dos. La navegación desde el encabezado no está habilitada, así que hacer clic en un encabezado futuro no permite saltarse ese control. Las acciones Atrás conservan deliberadamente los valores del título, el formato y el grupo, porque esos modelos están en el SFC padre y no dentro de un campo que se desmonta.

Consulta la especificación complementaria

Sistema de diseño Quasar: QForm usa reglas internas, no todas las restricciones nativas

QForm usa reglas internas, no todas las restricciones nativas

QInput para el título tiene una matriz de reglas interna que elimina los espacios en blanco al principio y al final, y exige cinco caracteres significativos. Esa regla participa en QForm.validate. Los atributos nativos required o email, por sí solos, no sustituyen la regla al llamar a validate mediante código; por eso, el ejemplo funcional expresa directamente la restricción real.

Un intento no válido muestra el error del campo y mantiene al usuario en el primer paso. Al corregir la entrada, el mismo botón Continuar permite avanzar. El límite de sesenta caracteres y el contador visible ayudan a que el título se ajuste al encargo, mientras que la regla en línea explica por qué no se puede continuar con un título corto o vacío.

  1. Envía el primer paso con el título vacío para ver el mensaje de validación.
  2. Escribe un título significativo y elige un formato de sesión.
  3. Continúa y vuelve con Atrás para confirmar que los valores introducidos se conservan al navegar.

Consulta la especificación complementaria

Sistema de diseño Quasar: radio, control deslizante y conmutador representan decisiones distintas

Radio, deslizador e interruptor representan decisiones diferentes

QOptionGroup representa la elección de una opción entre Crítica de diseño, Sesión de bocetado y Síntesis de investigación. Al cambiarla, se selecciona la matriz de agenda correspondiente. La duración de las agendas es contenido de ejemplo fijo; por eso, al cambiar el formato se actualizan las actividades, pero se mantiene el total de cuarenta y cinco minutos.

QSlider controla un número entero de participantes entre dos y dieciséis. QToggle indica si se incluyen participantes remotos. La indicación contigua cambia de una mesa compartida a una pizarra compartida con facilitación remota. Estos controles modifican el encargo visible, en lugar de ser componentes de demostración desconectados.

Consulta la especificación complementaria

Sistema de diseño Quasar: el paso final conserva un resultado local hasta que se reinicia

El paso final conserva un resultado local hasta que se reinicia

El paso de revisión vuelve a mostrar el título sin espacios al principio ni al final, el formato, el número de participantes y la modalidad de participación. Al guardar, se activa una marca local de guardado, se deshabilitan Guardar y Atrás, y aparece un aviso que indica el tamaño del grupo. Empezar otra vez borra todos los modelos y vuelve al primer paso, de modo que el ejemplo muestra un flujo completo y observable.

No se envía ninguna solicitud a un calendario ni a un servicio de mensajería API. El aviso indica explícitamente que no se envió ninguna invitación, y el texto de revisión aclara que guardar no crea un evento. Para que un planificador de producción pudiera afirmarlo, necesitaría una fecha, una zona horaria, destinatarios y una respuesta real del backend.

Consulta la especificación complementaria

Sistema de diseño Quasar: usa la semántica de los componentes nativos y pruebas reales de foco

Usa la semántica de los componentes nativos y pruebas reales de foco

Los controles nativos proporcionan los roles de radio, control deslizante e interruptor. El control deslizante tiene la etiqueta Participantes, y el campo del título cuenta con una etiqueta visible y un mensaje de validación asociado al campo. El indicador de pasos señala el paso actual y etiqueta su contenido con el título del paso. El ejemplo excluye las ilustraciones decorativas de la secuencia de lectura accesible.

La prueba local modificó el control deslizante con el teclado, activó o desactivó la participación remota, avanzó tras la validación y guardó un encargo híbrido para nueve personas. También comprobó la disposición estrecha. Una imagen estática de un indicador de pasos no demostraría esas relaciones ni probaría que el control de validación está conectado.

  • Mantén la coherencia entre el paso activo y el título de su contenido.
  • Valida mediante reglas antes de cambiar el modelo de paso.
  • Usa un aviso de estado que describa el resultado local exacto.

Consulta la especificación complementaria

Sistema de diseño Quasar: incluye Quasar CSS y el conjunto de iconos que requiere

Incluye Quasar CSS y el conjunto de iconos que necesita

El archivo de entrada importa Quasar, registra su complemento, carga quasar/dist/quasar.css e importa la hoja de estilos de Material Icons desde @quasar/extras. El SFC importa los componentes que utiliza. El paquete local integra los archivos de fuentes de iconos para que las marcas de verificación y los indicadores de edición se muestren sin solicitar una fuente remota.

La hoja de estilos original sigue Quasar CSS y ajusta la altura del documento al contenido para facilitar la integración. No aplica estilos globales a todos los componentes nativos ni inventa una escala de espaciado alternativa. Una aplicación completa con la CLI de Quasar o el complemento de Vite puede usar la integración de compilación estándar; este ejemplo completo muestra los mismos componentes en una pequeña entrada de Vue.

Consulta la especificación complementaria

Quasar Ejemplos de componentes del sistema de diseño

Flujo completo con indicador de pasos nativo

QStepper/QStep, QForm/QInput, QOptionGroup, QSlider, QToggle y una agenda derivada.

vue
<script setup>
import {ref,computed} from 'vue';import {QStepper,QStep,QStepperNavigation,QForm,QInput,QOptionGroup,QSlider,QToggle,QBtn,QCard,QCardSection,QBadge,QBanner} from 'quasar';
const step=ref(1),title=ref(''),format=ref('critique'),people=ref(8),remote=ref(false),saved=ref(false),form=ref();const formats=[{label:'Design critique',value:'critique'},{label:'Sketching session',value:'sketch'},{label:'Research synthesis',value:'research'}];const names={critique:'Design critique',sketch:'Sketching session',research:'Research synthesis'};const agenda=computed(()=>format.value==='critique'?[['10 min','Set the question'],['25 min','Review the work'],['10 min','Choose next actions']]:format.value==='sketch'?[['5 min','Frame the prompt'],['25 min','Sketch independently'],['15 min','Compare directions']]:[['10 min','Sort observations'],['20 min','Name the patterns'],['15 min','Record open questions']]);async function next(){if(await form.value.validate())step.value=2;}function reset(){step.value=1;title.value='';format.value='critique';people.value=8;remote.value=false;saved.value=false;}
</script>
<template><main class="session-builder"><header><div><p class="eyebrow">QUASAR · GUIDED WORKFLOW</p><h1>Make time for better work.</h1><p class="intro">Build a small session brief with a native stepper, validated fields and a live agenda.</p></div><QBadge color="primary" label="45 MINUTES"/></header><div class="builder-grid"><QStepper v-model="step" vertical color="primary" animated flat bordered class="session-stepper"><QStep :name="1" prefix="1" title="Name the session" caption="Purpose and format" :done="step>1"><QForm ref="form" @submit="next"><QInput v-model="title" outlined label="Session title" maxlength="60" counter lazy-rules :rules="[v=>v.trim().length>=5||'Use at least five non-space characters.']"/><p class="field-label">Session format</p><QOptionGroup v-model="format" :options="formats" color="primary"/><QStepperNavigation><QBtn color="primary" label="Continue" type="submit" no-caps/></QStepperNavigation></QForm></QStep><QStep :name="2" prefix="2" title="Shape the group" caption="People and participation" :done="step>2"><p class="field-label">Participants: <strong>{{people}}</strong></p><QSlider v-model="people" :min="2" :max="16" :step="1" label color="primary" aria-label="Participants"/><QToggle v-model="remote" label="Include remote participants" color="primary" class="q-mt-md"/><p class="hint">{{remote?'Reserve a shared board and a facilitator for the remote group.':'Use one shared table and keep the work visible to everyone.'}}</p><QStepperNavigation><QBtn color="primary" label="Review brief" no-caps @click="step=3"/><QBtn flat label="Back" no-caps class="q-ml-sm" @click="step=1"/></QStepperNavigation></QStep><QStep :name="3" prefix="3" title="Review the brief" caption="Save a local snapshot"><p class="review-title">{{title.trim()}}</p><p>{{names[format]}} · {{people}} people · {{remote?'Hybrid':'In person'}}</p><p class="hint">The agenda totals 45 minutes. Saving does not create a calendar event or invite anyone.</p><QStepperNavigation><QBtn color="primary" :label="saved?'Saved locally':'Save local brief'" :disable="saved" no-caps @click="saved=true"/><QBtn flat label="Back" no-caps class="q-ml-sm" :disable="saved" @click="step=2"/></QStepperNavigation><QBanner v-if="saved" rounded class="bg-green-1 text-green-10 q-mt-lg" role="status">Local brief saved for {{people}} people. No invitation was sent.<template #action><QBtn flat label="Start another" no-caps @click="reset"/></template></QBanner></QStep></QStepper><QCard flat bordered class="agenda-card"><QCardSection><p class="eyebrow">LIVE AGENDA</p><h2>{{title.trim()||'Your next working session'}}</h2><p class="agenda-format">{{names[format]}}</p><div class="time-art" aria-hidden="true"><i></i><i></i><i></i><span>45′</span></div><ol class="agenda-list"><li v-for="row in agenda" :key="row[1]"><span>{{row[0]}}</span><strong>{{row[1]}}</strong></li></ol><div class="session-meta"><span>{{people}} participants</span><span>{{remote?'Hybrid setup':'One shared table'}}</span></div><p class="local-note">Original sample agenda. Quasar supplies the form and navigation components.</p></QCardSection></QCard></div></main></template>

Referencia de código

  • La primera transición espera a que termine QForm.validate().
  • La regla del título comprueba la longitud significativa tras eliminar los espacios en blanco al principio y al final.
  • El paso de revisión no crea un evento de calendario.

Composición de la agenda original

Diseño adaptable e ilustración decorativa de duración alrededor de componentes nativos de Quasar.

css
html,body{height:auto;min-height:0}body{background:#f3f5f8;font-family:system-ui,sans-serif}.session-builder{max-width:1120px;padding:32px;margin:auto}header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:32px}.eyebrow{font-size:11px;font-weight:650;letter-spacing:.13em;color:#5c6c80}h1{font-size:34px;line-height:1.15;font-weight:650;margin:14px 0;letter-spacing:-.02em}.intro{font-size:15px;line-height:1.7;max-width:610px;color:#5c6c80}.builder-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start}.field-label{font-size:14px;font-weight:600;margin:20px 0 8px}.hint,.local-note{font-size:12px;line-height:1.7;color:#647187}.review-title{font-size:20px;font-weight:650;line-height:1.4}.agenda-card .q-card__section{padding:24px}.agenda-card h2{font-size:25px;line-height:1.25;font-weight:600;margin:16px 0 8px;letter-spacing:0}.agenda-format{font-size:14px;color:#647187}.time-art{height:140px;background:#e6eef8;border-radius:6px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;margin:24px 0}.time-art i{position:absolute;width:130px;height:130px;border:18px solid #8db8e8;border-radius:50%;left:10%;top:45%}.time-art i:nth-child(2){border-color:#c1d7ef;width:170px;height:170px;left:35%;top:-30%}.time-art i:nth-child(3){border-color:#d8e5f5;width:150px;height:150px;left:65%;top:40%}.time-art span{font-size:45px;font-weight:700;position:relative;color:#175a9e}.agenda-list{list-style:none;padding:0;margin:0}.agenda-list li{display:grid;grid-template-columns:65px 1fr;gap:16px;border-bottom:1px solid #dfe5ec;padding:16px 0;font-size:14px}.agenda-list span{color:#657991;font-size:12px}.agenda-list strong{font-weight:600}.session-meta{display:flex;justify-content:space-between;gap:12px;margin:24px 0;font-size:12px;color:#5c6c80}.local-note{margin-bottom:0}@media(max-width:740px){.session-builder{padding:24px 14px}header{flex-direction:column;gap:4px}h1{font-size:29px}.builder-grid{grid-template-columns:1fr}.session-stepper .q-stepper__step-inner{padding-right:18px}.agenda-card .q-card__section{padding:22px}}

Referencia de código

  • La página usa la altura del contenido para facilitar la integración.
  • La modificación de la fuente de la aplicación está especificada explícitamente.
04

Sistema de diseño Quasar Configuración del agente de IA

Punto de partida para la implementación

Verificado con Quasar 2.34.0 y @quasar/extras 2.1.0 con Vue 3. La fuente de iconos es un recurso local necesario para los indicadores de paso predeterminados.

javascript
// Create the project first:
// npm create vite@latest quasar-specimen -- --template vue
// cd quasar-specimen && npm install
// In a Vite Vue 3 project:
// npm install [email protected] @quasar/[email protected]
// Save the complete SFC as App.vue and layout as style.css.
import {createApp} from 'vue';
import {Quasar} from 'quasar';
import 'quasar/dist/quasar.css';
import '@quasar/extras/material-icons/material-icons.css';
import './style.css';
import App from './App.vue';
createApp(App).use(Quasar, {plugins: {}}).mount('#app');
// index.html contains <div id="app"></div>.
// Components are explicitly imported in App.vue; no auto-import plugin is required here.
// Keep the template index.html and replace its entry with the code above.
// npm run dev

Una instrucción para tu proyecto

Instrucción para el agente
Usa Quasar 2.34.0 y el resumen guiado de sesión proporcionado. Conserva QStepper, QForm y la validación de QInput, los controles de radio para el formato de sesión, el control deslizante de participantes y el conmutador de agenda. Espera a que termine la validación del formulario antes de avanzar, conserva los valores introducidos al volver atrás y deriva el resumen de revisión de esos mismos valores. Guardar registra un encargo local; los cambios posteriores invalidan su estado de guardado. Incluye la hoja de estilos de Quasar y la configuración local de Material Icons, y mantén utilizable el diseño estrecho sin inventar un servicio de envío ni de reservas.
05

Quasar Fuentes y alcance del sistema de diseño

Quasar 2.34.0 con componentes nativos y Material Icons local. Las agendas originales y las ilustraciones son contenido de ejemplo. Guardar no crea un evento de calendario ni envía invitaciones.