@taskship/design-system
v0.1.6
Published
Biblioteca Vue do design system do ecossistema Taskship.
Readme
Taskship Design System
Biblioteca Vue do design system do ecossistema Taskship.
O repositório agora e restrito ao design system: tokens, tema, identidade multitenant, acessibilidade, validacao de conteudo e componentes organizados em Atomic Design. O app de backoffice deixou de ser o foco deste pacote e foi substituido por uma showcase tecnica local.
Stack
- Vue 3 + TypeScript
- Vite em modo biblioteca
- Atomic Design
- Tema claro/escuro, acessibilidade e identidade configuravel por tenant
- Base Taskship alinhada ao manual:
Dosispara hierarquia e corpo,Capriolapara display de marca, e a paletaEmerald Blue/Green Leaf/Midnight Green/White/Platinum
Estrutura
src/index.ts: API publica do pacotesrc/showcase: vitrine tecnica local para validacao visualsrc/design-system/atoms: primitivas visuaissrc/design-system/molecules: composicoes pequenas com comportamentosrc/design-system/organisms: blocos ricos reutilizaveissrc/design-system/assets: assets oficiais do produto, incluindo o logo Taskship empacotado na libsrc/design-system/theme: tokens, tema, acessibilidade e identidadesrc/config: configuracoes base de tenant identitysrc/composables: contratos reutilizaveis de validacaosrc/security: saneamento e regras declarativas de conteudo
Scripts
npm run dev: abre a showcase local do design systemnpm run build: gera a biblioteca emdist/e emite tipos.d.tsnpm run build:demo: gera a showcase estaticamentenpm run preview: faz preview da showcase buildada em mododemonpm pack: gera o pacote local a partir dodist/produzido pelo build
Release
- Qualquer
pushparamaindispara o workflow.github/workflows/publish.yml. - O workflow calcula a proxima versao com base na ultima release publicada ou tag
vX.Y.Z, publica via npm Trusted Publishing, cria a tagvX.Y.Ze abre uma GitHub Release com notas geradas automaticamente. - Quando executado manualmente via
workflow_dispatch, o workflow permite escolher orelease_typeentrepatch,minoremajor. - No npm, registre um trusted publisher para
instantsoftgithub/TaskshipDSapontando parapublish.yml. - O campo
repository.urldopackage.jsonprecisa bater exatamente com o repo para o trusted publishing funcionar. Aqui usamos o formato canônicogit+https://github.com/instantsoftgithub/TaskshipDS.git.
Consumo
Exemplo de uso em outro projeto Vue:
import { createApp } from 'vue'
import App from './App.vue'
import TaskshipDesignSystem from '@taskship/design-system'
import '@taskship/design-system/styles.css'
createApp(App).use(TaskshipDesignSystem).mount('#app')Se preferir o alias classico, @taskship/design-system/style.css aponta para o mesmo arquivo.
Importacao direta de componentes:
import {
DsButton,
DsField,
DsSelect,
DsDataTable,
DsLogo,
DsPage,
DsPlatformMenu,
DsPlatformShell,
defaultPlatformMenuConfig,
normalizePlatformMenuConfig,
DsDrawer,
DsBottomSheet,
taskshipLogoGallery,
initializeTenantIdentity,
initializeAccessibilityPreferences,
} from '@taskship/design-system'O menu principal da plataforma nasce de um YAML dedicado. O pacote exporta o parser e o config padrao:
import menuYaml from './menu.yml?raw'
import { DsPlatformShell, normalizePlatformMenuConfig } from '@taskship/design-system'
const menuConfig = normalizePlatformMenuConfig(menuYaml)<DsPlatformShell :menu="menuConfig" active-path="/operacoes/filas">
<DsPage>...</DsPage>
</DsPlatformShell>O menu inclui um controle no rodape para o usuario alternar entre full, rail e compact.
Quando usado com DsPlatformShell, o offset do conteudo e atualizado automaticamente; o shell
tambem emite update:variant para a plataforma persistir a preferencia, se necessario.
Para tenants com marca propria, o slot brand personaliza as superficies full e rail, e o
slot compact-brand personaliza somente o acionador reduzido do modo compact.
O pacote tambem exporta DsLogo, taskshipLogoSources e taskshipLogoGallery, com as variantes oficiais do logo organizadas por superficie e layout.
Paginas de plataforma devem usar DsPage em modo fluido, sem maxWidth, para ocupar 100% da
area visivel disponivel. O slot profile posiciona a referencia do usuario no canto superior
direito do viewport util em desktop e quebra para uma linha propria no mobile.
<DsPage
eyebrow="Taskship Platform"
title="Backoffice"
description="Gerencie operacoes, acompanhe indicadores e navegue pelos modulos liberados."
>
<template #profile>
<UserProfileMenu />
</template>
<DashboardCards />
</DsPage>Exemplo de uso:
<DsLogo variant="horizontal-light" :width="180" alt="Taskship" />
<DsLogo variant="mark-sm" decorative />Se o consumidor preferir controlar o bootstrap manualmente:
initializeTenantIdentity()
initializeAccessibilityPreferences()Principios do pacote
- Branding por tenant altera tokens e identidade, nao contratos de componente.
- Layout base de paginas, drawers e bottom sheets nasce do mesmo contrato de viewport, espacamento e safe area.
- O menu principal da plataforma nasce de um YAML dedicado, com tres modos visuais, controle de modo pelo usuario e destaque automatico da rota ativa.
- Tema claro, escuro e preferencias assistidas nascem da mesma base semantica.
- Validacao no frontend melhora UX e seguranca de entrada, mas nao substitui backend.
- Tooltips e overlays ricos devem explicar o componente em linguagem humana.
- Data grids precisam suportar filtros tipados, ordenacao, selecao e colunas reordenaveis por drag.
