@qazuor/claude-code-config 0.1.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/LICENSE +21 -0
- package/README.md +1248 -0
- package/dist/bin.cjs +11886 -0
- package/dist/bin.cjs.map +1 -0
- package/dist/bin.d.cts +1 -0
- package/dist/bin.d.ts +1 -0
- package/dist/bin.js +11869 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.cjs +3887 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1325 -0
- package/dist/index.d.ts +1325 -0
- package/dist/index.js +3835 -0
- package/dist/index.js.map +1 -0
- package/package.json +86 -0
- package/templates/.log/notifications.log +1775 -0
- package/templates/agents/README.md +164 -0
- package/templates/agents/_registry.json +443 -0
- package/templates/agents/design/content-writer.md +353 -0
- package/templates/agents/design/ux-ui-designer.md +382 -0
- package/templates/agents/engineering/astro-engineer.md +293 -0
- package/templates/agents/engineering/db-drizzle-engineer.md +360 -0
- package/templates/agents/engineering/express-engineer.md +316 -0
- package/templates/agents/engineering/fastify-engineer.md +399 -0
- package/templates/agents/engineering/hono-engineer.md +263 -0
- package/templates/agents/engineering/mongoose-engineer.md +473 -0
- package/templates/agents/engineering/nestjs-engineer.md +429 -0
- package/templates/agents/engineering/nextjs-engineer.md +451 -0
- package/templates/agents/engineering/node-typescript-engineer.md +347 -0
- package/templates/agents/engineering/prisma-engineer.md +432 -0
- package/templates/agents/engineering/react-senior-dev.md +394 -0
- package/templates/agents/engineering/tanstack-start-engineer.md +447 -0
- package/templates/agents/engineering/tech-lead.md +269 -0
- package/templates/agents/product/product-functional.md +329 -0
- package/templates/agents/product/product-technical.md +578 -0
- package/templates/agents/quality/debugger.md +514 -0
- package/templates/agents/quality/qa-engineer.md +390 -0
- package/templates/agents/specialized/enrichment-agent.md +277 -0
- package/templates/agents/specialized/i18n-specialist.md +322 -0
- package/templates/agents/specialized/seo-ai-specialist.md +387 -0
- package/templates/agents/specialized/tech-writer.md +300 -0
- package/templates/code-style/.editorconfig +27 -0
- package/templates/code-style/.prettierignore +25 -0
- package/templates/code-style/.prettierrc +12 -0
- package/templates/code-style/biome.json +78 -0
- package/templates/code-style/commitlint.config.js +44 -0
- package/templates/commands/README.md +175 -0
- package/templates/commands/_registry.json +420 -0
- package/templates/commands/add-new-entity.md +211 -0
- package/templates/commands/audit/accessibility-audit.md +360 -0
- package/templates/commands/audit/performance-audit.md +290 -0
- package/templates/commands/audit/security-audit.md +231 -0
- package/templates/commands/code-check.md +127 -0
- package/templates/commands/five-why.md +225 -0
- package/templates/commands/formatting/format-markdown.md +197 -0
- package/templates/commands/git/commit.md +247 -0
- package/templates/commands/meta/create-agent.md +257 -0
- package/templates/commands/meta/create-command.md +312 -0
- package/templates/commands/meta/create-skill.md +321 -0
- package/templates/commands/meta/help.md +318 -0
- package/templates/commands/planning/check-completed-tasks.md +224 -0
- package/templates/commands/planning/cleanup-issues.md +248 -0
- package/templates/commands/planning/planning-cleanup.md +251 -0
- package/templates/commands/planning/sync-planning-github.md +133 -0
- package/templates/commands/planning/sync-todos-github.md +203 -0
- package/templates/commands/quality-check.md +211 -0
- package/templates/commands/run-tests.md +159 -0
- package/templates/commands/start-feature-plan.md +232 -0
- package/templates/commands/start-refactor-plan.md +244 -0
- package/templates/commands/sync-planning.md +176 -0
- package/templates/commands/update-docs.md +242 -0
- package/templates/docs/CHECKPOINT-SYSTEM.md +504 -0
- package/templates/docs/INDEX.md +677 -0
- package/templates/docs/RECOMMENDED-HOOKS.md +415 -0
- package/templates/docs/_registry.json +329 -0
- package/templates/docs/diagrams/README.md +220 -0
- package/templates/docs/diagrams/agent-hierarchy.mmd +55 -0
- package/templates/docs/diagrams/documentation-map.mmd +61 -0
- package/templates/docs/diagrams/tools-relationship.mmd +55 -0
- package/templates/docs/diagrams/workflow-decision-tree.mmd +38 -0
- package/templates/docs/doc-sync.md +533 -0
- package/templates/docs/examples/end-to-end-workflow.md +1505 -0
- package/templates/docs/glossary.md +495 -0
- package/templates/docs/guides/mockup-prompt-engineering.md +644 -0
- package/templates/docs/guides/mockup-setup.md +737 -0
- package/templates/docs/learnings/README.md +250 -0
- package/templates/docs/learnings/common-architectural-patterns.md +123 -0
- package/templates/docs/learnings/common-mistakes-to-avoid.md +149 -0
- package/templates/docs/learnings/markdown-formatting-standards.md +104 -0
- package/templates/docs/learnings/monorepo-command-execution.md +64 -0
- package/templates/docs/learnings/optimization-tips.md +146 -0
- package/templates/docs/learnings/planning-linear-sync-workflow.md +70 -0
- package/templates/docs/learnings/shell-compatibility-fish.md +46 -0
- package/templates/docs/learnings/test-organization-structure.md +68 -0
- package/templates/docs/mcp-installation.md +613 -0
- package/templates/docs/mcp-servers.md +989 -0
- package/templates/docs/notification-installation.md +570 -0
- package/templates/docs/quick-start.md +354 -0
- package/templates/docs/standards/architecture-patterns.md +1064 -0
- package/templates/docs/standards/atomic-commits.md +513 -0
- package/templates/docs/standards/code-standards.md +993 -0
- package/templates/docs/standards/design-standards.md +656 -0
- package/templates/docs/standards/documentation-standards.md +1160 -0
- package/templates/docs/standards/testing-standards.md +969 -0
- package/templates/docs/system-maintenance.md +604 -0
- package/templates/docs/templates/PDR-template.md +561 -0
- package/templates/docs/templates/TODOs-template.md +534 -0
- package/templates/docs/templates/tech-analysis-template.md +800 -0
- package/templates/docs/workflows/README.md +519 -0
- package/templates/docs/workflows/atomic-task-protocol.md +955 -0
- package/templates/docs/workflows/decision-tree.md +482 -0
- package/templates/docs/workflows/edge-cases.md +856 -0
- package/templates/docs/workflows/phase-1-planning.md +957 -0
- package/templates/docs/workflows/phase-2-implementation.md +896 -0
- package/templates/docs/workflows/phase-3-validation.md +792 -0
- package/templates/docs/workflows/phase-4-finalization.md +927 -0
- package/templates/docs/workflows/quick-fix-protocol.md +505 -0
- package/templates/docs/workflows/task-atomization.md +537 -0
- package/templates/docs/workflows/task-completion-protocol.md +448 -0
- package/templates/hooks/on-notification.sh +28 -0
- package/templates/schemas/checkpoint.schema.json +97 -0
- package/templates/schemas/code-registry.schema.json +84 -0
- package/templates/schemas/pdr.schema.json +314 -0
- package/templates/schemas/problems.schema.json +55 -0
- package/templates/schemas/tech-analysis.schema.json +404 -0
- package/templates/schemas/telemetry.schema.json +298 -0
- package/templates/schemas/todos.schema.json +234 -0
- package/templates/schemas/workflows.schema.json +69 -0
- package/templates/scripts/add-changelogs.sh +105 -0
- package/templates/scripts/generate-code-registry.ts +270 -0
- package/templates/scripts/health-check.sh +343 -0
- package/templates/scripts/sync-registry.sh +40 -0
- package/templates/scripts/telemetry-report.ts +36 -0
- package/templates/scripts/validate-docs.sh +224 -0
- package/templates/scripts/validate-registry.sh +225 -0
- package/templates/scripts/validate-schemas.ts +283 -0
- package/templates/scripts/validate-structure.sh +165 -0
- package/templates/scripts/worktree-cleanup.sh +81 -0
- package/templates/scripts/worktree-create.sh +63 -0
- package/templates/sessions/planning/.gitkeep +0 -0
- package/templates/sessions/planning/archived/.gitkeep +0 -0
- package/templates/settings.json +202 -0
- package/templates/settings.local.json +138 -0
- package/templates/skills/README.md +197 -0
- package/templates/skills/_registry.json +473 -0
- package/templates/skills/audit/accessibility-audit.md +309 -0
- package/templates/skills/audit/performance-audit.md +257 -0
- package/templates/skills/audit/security-audit.md +217 -0
- package/templates/skills/auth/nextauth-patterns.md +308 -0
- package/templates/skills/brand-guidelines.md +240 -0
- package/templates/skills/documentation/markdown-formatter.md +302 -0
- package/templates/skills/git/git-commit-helper.md +321 -0
- package/templates/skills/i18n/i18n-patterns.md +251 -0
- package/templates/skills/patterns/error-handling-patterns.md +242 -0
- package/templates/skills/patterns/tdd-methodology.md +342 -0
- package/templates/skills/qa/qa-criteria-validator.md +383 -0
- package/templates/skills/qa/web-app-testing.md +398 -0
- package/templates/skills/react/react-hook-form-patterns.md +359 -0
- package/templates/skills/state/redux-toolkit-patterns.md +272 -0
- package/templates/skills/state/tanstack-query-patterns.md +299 -0
- package/templates/skills/state/zustand-patterns.md +301 -0
- package/templates/skills/tech/mermaid-diagram-specialist.md +195 -0
- package/templates/skills/tech/shadcn-specialist.md +252 -0
- package/templates/skills/tech/vercel-specialist.md +297 -0
- package/templates/skills/testing/api-app-testing.md +254 -0
- package/templates/skills/testing/performance-testing.md +275 -0
- package/templates/skills/testing/security-testing.md +348 -0
- package/templates/skills/utils/add-memory.md +295 -0
- package/templates/skills/utils/json-data-auditor.md +283 -0
- package/templates/skills/utils/pdf-creator-editor.md +342 -0
- package/templates/tools/format-markdown.sh +185 -0
|
@@ -0,0 +1,656 @@
|
|
|
1
|
+
# Design Standards
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document defines the design system, ensuring visual consistency, accessibility, and maintainability across all applications (web, admin, and future mobile apps).
|
|
6
|
+
|
|
7
|
+
**Design System Stack:**
|
|
8
|
+
|
|
9
|
+
- **Framework**: Tailwind CSS 4.x
|
|
10
|
+
- **Component Library**: Shadcn UI
|
|
11
|
+
- **Icons**: Lucide React
|
|
12
|
+
- **Fonts**: Inter (system default)
|
|
13
|
+
- **Reference**: [Brand Guidelines Skill](../../skills/brand-guidelines.md)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Table of Contents
|
|
18
|
+
|
|
19
|
+
1. [Color System](#color-system)
|
|
20
|
+
2. [Typography](#typography)
|
|
21
|
+
3. [Spacing System](#spacing-system)
|
|
22
|
+
4. [Component Patterns](#component-patterns)
|
|
23
|
+
5. [Accessibility Guidelines](#accessibility-guidelines)
|
|
24
|
+
6. [Responsive Design](#responsive-design)
|
|
25
|
+
7. [Dark Mode](#dark-mode)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Color System
|
|
30
|
+
|
|
31
|
+
### Primary Palette (Blue)
|
|
32
|
+
|
|
33
|
+
Represents trust, reliability, and water (rivers of the [Region] region).
|
|
34
|
+
|
|
35
|
+
| Shade | Hex | CSS Variable | Usage |
|
|
36
|
+
|-------|-----|--------------|-------|
|
|
37
|
+
| 50 | `#eff6ff` | `--primary-50` | Light backgrounds, hover states |
|
|
38
|
+
| 100 | `#dbeafe` | `--primary-100` | Subtle highlights, selection |
|
|
39
|
+
| 200 | `#bfdbfe` | `--primary-200` | Borders, dividers |
|
|
40
|
+
| 300 | `#93c5fd` | `--primary-300` | Disabled states |
|
|
41
|
+
| 400 | `#60a5fa` | `--primary-400` | Icons, secondary elements |
|
|
42
|
+
| **500** | **`#3b82f6`** | **`--primary-500`** | **Main brand color - CTAs, links** |
|
|
43
|
+
| 600 | `#2563eb` | `--primary-600` | Hover states, emphasis |
|
|
44
|
+
| 700 | `#1d4ed8` | `--primary-700` | Active states |
|
|
45
|
+
| 800 | `#1e40af` | `--primary-800` | Strong emphasis |
|
|
46
|
+
| 900 | `#1e3a8a` | `--primary-900` | Headings, strong text |
|
|
47
|
+
|
|
48
|
+
**Tailwind Classes:**
|
|
49
|
+
|
|
50
|
+
```css
|
|
51
|
+
bg-primary-500 /* Background */
|
|
52
|
+
text-primary-600 /* Text */
|
|
53
|
+
border-primary-200 /* Border */
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Secondary Palette (Orange)
|
|
57
|
+
|
|
58
|
+
Represents warmth, sunsets, and hospitality.
|
|
59
|
+
|
|
60
|
+
| Shade | Hex | CSS Variable | Usage |
|
|
61
|
+
|-------|-----|--------------|-------|
|
|
62
|
+
| 50 | `#fff7ed` | `--secondary-50` | Light backgrounds |
|
|
63
|
+
| 100 | `#ffedd5` | `--secondary-100` | Featured backgrounds |
|
|
64
|
+
| 200 | `#fed7aa` | `--secondary-200` | Borders |
|
|
65
|
+
| 300 | `#fdba74` | `--secondary-300` | Subtle highlights |
|
|
66
|
+
| 400 | `#fb923c` | `--secondary-400` | Icons |
|
|
67
|
+
| **500** | **`#f97316`** | **`--secondary-500`** | **Accent color - secondary CTAs** |
|
|
68
|
+
| 600 | `#ea580c` | `--secondary-600` | Hover states |
|
|
69
|
+
| 700 | `#c2410c` | `--secondary-700` | Active states |
|
|
70
|
+
| 800 | `#9a3412` | `--secondary-800` | Strong emphasis |
|
|
71
|
+
| 900 | `#7c2d12` | `--secondary-900` | Dark text on secondary |
|
|
72
|
+
|
|
73
|
+
### Neutral Palette (Gray)
|
|
74
|
+
|
|
75
|
+
For text, borders, and backgrounds.
|
|
76
|
+
|
|
77
|
+
| Shade | Hex | CSS Variable | Usage |
|
|
78
|
+
|-------|-----|--------------|-------|
|
|
79
|
+
| 50 | `#f9fafb` | `--gray-50` | Page backgrounds |
|
|
80
|
+
| 100 | `#f3f4f6` | `--gray-100` | Light backgrounds, cards |
|
|
81
|
+
| 200 | `#e5e7eb` | `--gray-200` | Borders, dividers |
|
|
82
|
+
| 300 | `#d1d5db` | `--gray-300` | Disabled borders |
|
|
83
|
+
| 400 | `#9ca3af` | `--gray-400` | Placeholders, subtle text |
|
|
84
|
+
| 500 | `#6b7280` | `--gray-500` | Secondary text |
|
|
85
|
+
| **600** | **`#4b5563`** | **`--gray-600`** | **Body text** |
|
|
86
|
+
| 700 | `#374151` | `--gray-700` | Strong text |
|
|
87
|
+
| 800 | `#1f2937` | `--gray-800` | Headings (alternative) |
|
|
88
|
+
| **900** | **`#111827`** | **`--gray-900`** | **Main headings** |
|
|
89
|
+
|
|
90
|
+
### Semantic Colors
|
|
91
|
+
|
|
92
|
+
| Color | Shade | Hex | Usage |
|
|
93
|
+
|-------|-------|-----|-------|
|
|
94
|
+
| **Success** | 50 | `#f0fdf4` | Backgrounds |
|
|
95
|
+
| | 500 | `#10b981` | Confirmations, available |
|
|
96
|
+
| | 700 | `#047857` | Strong success |
|
|
97
|
+
| **Warning** | 50 | `#fffbeb` | Backgrounds |
|
|
98
|
+
| | 500 | `#f59e0b` | Alerts, caution |
|
|
99
|
+
| | 700 | `#b45309` | Strong warning |
|
|
100
|
+
| **Error** | 50 | `#fef2f2` | Backgrounds |
|
|
101
|
+
| | 500 | `#ef4444` | Errors, validation |
|
|
102
|
+
| | 700 | `#b91c1c` | Strong error |
|
|
103
|
+
| **Info** | 500 | `#3b82f6` | Information, tips |
|
|
104
|
+
|
|
105
|
+
### Color Usage Rules
|
|
106
|
+
|
|
107
|
+
**DO ✅**
|
|
108
|
+
|
|
109
|
+
- Use primary-500 for main CTAs and links
|
|
110
|
+
- Use secondary-500 for secondary actions
|
|
111
|
+
- Use gray-600 for body text
|
|
112
|
+
- Use semantic colors for appropriate states
|
|
113
|
+
- Maintain 4.5:1 contrast ratio for text
|
|
114
|
+
|
|
115
|
+
**DON'T ❌**
|
|
116
|
+
|
|
117
|
+
- Mix primary and secondary as primary colors
|
|
118
|
+
- Use colors outside the defined palette
|
|
119
|
+
- Ignore accessibility contrast ratios
|
|
120
|
+
- Use semantic colors for decorative purposes
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Typography
|
|
125
|
+
|
|
126
|
+
### Font Families
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
/* Primary (Body & UI) */
|
|
130
|
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
131
|
+
|
|
132
|
+
/* Code */
|
|
133
|
+
font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Type Scale
|
|
137
|
+
|
|
138
|
+
| Element | Size (mobile) | Size (desktop) | Weight | Line Height | Tailwind |
|
|
139
|
+
|---------|---------------|----------------|--------|-------------|----------|
|
|
140
|
+
| **Display** | 2.25rem (36px) | 3.75rem (60px) | 700 (Bold) | 1.1 | `text-4xl md:text-6xl font-bold` |
|
|
141
|
+
| **H1** | 1.875rem (30px) | 2.25rem (36px) | 700 (Bold) | 1.2 | `text-3xl md:text-4xl font-bold` |
|
|
142
|
+
| **H2** | 1.5rem (24px) | 1.875rem (30px) | 600 (Semibold) | 1.3 | `text-2xl md:text-3xl font-semibold` |
|
|
143
|
+
| **H3** | 1.25rem (20px) | 1.5rem (24px) | 600 (Semibold) | 1.4 | `text-xl md:text-2xl font-semibold` |
|
|
144
|
+
| **H4** | 1.125rem (18px) | 1.25rem (20px) | 500 (Medium) | 1.4 | `text-lg md:text-xl font-medium` |
|
|
145
|
+
| **Body Large** | 1.125rem (18px) | 1.125rem (18px) | 400 (Regular) | 1.6 | `text-lg` |
|
|
146
|
+
| **Body** | 1rem (16px) | 1rem (16px) | 400 (Regular) | 1.6 | `text-base` |
|
|
147
|
+
| **Body Small** | 0.875rem (14px) | 0.875rem (14px) | 400 (Regular) | 1.5 | `text-sm` |
|
|
148
|
+
| **Caption** | 0.75rem (12px) | 0.75rem (12px) | 400 (Regular) | 1.4 | `text-xs` |
|
|
149
|
+
|
|
150
|
+
### Font Weights
|
|
151
|
+
|
|
152
|
+
| Weight | Value | Tailwind | Usage |
|
|
153
|
+
|--------|-------|----------|-------|
|
|
154
|
+
| Regular | 400 | `font-normal` | Body text, descriptions |
|
|
155
|
+
| Medium | 500 | `font-medium` | Emphasized text, H4 |
|
|
156
|
+
| Semibold | 600 | `font-semibold` | H2, H3, strong emphasis |
|
|
157
|
+
| Bold | 700 | `font-bold` | H1, Display, very strong |
|
|
158
|
+
|
|
159
|
+
### Typography Examples
|
|
160
|
+
|
|
161
|
+
```tsx
|
|
162
|
+
// Page Title
|
|
163
|
+
<h1 className="text-3xl md:text-4xl font-bold text-gray-900">
|
|
164
|
+
Descubre Alojamientos en [City Name]
|
|
165
|
+
</h1>
|
|
166
|
+
|
|
167
|
+
// Section Heading
|
|
168
|
+
<h2 className="text-2xl md:text-3xl font-semibold text-gray-900 mb-4">
|
|
169
|
+
Destinos Populares
|
|
170
|
+
</h2>
|
|
171
|
+
|
|
172
|
+
// Card Title
|
|
173
|
+
<h3 className="text-xl font-semibold text-gray-800">
|
|
174
|
+
Hotel Colonial
|
|
175
|
+
</h3>
|
|
176
|
+
|
|
177
|
+
// Body Text
|
|
178
|
+
<p className="text-base text-gray-600 leading-relaxed">
|
|
179
|
+
Experimenta la auténtica hospitalidad del [Region] argentino...
|
|
180
|
+
</p>
|
|
181
|
+
|
|
182
|
+
// Small Text / Meta
|
|
183
|
+
<span className="text-sm text-gray-500">
|
|
184
|
+
Actualizado hace 2 días
|
|
185
|
+
</span>
|
|
186
|
+
|
|
187
|
+
// Code Block
|
|
188
|
+
<code className="font-mono text-sm bg-gray-100 px-2 py-1 rounded">
|
|
189
|
+
pnpm install
|
|
190
|
+
</code>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Spacing System
|
|
196
|
+
|
|
197
|
+
Based on Tailwind's 4px spacing scale.
|
|
198
|
+
|
|
199
|
+
### Base Unit: 0.25rem (4px)
|
|
200
|
+
|
|
201
|
+
| Value | rem | px | Tailwind | Usage |
|
|
202
|
+
|-------|-----|----|----------|-------|
|
|
203
|
+
| 0 | 0 | 0 | `0` | Reset |
|
|
204
|
+
| 1 | 0.25rem | 4px | `1` | Tight spacing |
|
|
205
|
+
| 2 | 0.5rem | 8px | `2` | Very small gaps |
|
|
206
|
+
| 3 | 0.75rem | 12px | `3` | Small gaps |
|
|
207
|
+
| 4 | 1rem | 16px | `4` | Default gap |
|
|
208
|
+
| 5 | 1.25rem | 20px | `5` | Medium gap |
|
|
209
|
+
| 6 | 1.5rem | 24px | `6` | Large gap |
|
|
210
|
+
| 8 | 2rem | 32px | `8` | Section padding |
|
|
211
|
+
| 10 | 2.5rem | 40px | `10` | Large section gap |
|
|
212
|
+
| 12 | 3rem | 48px | `12` | Extra large gap |
|
|
213
|
+
| 16 | 4rem | 64px | `16` | Hero sections |
|
|
214
|
+
| 20 | 5rem | 80px | `20` | Major sections |
|
|
215
|
+
|
|
216
|
+
### Spacing Usage
|
|
217
|
+
|
|
218
|
+
```tsx
|
|
219
|
+
// Card padding
|
|
220
|
+
<div className="p-6"> {/* 24px padding */}
|
|
221
|
+
|
|
222
|
+
// Section margin
|
|
223
|
+
<section className="mb-12"> {/* 48px bottom margin */}
|
|
224
|
+
|
|
225
|
+
// Element gap
|
|
226
|
+
<div className="space-y-4"> {/* 16px vertical gap */}
|
|
227
|
+
|
|
228
|
+
// Grid gap
|
|
229
|
+
<div className="grid gap-6"> {/* 24px gap */}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Common Spacing Patterns
|
|
233
|
+
|
|
234
|
+
| Pattern | Tailwind | Use Case |
|
|
235
|
+
|---------|----------|----------|
|
|
236
|
+
| Tight | `space-y-2 p-3` | Compact lists, dense UI |
|
|
237
|
+
| Default | `space-y-4 p-6` | Cards, forms, general content |
|
|
238
|
+
| Relaxed | `space-y-6 p-8` | Marketing pages, featured content |
|
|
239
|
+
| Spacious | `space-y-8 p-12` | Hero sections, major divisions |
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Component Patterns
|
|
244
|
+
|
|
245
|
+
### Buttons
|
|
246
|
+
|
|
247
|
+
#### Primary Button
|
|
248
|
+
|
|
249
|
+
```tsx
|
|
250
|
+
<button className="
|
|
251
|
+
bg-primary-500 hover:bg-primary-600 active:bg-primary-700
|
|
252
|
+
text-white font-medium
|
|
253
|
+
px-6 py-3 rounded-lg
|
|
254
|
+
transition-colors duration-200
|
|
255
|
+
focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2
|
|
256
|
+
">
|
|
257
|
+
Reservar Ahora
|
|
258
|
+
</button>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### Secondary Button
|
|
262
|
+
|
|
263
|
+
```tsx
|
|
264
|
+
<button className="
|
|
265
|
+
bg-secondary-500 hover:bg-secondary-600 active:bg-secondary-700
|
|
266
|
+
text-white font-medium
|
|
267
|
+
px-6 py-3 rounded-lg
|
|
268
|
+
transition-colors duration-200
|
|
269
|
+
focus:outline-none focus:ring-2 focus:ring-secondary-500 focus:ring-offset-2
|
|
270
|
+
">
|
|
271
|
+
Ver Más
|
|
272
|
+
</button>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
#### Outline Button
|
|
276
|
+
|
|
277
|
+
```tsx
|
|
278
|
+
<button className="
|
|
279
|
+
border-2 border-primary-500
|
|
280
|
+
text-primary-600 hover:bg-primary-50 active:bg-primary-100
|
|
281
|
+
font-medium px-6 py-3 rounded-lg
|
|
282
|
+
transition-colors duration-200
|
|
283
|
+
focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2
|
|
284
|
+
">
|
|
285
|
+
Filtrar
|
|
286
|
+
</button>
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
#### Ghost Button
|
|
290
|
+
|
|
291
|
+
```tsx
|
|
292
|
+
<button className="
|
|
293
|
+
text-gray-600 hover:text-gray-900 hover:bg-gray-100
|
|
294
|
+
font-medium px-4 py-2 rounded-lg
|
|
295
|
+
transition-colors duration-200
|
|
296
|
+
focus:outline-none focus:ring-2 focus:ring-gray-300
|
|
297
|
+
">
|
|
298
|
+
Cancelar
|
|
299
|
+
</button>
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Cards
|
|
303
|
+
|
|
304
|
+
#### Basic Card
|
|
305
|
+
|
|
306
|
+
```tsx
|
|
307
|
+
<div className="
|
|
308
|
+
bg-white rounded-lg shadow-sm
|
|
309
|
+
border border-gray-200
|
|
310
|
+
p-6
|
|
311
|
+
hover:shadow-md transition-shadow duration-200
|
|
312
|
+
">
|
|
313
|
+
<h3 className="text-xl font-semibold text-gray-900 mb-2">
|
|
314
|
+
Card Title
|
|
315
|
+
</h3>
|
|
316
|
+
<p className="text-gray-600">
|
|
317
|
+
Card content goes here...
|
|
318
|
+
</p>
|
|
319
|
+
</div>
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
#### Feature Card
|
|
323
|
+
|
|
324
|
+
```tsx
|
|
325
|
+
<div className="
|
|
326
|
+
bg-gradient-to-br from-primary-50 to-primary-100
|
|
327
|
+
rounded-xl shadow-md
|
|
328
|
+
p-8
|
|
329
|
+
border border-primary-200
|
|
330
|
+
">
|
|
331
|
+
<div className="w-12 h-12 bg-primary-500 rounded-lg mb-4 flex items-center justify-center">
|
|
332
|
+
<Icon className="w-6 h-6 text-white" />
|
|
333
|
+
</div>
|
|
334
|
+
<h3 className="text-xl font-semibold text-gray-900 mb-2">
|
|
335
|
+
Feature Title
|
|
336
|
+
</h3>
|
|
337
|
+
<p className="text-gray-600">
|
|
338
|
+
Feature description...
|
|
339
|
+
</p>
|
|
340
|
+
</div>
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Forms
|
|
344
|
+
|
|
345
|
+
#### Input Field
|
|
346
|
+
|
|
347
|
+
```tsx
|
|
348
|
+
<div className="space-y-2">
|
|
349
|
+
<label className="block text-sm font-medium text-gray-700">
|
|
350
|
+
Email
|
|
351
|
+
</label>
|
|
352
|
+
<input
|
|
353
|
+
type="email"
|
|
354
|
+
className="
|
|
355
|
+
w-full px-4 py-3 rounded-lg
|
|
356
|
+
border border-gray-300
|
|
357
|
+
focus:border-primary-500 focus:ring-2 focus:ring-primary-200
|
|
358
|
+
outline-none transition-colors
|
|
359
|
+
placeholder:text-gray-400
|
|
360
|
+
"
|
|
361
|
+
placeholder="tu@email.com"
|
|
362
|
+
/>
|
|
363
|
+
</div>
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
#### Select Dropdown
|
|
367
|
+
|
|
368
|
+
```tsx
|
|
369
|
+
<select className="
|
|
370
|
+
w-full px-4 py-3 rounded-lg
|
|
371
|
+
border border-gray-300
|
|
372
|
+
bg-white
|
|
373
|
+
focus:border-primary-500 focus:ring-2 focus:ring-primary-200
|
|
374
|
+
outline-none transition-colors
|
|
375
|
+
">
|
|
376
|
+
<option>Selecciona una opción</option>
|
|
377
|
+
<option>Opción 1</option>
|
|
378
|
+
<option>Opción 2</option>
|
|
379
|
+
</select>
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### Badges
|
|
383
|
+
|
|
384
|
+
```tsx
|
|
385
|
+
// Success badge
|
|
386
|
+
<span className="
|
|
387
|
+
inline-flex items-center
|
|
388
|
+
bg-success-50 text-success-700
|
|
389
|
+
px-3 py-1 rounded-full
|
|
390
|
+
text-sm font-medium
|
|
391
|
+
">
|
|
392
|
+
Disponible
|
|
393
|
+
</span>
|
|
394
|
+
|
|
395
|
+
// Warning badge
|
|
396
|
+
<span className="
|
|
397
|
+
inline-flex items-center
|
|
398
|
+
bg-warning-50 text-warning-700
|
|
399
|
+
px-3 py-1 rounded-full
|
|
400
|
+
text-sm font-medium
|
|
401
|
+
">
|
|
402
|
+
Limitado
|
|
403
|
+
</span>
|
|
404
|
+
|
|
405
|
+
// Error badge
|
|
406
|
+
<span className="
|
|
407
|
+
inline-flex items-center
|
|
408
|
+
bg-error-50 text-error-700
|
|
409
|
+
px-3 py-1 rounded-full
|
|
410
|
+
text-sm font-medium
|
|
411
|
+
">
|
|
412
|
+
No Disponible
|
|
413
|
+
</span>
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Alerts
|
|
417
|
+
|
|
418
|
+
```tsx
|
|
419
|
+
// Info alert
|
|
420
|
+
<div className="
|
|
421
|
+
bg-primary-50 border border-primary-200
|
|
422
|
+
text-primary-700
|
|
423
|
+
p-4 rounded-lg
|
|
424
|
+
flex items-start gap-3
|
|
425
|
+
">
|
|
426
|
+
<InfoIcon className="w-5 h-5 flex-shrink-0 mt-0.5" />
|
|
427
|
+
<div>
|
|
428
|
+
<p className="font-medium">Información</p>
|
|
429
|
+
<p className="text-sm mt-1">Mensaje informativo aquí...</p>
|
|
430
|
+
</div>
|
|
431
|
+
</div>
|
|
432
|
+
|
|
433
|
+
// Success alert
|
|
434
|
+
<div className="
|
|
435
|
+
bg-success-50 border border-success-200
|
|
436
|
+
text-success-700
|
|
437
|
+
p-4 rounded-lg
|
|
438
|
+
flex items-start gap-3
|
|
439
|
+
">
|
|
440
|
+
<CheckCircleIcon className="w-5 h-5 flex-shrink-0 mt-0.5" />
|
|
441
|
+
<div>
|
|
442
|
+
<p className="font-medium">Éxito</p>
|
|
443
|
+
<p className="text-sm mt-1">Operación completada correctamente.</p>
|
|
444
|
+
</div>
|
|
445
|
+
</div>
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## Accessibility Guidelines
|
|
451
|
+
|
|
452
|
+
### Color Contrast
|
|
453
|
+
|
|
454
|
+
**WCAG 2.1 Level AA Requirements:**
|
|
455
|
+
|
|
456
|
+
- **Normal text**: Minimum 4.5:1 contrast ratio
|
|
457
|
+
- **Large text** (18px+ regular or 14px+ bold): Minimum 3:1 contrast ratio
|
|
458
|
+
- **UI components**: Minimum 3:1 contrast ratio
|
|
459
|
+
|
|
460
|
+
**Approved Combinations:**
|
|
461
|
+
|
|
462
|
+
| Background | Text Color | Contrast | Pass |
|
|
463
|
+
|------------|------------|----------|------|
|
|
464
|
+
| White (`#ffffff`) | Gray-900 (`#111827`) | 16.5:1 | ✅ AAA |
|
|
465
|
+
| White (`#ffffff`) | Gray-600 (`#4b5563`) | 8.6:1 | ✅ AAA |
|
|
466
|
+
| Primary-500 (`#3b82f6`) | White (`#ffffff`) | 4.7:1 | ✅ AA |
|
|
467
|
+
| Secondary-500 (`#f97316`) | White (`#ffffff`) | 3.4:1 | ✅ Large text only |
|
|
468
|
+
| Gray-100 (`#f3f4f6`) | Gray-900 (`#111827`) | 15.8:1 | ✅ AAA |
|
|
469
|
+
|
|
470
|
+
### Focus States
|
|
471
|
+
|
|
472
|
+
**All interactive elements MUST have visible focus states:**
|
|
473
|
+
|
|
474
|
+
```tsx
|
|
475
|
+
// Button focus
|
|
476
|
+
focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2
|
|
477
|
+
|
|
478
|
+
// Input focus
|
|
479
|
+
focus:border-primary-500 focus:ring-2 focus:ring-primary-200
|
|
480
|
+
|
|
481
|
+
// Link focus
|
|
482
|
+
focus:outline-2 focus:outline-offset-2 focus:outline-primary-500
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Keyboard Navigation
|
|
486
|
+
|
|
487
|
+
**Requirements:**
|
|
488
|
+
|
|
489
|
+
- All interactive elements accessible via Tab key
|
|
490
|
+
- Logical tab order (top to bottom, left to right)
|
|
491
|
+
- Skip links for main content
|
|
492
|
+
- ARIA labels for icon-only buttons
|
|
493
|
+
|
|
494
|
+
```tsx
|
|
495
|
+
// Skip link
|
|
496
|
+
<a
|
|
497
|
+
href="#main-content"
|
|
498
|
+
className="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4"
|
|
499
|
+
>
|
|
500
|
+
Skip to main content
|
|
501
|
+
</a>
|
|
502
|
+
|
|
503
|
+
// Icon button with ARIA label
|
|
504
|
+
<button aria-label="Close dialog">
|
|
505
|
+
<XIcon className="w-5 h-5" />
|
|
506
|
+
</button>
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### Screen Reader Support
|
|
510
|
+
|
|
511
|
+
```tsx
|
|
512
|
+
// Loading state
|
|
513
|
+
<div aria-live="polite" aria-busy="true">
|
|
514
|
+
Loading...
|
|
515
|
+
</div>
|
|
516
|
+
|
|
517
|
+
// Error message
|
|
518
|
+
<div role="alert" aria-live="assertive">
|
|
519
|
+
Error: Invalid email format
|
|
520
|
+
</div>
|
|
521
|
+
|
|
522
|
+
// Hidden text for screen readers
|
|
523
|
+
<span className="sr-only">
|
|
524
|
+
Navigate to homepage
|
|
525
|
+
</span>
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## Responsive Design
|
|
531
|
+
|
|
532
|
+
### Breakpoints
|
|
533
|
+
|
|
534
|
+
| Breakpoint | Min Width | Tailwind | Usage |
|
|
535
|
+
|------------|-----------|----------|-------|
|
|
536
|
+
| **Mobile** | 0px | (default) | Mobile-first |
|
|
537
|
+
| **Tablet** | 640px | `sm:` | Small tablets |
|
|
538
|
+
| **Laptop** | 768px | `md:` | Tablets, small laptops |
|
|
539
|
+
| **Desktop** | 1024px | `lg:` | Laptops, desktops |
|
|
540
|
+
| **Large Desktop** | 1280px | `xl:` | Large screens |
|
|
541
|
+
| **Extra Large** | 1536px | `2xl:` | Very large screens |
|
|
542
|
+
|
|
543
|
+
### Responsive Typography
|
|
544
|
+
|
|
545
|
+
```tsx
|
|
546
|
+
<h1 className="
|
|
547
|
+
text-2xl {/* Mobile: 24px */}
|
|
548
|
+
sm:text-3xl {/* Tablet: 30px */}
|
|
549
|
+
md:text-4xl {/* Desktop: 36px */}
|
|
550
|
+
lg:text-5xl {/* Large: 48px */}
|
|
551
|
+
font-bold
|
|
552
|
+
">
|
|
553
|
+
Responsive Heading
|
|
554
|
+
</h1>
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### Responsive Spacing
|
|
558
|
+
|
|
559
|
+
```tsx
|
|
560
|
+
<div className="
|
|
561
|
+
p-4 {/* Mobile: 16px */}
|
|
562
|
+
md:p-8 {/* Desktop: 32px */}
|
|
563
|
+
lg:p-12 {/* Large: 48px */}
|
|
564
|
+
">
|
|
565
|
+
Content
|
|
566
|
+
</div>
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
### Mobile-First Grid
|
|
570
|
+
|
|
571
|
+
```tsx
|
|
572
|
+
<div className="
|
|
573
|
+
grid
|
|
574
|
+
grid-cols-1 {/* Mobile: 1 column */}
|
|
575
|
+
sm:grid-cols-2 {/* Tablet: 2 columns */}
|
|
576
|
+
lg:grid-cols-3 {/* Desktop: 3 columns */}
|
|
577
|
+
gap-6
|
|
578
|
+
">
|
|
579
|
+
{/* Cards */}
|
|
580
|
+
</div>
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
## Dark Mode
|
|
586
|
+
|
|
587
|
+
Currently **not implemented**, but design tokens are structured to support future dark mode:
|
|
588
|
+
|
|
589
|
+
```css
|
|
590
|
+
/* Future dark mode variables */
|
|
591
|
+
@media (prefers-color-scheme: dark) {
|
|
592
|
+
:root {
|
|
593
|
+
--bg-primary: #1f2937;
|
|
594
|
+
--text-primary: #f9fafb;
|
|
595
|
+
--border-primary: #374151;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
**Dark mode will use:**
|
|
601
|
+
|
|
602
|
+
- Inverted neutrals (gray-900 → gray-50)
|
|
603
|
+
- Adjusted primary/secondary colors for WCAG compliance
|
|
604
|
+
- Reduced contrast (60% → 80% instead of 90%)
|
|
605
|
+
|
|
606
|
+
---
|
|
607
|
+
|
|
608
|
+
## Best Practices
|
|
609
|
+
|
|
610
|
+
### DO ✅
|
|
611
|
+
|
|
612
|
+
- **Use design tokens**: Always use Tailwind classes or CSS variables
|
|
613
|
+
- **Maintain consistency**: Follow established patterns
|
|
614
|
+
- **Test accessibility**: Check contrast, keyboard nav, screen readers
|
|
615
|
+
- **Mobile-first**: Design for mobile, enhance for desktop
|
|
616
|
+
- **Semantic HTML**: Use correct HTML elements
|
|
617
|
+
- **Meaningful spacing**: Use spacing scale, avoid arbitrary values
|
|
618
|
+
- **Test with real content**: Don't design with placeholder text only
|
|
619
|
+
|
|
620
|
+
### DON'T ❌
|
|
621
|
+
|
|
622
|
+
- **Use arbitrary values**: Stick to design system (avoid `p-[13px]`)
|
|
623
|
+
- **Ignore accessibility**: All users matter
|
|
624
|
+
- **Skip responsive design**: Test on multiple devices
|
|
625
|
+
- **Override system styles**: Use composition, not override
|
|
626
|
+
- **Use colors outside palette**: Maintain brand consistency
|
|
627
|
+
- **Forget focus states**: Always visible and clear
|
|
628
|
+
- **Use color alone**: Combine with icons/text for meaning
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
## Related Documentation
|
|
633
|
+
|
|
634
|
+
- **Brand Guidelines**: `.claude/skills/brand-guidelines.md`
|
|
635
|
+
- **Shadcn UI Components**: <https://ui.shadcn.com/>
|
|
636
|
+
- **Tailwind Documentation**: <https://tailwindcss.com/>
|
|
637
|
+
- **WCAG Guidelines**: <https://www.w3.org/WAI/WCAG21/quickref/>
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
## Changelog
|
|
642
|
+
|
|
643
|
+
- **2025-10-31**: Initial design standards documentation
|
|
644
|
+
- Defined color system (primary, secondary, neutral, semantic)
|
|
645
|
+
- Established typography scale and weights
|
|
646
|
+
- Documented spacing system
|
|
647
|
+
- Created component patterns (buttons, cards, forms, badges, alerts)
|
|
648
|
+
- Defined accessibility guidelines (contrast, focus, keyboard, screen reader)
|
|
649
|
+
- Established responsive design breakpoints
|
|
650
|
+
- Prepared for future dark mode support
|
|
651
|
+
|
|
652
|
+
---
|
|
653
|
+
|
|
654
|
+
**Last updated**: 2025-10-31
|
|
655
|
+
**Version**: 1.0.0
|
|
656
|
+
**Maintained by**: Design & Frontend team
|