@qubiit/lmagent 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +18 -0
- package/AGENTS.md +169 -0
- package/CLAUDE.md +122 -0
- package/CONTRIBUTING.md +90 -0
- package/LICENSE +21 -0
- package/README.md +195 -0
- package/config/commands.yaml +194 -0
- package/config/levels.yaml +135 -0
- package/config/models.yaml +192 -0
- package/config/settings.yaml +405 -0
- package/config/tools-extended.yaml +534 -0
- package/config/tools.yaml +437 -0
- package/docs/assets/logo.png +0 -0
- package/docs/commands.md +132 -0
- package/docs/customization-guide.md +445 -0
- package/docs/getting-started.md +154 -0
- package/docs/how-to-start.md +242 -0
- package/docs/navigation-index.md +227 -0
- package/docs/usage-guide.md +113 -0
- package/install.js +1044 -0
- package/package.json +35 -0
- package/pyproject.toml +182 -0
- package/rules/_bootstrap.md +138 -0
- package/rules/agents-ia.md +607 -0
- package/rules/api-design.md +337 -0
- package/rules/automations-n8n.md +646 -0
- package/rules/code-style.md +570 -0
- package/rules/documentation.md +98 -0
- package/rules/security.md +316 -0
- package/rules/stack.md +395 -0
- package/rules/testing.md +326 -0
- package/rules/workflow.md +353 -0
- package/scripts/create_skill.js +300 -0
- package/scripts/validate_skills.js +283 -0
- package/skills/ai-agent-engineer/SKILL.md +394 -0
- package/skills/ai-agent-engineer/references/agent-patterns.md +149 -0
- package/skills/api-designer/SKILL.md +429 -0
- package/skills/api-designer/references/api-standards.md +13 -0
- package/skills/architect/SKILL.md +285 -0
- package/skills/architect/references/c4-model.md +133 -0
- package/skills/automation-engineer/SKILL.md +352 -0
- package/skills/automation-engineer/references/n8n-patterns.md +127 -0
- package/skills/backend-engineer/SKILL.md +261 -0
- package/skills/backend-engineer/assets/fastapi-project-structure.yaml +74 -0
- package/skills/backend-engineer/references/debugging-guide.md +174 -0
- package/skills/backend-engineer/references/design-patterns.md +208 -0
- package/skills/backend-engineer/scripts/scaffold_backend.py +313 -0
- package/skills/bmad-methodology/SKILL.md +202 -0
- package/skills/bmad-methodology/references/scale-adaptive-levels.md +141 -0
- package/skills/browser-agent/SKILL.md +502 -0
- package/skills/browser-agent/scripts/playwright_setup.ts +16 -0
- package/skills/code-reviewer/SKILL.md +306 -0
- package/skills/code-reviewer/references/code-review-checklist.md +16 -0
- package/skills/data-engineer/SKILL.md +474 -0
- package/skills/data-engineer/assets/pg-monitoring-queries.sql +154 -0
- package/skills/data-engineer/references/index-strategy.md +128 -0
- package/skills/data-engineer/scripts/backup_postgres.py +221 -0
- package/skills/devops-engineer/SKILL.md +547 -0
- package/skills/devops-engineer/references/ci-cd-patterns.md +265 -0
- package/skills/devops-engineer/scripts/docker_healthcheck.py +125 -0
- package/skills/document-generator/SKILL.md +746 -0
- package/skills/document-generator/references/pdf-generation.md +22 -0
- package/skills/frontend-engineer/SKILL.md +532 -0
- package/skills/frontend-engineer/references/accessibility-guide.md +146 -0
- package/skills/frontend-engineer/scripts/audit_bundle.py +144 -0
- package/skills/git-workflow/SKILL.md +374 -0
- package/skills/git-workflow/references/git-flow.md +25 -0
- package/skills/mcp-builder/SKILL.md +471 -0
- package/skills/mcp-builder/references/mcp-server-guide.md +23 -0
- package/skills/mobile-engineer/SKILL.md +502 -0
- package/skills/mobile-engineer/references/platform-guidelines.md +160 -0
- package/skills/orchestrator/SKILL.md +246 -0
- package/skills/orchestrator/references/methodology-routing.md +117 -0
- package/skills/orchestrator/references/persona-mapping.md +85 -0
- package/skills/orchestrator/references/routing-logic.md +110 -0
- package/skills/performance-engineer/SKILL.md +549 -0
- package/skills/performance-engineer/references/caching-patterns.md +181 -0
- package/skills/performance-engineer/scripts/profile_endpoint.py +170 -0
- package/skills/product-manager/SKILL.md +488 -0
- package/skills/product-manager/references/prioritization-frameworks.md +126 -0
- package/skills/prompt-engineer/SKILL.md +433 -0
- package/skills/prompt-engineer/references/prompt-patterns.md +158 -0
- package/skills/qa-engineer/SKILL.md +441 -0
- package/skills/qa-engineer/references/testing-strategy.md +166 -0
- package/skills/qa-engineer/scripts/run_coverage.py +147 -0
- package/skills/scrum-master/SKILL.md +225 -0
- package/skills/scrum-master/references/sprint-ceremonies.md +159 -0
- package/skills/security-analyst/SKILL.md +390 -0
- package/skills/security-analyst/references/owasp-top10.md +188 -0
- package/skills/security-analyst/scripts/audit_security.py +242 -0
- package/skills/seo-auditor/SKILL.md +523 -0
- package/skills/seo-auditor/references/seo-checklist.md +17 -0
- package/skills/spec-driven-dev/SKILL.md +342 -0
- package/skills/spec-driven-dev/references/phase-gates.md +107 -0
- package/skills/supabase-expert/SKILL.md +602 -0
- package/skills/supabase-expert/references/supabase-patterns.md +19 -0
- package/skills/swe-agent/SKILL.md +311 -0
- package/skills/swe-agent/references/trajectory-format.md +134 -0
- package/skills/systematic-debugger/SKILL.md +512 -0
- package/skills/systematic-debugger/references/debugging-guide.md +12 -0
- package/skills/tech-lead/SKILL.md +409 -0
- package/skills/tech-lead/references/code-review-checklist.md +111 -0
- package/skills/technical-writer/SKILL.md +631 -0
- package/skills/technical-writer/references/doc-templates.md +218 -0
- package/skills/testing-strategist/SKILL.md +476 -0
- package/skills/testing-strategist/references/testing-pyramid.md +16 -0
- package/skills/ux-ui-designer/SKILL.md +419 -0
- package/skills/ux-ui-designer/references/design-system-foundation.md +168 -0
- package/skills_overview.txt +94 -0
- package/templates/PROJECT_KICKOFF.md +284 -0
- package/templates/SKILL_TEMPLATE.md +131 -0
- package/templates/USAGE.md +95 -0
- package/templates/agent-python/README.md +71 -0
- package/templates/agent-python/agent.py +272 -0
- package/templates/agent-python/config.yaml +76 -0
- package/templates/agent-python/prompts/system.md +109 -0
- package/templates/agent-python/requirements.txt +7 -0
- package/templates/automation-n8n/README.md +14 -0
- package/templates/automation-n8n/webhook-handler.json +57 -0
- package/templates/backend-node/Dockerfile +12 -0
- package/templates/backend-node/README.md +15 -0
- package/templates/backend-node/package.json +30 -0
- package/templates/backend-node/src/index.ts +19 -0
- package/templates/backend-node/src/routes.ts +7 -0
- package/templates/backend-node/tsconfig.json +22 -0
- package/templates/backend-python/Dockerfile +11 -0
- package/templates/backend-python/README.md +78 -0
- package/templates/backend-python/app/core/config.py +12 -0
- package/templates/backend-python/app/core/database.py +12 -0
- package/templates/backend-python/app/main.py +17 -0
- package/templates/backend-python/app/routers/__init__.py +1 -0
- package/templates/backend-python/app/routers/health.py +7 -0
- package/templates/backend-python/requirements-dev.txt +6 -0
- package/templates/backend-python/requirements.txt +4 -0
- package/templates/backend-python/tests/test_health.py +9 -0
- package/templates/checkpoint.yaml +117 -0
- package/templates/database/README.md +474 -0
- package/templates/frontend-react/README.md +446 -0
- package/templates/plan.yaml +320 -0
- package/templates/session.yaml +125 -0
- package/templates/spec.yaml +229 -0
- package/templates/tasks.yaml +330 -0
- package/workflows/bugfix-backend.md +380 -0
- package/workflows/documentation.md +232 -0
- package/workflows/generate-prd.md +320 -0
- package/workflows/ideation.md +396 -0
- package/workflows/new-agent-ia.md +497 -0
- package/workflows/new-automation.md +374 -0
- package/workflows/new-feature.md +290 -0
- package/workflows/optimize-performance.md +373 -0
- package/workflows/resolve-github-issue.md +524 -0
- package/workflows/security-review.md +291 -0
- package/workflows/spec-driven.md +476 -0
- package/workflows/testing-strategy.md +296 -0
- package/workflows/third-party-integration.md +277 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
# LMAgent Frontend React/Next.js Template
|
|
2
|
+
|
|
3
|
+
Template de proyecto frontend moderno con React/Next.js siguiendo las mejores prácticas de UI/UX.
|
|
4
|
+
|
|
5
|
+
## 🎨 Inspiración de Diseño
|
|
6
|
+
|
|
7
|
+
Este template sigue principios de diseño modernos inspirados en:
|
|
8
|
+
- **[Dribbble](https://dribbble.com/)** - Para tendencias visuales
|
|
9
|
+
- **[Awwwards](https://www.awwwards.com/)** - Para sitios premiados
|
|
10
|
+
- **Material Design 3** - Sistema de diseño de Google
|
|
11
|
+
- **Shadcn/UI** - Componentes accesibles
|
|
12
|
+
|
|
13
|
+
## Estructura del Proyecto
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
frontend/
|
|
17
|
+
├── app/ # App Router (Next.js 14+)
|
|
18
|
+
│ ├── (auth)/ # Grupo de rutas auth
|
|
19
|
+
│ │ ├── login/
|
|
20
|
+
│ │ └── register/
|
|
21
|
+
│ ├── (dashboard)/ # Grupo dashboard
|
|
22
|
+
│ │ ├── layout.tsx
|
|
23
|
+
│ │ └── page.tsx
|
|
24
|
+
│ ├── globals.css # Estilos globales
|
|
25
|
+
│ ├── layout.tsx # Layout raíz
|
|
26
|
+
│ └── page.tsx # Home
|
|
27
|
+
│
|
|
28
|
+
├── components/ # Componentes reutilizables
|
|
29
|
+
│ ├── ui/ # Primitivos UI (shadcn style)
|
|
30
|
+
│ │ ├── button.tsx
|
|
31
|
+
│ │ ├── card.tsx
|
|
32
|
+
│ │ ├── input.tsx
|
|
33
|
+
│ │ ├── modal.tsx
|
|
34
|
+
│ │ └── ...
|
|
35
|
+
│ ├── layout/ # Componentes de layout
|
|
36
|
+
│ │ ├── header.tsx
|
|
37
|
+
│ │ ├── sidebar.tsx
|
|
38
|
+
│ │ └── footer.tsx
|
|
39
|
+
│ ├── features/ # Componentes por feature
|
|
40
|
+
│ │ ├── auth/
|
|
41
|
+
│ │ └── dashboard/
|
|
42
|
+
│ └── shared/ # Componentes compartidos
|
|
43
|
+
│
|
|
44
|
+
├── lib/ # Utilidades
|
|
45
|
+
│ ├── api.ts # Cliente API
|
|
46
|
+
│ ├── auth.ts # Utilidades auth
|
|
47
|
+
│ ├── utils.ts # Helpers
|
|
48
|
+
│ └── cn.ts # classnames utility
|
|
49
|
+
│
|
|
50
|
+
├── hooks/ # Custom hooks
|
|
51
|
+
│ ├── use-auth.ts
|
|
52
|
+
│ ├── use-media-query.ts
|
|
53
|
+
│ └── use-theme.ts
|
|
54
|
+
│
|
|
55
|
+
├── styles/ # Estilos adicionales
|
|
56
|
+
│ ├── tokens.css # Design tokens
|
|
57
|
+
│ └── animations.css # Animaciones
|
|
58
|
+
│
|
|
59
|
+
├── types/ # TypeScript types
|
|
60
|
+
│ └── index.ts
|
|
61
|
+
│
|
|
62
|
+
├── public/ # Assets estáticos
|
|
63
|
+
│ ├── fonts/
|
|
64
|
+
│ ├── images/
|
|
65
|
+
│ └── icons/
|
|
66
|
+
│
|
|
67
|
+
├── tailwind.config.ts # Config Tailwind
|
|
68
|
+
├── next.config.js # Config Next.js
|
|
69
|
+
├── tsconfig.json # Config TypeScript
|
|
70
|
+
└── package.json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Quick Start
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Crear proyecto con este template
|
|
77
|
+
npx create-next-app@latest my-app --typescript --tailwind --eslint --app
|
|
78
|
+
|
|
79
|
+
# Instalar dependencias adicionales
|
|
80
|
+
npm install @radix-ui/react-dialog @radix-ui/react-dropdown-menu
|
|
81
|
+
npm install class-variance-authority clsx tailwind-merge
|
|
82
|
+
npm install lucide-react
|
|
83
|
+
npm install framer-motion
|
|
84
|
+
|
|
85
|
+
# Dev dependencies
|
|
86
|
+
npm install -D @types/node prettier prettier-plugin-tailwindcss
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 🎨 Sistema de Diseño
|
|
90
|
+
|
|
91
|
+
### Design Tokens (CSS Variables)
|
|
92
|
+
|
|
93
|
+
```css
|
|
94
|
+
/* styles/tokens.css */
|
|
95
|
+
:root {
|
|
96
|
+
/* Colors - Palette moderna */
|
|
97
|
+
--color-primary: 220 90% 56%;
|
|
98
|
+
--color-primary-foreground: 0 0% 100%;
|
|
99
|
+
|
|
100
|
+
--color-secondary: 270 60% 50%;
|
|
101
|
+
--color-secondary-foreground: 0 0% 100%;
|
|
102
|
+
|
|
103
|
+
--color-accent: 340 82% 52%;
|
|
104
|
+
--color-accent-foreground: 0 0% 100%;
|
|
105
|
+
|
|
106
|
+
--color-background: 0 0% 100%;
|
|
107
|
+
--color-foreground: 222 47% 11%;
|
|
108
|
+
|
|
109
|
+
--color-muted: 210 40% 96%;
|
|
110
|
+
--color-muted-foreground: 215 16% 47%;
|
|
111
|
+
|
|
112
|
+
--color-card: 0 0% 100%;
|
|
113
|
+
--color-card-foreground: 222 47% 11%;
|
|
114
|
+
|
|
115
|
+
--color-border: 214 32% 91%;
|
|
116
|
+
--color-ring: 220 90% 56%;
|
|
117
|
+
|
|
118
|
+
/* Dark mode */
|
|
119
|
+
--color-background-dark: 222 47% 11%;
|
|
120
|
+
--color-foreground-dark: 210 40% 98%;
|
|
121
|
+
|
|
122
|
+
/* Spacing */
|
|
123
|
+
--spacing-xs: 0.25rem;
|
|
124
|
+
--spacing-sm: 0.5rem;
|
|
125
|
+
--spacing-md: 1rem;
|
|
126
|
+
--spacing-lg: 1.5rem;
|
|
127
|
+
--spacing-xl: 2rem;
|
|
128
|
+
--spacing-2xl: 3rem;
|
|
129
|
+
|
|
130
|
+
/* Border radius */
|
|
131
|
+
--radius-sm: 0.25rem;
|
|
132
|
+
--radius-md: 0.5rem;
|
|
133
|
+
--radius-lg: 0.75rem;
|
|
134
|
+
--radius-xl: 1rem;
|
|
135
|
+
--radius-full: 9999px;
|
|
136
|
+
|
|
137
|
+
/* Typography */
|
|
138
|
+
--font-sans: 'Inter', system-ui, sans-serif;
|
|
139
|
+
--font-mono: 'JetBrains Mono', monospace;
|
|
140
|
+
|
|
141
|
+
/* Shadows */
|
|
142
|
+
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
143
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
|
|
144
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
145
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
146
|
+
|
|
147
|
+
/* Animations */
|
|
148
|
+
--transition-fast: 150ms;
|
|
149
|
+
--transition-base: 200ms;
|
|
150
|
+
--transition-slow: 300ms;
|
|
151
|
+
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
152
|
+
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.dark {
|
|
156
|
+
--color-background: var(--color-background-dark);
|
|
157
|
+
--color-foreground: var(--color-foreground-dark);
|
|
158
|
+
/* ... resto de variables dark */
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Componentes UI Base
|
|
163
|
+
|
|
164
|
+
```tsx
|
|
165
|
+
// components/ui/button.tsx
|
|
166
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
167
|
+
import { cn } from '@/lib/cn';
|
|
168
|
+
|
|
169
|
+
const buttonVariants = cva(
|
|
170
|
+
'inline-flex items-center justify-center rounded-lg font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
|
|
171
|
+
{
|
|
172
|
+
variants: {
|
|
173
|
+
variant: {
|
|
174
|
+
default: 'bg-primary text-primary-foreground hover:bg-primary/90 shadow-md hover:shadow-lg',
|
|
175
|
+
secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90',
|
|
176
|
+
outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
|
|
177
|
+
ghost: 'hover:bg-accent hover:text-accent-foreground',
|
|
178
|
+
destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
|
|
179
|
+
gradient: 'bg-gradient-to-r from-primary to-secondary text-white shadow-lg hover:shadow-xl',
|
|
180
|
+
},
|
|
181
|
+
size: {
|
|
182
|
+
sm: 'h-8 px-3 text-sm',
|
|
183
|
+
md: 'h-10 px-4',
|
|
184
|
+
lg: 'h-12 px-6 text-lg',
|
|
185
|
+
icon: 'h-10 w-10',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
defaultVariants: {
|
|
189
|
+
variant: 'default',
|
|
190
|
+
size: 'md',
|
|
191
|
+
},
|
|
192
|
+
}
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
interface ButtonProps
|
|
196
|
+
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
197
|
+
VariantProps<typeof buttonVariants> {}
|
|
198
|
+
|
|
199
|
+
export function Button({ className, variant, size, ...props }: ButtonProps) {
|
|
200
|
+
return (
|
|
201
|
+
<button
|
|
202
|
+
className={cn(buttonVariants({ variant, size, className }))}
|
|
203
|
+
{...props}
|
|
204
|
+
/>
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Animaciones Modernas
|
|
210
|
+
|
|
211
|
+
```css
|
|
212
|
+
/* styles/animations.css */
|
|
213
|
+
|
|
214
|
+
/* Fade in up - para entradas de contenido */
|
|
215
|
+
@keyframes fade-in-up {
|
|
216
|
+
from {
|
|
217
|
+
opacity: 0;
|
|
218
|
+
transform: translateY(20px);
|
|
219
|
+
}
|
|
220
|
+
to {
|
|
221
|
+
opacity: 1;
|
|
222
|
+
transform: translateY(0);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* Slide in from right - para modales */
|
|
227
|
+
@keyframes slide-in-right {
|
|
228
|
+
from {
|
|
229
|
+
transform: translateX(100%);
|
|
230
|
+
}
|
|
231
|
+
to {
|
|
232
|
+
transform: translateX(0);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* Scale up - para hover effects */
|
|
237
|
+
@keyframes scale-up {
|
|
238
|
+
from {
|
|
239
|
+
transform: scale(0.95);
|
|
240
|
+
opacity: 0;
|
|
241
|
+
}
|
|
242
|
+
to {
|
|
243
|
+
transform: scale(1);
|
|
244
|
+
opacity: 1;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* Shimmer - para loading states */
|
|
249
|
+
@keyframes shimmer {
|
|
250
|
+
0% {
|
|
251
|
+
background-position: -200% 0;
|
|
252
|
+
}
|
|
253
|
+
100% {
|
|
254
|
+
background-position: 200% 0;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/* Utility classes */
|
|
259
|
+
.animate-fade-in-up {
|
|
260
|
+
animation: fade-in-up 0.5s var(--ease-out) forwards;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.animate-slide-in-right {
|
|
264
|
+
animation: slide-in-right 0.3s var(--ease-out) forwards;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.animate-scale-up {
|
|
268
|
+
animation: scale-up 0.2s var(--ease-out) forwards;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.skeleton {
|
|
272
|
+
background: linear-gradient(
|
|
273
|
+
90deg,
|
|
274
|
+
hsl(var(--color-muted)) 25%,
|
|
275
|
+
hsl(var(--color-muted-foreground) / 0.1) 50%,
|
|
276
|
+
hsl(var(--color-muted)) 75%
|
|
277
|
+
);
|
|
278
|
+
background-size: 200% 100%;
|
|
279
|
+
animation: shimmer 1.5s infinite;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* Hover effects */
|
|
283
|
+
.hover-lift {
|
|
284
|
+
transition: transform var(--transition-base) var(--ease-out),
|
|
285
|
+
box-shadow var(--transition-base) var(--ease-out);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.hover-lift:hover {
|
|
289
|
+
transform: translateY(-4px);
|
|
290
|
+
box-shadow: var(--shadow-xl);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/* Glassmorphism */
|
|
294
|
+
.glass {
|
|
295
|
+
background: rgba(255, 255, 255, 0.1);
|
|
296
|
+
backdrop-filter: blur(10px);
|
|
297
|
+
-webkit-backdrop-filter: blur(10px);
|
|
298
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* Gradient text */
|
|
302
|
+
.gradient-text {
|
|
303
|
+
background: linear-gradient(135deg, hsl(var(--color-primary)), hsl(var(--color-secondary)));
|
|
304
|
+
-webkit-background-clip: text;
|
|
305
|
+
-webkit-text-fill-color: transparent;
|
|
306
|
+
background-clip: text;
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## 🎯 Patrones de Diseño (Dribbble-Inspired)
|
|
311
|
+
|
|
312
|
+
### 1. Hero Section Moderna
|
|
313
|
+
|
|
314
|
+
```tsx
|
|
315
|
+
// components/features/landing/hero.tsx
|
|
316
|
+
export function Hero() {
|
|
317
|
+
return (
|
|
318
|
+
<section className="relative min-h-screen overflow-hidden bg-gradient-to-br from-background via-background to-primary/5">
|
|
319
|
+
{/* Decorative elements */}
|
|
320
|
+
<div className="absolute inset-0 overflow-hidden">
|
|
321
|
+
<div className="absolute -top-1/2 -right-1/4 h-[800px] w-[800px] rounded-full bg-primary/10 blur-3xl" />
|
|
322
|
+
<div className="absolute -bottom-1/2 -left-1/4 h-[600px] w-[600px] rounded-full bg-secondary/10 blur-3xl" />
|
|
323
|
+
</div>
|
|
324
|
+
|
|
325
|
+
<div className="container relative z-10 mx-auto px-4 py-20 lg:py-32">
|
|
326
|
+
<div className="mx-auto max-w-4xl text-center">
|
|
327
|
+
{/* Badge */}
|
|
328
|
+
<div className="mb-6 inline-flex items-center rounded-full border border-primary/20 bg-primary/5 px-4 py-1.5 text-sm text-primary animate-fade-in-up">
|
|
329
|
+
✨ Nuevo lanzamiento v2.0
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
{/* Heading */}
|
|
333
|
+
<h1 className="mb-6 text-5xl font-bold tracking-tight sm:text-6xl lg:text-7xl animate-fade-in-up [animation-delay:100ms]">
|
|
334
|
+
Build products with{' '}
|
|
335
|
+
<span className="gradient-text">AI-powered</span>{' '}
|
|
336
|
+
automation
|
|
337
|
+
</h1>
|
|
338
|
+
|
|
339
|
+
{/* Subtitle */}
|
|
340
|
+
<p className="mb-10 text-xl text-muted-foreground animate-fade-in-up [animation-delay:200ms]">
|
|
341
|
+
The complete framework for developing intelligent agents
|
|
342
|
+
and automated workflows
|
|
343
|
+
</p>
|
|
344
|
+
|
|
345
|
+
{/* CTAs */}
|
|
346
|
+
<div className="flex flex-col items-center gap-4 sm:flex-row sm:justify-center animate-fade-in-up [animation-delay:300ms]">
|
|
347
|
+
<Button size="lg" variant="gradient" className="w-full sm:w-auto">
|
|
348
|
+
Get Started Free
|
|
349
|
+
</Button>
|
|
350
|
+
<Button size="lg" variant="outline" className="w-full sm:w-auto">
|
|
351
|
+
View Demo
|
|
352
|
+
</Button>
|
|
353
|
+
</div>
|
|
354
|
+
</div>
|
|
355
|
+
</div>
|
|
356
|
+
</section>
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 2. Cards con Hover Effect
|
|
362
|
+
|
|
363
|
+
```tsx
|
|
364
|
+
// components/ui/feature-card.tsx
|
|
365
|
+
export function FeatureCard({ icon, title, description }) {
|
|
366
|
+
return (
|
|
367
|
+
<div className="group relative overflow-hidden rounded-2xl border border-border bg-card p-6 hover-lift">
|
|
368
|
+
{/* Gradient overlay on hover */}
|
|
369
|
+
<div className="absolute inset-0 bg-gradient-to-br from-primary/5 to-secondary/5 opacity-0 transition-opacity group-hover:opacity-100" />
|
|
370
|
+
|
|
371
|
+
{/* Content */}
|
|
372
|
+
<div className="relative z-10">
|
|
373
|
+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary">
|
|
374
|
+
{icon}
|
|
375
|
+
</div>
|
|
376
|
+
<h3 className="mb-2 text-xl font-semibold">{title}</h3>
|
|
377
|
+
<p className="text-muted-foreground">{description}</p>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
);
|
|
381
|
+
}
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### 3. Dashboard Layout
|
|
385
|
+
|
|
386
|
+
```tsx
|
|
387
|
+
// app/(dashboard)/layout.tsx
|
|
388
|
+
export default function DashboardLayout({ children }) {
|
|
389
|
+
return (
|
|
390
|
+
<div className="flex min-h-screen bg-muted/30">
|
|
391
|
+
{/* Sidebar */}
|
|
392
|
+
<aside className="fixed left-0 top-0 z-40 h-screen w-64 border-r border-border bg-card">
|
|
393
|
+
<Sidebar />
|
|
394
|
+
</aside>
|
|
395
|
+
|
|
396
|
+
{/* Main content */}
|
|
397
|
+
<div className="ml-64 flex-1">
|
|
398
|
+
<Header />
|
|
399
|
+
<main className="p-6">
|
|
400
|
+
{children}
|
|
401
|
+
</main>
|
|
402
|
+
</div>
|
|
403
|
+
</div>
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
## 📱 Responsive Design
|
|
409
|
+
|
|
410
|
+
```tsx
|
|
411
|
+
// Breakpoints en Tailwind config
|
|
412
|
+
const breakpoints = {
|
|
413
|
+
sm: '640px', // Mobile landscape
|
|
414
|
+
md: '768px', // Tablet
|
|
415
|
+
lg: '1024px', // Desktop
|
|
416
|
+
xl: '1280px', // Large desktop
|
|
417
|
+
'2xl': '1536px', // Extra large
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
// Ejemplo de grid responsive
|
|
421
|
+
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
|
422
|
+
{items.map(item => <Card key={item.id} {...item} />)}
|
|
423
|
+
</div>
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
## 📚 Recursos de Diseño
|
|
427
|
+
|
|
428
|
+
- [Dribbble](https://dribbble.com/) - Inspiración visual
|
|
429
|
+
- [Mobbin](https://mobbin.com/) - Patrones UI reales
|
|
430
|
+
- [Refero](https://refero.design/) - Referencias de SaaS
|
|
431
|
+
- [Shadcn/UI](https://ui.shadcn.com/) - Componentes accesibles
|
|
432
|
+
- [Radix UI](https://www.radix-ui.com/) - Primitivos headless
|
|
433
|
+
|
|
434
|
+
## Checklist de UX/UI
|
|
435
|
+
|
|
436
|
+
- [ ] Sistema de tokens de diseño definido
|
|
437
|
+
- [ ] Dark mode implementado
|
|
438
|
+
- [ ] Componentes accesibles (WCAG 2.1)
|
|
439
|
+
- [ ] Animaciones suaves y con propósito
|
|
440
|
+
- [ ] Estados de loading (skeletons)
|
|
441
|
+
- [ ] Estados de error claros
|
|
442
|
+
- [ ] Feedback visual en interacciones
|
|
443
|
+
- [ ] Responsive en todos los breakpoints
|
|
444
|
+
- [ ] Tipografía legible
|
|
445
|
+
- [ ] Contraste adecuado
|
|
446
|
+
- [ ] Focus states visibles
|