https://frank004.github.io/UI-Brushstyle/
Librería de componentes React con estética "brushstroke" / hand-drawn. Construida con Vite + React + Tailwind, exporta un conjunto de componentes reutilizables listos para integrarse en proyectos nuevos o existentes.
pnpm add @brushstyle/organic-ui
# o
npm install @brushstyle/organic-uiNota: copia el contenido de
src/components/organic-uia tu proyecto si quieres personalizarlo; próximamente se publicará el paquete en npm.
import {
OrganicButton,
OrganicBox,
OrganicInput,
OrganicAlert,
OrganicTabs
} from '@brushstyle/organic-ui';
function Example() {
return (
<OrganicBox className="max-w-md mx-auto">
<OrganicAlert
variant="info"
title="Actualización disponible"
description="Hay una nueva versión lista para instalar."
/>
<div className="mt-6 space-y-4">
<OrganicInput placeholder="Email" type="email" />
<OrganicButton variant="primary">Registrarme</OrganicButton>
</div>
</OrganicBox>
);
}UI Brushstyle expone tokens reutilizables desde @brushstyle/organic-ui. Úsalos para mantener spacing, tipografías y colores consistentes:
import {
spacingTokens,
typographyTokens,
colorTokens,
getSpacing,
getFontFamily,
getColor
} from '@brushstyle/organic-ui';
const Section = ({ children }) => (
<section
style={{
padding: getSpacing('section'),
fontFamily: getFontFamily('body'),
background: getColor('surface'),
color: getColor('surfaceText')
}}
>
{children}
</section>
);- Spacing:
spacingTokens.container,spacingTokens.section, etc. - Tipografía:
typographyTokens.fonts.body, tamaños comotypographyTokens.sizes.title. - Colores:
colorTokens.surface,colorTokens.surfaceTextMuted,colorTokens.accent, etc. Se aplican vía CSS variables para responder al tema.
También tienes organicShapePresets y organicSeeds para reutilizar la configuración de bordes/semillas en tus propios SVGs:
import { generateOrganicPath, organicShapePresets, organicSeeds } from '@brushstyle/organic-ui';
const customPath = generateOrganicPath({
...organicShapePresets.container,
seed: organicSeeds.box,
width: 400,
height: 160
});La librería expone un ThemeProvider con un contexto para cambiar entre temas claro/oscuro.
import { ThemeProvider, useTheme } from '@brushstyle/organic-ui';
function Layout() {
const { theme, toggleTheme, tokens } = useTheme();
return (
<div style={{ background: tokens.palette.background, color: tokens.palette.text }}>
<button onClick={toggleTheme}>
Cambiar a {theme === 'light' ? 'modo oscuro' : 'modo claro'}
</button>
{/* resto de la UI */}
</div>
);
}
export default function App() {
return (
<ThemeProvider>
<Layout />
</ThemeProvider>
);
}Internamente el provider usa Context API + useState para gestionar el tema y aplica los tokens (colores, sombras, fuentes) al árbol mediante CSS variables.
| Categoría | Componentes |
|---|---|
| Fundamentos | OrganicBox, OrganicCard, OrganicDivider, OrganicButton, OrganicBadge, OrganicBadgeCount |
| Formularios | OrganicInput, OrganicSelect, OrganicCheckbox, OrganicRadio, OrganicRadioGroup, OrganicToggle, OrganicFileUpload, OrganicSlider |
| Feedback | OrganicAlert, OrganicToastProvider + useOrganicToast, OrganicTooltip |
| Navegación / Layout | OrganicNavbar, OrganicTabs, OrganicPagination, OrganicModal, OrganicDrawer, OrganicPopover, OrganicTable, OrganicStepper |
Consulta la guía detallada con props y ejemplos: docs/COMPONENT_GUIDE.md.
pnpm install
pnpm dev -- --host 127.0.0.1 --port 3000La app demo está en src/App.jsx. Allí puedes ver ejemplos de cada componente y cómo integrarlos.
El repositorio incluye un workflow automático (.github/workflows/deploy.yml) que publica el contenido de dist/ en la rama gh-pages cada vez que se hace push a master.
- Asegúrate de que
vite.config.jstengabase: '/UI-Brushstyle/'. - Realiza
pnpm buildpara confirmar que la demo compila con el nuevo base. - Haz push a
master; GitHub Actions ejecutarápnpm buildy subirá el resultado agh-pages. - En Settings → Pages, selecciona la rama
gh-pages(carpeta/root).
También se añadió el script pnpm deploy para un despliegue manual (usa gh-pages -d dist).
- Vite 6 + React 18
- Tailwind y utilidades personalizadas para sombras/paths orgánicos
react-iconspara iconografía (settfi)
- Publicar paquete npm
- Añadir ejemplos extendidos con los nuevos componentes (Drawer, Popover, Table, Stepper) en la documentación
- Incorporar tests automatizados para los generadores orgánicos y el ThemeProvider
¿Alguna idea o mejora? Abre un issue o manda un PR cuando el repositorio esté público. ¡Gracias por usar UI Brushstyle!