aiox-core 5.0.3 → 5.0.4
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/.aiox-core/core/execution/predictive-pipeline.js +1283 -0
- package/.aiox-core/core/memory/decision-memory.js +564 -0
- package/.aiox-core/data/entity-registry.yaml +1068 -1028
- package/.aiox-core/data/registry-update-log.jsonl +2 -2
- package/.aiox-core/development/templates/service-template/README.md.hbs +158 -158
- package/.aiox-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -237
- package/.aiox-core/development/templates/service-template/client.ts.hbs +403 -403
- package/.aiox-core/development/templates/service-template/errors.ts.hbs +182 -182
- package/.aiox-core/development/templates/service-template/index.ts.hbs +120 -120
- package/.aiox-core/development/templates/service-template/package.json.hbs +87 -87
- package/.aiox-core/development/templates/service-template/types.ts.hbs +145 -145
- package/.aiox-core/development/templates/squad-template/LICENSE +21 -21
- package/.aiox-core/infrastructure/templates/aiox-sync.yaml.template +182 -182
- package/.aiox-core/infrastructure/templates/coderabbit.yaml.template +279 -279
- package/.aiox-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
- package/.aiox-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
- package/.aiox-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-aiox-base.tmpl +63 -63
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
- package/.aiox-core/install-manifest.yaml +63 -55
- package/.aiox-core/local-config.yaml.template +71 -71
- package/.aiox-core/monitor/hooks/lib/__init__.py +1 -1
- package/.aiox-core/monitor/hooks/lib/enrich.py +58 -58
- package/.aiox-core/monitor/hooks/lib/send_event.py +47 -47
- package/.aiox-core/monitor/hooks/notification.py +29 -29
- package/.aiox-core/monitor/hooks/post_tool_use.py +45 -45
- package/.aiox-core/monitor/hooks/pre_compact.py +29 -29
- package/.aiox-core/monitor/hooks/pre_tool_use.py +40 -40
- package/.aiox-core/monitor/hooks/stop.py +29 -29
- package/.aiox-core/monitor/hooks/subagent_stop.py +29 -29
- package/.aiox-core/monitor/hooks/user_prompt_submit.py +38 -38
- package/.aiox-core/product/templates/adr.hbs +125 -125
- package/.aiox-core/product/templates/dbdr.hbs +241 -241
- package/.aiox-core/product/templates/epic.hbs +212 -212
- package/.aiox-core/product/templates/pmdr.hbs +186 -186
- package/.aiox-core/product/templates/prd-v2.0.hbs +216 -216
- package/.aiox-core/product/templates/prd.hbs +201 -201
- package/.aiox-core/product/templates/story.hbs +263 -263
- package/.aiox-core/product/templates/task.hbs +170 -170
- package/.aiox-core/product/templates/tmpl-comment-on-examples.sql +158 -158
- package/.aiox-core/product/templates/tmpl-migration-script.sql +91 -91
- package/.aiox-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
- package/.aiox-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
- package/.aiox-core/product/templates/tmpl-rls-roles.sql +135 -135
- package/.aiox-core/product/templates/tmpl-rls-simple.sql +77 -77
- package/.aiox-core/product/templates/tmpl-rls-tenant.sql +152 -152
- package/.aiox-core/product/templates/tmpl-rollback-script.sql +77 -77
- package/.aiox-core/product/templates/tmpl-seed-data.sql +140 -140
- package/.aiox-core/product/templates/tmpl-smoke-test.sql +16 -16
- package/.aiox-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
- package/.aiox-core/product/templates/tmpl-stored-proc.sql +140 -140
- package/.aiox-core/product/templates/tmpl-trigger.sql +152 -152
- package/.aiox-core/product/templates/tmpl-view-materialized.sql +133 -133
- package/.aiox-core/product/templates/tmpl-view.sql +177 -177
- package/.aiox-core/scripts/pm.sh +0 -0
- package/.claude/hooks/enforce-architecture-first.py +196 -196
- package/.claude/hooks/mind-clone-governance.py +192 -192
- package/.claude/hooks/read-protection.py +151 -151
- package/.claude/hooks/slug-validation.py +176 -176
- package/.claude/hooks/sql-governance.py +182 -182
- package/.claude/hooks/write-path-validation.py +194 -194
- package/LICENSE +33 -33
- package/bin/aiox-graph.js +0 -0
- package/bin/aiox-minimal.js +0 -0
- package/bin/aiox.js +0 -0
- package/package.json +1 -1
- package/packages/aiox-install/bin/aiox-install.js +0 -0
- package/packages/aiox-install/bin/edmcp.js +0 -0
- package/packages/aiox-pro-cli/bin/aiox-pro.js +0 -0
- package/packages/installer/src/wizard/pro-setup.js +28 -0
- package/pro/README.md +66 -66
- package/pro/feature-registry.yaml +225 -223
- package/pro/license/license-api.js +701 -679
- package/pro/package.json +39 -39
- package/pro/pro-config.yaml +63 -63
- package/pro/squads/README.md +24 -24
- package/pro/squads/design/HEADLINE.md +3 -3
- package/pro/squads/design/README.md +109 -109
- package/pro/squads/design/agents/brad-frost.md +1097 -1097
- package/pro/squads/design/agents/dan-mall.md +857 -857
- package/pro/squads/design/agents/dave-malouf.md +2272 -2272
- package/pro/squads/design/agents/design-chief.md +114 -114
- package/pro/squads/design/agents/ds-foundations-lead.md +194 -194
- package/pro/squads/design/agents/ds-token-architect.md +361 -361
- package/pro/squads/design/agents/nano-banana-generator.md +162 -162
- package/pro/squads/design/agents/storybook-expert.md +809 -809
- package/pro/squads/design/checklists/atomic-refactor-checklist.md +299 -299
- package/pro/squads/design/checklists/component-adaptation-checklist.md +81 -81
- package/pro/squads/design/checklists/design-fidelity-checklist.md +283 -283
- package/pro/squads/design/checklists/design-handoff-checklist.md +55 -55
- package/pro/squads/design/checklists/design-team-health-checklist.md +454 -454
- package/pro/squads/design/checklists/designops-maturity-checklist.md +518 -518
- package/pro/squads/design/checklists/ds-a11y-release-gate-checklist.md +45 -45
- package/pro/squads/design/checklists/ds-accessibility-wcag-checklist.md +147 -147
- package/pro/squads/design/checklists/ds-component-quality-checklist.md +150 -150
- package/pro/squads/design/checklists/ds-critical-eye-review-checklist.md +147 -147
- package/pro/squads/design/checklists/ds-migration-readiness-checklist.md +99 -99
- package/pro/squads/design/checklists/ds-pattern-audit-checklist.md +164 -164
- package/pro/squads/design/checklists/reading-accessibility-checklist.md +275 -275
- package/pro/squads/design/checklists/token-mapping-checklist.md +107 -107
- package/pro/squads/design/config/coding-standards.md +286 -286
- package/pro/squads/design/config/source-tree.md +59 -59
- package/pro/squads/design/config/tech-stack.md +48 -48
- package/pro/squads/design/config.yaml +204 -204
- package/pro/squads/design/data/agentic-design-systems-guide.md +46 -46
- package/pro/squads/design/data/agentic-ds-principles.md +100 -100
- package/pro/squads/design/data/atomic-design-principles.md +108 -108
- package/pro/squads/design/data/atomic-refactor-rules.md +582 -582
- package/pro/squads/design/data/base-component-specs.md +972 -972
- package/pro/squads/design/data/brad-frost-analysis-extract-implicit.yaml +270 -270
- package/pro/squads/design/data/brad-frost-analysis-find-0.8.yaml +176 -176
- package/pro/squads/design/data/brad-frost-analysis-qa-report.yaml +168 -168
- package/pro/squads/design/data/brad-frost-dna.yaml +713 -713
- package/pro/squads/design/data/capability-tools.yaml +124 -124
- package/pro/squads/design/data/component-adaptation-changelog.md +318 -318
- package/pro/squads/design/data/consolidation-algorithms.md +168 -168
- package/pro/squads/design/data/critical-eye-scoring-rules.yaml +240 -240
- package/pro/squads/design/data/design-token-best-practices.md +107 -107
- package/pro/squads/design/data/design-tokens-spec.yaml +418 -418
- package/pro/squads/design/data/ds-reference-architectures.md +93 -93
- package/pro/squads/design/data/f2-qa-report.md +168 -168
- package/pro/squads/design/data/f3-derived-components-changelog.md +100 -100
- package/pro/squads/design/data/f3-qa-report.md +208 -208
- package/pro/squads/design/data/figma-base-components-raw.md +101 -101
- package/pro/squads/design/data/figma-tokens-raw.md +1548 -1548
- package/pro/squads/design/data/fluent2-design-principles.md +114 -114
- package/pro/squads/design/data/high-retention-reading-guide.md +349 -349
- package/pro/squads/design/data/integration-patterns.md +207 -207
- package/pro/squads/design/data/internal-quality-chain.yaml +48 -48
- package/pro/squads/design/data/motion-tokens-guide.md +202 -202
- package/pro/squads/design/data/roi-calculation-guide.md +142 -142
- package/pro/squads/design/data/token-mapping-reference.md +213 -213
- package/pro/squads/design/data/w3c-dtcg-spec-reference.md +149 -149
- package/pro/squads/design/data/wcag-compliance-guide.md +267 -267
- package/pro/squads/design/docs/AUDIT_REPORT.md +97 -97
- package/pro/squads/design/docs/DS-CURATION-PIPELINE-PROPOSAL.md +577 -577
- package/pro/squads/design/docs/UPGRADE_PLAN.md +618 -618
- package/pro/squads/design/docs/brad-frost-research-validation.md +372 -372
- package/pro/squads/design/docs/dave-malouf-research-validation.md +391 -391
- package/pro/squads/design/docs/tool-discovery-report.md +87 -87
- package/pro/squads/design/docs/tool-integration-plan.md +44 -44
- package/pro/squads/design/protocols/ai-first-governance.md +56 -56
- package/pro/squads/design/protocols/governance-execution-boundary.md +59 -59
- package/pro/squads/design/protocols/handoff.md +60 -60
- package/pro/squads/design/rules/.claude-rules.md +88 -88
- package/pro/squads/design/scripts/design-system/curate_colors.cjs +447 -447
- package/pro/squads/design/scripts/design-system/curate_components.cjs +217 -217
- package/pro/squads/design/scripts/design-system/curate_radius.cjs +190 -190
- package/pro/squads/design/scripts/design-system/curate_shadows.cjs +208 -208
- package/pro/squads/design/scripts/design-system/curate_spacing.cjs +243 -243
- package/pro/squads/design/scripts/design-system/curate_typography.cjs +404 -404
- package/pro/squads/design/scripts/design-system/design-system-metadata.test.js +49 -49
- package/pro/squads/design/scripts/design-system/design_manifest_lib.cjs +142 -142
- package/pro/squads/design/scripts/design-system/fetch_page_images.cjs +195 -195
- package/pro/squads/design/scripts/design-system/generate_components_metadata.cjs +114 -114
- package/pro/squads/design/scripts/design-system/generate_curation_report.cjs +258 -258
- package/pro/squads/design/scripts/design-system/generate_tokens.cjs +342 -342
- package/pro/squads/design/scripts/design-system/sync_design_manifest.cjs +27 -27
- package/pro/squads/design/scripts/design-system/test_mcp_tools.cjs +232 -232
- package/pro/squads/design/scripts/design-system/validate_components_metadata.cjs +96 -96
- package/pro/squads/design/scripts/design-system/validate_curation.cjs +226 -226
- package/pro/squads/design/scripts/design-system/validate_design_manifest_drift.cjs +72 -72
- package/pro/squads/design/scripts/design-system/validate_mcp_skeleton.cjs +38 -38
- package/pro/squads/design/scripts/design-system/validate_registry.cjs +186 -186
- package/pro/squads/design/scripts/design-system/validate_task_checklist_bindings.cjs +78 -78
- package/pro/squads/design/scripts/dissect-artifact.cjs +806 -806
- package/pro/squads/design/scripts/validate-a11y-integration.cjs +40 -40
- package/pro/squads/design/scripts/validate-design-squad.py +411 -411
- package/pro/squads/design/squad.yaml +714 -714
- package/pro/squads/design/tasks/a11y-audit.md +340 -340
- package/pro/squads/design/tasks/aria-audit.md +525 -525
- package/pro/squads/design/tasks/atomic-refactor-execute.md +391 -391
- package/pro/squads/design/tasks/atomic-refactor-plan.md +262 -262
- package/pro/squads/design/tasks/audit-reading-experience.md +350 -350
- package/pro/squads/design/tasks/audit-tailwind-config.md +101 -101
- package/pro/squads/design/tasks/bootstrap-shadcn-library.md +96 -96
- package/pro/squads/design/tasks/bundle-audit.md +245 -245
- package/pro/squads/design/tasks/contrast-matrix.md +373 -373
- package/pro/squads/design/tasks/create-doc.md +135 -135
- package/pro/squads/design/tasks/dead-code-detection.md +329 -329
- package/pro/squads/design/tasks/design-compare.md +414 -414
- package/pro/squads/design/tasks/design-process-optimization.md +407 -407
- package/pro/squads/design/tasks/design-review-orchestration.md +99 -99
- package/pro/squads/design/tasks/design-team-scaling.md +407 -407
- package/pro/squads/design/tasks/design-tooling-audit.md +404 -404
- package/pro/squads/design/tasks/design-triage.md +89 -89
- package/pro/squads/design/tasks/designops-maturity-assessment.md +364 -364
- package/pro/squads/design/tasks/designops-metrics-setup.md +465 -465
- package/pro/squads/design/tasks/ds-agentic-audit.md +100 -100
- package/pro/squads/design/tasks/ds-agentic-setup.md +103 -103
- package/pro/squads/design/tasks/ds-audit-codebase.md +273 -273
- package/pro/squads/design/tasks/ds-build-component.md +349 -349
- package/pro/squads/design/tasks/ds-build-mcp-server.md +84 -84
- package/pro/squads/design/tasks/ds-calculate-roi.md +282 -282
- package/pro/squads/design/tasks/ds-compose-molecule.md +106 -106
- package/pro/squads/design/tasks/ds-consolidate-patterns.md +253 -253
- package/pro/squads/design/tasks/ds-context-contract.md +194 -194
- package/pro/squads/design/tasks/ds-critical-eye-compare.md +130 -130
- package/pro/squads/design/tasks/ds-critical-eye-decide.md +139 -139
- package/pro/squads/design/tasks/ds-critical-eye-inventory.md +111 -111
- package/pro/squads/design/tasks/ds-critical-eye-report.md +101 -101
- package/pro/squads/design/tasks/ds-critical-eye-score.md +109 -109
- package/pro/squads/design/tasks/ds-designops.md +99 -99
- package/pro/squads/design/tasks/ds-extend-pattern.md +91 -91
- package/pro/squads/design/tasks/ds-extract-tokens.md +312 -312
- package/pro/squads/design/tasks/ds-figma-pipeline.md +95 -95
- package/pro/squads/design/tasks/ds-fluent-audit.md +105 -105
- package/pro/squads/design/tasks/ds-fluent-build.md +110 -110
- package/pro/squads/design/tasks/ds-generate-ai-metadata.md +81 -81
- package/pro/squads/design/tasks/ds-generate-cursor-rules.md +74 -74
- package/pro/squads/design/tasks/ds-generate-documentation.md +101 -101
- package/pro/squads/design/tasks/ds-generate-migration-strategy.md +331 -331
- package/pro/squads/design/tasks/ds-generate-shock-report.md +323 -323
- package/pro/squads/design/tasks/ds-govern-a11y-compliance.md +93 -93
- package/pro/squads/design/tasks/ds-governance.md +187 -187
- package/pro/squads/design/tasks/ds-health-metrics.md +278 -278
- package/pro/squads/design/tasks/ds-integrate-squad.md +130 -130
- package/pro/squads/design/tasks/ds-integrate-workspace.md +100 -100
- package/pro/squads/design/tasks/ds-legacy-modernization.md +302 -302
- package/pro/squads/design/tasks/ds-mcp-status.md +65 -65
- package/pro/squads/design/tasks/ds-motion-audit.md +118 -118
- package/pro/squads/design/tasks/ds-multi-framework.md +96 -96
- package/pro/squads/design/tasks/ds-parallelization-gate.md +246 -246
- package/pro/squads/design/tasks/ds-query.md +90 -90
- package/pro/squads/design/tasks/ds-rebuild-artifact.md +369 -369
- package/pro/squads/design/tasks/ds-reverse-engineer.md +194 -194
- package/pro/squads/design/tasks/ds-scan-artifact.md +131 -131
- package/pro/squads/design/tasks/ds-setup-design-system.md +297 -297
- package/pro/squads/design/tasks/ds-sync-registry.md +287 -287
- package/pro/squads/design/tasks/ds-theme-multi-brand.md +90 -90
- package/pro/squads/design/tasks/ds-token-modes.md +108 -108
- package/pro/squads/design/tasks/ds-token-w3c-extract.md +105 -105
- package/pro/squads/design/tasks/ds-validate-ai-readiness.md +69 -69
- package/pro/squads/design/tasks/ds-visual-regression.md +130 -130
- package/pro/squads/design/tasks/execute-checklist.md +141 -141
- package/pro/squads/design/tasks/export-design-tokens-dtcg.md +97 -97
- package/pro/squads/design/tasks/f1-apply-foundations.md +154 -154
- package/pro/squads/design/tasks/f1-ingest-figma-tokens.md +130 -130
- package/pro/squads/design/tasks/f1-map-tokens-to-shadcn.md +145 -145
- package/pro/squads/design/tasks/f1-qa-foundations.md +95 -95
- package/pro/squads/design/tasks/f2-adapt-shadcn-components.md +155 -155
- package/pro/squads/design/tasks/f2-ingest-base-components.md +148 -148
- package/pro/squads/design/tasks/f2-qa-base-components.md +98 -98
- package/pro/squads/design/tasks/f3-derive-components.md +145 -145
- package/pro/squads/design/tasks/f3-qa-derived-components.md +101 -101
- package/pro/squads/design/tasks/focus-order-audit.md +450 -450
- package/pro/squads/design/tasks/sb-brownfield-migrate.md +367 -367
- package/pro/squads/design/tasks/sb-brownfield-scan.md +318 -318
- package/pro/squads/design/tasks/sb-configure.md +230 -230
- package/pro/squads/design/tasks/sb-expand-shadcn.md +213 -213
- package/pro/squads/design/tasks/sb-generate-all-stories.md +288 -288
- package/pro/squads/design/tasks/sb-install.md +152 -152
- package/pro/squads/design/tasks/sb-sync-workspace.md +239 -239
- package/pro/squads/design/tasks/sb-verify.md +203 -203
- package/pro/squads/design/tasks/tailwind-upgrade.md +117 -117
- package/pro/squads/design/tasks/token-usage-analytics.md +262 -262
- package/pro/squads/design/tasks/ux-rewrite-sixth-grade.md +82 -82
- package/pro/squads/design/tasks/validate-design-fidelity.md +222 -222
- package/pro/squads/design/templates/agent-template.yaml +46 -46
- package/pro/squads/design/templates/clone-mind-template.md +352 -352
- package/pro/squads/design/templates/component-prompt-injection-tmpl.md +236 -236
- package/pro/squads/design/templates/component-visual-spec-tmpl.md +378 -378
- package/pro/squads/design/templates/critical-eye-cycle-report-tmpl.md +165 -165
- package/pro/squads/design/templates/design-fidelity-report-tmpl.md +155 -155
- package/pro/squads/design/templates/ds-ai-component-metadata-schema-tmpl.json +138 -138
- package/pro/squads/design/templates/ds-artifact-analysis.md +70 -70
- package/pro/squads/design/templates/ds-health-report-tmpl.md +236 -236
- package/pro/squads/design/templates/ds-migration-strategy-tmpl.md +524 -524
- package/pro/squads/design/templates/ds-state-persistence-tmpl.yaml +194 -194
- package/pro/squads/design/templates/ds-tokens-schema-tmpl.yaml +139 -139
- package/pro/squads/design/templates/migration-strategy-tmpl.md +524 -524
- package/pro/squads/design/templates/reading-design-tokens.css +26 -26
- package/pro/squads/design/templates/state-persistence-tmpl.yaml +219 -219
- package/pro/squads/design/templates/tokens-schema-tmpl.yaml +305 -305
- package/pro/squads/design/workflows/agentic-readiness.yaml +83 -83
- package/pro/squads/design/workflows/audit-only.yaml +198 -198
- package/pro/squads/design/workflows/brownfield-complete.yaml +257 -257
- package/pro/squads/design/workflows/critical-eye.yaml +184 -184
- package/pro/squads/design/workflows/dtcg-tokens-governance.yaml +64 -64
- package/pro/squads/design/workflows/foundations-pipeline.yaml +192 -192
- package/pro/squads/design/workflows/greenfield-new.yaml +192 -192
- package/pro/squads/design/workflows/motion-quality.yaml +65 -65
- package/pro/squads/design/workflows/self-healing-workflow.yaml +237 -237
- package/pro/squads/design/workflows/storybook-brownfield-migration.yaml +400 -400
- package/pro/squads/design/workflows/storybook-full-setup.yaml +280 -280
- package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/ARQUITETURA_COGNITIVA_DE_ALEX_HORMOZI_EXTRA/303/207/303/203O_COMPLETA.md +215 -0
- package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/A_Rotina_de_Alta_Performance_de_Alex_Hormozi_Arquitetura,_Motiva/303/247/303/265es_e_Replica/303/247/303/243o.md +309 -0
- package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/O_sistema_completo_de_cria/303/247/303/243o_de_conte/303/272do_de_Alex_Hormozi.md +416 -0
- package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/Processo_Cria/303/247/303/243o_Conte/303/272do_Hormozi.md +0 -0
- package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/DECIS/303/225ES_ESTRAT/303/211GICAS_DE_DESIGN_SYSTEMS_(2022_2025).md +1038 -0
- package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/FRAMEWORK_COMPLETO_DE_IMPLEMENTA/303/207/303/203O_ATOMIC_DESIGN.md +797 -0
- package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/O_Cemit/303/251rio_de_Design_Systems.md +447 -0
- package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/PRINC/303/215PIOS_DE_RACIOC/303/215NIO.md +190 -0
- package/pro/squads/mmos-squad/minds/brad_frost/artifacts/DECIS/303/225ES_ESTRAT/303/211GICAS_DE_DESIGN_SYSTEMS_(2022_2025).md +1038 -0
- package/pro/squads/mmos-squad/minds/brad_frost/artifacts/FRAMEWORK_COMPLETO_DE_IMPLEMENTA/303/207/303/203O_ATOMIC_DESIGN.md +797 -0
- package/pro/squads/mmos-squad/minds/brad_frost/artifacts/O_Cemit/303/251rio_de_Design_Systems.md +447 -0
- package/pro/squads/mmos-squad/minds/brad_frost/artifacts/PRINC/303/215PIOS_DE_RACIOC/303/215NIO.md +190 -0
- package/pro/squads/mmos-squad/minds/elon_musk/artifacts/AN/303/201LISE_PSICOM/303/211TRICA_PROFUNDA_ELON_MUSK.md +291 -0
- package/pro/squads/mmos-squad/minds/elon_musk/artifacts/ASSINATURA_LINGU/303/215STICA_ELON_MUSK.md +485 -0
- package/pro/squads/mmos-squad/minds/elon_musk/artifacts/A_Arquitetura_Mental_de_Elon_Musk_Uma_An/303/241lise_Sistem/303/241tica_dos_Frameworks_de_Pensamento.md +907 -0
- package/pro/squads/mmos-squad/minds/elon_musk/artifacts/Dossi/303/252_Estrat/303/251gico_A_Arquitetura_Psicol/303/263gica_de_Elon_Musk.md +252 -0
- package/pro/squads/mmos-squad/minds/elon_musk/artifacts/Os_Padr/303/265es_de_Leitura_de_Elon_Musk_e_Sua_Influ/303/252ncia_Sistem/303/241tica.md +287 -0
- package/pro/squads/mmos-squad/minds/elon_musk/artifacts/Uma_an/303/241lise_psicol/303/263gica_abrangente.md +187 -0
- package/pro/squads/mmos-squad/minds/eugene_schwartz/artifacts/AN/303/201LISE_PSICOM/303/211TRICA_PROFUNDA_EUGENE_M._SCHWARTZ.md +790 -0
- package/pro/squads/mmos-squad/minds/eugene_schwartz/artifacts/An/303/241lise_Completa_Eugene_Schwartz_Arquitetura_Cognitiva_DEEP.md +210 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/5H_EXTRA/303/207/303/203O_COGNITIVA_COMPLETA_PEDRO_VAL/303/211RIO_LOPEZ.md +226 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_COMPARATIVA_REVISADA_PEDRO_VAL/303/211RIO_LOPEZ.md +246 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_LINGU/303/215STICA_CARIOCA_PEDRO_VAL/303/211RIO_LOPEZ.md +274 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_PSICOM/303/211TRICA_DEFINITIVA_PEDRO_VAL/303/211RIO_LOPEZ.md +821 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_PSICOM/303/211TRICA_PROFUNDA_PEDRO_VAL/303/211RIO.md +1844 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/C/303/201LCULO_DE_RARIDADE_ESTAT/303/215STICA_PEDRO_VAL/303/211RIO_LOPEZ.md +154 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/EXTRA/303/207/303/203O_PEDRO_VAL/303/211RIO.md +237 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/MAPEAMENTO_LINGU/303/215STICO_PROFUNDO.md +161 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/META_AXIOMAS_DE_PEDRO_VAL/303/211RIO.md +256 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/SISTEMA_IMUNOL/303/223GICO_COGNITIVO_PEDRO_VAL/303/211RIO_LOPEZ.md +586 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/SISTEMA_IMUNOL/303/223GICO_COGNITIVO_V2_/342/200/224_CLONE_IA.md +452 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/TABELA_COMPARATIVA_AN/303/201LISE_COMPLETA_DOS_CLONES_IA.md +102 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/WHATSAPP_PADR/303/225ES_LINGU/303/215STICOS_PEDRO_VAL/303/211RIO_LOPEZ.md +286 -0
- package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/heur/303/255sticas_de_decis/303/243o_e_algoritmos_mentais_/303/272nicos.md +268 -0
- package/pro/squads/mmos-squad/minds/ray_kurzweil/sources/books/PROTOCOLO_COMPLETO_DE_INTERROGA/303/207/303/203O_-_NAVAL_RAVIKANT.md +3624 -0
- package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/FRAMEWORK_COMPLETO_DE_IMPLEMENTA/303/207/303/203O_JOBS.md +488 -0
- package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/Framework_Cabe/303/247a_Steve.md +257 -0
- package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/Relat/303/263rio_Abrangente_sobre_Steve_Jobs_para_Cria/303/247/303/243o_de_Clone_de_IA.md +370 -0
- package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/Steve_Jobs_An/303/241lise_Psicol/303/263gica_Profunda_e_Valida/303/247/303/243o_Comportamental.md +65 -0
- package/pro/squads/squad-creator-pro/HEADLINE.md +3 -3
- package/pro/squads/squad-creator-pro/agents/oalanicolas.md +438 -438
- package/pro/squads/squad-creator-pro/agents/squad-chief.md +1651 -1651
- package/pro/squads/squad-creator-pro/agents/thiago_finch.md +976 -976
- package/pro/squads/squad-creator-pro/assessments/axioma-assessment-wf-create-squad.yaml +325 -325
- package/pro/squads/squad-creator-pro/checklists/create-agent-checklist.md +184 -184
- package/pro/squads/squad-creator-pro/checklists/create-squad-checklist.md +219 -219
- package/pro/squads/squad-creator-pro/checklists/create-workflow-checklist.md +224 -224
- package/pro/squads/squad-creator-pro/checklists/mental-model-integration-checklist.md +95 -95
- package/pro/squads/squad-creator-pro/checklists/squad-overview-checklist.md +393 -393
- package/pro/squads/squad-creator-pro/config/model-routing.yaml +693 -693
- package/pro/squads/squad-creator-pro/config/scoring-rubric.yaml +199 -199
- package/pro/squads/squad-creator-pro/config.yaml +35 -35
- package/pro/squads/squad-creator-pro/data/internal-infrastructure-library.yaml +99 -99
- package/pro/squads/squad-creator-pro/data/mental-model-task-matrix.yaml +692 -692
- package/pro/squads/squad-creator-pro/docs/ADR-001-model-tier-qualification.md +344 -344
- package/pro/squads/squad-creator-pro/docs/AGENT-COLLABORATION.md +609 -609
- package/pro/squads/squad-creator-pro/docs/MIGRATION-PLAN-AGENT-CONFORMITY.md +861 -861
- package/pro/squads/squad-creator-pro/docs/MODEL-TIER-QUALIFICATION.md +337 -337
- package/pro/squads/squad-creator-pro/docs/optimize-v4-proposal.md +354 -354
- package/pro/squads/squad-creator-pro/docs/task-optimization-framework.md +229 -229
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_010.md +240 -240
- package/pro/squads/squad-creator-pro/protocols/ai-first-governance.md +63 -63
- package/pro/squads/squad-creator-pro/scripts/assess-sources.sh +443 -443
- package/pro/squads/squad-creator-pro/scripts/clone-review.sh +394 -394
- package/pro/squads/squad-creator-pro/scripts/create-agent-preflight.py +243 -243
- package/pro/squads/squad-creator-pro/scripts/cross-provider/compare-results.js +281 -281
- package/pro/squads/squad-creator-pro/scripts/cross-provider/cross-provider-runner.js +462 -462
- package/pro/squads/squad-creator-pro/scripts/fidelity-score.sh +519 -519
- package/pro/squads/squad-creator-pro/scripts/generate-squad-guide.js +558 -558
- package/pro/squads/squad-creator-pro/scripts/lib/config-loader.js +151 -151
- package/pro/squads/squad-creator-pro/scripts/model-tier-validator.cjs +369 -369
- package/pro/squads/squad-creator-pro/scripts/model-usage-logger.cjs +245 -245
- package/pro/squads/squad-creator-pro/scripts/modernization-score.sh +308 -308
- package/pro/squads/squad-creator-pro/scripts/scaffold-squad.cjs +281 -281
- package/pro/squads/squad-creator-pro/scripts/security_scanner.py +378 -378
- package/pro/squads/squad-creator-pro/scripts/squad-context-loader.cjs +205 -205
- package/pro/squads/squad-creator-pro/scripts/squad-state-manager.cjs +451 -451
- package/pro/squads/squad-creator-pro/scripts/squad-workflow-runner.cjs +471 -471
- package/pro/squads/squad-creator-pro/scripts/squad_utils.py +261 -261
- package/pro/squads/squad-creator-pro/scripts/tests/run_bash_tests.sh +29 -29
- package/pro/squads/squad-creator-pro/scripts/tests/test_assess_sources.sh +216 -216
- package/pro/squads/squad-creator-pro/scripts/tests/test_clone_review.sh +239 -239
- package/pro/squads/squad-creator-pro/scripts/tests/test_coherence_validator.py +212 -212
- package/pro/squads/squad-creator-pro/scripts/tests/test_fidelity_score.sh +298 -298
- package/pro/squads/squad-creator-pro/scripts/tests/test_modernization_score.sh +211 -211
- package/pro/squads/squad-creator-pro/scripts/tests/test_security_scanner.py +354 -354
- package/pro/squads/squad-creator-pro/scripts/tests/test_validate_clone.sh +252 -252
- package/pro/squads/squad-creator-pro/squad.yaml +36 -36
- package/pro/squads/squad-creator-pro/tasks/an-compare-outputs.md +354 -354
- package/pro/squads/squad-creator-pro/tasks/create-squad.md +933 -933
- package/pro/squads/squad-creator-pro/tasks/detect-squad-context.md +81 -81
- package/pro/squads/squad-creator-pro/tasks/lookup-model.md +78 -78
- package/pro/squads/squad-creator-pro/tasks/next-squad.md +487 -487
- package/pro/squads/squad-creator-pro/tasks/optimize-workflow.md +851 -851
- package/pro/squads/squad-creator-pro/tasks/parallel-discovery.md +58 -58
- package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment-wf-clone-mind.yaml +256 -256
- package/pro/squads/squad-creator-pro/tasks/qualify-task.md +265 -265
- package/pro/squads/squad-creator-pro/tasks/reexecute-squad-phase.md +64 -64
- package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing.md +167 -167
- package/pro/squads/squad-creator-pro/tasks/squad-overview.md +683 -683
- package/pro/squads/squad-creator-pro/tasks/validate-final-artifacts.md +80 -80
- package/pro/squads/squad-creator-pro/templates/orchestrator-tmpl.md +74 -74
- package/pro/squads/squad-creator-pro/test-cases/BATCH-PROGRESS.md +268 -268
- package/pro/squads/squad-creator-pro/test-cases/QUALIFICATION-DASHBOARD.yaml +13 -13
- package/pro/squads/squad-creator-pro/test-cases/_template.yaml +147 -147
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT-SUMMARY.md +275 -275
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT_SUMMARY.md +140 -140
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/CHECKPOINT_MATRIX.md +202 -202
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION-REPORT.md +413 -413
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION_NOTES.md +358 -358
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README-v2.2.2.md +299 -299
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README.md +320 -320
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/TEST-REPORT-v2.1.md +351 -351
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/VERIFICATION-CHECKLIST.txt +247 -247
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/formal-qualification-report.yaml +389 -389
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-output.yaml +366 -366
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.1-output.yaml +452 -452
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.1-output.yaml +281 -281
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.2-output.yaml +332 -332
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/opus-baseline.yaml +517 -517
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/qualification-report.yaml +213 -213
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/test-case.yaml +69 -69
- package/pro/squads/squad-creator-pro/test-cases/an-clone-review/haiku-round-1.yaml +213 -213
- package/pro/squads/squad-creator-pro/test-cases/an-clone-review/opus-baseline.yaml +566 -566
- package/pro/squads/squad-creator-pro/test-cases/an-clone-review/qualification-report.yaml +82 -82
- package/pro/squads/squad-creator-pro/test-cases/an-design-clone/test-case.yaml +102 -102
- package/pro/squads/squad-creator-pro/test-cases/an-extract-dna/test-case.yaml +105 -105
- package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/haiku-round-1.yaml +262 -262
- package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/opus-baseline.yaml +266 -266
- package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/qualification-report.yaml +94 -94
- package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/haiku-round-1.yaml +282 -282
- package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/opus-baseline.yaml +470 -470
- package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/qualification-report.yaml +106 -106
- package/pro/squads/squad-creator-pro/test-cases/collect-sources/test-case.yaml +105 -105
- package/pro/squads/squad-creator-pro/test-cases/create-task/test-case.yaml +104 -104
- package/pro/squads/squad-creator-pro/test-cases/cross-provider/DASHBOARD.yaml +11 -11
- package/pro/squads/squad-creator-pro/test-cases/pv-audit/test-case.yaml +106 -106
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/haiku-output.yaml +209 -209
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/opus-baseline.yaml +96 -96
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/sonnet-output.yaml +30 -30
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/test-case.yaml +129 -129
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/comparison-round-1.yaml +242 -242
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/haiku-round-1.yaml +393 -393
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/opus-baseline.yaml +488 -488
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/qualification-report.yaml +74 -74
- package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/haiku-round-1.yaml +292 -292
- package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/opus-baseline.yaml +603 -603
- package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/qualification-report.yaml +97 -97
- package/pro/squads/squad-creator-pro/test-cases/smoke-test-model-routing/test-case.yaml +100 -100
- package/pro/squads/squad-creator-pro/test-cases/upgrade-squad/test-case.yaml +106 -106
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/comparison-round-1.yaml +223 -223
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1-MINE.yaml +36 -36
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1.yaml +193 -193
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-2.yaml +303 -303
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-3-v4-task.yaml +149 -149
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-baseline.yaml +529 -529
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-round-3-v4-task.yaml +132 -132
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/qualification-report.yaml +104 -104
- package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output-v2-calibrated.yaml +200 -200
- package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output.yaml +183 -183
- package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/opus-baseline.yaml +112 -112
- package/pro/squads/squad-creator-pro/workflows/create-squad.yaml +348 -348
- package/pro/squads/squad-creator-pro/workflows/modules/module-discovery.yaml +16 -16
- package/pro/squads/squad-creator-pro/workflows/modules/module-integration.yaml +16 -16
- package/pro/squads/squad-creator-pro/workflows/modules/module-quality-gates.yaml +15 -15
- package/pro/squads/squad-creator-pro/workflows/wf-brownfield-upgrade-squad.yaml +46 -46
- package/pro/squads/squad-creator-pro/workflows/wf-context-aware-create-squad.yaml +47 -47
- package/pro/squads/squad-creator-pro/workflows/wf-create-squad.yaml +1619 -1619
- package/pro/squads/squad-creator-pro/workflows/wf-cross-provider-qualification.yaml +711 -711
- package/pro/squads/squad-creator-pro/workflows/wf-model-tier-qualification.yaml +800 -800
- package/pro/squads/squad-creator-pro/workflows/wf-optimize-squad.yaml +684 -684
- package/scripts/check-markdown-links.py +352 -352
- package/scripts/dashboard-parallel-dev.sh +0 -0
- package/scripts/dashboard-parallel-phase3.sh +0 -0
- package/scripts/dashboard-parallel-phase4.sh +0 -0
- package/scripts/install-monitor-hooks.sh +0 -0
- package/.claude/hooks/code-intel-pretool.cjs +0 -107
- package/docs/guides/aios-workflows/README.md +0 -247
- package/docs/guides/aios-workflows/bob-orchestrator-workflow.md +0 -1536
- package/scripts/glue/README.md +0 -355
- package/scripts/glue/compose-agent-prompt.cjs +0 -362
|
@@ -1,972 +1,972 @@
|
|
|
1
|
-
# Base Component Specs
|
|
2
|
-
|
|
3
|
-
> Especificacoes visuais dos componentes base extraidas do Figma Dev Mode + screenshots.
|
|
4
|
-
> Gerado pela task `f2-ingest-base-components`. Usado na Phase 2 para adaptar componentes shadcn.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Design Patterns Globais
|
|
9
|
-
|
|
10
|
-
### Temas e Contexto
|
|
11
|
-
|
|
12
|
-
| Propriedade | Valor |
|
|
13
|
-
|---|---|
|
|
14
|
-
| **Tema primario** | Dark-first (componentes desenhados sobre `surface/950` #101010) |
|
|
15
|
-
| **Paleta** | Monocromatica — branco/preto para primary, sem brand colors em estados default |
|
|
16
|
-
| **Feedback colors** | Khewra=destructive, Midori=success, Sahara=warning, Atmos=info |
|
|
17
|
-
|
|
18
|
-
### Size Scale (consistente em todos os componentes)
|
|
19
|
-
|
|
20
|
-
| Size | Height | Icon Size | Font Size | Figma Token |
|
|
21
|
-
|---|---|---|---|---|
|
|
22
|
-
| **Tiny** | 24px | 16px | 12px | `spacing/24`, `font/size/4xs` |
|
|
23
|
-
| **Mini** | 32px (btn 24px) | 20px | 12px | `spacing/32`, `font/size/4xs` |
|
|
24
|
-
| **Small** | 32px (btn) / 48px (input) | 24px | 14px | `spacing/32`/`spacing/48`, `font/size/2xs` |
|
|
25
|
-
| **Medium** | 40px (btn) / 64px (input) | 32px | 16px | `spacing/40`/`spacing/64`, `font/size/3xs` |
|
|
26
|
-
| **Large** | 48px (btn) / 80px (input) | 32px | 16px | `spacing/48`/`spacing/80`, `font/size/3xs` |
|
|
27
|
-
|
|
28
|
-
### State Pattern (consistente em todos os componentes)
|
|
29
|
-
|
|
30
|
-
| State | Visual Change |
|
|
31
|
-
|---|---|
|
|
32
|
-
| **Default** | Base appearance |
|
|
33
|
-
| **Hover** | Background alpha increases (e.g. 10% → 20%), cursor pointer |
|
|
34
|
-
| **Focus** | White outline ring, `border: 2px solid white`, `inset: -4px`, `border-radius: radius/max` (buttons) or `radius/md` (inputs) |
|
|
35
|
-
| **Pressed** | Background alpha decreases slightly or darkens |
|
|
36
|
-
| **Filled** | (Inputs only) White text, clear icon appears |
|
|
37
|
-
| **Disabled** | `opacity: 0.2` (buttons) or `opacity: 0.5` (inputs), `pointer-events: none` |
|
|
38
|
-
|
|
39
|
-
### Focus Ring Pattern
|
|
40
|
-
|
|
41
|
-
```css
|
|
42
|
-
/* Buttons (pill shape) */
|
|
43
|
-
position: absolute;
|
|
44
|
-
border: 2px solid var(--color/surface/white, white);
|
|
45
|
-
inset: -4px;
|
|
46
|
-
border-radius: var(--radius/max, 9999px);
|
|
47
|
-
|
|
48
|
-
/* Inputs (rounded rect) */
|
|
49
|
-
position: absolute;
|
|
50
|
-
border: 2px solid var(--color/surface/white, white);
|
|
51
|
-
inset: -4px;
|
|
52
|
-
border-radius: var(--radius/md, 16px);
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 1. Button
|
|
58
|
-
|
|
59
|
-
> **Prioridade: 1** — Componente mais usado, define padrao visual.
|
|
60
|
-
> **shadcn mapping:** `Button`
|
|
61
|
-
|
|
62
|
-
### Variants
|
|
63
|
-
|
|
64
|
-
| Variant | Figma Name | Background | Text Color | Border | Font |
|
|
65
|
-
|---|---|---|---|---|---|
|
|
66
|
-
| **Primary** | `type=primary` | `rgba(255,255,255,0.9)` | `var(--color/surface/950, #101010)` | none | Outfit Medium, uppercase, tracking 0.5px |
|
|
67
|
-
| **Secondary** | `type=secondary` | transparent | `rgba(255,255,255,0.9)` | `2px solid rgba(255,255,255,0.3)` | Outfit Medium, uppercase, tracking 0.5px |
|
|
68
|
-
| **Tertiary** | `type=tertiary` | `rgba(255,255,255,0.1)` | `rgba(255,255,255,0.8)` | none | Inter Medium, normal case |
|
|
69
|
-
| **Quarter** (Ghost) | `type=quarter` | transparent | `rgba(255,255,255,0.8)` | none | Inter Medium, normal case |
|
|
70
|
-
|
|
71
|
-
### Sizes
|
|
72
|
-
|
|
73
|
-
| Size | Height | Padding | Font Size | Icon Size | Line Height |
|
|
74
|
-
|---|---|---|---|---|---|
|
|
75
|
-
| **Mini** | 24px | `px-[12px]` | 12px (`font/size/4xs`) | 20px | 16px |
|
|
76
|
-
| **Small** | 32px | `px-[12px]` | 14px (`font/size/2xs`) | 24px | 16px |
|
|
77
|
-
| **Medium** | 40px | `px-[12px]` | 16px (`font/size/3xs`) | 32px | 16px |
|
|
78
|
-
| **Large** | 48px | `px-[12px]` | 16px (`font/size/3xs`) | 32px | 16px |
|
|
79
|
-
|
|
80
|
-
### States (Primary variant)
|
|
81
|
-
|
|
82
|
-
```yaml
|
|
83
|
-
default:
|
|
84
|
-
background: "rgba(255,255,255,0.9)"
|
|
85
|
-
color: "var(--color/surface/950, #101010)"
|
|
86
|
-
border-radius: "100px" # pill shape (radius/max)
|
|
87
|
-
padding: "0 12px"
|
|
88
|
-
font-family: "Outfit"
|
|
89
|
-
font-weight: 500
|
|
90
|
-
text-transform: "uppercase"
|
|
91
|
-
letter-spacing: "0.5px"
|
|
92
|
-
|
|
93
|
-
hover:
|
|
94
|
-
background: "var(--color/surface/white, #FFFFFF)" # full white
|
|
95
|
-
cursor: "pointer"
|
|
96
|
-
|
|
97
|
-
focus:
|
|
98
|
-
background: "rgba(255,255,255,0.9)"
|
|
99
|
-
ring: "2px solid var(--color/surface/white, white)"
|
|
100
|
-
ring-offset: "-4px"
|
|
101
|
-
ring-radius: "var(--radius/max, 9999px)"
|
|
102
|
-
|
|
103
|
-
pressed:
|
|
104
|
-
background: "rgba(255,255,255,0.7)" # slightly dimmer
|
|
105
|
-
|
|
106
|
-
disabled:
|
|
107
|
-
background: "rgba(255,255,255,0.9)"
|
|
108
|
-
opacity: 0.2
|
|
109
|
-
pointer-events: "none"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### States (Secondary variant)
|
|
113
|
-
|
|
114
|
-
```yaml
|
|
115
|
-
default:
|
|
116
|
-
background: "transparent"
|
|
117
|
-
color: "rgba(255,255,255,0.9)"
|
|
118
|
-
border: "2px solid rgba(255,255,255,0.3)"
|
|
119
|
-
border-radius: "100px"
|
|
120
|
-
|
|
121
|
-
hover:
|
|
122
|
-
border-color: "rgba(255,255,255,0.5)"
|
|
123
|
-
cursor: "pointer"
|
|
124
|
-
|
|
125
|
-
focus:
|
|
126
|
-
ring: "2px solid var(--color/surface/white, white)"
|
|
127
|
-
ring-offset: "-4px"
|
|
128
|
-
|
|
129
|
-
disabled:
|
|
130
|
-
opacity: 0.2
|
|
131
|
-
pointer-events: "none"
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### States (Tertiary variant)
|
|
135
|
-
|
|
136
|
-
```yaml
|
|
137
|
-
default:
|
|
138
|
-
background: "rgba(255,255,255,0.1)"
|
|
139
|
-
color: "rgba(255,255,255,0.8)"
|
|
140
|
-
border-radius: "100px"
|
|
141
|
-
font-family: "Inter"
|
|
142
|
-
text-transform: "none"
|
|
143
|
-
|
|
144
|
-
hover:
|
|
145
|
-
background: "rgba(255,255,255,0.2)"
|
|
146
|
-
cursor: "pointer"
|
|
147
|
-
|
|
148
|
-
focus:
|
|
149
|
-
ring: "2px solid white"
|
|
150
|
-
ring-offset: "-4px"
|
|
151
|
-
|
|
152
|
-
disabled:
|
|
153
|
-
opacity: 0.2
|
|
154
|
-
pointer-events: "none"
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### States (Quarter/Ghost variant)
|
|
158
|
-
|
|
159
|
-
```yaml
|
|
160
|
-
default:
|
|
161
|
-
background: "transparent"
|
|
162
|
-
color: "rgba(255,255,255,0.8)"
|
|
163
|
-
border-radius: "100px"
|
|
164
|
-
font-family: "Inter"
|
|
165
|
-
text-transform: "none"
|
|
166
|
-
|
|
167
|
-
hover:
|
|
168
|
-
background: "rgba(255,255,255,0.1)"
|
|
169
|
-
cursor: "pointer"
|
|
170
|
-
|
|
171
|
-
focus:
|
|
172
|
-
ring: "2px solid white"
|
|
173
|
-
ring-offset: "-4px"
|
|
174
|
-
|
|
175
|
-
disabled:
|
|
176
|
-
opacity: 0.2
|
|
177
|
-
pointer-events: "none"
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Token Mapping
|
|
181
|
-
|
|
182
|
-
| Figma Value | CSS Variable | Notes |
|
|
183
|
-
|---|---|---|
|
|
184
|
-
| `rgba(255,255,255,0.9)` | `--primary` (dark mode) | Primary button bg |
|
|
185
|
-
| `var(--color/surface/950)` | `--primary-foreground` (dark mode) | Primary button text |
|
|
186
|
-
| `rgba(255,255,255,0.3)` border | `--border` | Secondary button outline |
|
|
187
|
-
| `rgba(255,255,255,0.1)` | `--accent` / `--secondary` | Tertiary button bg |
|
|
188
|
-
| `rgba(255,255,255,0.8)` | `--foreground` at 80% | Tertiary/Quarter text |
|
|
189
|
-
| `100px` radius | `--radius` with `rounded-full` | Pill shape |
|
|
190
|
-
| `opacity: 0.2` | — | Disabled state |
|
|
191
|
-
| Focus ring | `--ring` / white border | 2px white outline, -4px offset |
|
|
192
|
-
|
|
193
|
-
### Layout
|
|
194
|
-
|
|
195
|
-
- Icons: left (arrow_back) and/or right (arrow_forward), both optional
|
|
196
|
-
- Text container: `px-[8px]` inner padding
|
|
197
|
-
- Icon + text in flex row, items-center
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
## 2. Text Input
|
|
202
|
-
|
|
203
|
-
> **Prioridade: 2** — Define padrao de formularios.
|
|
204
|
-
> **shadcn mapping:** `Input`
|
|
205
|
-
|
|
206
|
-
### Sizes
|
|
207
|
-
|
|
208
|
-
| Size | Height | Width | Padding | Font Size | Icon Size | Border Radius |
|
|
209
|
-
|---|---|---|---|---|---|---|
|
|
210
|
-
| **Tiny** | 32px | 260px | `pl-[12px] pr-[16px]` | 12px | 16px | `var(--radius/sm, 12px)` |
|
|
211
|
-
| **Mini** | 40px | 260px | `pl-[14px] pr-[18px]` | 14px | 20px | `var(--radius/sm, 12px)` |
|
|
212
|
-
| **Small** | 48px | 320px | `pl-[16px] pr-[20px]` | 16px | 24px | `var(--radius/sm, 12px)` |
|
|
213
|
-
| **Medium** | 64px | 320px | `pl-[20px] pr-[24px]` | 16px | 24px | `var(--radius/sm, 12px)` |
|
|
214
|
-
| **Large** | 80px | 320px | `pl-[24px] pr-[28px]` | 16px | 24px | `var(--radius/sm, 12px)` |
|
|
215
|
-
|
|
216
|
-
### States
|
|
217
|
-
|
|
218
|
-
```yaml
|
|
219
|
-
default:
|
|
220
|
-
background: "rgba(255,255,255,0.1)"
|
|
221
|
-
color: "rgba(255,255,255,0.5)" # placeholder
|
|
222
|
-
border: "none"
|
|
223
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
224
|
-
font-family: "Inter"
|
|
225
|
-
font-weight: 500
|
|
226
|
-
overflow: "clip"
|
|
227
|
-
|
|
228
|
-
hover:
|
|
229
|
-
background: "rgba(255,255,255,0.2)"
|
|
230
|
-
cursor: "pointer"
|
|
231
|
-
|
|
232
|
-
focus:
|
|
233
|
-
background: "rgba(255,255,255,0.1)"
|
|
234
|
-
ring: "2px solid var(--color/surface/white, white)"
|
|
235
|
-
ring-offset: "-4px"
|
|
236
|
-
ring-radius: "var(--radius/md, 16px)"
|
|
237
|
-
|
|
238
|
-
pressed:
|
|
239
|
-
background: "rgba(255,255,255,0.1)"
|
|
240
|
-
color: "rgba(255,255,255,1)" # text becomes full white
|
|
241
|
-
|
|
242
|
-
filled:
|
|
243
|
-
background: "rgba(255,255,255,0.1)"
|
|
244
|
-
color: "rgba(255,255,255,1)" # user text full white
|
|
245
|
-
# clear/X icon may appear on right
|
|
246
|
-
|
|
247
|
-
disabled:
|
|
248
|
-
background: "rgba(255,255,255,0.1)"
|
|
249
|
-
opacity: "var(--opacity/50, 0.5)"
|
|
250
|
-
pointer-events: "none"
|
|
251
|
-
color: "rgba(255,255,255,0.6)"
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### Token Mapping
|
|
255
|
-
|
|
256
|
-
| Figma Value | CSS Variable | Notes |
|
|
257
|
-
|---|---|---|
|
|
258
|
-
| `rgba(255,255,255,0.1)` | `--input` (dark) / `--accent` | Input background |
|
|
259
|
-
| `rgba(255,255,255,0.5)` | `--muted-foreground` | Placeholder text |
|
|
260
|
-
| `rgba(255,255,255,1)` | `--foreground` | Filled/active text |
|
|
261
|
-
| `var(--radius/sm, 12px)` | `--radius-lg` | Input border radius |
|
|
262
|
-
| Focus ring 16px radius | `--radius-md` mapped to ring | Slightly larger than input radius |
|
|
263
|
-
| `opacity: 0.5` | — | Disabled state |
|
|
264
|
-
|
|
265
|
-
### Layout
|
|
266
|
-
|
|
267
|
-
- Left icon: optional (contextual — profile, search, lock, calendar, etc.)
|
|
268
|
-
- Right icon: optional (info, clear X, eye toggle, etc.)
|
|
269
|
-
- Gap between icon and text: `14px`
|
|
270
|
-
- Placeholder and value text: Inter Medium
|
|
271
|
-
|
|
272
|
-
### Input Variants (shared pattern)
|
|
273
|
-
|
|
274
|
-
All input types share the same base structure with different left/right icons:
|
|
275
|
-
|
|
276
|
-
| Input Type | Left Icon | Right Icon | Special |
|
|
277
|
-
|---|---|---|---|
|
|
278
|
-
| **Text Input** | profile | info | — |
|
|
279
|
-
| **Search Input** | search | kbd badge (CTRL+F) | — |
|
|
280
|
-
| **Password Input** | lock | eye (toggle visibility) | Dots for hidden text |
|
|
281
|
-
| **Date Input** | calendar | — | Placeholder: dd/mm/aaaa |
|
|
282
|
-
| **Time Input** | clock | — | Placeholder: 00:00 |
|
|
283
|
-
| **URL Input** | link | — | — |
|
|
284
|
-
| **Email Input** | mail | clear X (on filled) | — |
|
|
285
|
-
| **Number Input** | — | +/- stepper buttons | Stepper is unique |
|
|
286
|
-
| **Upload Input** | upload | — | File list below, feedback states |
|
|
287
|
-
| **Option Input** | number badge | — | Numbered choices, selected state |
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## 3. Tag (Badge)
|
|
292
|
-
|
|
293
|
-
> **Prioridade: 3** — Componente simples, valida tokens.
|
|
294
|
-
> **shadcn mapping:** `Badge`
|
|
295
|
-
|
|
296
|
-
### Sizes
|
|
297
|
-
|
|
298
|
-
| Size | Height | Padding | Font Size |
|
|
299
|
-
|---|---|---|---|
|
|
300
|
-
| **Tiny** | 20px | `px-[8px]` | 10px |
|
|
301
|
-
| **Mini** | 24px | `px-[10px]` | 12px |
|
|
302
|
-
|
|
303
|
-
### States
|
|
304
|
-
|
|
305
|
-
```yaml
|
|
306
|
-
default:
|
|
307
|
-
background: "rgba(255,255,255,0.1)"
|
|
308
|
-
color: "rgba(255,255,255,0.8)"
|
|
309
|
-
border-radius: "100px" # pill
|
|
310
|
-
font-family: "Inter"
|
|
311
|
-
font-weight: 500
|
|
312
|
-
|
|
313
|
-
hover:
|
|
314
|
-
background: "rgba(255,255,255,0.2)"
|
|
315
|
-
|
|
316
|
-
disabled:
|
|
317
|
-
opacity: 0.5
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
### Layout
|
|
321
|
-
|
|
322
|
-
- Optional close X button on right
|
|
323
|
-
- Text + optional X icon in flex row
|
|
324
|
-
|
|
325
|
-
### Token Mapping
|
|
326
|
-
|
|
327
|
-
| Figma Value | CSS Variable |
|
|
328
|
-
|---|---|
|
|
329
|
-
| `rgba(255,255,255,0.1)` bg | `--secondary` |
|
|
330
|
-
| `rgba(255,255,255,0.8)` text | `--secondary-foreground` at 80% |
|
|
331
|
-
| `100px` radius | `rounded-full` |
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
## 4. Checkbox
|
|
336
|
-
|
|
337
|
-
> **shadcn mapping:** `Checkbox`
|
|
338
|
-
|
|
339
|
-
### Sizes
|
|
340
|
-
|
|
341
|
-
| Size | Box Size | Icon Size |
|
|
342
|
-
|---|---|---|
|
|
343
|
-
| **Tiny** | 16px | 12px |
|
|
344
|
-
| **Mini** | 20px | 16px |
|
|
345
|
-
| **Small** | 24px | 20px |
|
|
346
|
-
|
|
347
|
-
### States
|
|
348
|
-
|
|
349
|
-
```yaml
|
|
350
|
-
unchecked:
|
|
351
|
-
background: "transparent"
|
|
352
|
-
border: "2px solid rgba(255,255,255,0.3)"
|
|
353
|
-
border-radius: "var(--radius/min, 4px)"
|
|
354
|
-
|
|
355
|
-
checked:
|
|
356
|
-
background: "rgba(255,255,255,0.9)"
|
|
357
|
-
border: "none"
|
|
358
|
-
icon-color: "var(--color/surface/950, #101010)" # dark checkmark
|
|
359
|
-
|
|
360
|
-
indeterminate:
|
|
361
|
-
background: "rgba(255,255,255,0.9)"
|
|
362
|
-
border: "none"
|
|
363
|
-
icon-color: "var(--color/surface/950, #101010)" # dark dash
|
|
364
|
-
|
|
365
|
-
hover:
|
|
366
|
-
border-color: "rgba(255,255,255,0.5)" # unchecked
|
|
367
|
-
background: "var(--color/surface/white)" # checked
|
|
368
|
-
|
|
369
|
-
focus:
|
|
370
|
-
ring: "2px solid white"
|
|
371
|
-
ring-offset: "-4px"
|
|
372
|
-
|
|
373
|
-
disabled:
|
|
374
|
-
opacity: 0.2
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
### Token Mapping
|
|
378
|
-
|
|
379
|
-
| Figma Value | CSS Variable |
|
|
380
|
-
|---|---|
|
|
381
|
-
| `rgba(255,255,255,0.3)` border | `--border` |
|
|
382
|
-
| `rgba(255,255,255,0.9)` checked bg | `--primary` (dark) |
|
|
383
|
-
| `#101010` checkmark | `--primary-foreground` (dark) |
|
|
384
|
-
| `4px` radius | `--radius-sm` |
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## 5. Radio Button
|
|
389
|
-
|
|
390
|
-
> **shadcn mapping:** `RadioGroup` + `RadioGroupItem`
|
|
391
|
-
|
|
392
|
-
### Sizes
|
|
393
|
-
|
|
394
|
-
| Size | Outer Size | Inner Dot Size |
|
|
395
|
-
|---|---|---|
|
|
396
|
-
| **Tiny** | 16px | 8px |
|
|
397
|
-
| **Mini** | 20px | 10px |
|
|
398
|
-
| **Small** | 24px | 12px |
|
|
399
|
-
|
|
400
|
-
### States
|
|
401
|
-
|
|
402
|
-
```yaml
|
|
403
|
-
unselected:
|
|
404
|
-
background: "transparent"
|
|
405
|
-
border: "2px solid rgba(255,255,255,0.3)"
|
|
406
|
-
border-radius: "50%"
|
|
407
|
-
|
|
408
|
-
selected:
|
|
409
|
-
background: "transparent"
|
|
410
|
-
border: "2px solid rgba(255,255,255,0.9)"
|
|
411
|
-
inner-dot: "rgba(255,255,255,0.9)"
|
|
412
|
-
|
|
413
|
-
hover:
|
|
414
|
-
border-color: "rgba(255,255,255,0.5)"
|
|
415
|
-
|
|
416
|
-
focus:
|
|
417
|
-
ring: "2px solid white"
|
|
418
|
-
ring-offset: "-4px"
|
|
419
|
-
ring-radius: "50%"
|
|
420
|
-
|
|
421
|
-
disabled:
|
|
422
|
-
opacity: 0.2
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
---
|
|
426
|
-
|
|
427
|
-
## 6. Toggle (Switch)
|
|
428
|
-
|
|
429
|
-
> **shadcn mapping:** `Switch`
|
|
430
|
-
|
|
431
|
-
### Sizes
|
|
432
|
-
|
|
433
|
-
| Size | Track Width | Track Height | Thumb Size |
|
|
434
|
-
|---|---|---|---|
|
|
435
|
-
| **Tiny** | 28px | 16px | 12px |
|
|
436
|
-
| **Mini** | 36px | 20px | 16px |
|
|
437
|
-
| **Small** | 44px | 24px | 20px |
|
|
438
|
-
|
|
439
|
-
### States
|
|
440
|
-
|
|
441
|
-
```yaml
|
|
442
|
-
off:
|
|
443
|
-
track-background: "rgba(255,255,255,0.1)"
|
|
444
|
-
thumb-background: "rgba(255,255,255,0.5)"
|
|
445
|
-
border-radius: "100px"
|
|
446
|
-
|
|
447
|
-
on:
|
|
448
|
-
track-background: "rgba(255,255,255,0.9)"
|
|
449
|
-
thumb-background: "var(--color/surface/950, #101010)"
|
|
450
|
-
thumb-position: "right"
|
|
451
|
-
|
|
452
|
-
hover:
|
|
453
|
-
track-background: "rgba(255,255,255,0.2)" # off
|
|
454
|
-
# or full white for on
|
|
455
|
-
|
|
456
|
-
focus:
|
|
457
|
-
ring: "2px solid white"
|
|
458
|
-
|
|
459
|
-
disabled:
|
|
460
|
-
opacity: 0.2
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### Token Mapping
|
|
464
|
-
|
|
465
|
-
| Figma Value | CSS Variable |
|
|
466
|
-
|---|---|
|
|
467
|
-
| `rgba(255,255,255,0.9)` on track | `--primary` (dark) |
|
|
468
|
-
| `#101010` on thumb | `--primary-foreground` (dark) |
|
|
469
|
-
| `rgba(255,255,255,0.1)` off track | `--input` |
|
|
470
|
-
|
|
471
|
-
---
|
|
472
|
-
|
|
473
|
-
## 7. Icon Button
|
|
474
|
-
|
|
475
|
-
> **shadcn mapping:** `Button` variant=icon
|
|
476
|
-
|
|
477
|
-
### Sizes
|
|
478
|
-
|
|
479
|
-
| Size | Dimensions | Icon Size | Border Radius |
|
|
480
|
-
|---|---|---|---|
|
|
481
|
-
| **Tiny** | 24x24 | 16px | `100px` (pill) |
|
|
482
|
-
| **Mini** | 32x32 | 20px | `100px` |
|
|
483
|
-
| **Small** | 40x40 | 24px | `100px` |
|
|
484
|
-
| **Medium** | 48x48 | 32px | `100px` |
|
|
485
|
-
| **Large** | 56x56 | 32px | `100px` |
|
|
486
|
-
|
|
487
|
-
### Variants (same as Button)
|
|
488
|
-
|
|
489
|
-
- **Primary**: `bg-[rgba(255,255,255,0.9)]`, dark icon
|
|
490
|
-
- **Secondary**: `border-2 border-[rgba(255,255,255,0.3)]`, white icon
|
|
491
|
-
- **Tertiary**: `bg-[rgba(255,255,255,0.1)]`, white icon at 80%
|
|
492
|
-
- **Quarter** (Ghost): transparent, white icon at 80%
|
|
493
|
-
|
|
494
|
-
### States
|
|
495
|
-
|
|
496
|
-
Same pattern as Button: hover brightens, focus adds white ring, disabled opacity 0.2.
|
|
497
|
-
|
|
498
|
-
---
|
|
499
|
-
|
|
500
|
-
## 8. Link
|
|
501
|
-
|
|
502
|
-
> **shadcn mapping:** Custom (no direct shadcn equivalent, use `<a>` with utility classes)
|
|
503
|
-
|
|
504
|
-
### Sizes
|
|
505
|
-
|
|
506
|
-
| Size | Font Size | Icon Size |
|
|
507
|
-
|---|---|---|
|
|
508
|
-
| **Mini** | 12px | 16px |
|
|
509
|
-
| **Small** | 14px | 20px |
|
|
510
|
-
|
|
511
|
-
### States
|
|
512
|
-
|
|
513
|
-
```yaml
|
|
514
|
-
default:
|
|
515
|
-
color: "rgba(255,255,255,0.8)"
|
|
516
|
-
text-decoration: "underline"
|
|
517
|
-
font-family: "Inter"
|
|
518
|
-
font-weight: 500
|
|
519
|
-
|
|
520
|
-
hover:
|
|
521
|
-
color: "rgba(255,255,255,1)"
|
|
522
|
-
|
|
523
|
-
focus:
|
|
524
|
-
ring: "2px solid white"
|
|
525
|
-
ring-offset: "-2px"
|
|
526
|
-
|
|
527
|
-
pressed:
|
|
528
|
-
color: "rgba(255,255,255,0.6)"
|
|
529
|
-
|
|
530
|
-
disabled:
|
|
531
|
-
opacity: 0.3
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
---
|
|
535
|
-
|
|
536
|
-
## 9. Avatar
|
|
537
|
-
|
|
538
|
-
> **shadcn mapping:** `Avatar` + `AvatarImage` + `AvatarFallback`
|
|
539
|
-
|
|
540
|
-
### Features
|
|
541
|
-
|
|
542
|
-
- Circular image with colored ring (brand colors)
|
|
543
|
-
- Avatar groups with overlapping layout
|
|
544
|
-
- Fallback: initials on colored background
|
|
545
|
-
|
|
546
|
-
### Sizes (estimated from screenshots)
|
|
547
|
-
|
|
548
|
-
| Size | Dimensions | Ring Width |
|
|
549
|
-
|---|---|---|
|
|
550
|
-
| **Small** | 32px | 2px |
|
|
551
|
-
| **Medium** | 40px | 2px |
|
|
552
|
-
| **Large** | 48px | 3px |
|
|
553
|
-
|
|
554
|
-
### Ring Colors (brand palette)
|
|
555
|
-
|
|
556
|
-
Various brand colors used: Atmos, Midori, Sahara, Khewra, Boreal, etc.
|
|
557
|
-
|
|
558
|
-
---
|
|
559
|
-
|
|
560
|
-
## 10. Tooltip
|
|
561
|
-
|
|
562
|
-
> **shadcn mapping:** `Tooltip` + `TooltipTrigger` + `TooltipContent`
|
|
563
|
-
|
|
564
|
-
### Spec
|
|
565
|
-
|
|
566
|
-
```yaml
|
|
567
|
-
background: "var(--color/surface/white, white)" # light tooltip on dark UI
|
|
568
|
-
color: "var(--color/surface/950, #101010)"
|
|
569
|
-
border-radius: "var(--radius/xs, 8px)"
|
|
570
|
-
padding: "4px 8px"
|
|
571
|
-
font-family: "Inter"
|
|
572
|
-
font-size: "12px"
|
|
573
|
-
font-weight: 500
|
|
574
|
-
# Optional keyboard shortcut badge inside
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
---
|
|
578
|
-
|
|
579
|
-
## 11. Popover
|
|
580
|
-
|
|
581
|
-
> **shadcn mapping:** `Popover` + `PopoverTrigger` + `PopoverContent`
|
|
582
|
-
|
|
583
|
-
### Spec
|
|
584
|
-
|
|
585
|
-
```yaml
|
|
586
|
-
background: "var(--color/surface/900, #202020)"
|
|
587
|
-
border: "1px solid rgba(255,255,255,0.1)"
|
|
588
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
589
|
-
padding: "16px"
|
|
590
|
-
box-shadow: "0 4px 24px rgba(0,0,0,0.3)"
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
### Variants
|
|
594
|
-
|
|
595
|
-
- **Default**: Simple content
|
|
596
|
-
- **With Form**: Contains inputs and action buttons
|
|
597
|
-
|
|
598
|
-
---
|
|
599
|
-
|
|
600
|
-
## 12. Dropdown (Select)
|
|
601
|
-
|
|
602
|
-
> **shadcn mapping:** `Select` + `SelectTrigger` + `SelectContent` + `SelectItem`
|
|
603
|
-
|
|
604
|
-
### Trigger
|
|
605
|
-
|
|
606
|
-
Same structure as Text Input — same sizes, same states, with chevron-down icon on right and optional clear X.
|
|
607
|
-
|
|
608
|
-
### Content (dropdown menu)
|
|
609
|
-
|
|
610
|
-
```yaml
|
|
611
|
-
background: "var(--color/surface/900, #202020)"
|
|
612
|
-
border: "1px solid rgba(255,255,255,0.1)"
|
|
613
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
614
|
-
padding: "4px"
|
|
615
|
-
box-shadow: "0 4px 24px rgba(0,0,0,0.3)"
|
|
616
|
-
```
|
|
617
|
-
|
|
618
|
-
---
|
|
619
|
-
|
|
620
|
-
## 13. Item Menu
|
|
621
|
-
|
|
622
|
-
> **shadcn mapping:** `DropdownMenuItem` / `CommandItem`
|
|
623
|
-
|
|
624
|
-
### Sizes
|
|
625
|
-
|
|
626
|
-
| Size | Height | Padding | Font Size |
|
|
627
|
-
|---|---|---|---|
|
|
628
|
-
| **Small** | 32px | `px-[12px]` | 14px |
|
|
629
|
-
| **Medium** | 40px | `px-[16px]` | 14px |
|
|
630
|
-
| **Large** | 48px | `px-[16px]` | 16px |
|
|
631
|
-
|
|
632
|
-
### States
|
|
633
|
-
|
|
634
|
-
```yaml
|
|
635
|
-
default:
|
|
636
|
-
background: "transparent"
|
|
637
|
-
color: "rgba(255,255,255,0.8)"
|
|
638
|
-
border-radius: "var(--radius/xs, 8px)"
|
|
639
|
-
|
|
640
|
-
hover:
|
|
641
|
-
background: "rgba(255,255,255,0.1)"
|
|
642
|
-
|
|
643
|
-
focus:
|
|
644
|
-
background: "rgba(255,255,255,0.1)"
|
|
645
|
-
ring: "2px solid white"
|
|
646
|
-
|
|
647
|
-
pressed:
|
|
648
|
-
background: "rgba(255,255,255,0.05)"
|
|
649
|
-
|
|
650
|
-
disabled:
|
|
651
|
-
opacity: 0.3
|
|
652
|
-
```
|
|
653
|
-
|
|
654
|
-
### Layout
|
|
655
|
-
|
|
656
|
-
- Left: optional icon (24px)
|
|
657
|
-
- Center: label text
|
|
658
|
-
- Right: optional shortcut text or chevron-right icon
|
|
659
|
-
- Gap: 8px between elements
|
|
660
|
-
|
|
661
|
-
---
|
|
662
|
-
|
|
663
|
-
## 14. Textarea
|
|
664
|
-
|
|
665
|
-
> **shadcn mapping:** `Textarea`
|
|
666
|
-
|
|
667
|
-
### Sizes
|
|
668
|
-
|
|
669
|
-
| Size | Min Height | Padding | Font Size |
|
|
670
|
-
|---|---|---|---|
|
|
671
|
-
| **Tiny** | 64px | `p-[12px]` | 12px |
|
|
672
|
-
| **Mini** | 80px | `p-[14px]` | 14px |
|
|
673
|
-
| **Default** | 120px | `p-[16px]` | 16px |
|
|
674
|
-
|
|
675
|
-
### States
|
|
676
|
-
|
|
677
|
-
Same as Text Input: `rgba(255,255,255,0.1)` bg, focus ring, disabled opacity 0.5.
|
|
678
|
-
|
|
679
|
-
```yaml
|
|
680
|
-
default:
|
|
681
|
-
background: "rgba(255,255,255,0.1)"
|
|
682
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
683
|
-
font-family: "Inter"
|
|
684
|
-
font-weight: 500
|
|
685
|
-
resize: "vertical"
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
---
|
|
689
|
-
|
|
690
|
-
## 15. Dropdown Menu
|
|
691
|
-
|
|
692
|
-
> **shadcn mapping:** `DropdownMenu` + `DropdownMenuContent` + `DropdownMenuItem` + `DropdownMenuSeparator`
|
|
693
|
-
|
|
694
|
-
### Variants
|
|
695
|
-
|
|
696
|
-
- **Simple**: Plain text items
|
|
697
|
-
- **With Search**: Search input at top, filtered items below
|
|
698
|
-
- **Complete**: Sections with headers, icons, descriptions, and separators
|
|
699
|
-
|
|
700
|
-
### Container
|
|
701
|
-
|
|
702
|
-
```yaml
|
|
703
|
-
background: "var(--color/surface/900, #202020)"
|
|
704
|
-
border: "1px solid rgba(255,255,255,0.1)"
|
|
705
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
706
|
-
padding: "4px"
|
|
707
|
-
min-width: "200px"
|
|
708
|
-
box-shadow: "0 4px 24px rgba(0,0,0,0.3)"
|
|
709
|
-
```
|
|
710
|
-
|
|
711
|
-
---
|
|
712
|
-
|
|
713
|
-
## 16. Toasts
|
|
714
|
-
|
|
715
|
-
> **shadcn mapping:** `Sonner` (toast library)
|
|
716
|
-
> **Nota do usuario:** "Animations sao apenas visualizacao, nao esta funcionando direito, fazer do jeito certo"
|
|
717
|
-
|
|
718
|
-
### Variants
|
|
719
|
-
|
|
720
|
-
| Type | Icon Color | Icon | Token |
|
|
721
|
-
|---|---|---|---|
|
|
722
|
-
| **Success** | `--success` (Midori #3A913F) | Checkmark circle | `oklch(0.585 0.145 144.414)` |
|
|
723
|
-
| **Error** | `--destructive` (Khewra #DC625E) | X circle | `oklch(0.646 0.154 24.222)` |
|
|
724
|
-
| **Warning** | `--warning` (Sahara #D6A461) | Warning triangle | `oklch(0.751 0.103 73.232)` |
|
|
725
|
-
| **Info** | `--info` (Atmos #77C5D5) | Info circle | `oklch(0.779 0.08 212.201)` |
|
|
726
|
-
|
|
727
|
-
### Spec
|
|
728
|
-
|
|
729
|
-
```yaml
|
|
730
|
-
background: "var(--color/surface/900, #202020)"
|
|
731
|
-
border: "1px solid rgba(255,255,255,0.1)"
|
|
732
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
733
|
-
padding: "16px"
|
|
734
|
-
color: "rgba(255,255,255,0.9)"
|
|
735
|
-
font-family: "Inter"
|
|
736
|
-
font-size: "14px"
|
|
737
|
-
# Action buttons: "Confirmar" / "Desfazer" text links
|
|
738
|
-
```
|
|
739
|
-
|
|
740
|
-
### Layout
|
|
741
|
-
|
|
742
|
-
- Left: colored status icon
|
|
743
|
-
- Center: title (bold) + description
|
|
744
|
-
- Right: optional action buttons (text links)
|
|
745
|
-
|
|
746
|
-
---
|
|
747
|
-
|
|
748
|
-
## 17. Basic Dialog
|
|
749
|
-
|
|
750
|
-
> **shadcn mapping:** `Dialog` + `DialogContent` + `DialogHeader` + `DialogFooter`
|
|
751
|
-
|
|
752
|
-
### Spec
|
|
753
|
-
|
|
754
|
-
```yaml
|
|
755
|
-
overlay:
|
|
756
|
-
background: "rgba(0,0,0,0.5)"
|
|
757
|
-
|
|
758
|
-
content:
|
|
759
|
-
background: "var(--color/surface/900, #202020)"
|
|
760
|
-
border: "1px solid rgba(255,255,255,0.1)"
|
|
761
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
762
|
-
padding: "24px"
|
|
763
|
-
max-width: "400px"
|
|
764
|
-
box-shadow: "0 8px 32px rgba(0,0,0,0.5)"
|
|
765
|
-
|
|
766
|
-
header:
|
|
767
|
-
icon: "warning triangle (colored)"
|
|
768
|
-
title: "Inter Bold, 18px, white"
|
|
769
|
-
description: "Inter Regular, 14px, rgba(255,255,255,0.6)"
|
|
770
|
-
|
|
771
|
-
body:
|
|
772
|
-
# Optional input field
|
|
773
|
-
margin-top: "16px"
|
|
774
|
-
|
|
775
|
-
footer:
|
|
776
|
-
display: "flex"
|
|
777
|
-
gap: "8px"
|
|
778
|
-
justify-content: "flex-end"
|
|
779
|
-
margin-top: "24px"
|
|
780
|
-
# Primary + Secondary buttons
|
|
781
|
-
```
|
|
782
|
-
|
|
783
|
-
---
|
|
784
|
-
|
|
785
|
-
## 18. Input Feedback
|
|
786
|
-
|
|
787
|
-
> **shadcn mapping:** Custom validation states on Input
|
|
788
|
-
|
|
789
|
-
### Feedback Types
|
|
790
|
-
|
|
791
|
-
| Type | Border Color | Icon Color | Token |
|
|
792
|
-
|---|---|---|---|
|
|
793
|
-
| **User Error** | `--destructive` (Khewra) | Khewra | Red border + error icon |
|
|
794
|
-
| **System Error** | `--warning` (Sahara) | Sahara | Orange border + warning icon |
|
|
795
|
-
| **Success** | `--success` (Midori) | Midori | Green border + check icon |
|
|
796
|
-
|
|
797
|
-
### Spec
|
|
798
|
-
|
|
799
|
-
```yaml
|
|
800
|
-
error:
|
|
801
|
-
border: "2px solid var(--destructive)"
|
|
802
|
-
# Error message below input
|
|
803
|
-
message-color: "var(--destructive)"
|
|
804
|
-
message-font-size: "12px"
|
|
805
|
-
|
|
806
|
-
warning:
|
|
807
|
-
border: "2px solid var(--warning)"
|
|
808
|
-
message-color: "var(--warning)"
|
|
809
|
-
|
|
810
|
-
success:
|
|
811
|
-
border: "2px solid var(--success)"
|
|
812
|
-
message-color: "var(--success)"
|
|
813
|
-
|
|
814
|
-
multiple:
|
|
815
|
-
# Multiple validation messages stacked below input
|
|
816
|
-
# Each with its own icon and color
|
|
817
|
-
```
|
|
818
|
-
|
|
819
|
-
---
|
|
820
|
-
|
|
821
|
-
## 19. Notification Bar
|
|
822
|
-
|
|
823
|
-
> **shadcn mapping:** Custom component (Card-based)
|
|
824
|
-
|
|
825
|
-
### Spec
|
|
826
|
-
|
|
827
|
-
```yaml
|
|
828
|
-
background: "var(--color/surface/900, #202020)"
|
|
829
|
-
border: "1px solid rgba(255,255,255,0.1)"
|
|
830
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
831
|
-
padding: "16px"
|
|
832
|
-
# Layout: image left, content center, actions right
|
|
833
|
-
# Content: title (bold), time (muted), description
|
|
834
|
-
# Actions: Accept (primary button) / Decline (ghost button)
|
|
835
|
-
```
|
|
836
|
-
|
|
837
|
-
---
|
|
838
|
-
|
|
839
|
-
## 20. Chat Notification
|
|
840
|
-
|
|
841
|
-
> **shadcn mapping:** Custom component
|
|
842
|
-
|
|
843
|
-
### Spec
|
|
844
|
-
|
|
845
|
-
```yaml
|
|
846
|
-
background: "var(--color/surface/900, #202020)"
|
|
847
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
848
|
-
padding: "12px 16px"
|
|
849
|
-
# Layout: avatar left, content center, badge right
|
|
850
|
-
# Content: name (bold white), message (muted), time
|
|
851
|
-
# Badge: unread count (white bg, dark text, circular)
|
|
852
|
-
```
|
|
853
|
-
|
|
854
|
-
---
|
|
855
|
-
|
|
856
|
-
## 21. Comment Area
|
|
857
|
-
|
|
858
|
-
> **shadcn mapping:** Custom (Textarea + action buttons)
|
|
859
|
-
|
|
860
|
-
### Spec
|
|
861
|
-
|
|
862
|
-
```yaml
|
|
863
|
-
textarea:
|
|
864
|
-
# Same as Textarea component base
|
|
865
|
-
background: "rgba(255,255,255,0.1)"
|
|
866
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
867
|
-
|
|
868
|
-
actions:
|
|
869
|
-
# Bottom bar with + (attach), star (favorite), send icons
|
|
870
|
-
# Icon buttons: ghost variant (quarter)
|
|
871
|
-
padding: "8px"
|
|
872
|
-
border-top: "1px solid rgba(255,255,255,0.1)"
|
|
873
|
-
```
|
|
874
|
-
|
|
875
|
-
---
|
|
876
|
-
|
|
877
|
-
## 22. Prompt Area
|
|
878
|
-
|
|
879
|
-
> **shadcn mapping:** Custom (AI prompt input)
|
|
880
|
-
> **Nota do usuario:** "Incompleto, precisa ser planejado"
|
|
881
|
-
|
|
882
|
-
### Spec (partial)
|
|
883
|
-
|
|
884
|
-
```yaml
|
|
885
|
-
container:
|
|
886
|
-
background: "rgba(255,255,255,0.1)"
|
|
887
|
-
border-radius: "var(--radius/sm, 12px)"
|
|
888
|
-
padding: "12px 16px"
|
|
889
|
-
|
|
890
|
-
input:
|
|
891
|
-
# Textarea-like input area
|
|
892
|
-
font-family: "Inter"
|
|
893
|
-
placeholder: "AI prompt text"
|
|
894
|
-
|
|
895
|
-
actions:
|
|
896
|
-
# Bottom: + (attach), mic (voice), send icon button
|
|
897
|
-
# Model selector dropdown
|
|
898
|
-
```
|
|
899
|
-
|
|
900
|
-
---
|
|
901
|
-
|
|
902
|
-
## 23. Profile Header
|
|
903
|
-
|
|
904
|
-
> **shadcn mapping:** Custom component
|
|
905
|
-
|
|
906
|
-
### Variants
|
|
907
|
-
|
|
908
|
-
- **Default**: Avatar + name + role
|
|
909
|
-
- **With Badges**: Avatar + name + role + badge tags
|
|
910
|
-
|
|
911
|
-
---
|
|
912
|
-
|
|
913
|
-
## Componentes Prontos para Adaptacao
|
|
914
|
-
|
|
915
|
-
### Prioridade Alta (core — adaptar primeiro)
|
|
916
|
-
|
|
917
|
-
| # | Component | shadcn Base | Complexity |
|
|
918
|
-
|---|---|---|---|
|
|
919
|
-
| 1 | **Button** | `Button` | Alta — 4 variants, 4 sizes, 5 states |
|
|
920
|
-
| 2 | **Text Input** | `Input` | Media — 5 sizes, 6 states, 10 sub-types |
|
|
921
|
-
| 3 | **Tag** | `Badge` | Baixa — 2 sizes, pill shape |
|
|
922
|
-
| 4 | **Checkbox** | `Checkbox` | Baixa — 3 sizes, 3 check states |
|
|
923
|
-
| 5 | **Radio Button** | `RadioGroup` | Baixa — 3 sizes |
|
|
924
|
-
| 6 | **Toggle** | `Switch` | Baixa — 3 sizes |
|
|
925
|
-
|
|
926
|
-
### Prioridade Media (compostos)
|
|
927
|
-
|
|
928
|
-
| # | Component | shadcn Base | Complexity |
|
|
929
|
-
|---|---|---|---|
|
|
930
|
-
| 7 | **Icon Button** | `Button` variant=icon | Media — reusa Button |
|
|
931
|
-
| 8 | **Dropdown** | `Select` | Media — trigger = Input |
|
|
932
|
-
| 9 | **Item Menu** | `DropdownMenuItem` | Baixa |
|
|
933
|
-
| 10 | **Textarea** | `Textarea` | Baixa — segue Input |
|
|
934
|
-
| 11 | **Dropdown Menu** | `DropdownMenu` | Media — 3 variants |
|
|
935
|
-
| 12 | **Tooltip** | `Tooltip` | Baixa |
|
|
936
|
-
| 13 | **Popover** | `Popover` | Baixa |
|
|
937
|
-
|
|
938
|
-
### Prioridade Baixa (feedback + compostos complexos)
|
|
939
|
-
|
|
940
|
-
| # | Component | shadcn Base | Complexity |
|
|
941
|
-
|---|---|---|---|
|
|
942
|
-
| 14 | **Toasts** | `Sonner` | Media — 4 types |
|
|
943
|
-
| 15 | **Basic Dialog** | `Dialog` | Media |
|
|
944
|
-
| 16 | **Input Feedback** | Custom on Input | Baixa — adds borders |
|
|
945
|
-
| 17 | **Link** | Custom `<a>` | Baixa |
|
|
946
|
-
| 18 | **Avatar** | `Avatar` | Baixa |
|
|
947
|
-
|
|
948
|
-
### Fora de Escopo (precisa planejamento)
|
|
949
|
-
|
|
950
|
-
| # | Component | Motivo |
|
|
951
|
-
|---|---|---|
|
|
952
|
-
| 19 | **Notification Bar** | Componente custom, sem shadcn base |
|
|
953
|
-
| 20 | **Chat Notification** | Componente custom, sem shadcn base |
|
|
954
|
-
| 21 | **Comment Area** | Componente composto (textarea + actions) |
|
|
955
|
-
| 22 | **Prompt Area** | Incompleto no Figma, precisa ser planejado |
|
|
956
|
-
| 23 | **Profile Header** | Componente custom layout |
|
|
957
|
-
|
|
958
|
-
---
|
|
959
|
-
|
|
960
|
-
## Validacao
|
|
961
|
-
|
|
962
|
-
- [x] Button especificado (4 variants, 4 sizes, 5 states)
|
|
963
|
-
- [x] Input especificado (5 sizes, 6 states, 10 sub-types)
|
|
964
|
-
- [x] Todos os estados basicos cobertos (default, hover, focus, pressed, disabled)
|
|
965
|
-
- [x] Valores mapeados para tokens existentes da Phase 1
|
|
966
|
-
- [x] Screenshots confirmam CSS do Figma Dev Mode (validacao cruzada OK)
|
|
967
|
-
|
|
968
|
-
---
|
|
969
|
-
|
|
970
|
-
*Gerado por: Foundations Pipeline — Phase 2 (f2-ingest-base-components)*
|
|
971
|
-
*Fonte: Figma Dev Mode + components-ref/ screenshots + Figma MCP design context*
|
|
972
|
-
*Data: 2026-02-21*
|
|
1
|
+
# Base Component Specs
|
|
2
|
+
|
|
3
|
+
> Especificacoes visuais dos componentes base extraidas do Figma Dev Mode + screenshots.
|
|
4
|
+
> Gerado pela task `f2-ingest-base-components`. Usado na Phase 2 para adaptar componentes shadcn.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Design Patterns Globais
|
|
9
|
+
|
|
10
|
+
### Temas e Contexto
|
|
11
|
+
|
|
12
|
+
| Propriedade | Valor |
|
|
13
|
+
|---|---|
|
|
14
|
+
| **Tema primario** | Dark-first (componentes desenhados sobre `surface/950` #101010) |
|
|
15
|
+
| **Paleta** | Monocromatica — branco/preto para primary, sem brand colors em estados default |
|
|
16
|
+
| **Feedback colors** | Khewra=destructive, Midori=success, Sahara=warning, Atmos=info |
|
|
17
|
+
|
|
18
|
+
### Size Scale (consistente em todos os componentes)
|
|
19
|
+
|
|
20
|
+
| Size | Height | Icon Size | Font Size | Figma Token |
|
|
21
|
+
|---|---|---|---|---|
|
|
22
|
+
| **Tiny** | 24px | 16px | 12px | `spacing/24`, `font/size/4xs` |
|
|
23
|
+
| **Mini** | 32px (btn 24px) | 20px | 12px | `spacing/32`, `font/size/4xs` |
|
|
24
|
+
| **Small** | 32px (btn) / 48px (input) | 24px | 14px | `spacing/32`/`spacing/48`, `font/size/2xs` |
|
|
25
|
+
| **Medium** | 40px (btn) / 64px (input) | 32px | 16px | `spacing/40`/`spacing/64`, `font/size/3xs` |
|
|
26
|
+
| **Large** | 48px (btn) / 80px (input) | 32px | 16px | `spacing/48`/`spacing/80`, `font/size/3xs` |
|
|
27
|
+
|
|
28
|
+
### State Pattern (consistente em todos os componentes)
|
|
29
|
+
|
|
30
|
+
| State | Visual Change |
|
|
31
|
+
|---|---|
|
|
32
|
+
| **Default** | Base appearance |
|
|
33
|
+
| **Hover** | Background alpha increases (e.g. 10% → 20%), cursor pointer |
|
|
34
|
+
| **Focus** | White outline ring, `border: 2px solid white`, `inset: -4px`, `border-radius: radius/max` (buttons) or `radius/md` (inputs) |
|
|
35
|
+
| **Pressed** | Background alpha decreases slightly or darkens |
|
|
36
|
+
| **Filled** | (Inputs only) White text, clear icon appears |
|
|
37
|
+
| **Disabled** | `opacity: 0.2` (buttons) or `opacity: 0.5` (inputs), `pointer-events: none` |
|
|
38
|
+
|
|
39
|
+
### Focus Ring Pattern
|
|
40
|
+
|
|
41
|
+
```css
|
|
42
|
+
/* Buttons (pill shape) */
|
|
43
|
+
position: absolute;
|
|
44
|
+
border: 2px solid var(--color/surface/white, white);
|
|
45
|
+
inset: -4px;
|
|
46
|
+
border-radius: var(--radius/max, 9999px);
|
|
47
|
+
|
|
48
|
+
/* Inputs (rounded rect) */
|
|
49
|
+
position: absolute;
|
|
50
|
+
border: 2px solid var(--color/surface/white, white);
|
|
51
|
+
inset: -4px;
|
|
52
|
+
border-radius: var(--radius/md, 16px);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 1. Button
|
|
58
|
+
|
|
59
|
+
> **Prioridade: 1** — Componente mais usado, define padrao visual.
|
|
60
|
+
> **shadcn mapping:** `Button`
|
|
61
|
+
|
|
62
|
+
### Variants
|
|
63
|
+
|
|
64
|
+
| Variant | Figma Name | Background | Text Color | Border | Font |
|
|
65
|
+
|---|---|---|---|---|---|
|
|
66
|
+
| **Primary** | `type=primary` | `rgba(255,255,255,0.9)` | `var(--color/surface/950, #101010)` | none | Outfit Medium, uppercase, tracking 0.5px |
|
|
67
|
+
| **Secondary** | `type=secondary` | transparent | `rgba(255,255,255,0.9)` | `2px solid rgba(255,255,255,0.3)` | Outfit Medium, uppercase, tracking 0.5px |
|
|
68
|
+
| **Tertiary** | `type=tertiary` | `rgba(255,255,255,0.1)` | `rgba(255,255,255,0.8)` | none | Inter Medium, normal case |
|
|
69
|
+
| **Quarter** (Ghost) | `type=quarter` | transparent | `rgba(255,255,255,0.8)` | none | Inter Medium, normal case |
|
|
70
|
+
|
|
71
|
+
### Sizes
|
|
72
|
+
|
|
73
|
+
| Size | Height | Padding | Font Size | Icon Size | Line Height |
|
|
74
|
+
|---|---|---|---|---|---|
|
|
75
|
+
| **Mini** | 24px | `px-[12px]` | 12px (`font/size/4xs`) | 20px | 16px |
|
|
76
|
+
| **Small** | 32px | `px-[12px]` | 14px (`font/size/2xs`) | 24px | 16px |
|
|
77
|
+
| **Medium** | 40px | `px-[12px]` | 16px (`font/size/3xs`) | 32px | 16px |
|
|
78
|
+
| **Large** | 48px | `px-[12px]` | 16px (`font/size/3xs`) | 32px | 16px |
|
|
79
|
+
|
|
80
|
+
### States (Primary variant)
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
default:
|
|
84
|
+
background: "rgba(255,255,255,0.9)"
|
|
85
|
+
color: "var(--color/surface/950, #101010)"
|
|
86
|
+
border-radius: "100px" # pill shape (radius/max)
|
|
87
|
+
padding: "0 12px"
|
|
88
|
+
font-family: "Outfit"
|
|
89
|
+
font-weight: 500
|
|
90
|
+
text-transform: "uppercase"
|
|
91
|
+
letter-spacing: "0.5px"
|
|
92
|
+
|
|
93
|
+
hover:
|
|
94
|
+
background: "var(--color/surface/white, #FFFFFF)" # full white
|
|
95
|
+
cursor: "pointer"
|
|
96
|
+
|
|
97
|
+
focus:
|
|
98
|
+
background: "rgba(255,255,255,0.9)"
|
|
99
|
+
ring: "2px solid var(--color/surface/white, white)"
|
|
100
|
+
ring-offset: "-4px"
|
|
101
|
+
ring-radius: "var(--radius/max, 9999px)"
|
|
102
|
+
|
|
103
|
+
pressed:
|
|
104
|
+
background: "rgba(255,255,255,0.7)" # slightly dimmer
|
|
105
|
+
|
|
106
|
+
disabled:
|
|
107
|
+
background: "rgba(255,255,255,0.9)"
|
|
108
|
+
opacity: 0.2
|
|
109
|
+
pointer-events: "none"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### States (Secondary variant)
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
default:
|
|
116
|
+
background: "transparent"
|
|
117
|
+
color: "rgba(255,255,255,0.9)"
|
|
118
|
+
border: "2px solid rgba(255,255,255,0.3)"
|
|
119
|
+
border-radius: "100px"
|
|
120
|
+
|
|
121
|
+
hover:
|
|
122
|
+
border-color: "rgba(255,255,255,0.5)"
|
|
123
|
+
cursor: "pointer"
|
|
124
|
+
|
|
125
|
+
focus:
|
|
126
|
+
ring: "2px solid var(--color/surface/white, white)"
|
|
127
|
+
ring-offset: "-4px"
|
|
128
|
+
|
|
129
|
+
disabled:
|
|
130
|
+
opacity: 0.2
|
|
131
|
+
pointer-events: "none"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### States (Tertiary variant)
|
|
135
|
+
|
|
136
|
+
```yaml
|
|
137
|
+
default:
|
|
138
|
+
background: "rgba(255,255,255,0.1)"
|
|
139
|
+
color: "rgba(255,255,255,0.8)"
|
|
140
|
+
border-radius: "100px"
|
|
141
|
+
font-family: "Inter"
|
|
142
|
+
text-transform: "none"
|
|
143
|
+
|
|
144
|
+
hover:
|
|
145
|
+
background: "rgba(255,255,255,0.2)"
|
|
146
|
+
cursor: "pointer"
|
|
147
|
+
|
|
148
|
+
focus:
|
|
149
|
+
ring: "2px solid white"
|
|
150
|
+
ring-offset: "-4px"
|
|
151
|
+
|
|
152
|
+
disabled:
|
|
153
|
+
opacity: 0.2
|
|
154
|
+
pointer-events: "none"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### States (Quarter/Ghost variant)
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
default:
|
|
161
|
+
background: "transparent"
|
|
162
|
+
color: "rgba(255,255,255,0.8)"
|
|
163
|
+
border-radius: "100px"
|
|
164
|
+
font-family: "Inter"
|
|
165
|
+
text-transform: "none"
|
|
166
|
+
|
|
167
|
+
hover:
|
|
168
|
+
background: "rgba(255,255,255,0.1)"
|
|
169
|
+
cursor: "pointer"
|
|
170
|
+
|
|
171
|
+
focus:
|
|
172
|
+
ring: "2px solid white"
|
|
173
|
+
ring-offset: "-4px"
|
|
174
|
+
|
|
175
|
+
disabled:
|
|
176
|
+
opacity: 0.2
|
|
177
|
+
pointer-events: "none"
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Token Mapping
|
|
181
|
+
|
|
182
|
+
| Figma Value | CSS Variable | Notes |
|
|
183
|
+
|---|---|---|
|
|
184
|
+
| `rgba(255,255,255,0.9)` | `--primary` (dark mode) | Primary button bg |
|
|
185
|
+
| `var(--color/surface/950)` | `--primary-foreground` (dark mode) | Primary button text |
|
|
186
|
+
| `rgba(255,255,255,0.3)` border | `--border` | Secondary button outline |
|
|
187
|
+
| `rgba(255,255,255,0.1)` | `--accent` / `--secondary` | Tertiary button bg |
|
|
188
|
+
| `rgba(255,255,255,0.8)` | `--foreground` at 80% | Tertiary/Quarter text |
|
|
189
|
+
| `100px` radius | `--radius` with `rounded-full` | Pill shape |
|
|
190
|
+
| `opacity: 0.2` | — | Disabled state |
|
|
191
|
+
| Focus ring | `--ring` / white border | 2px white outline, -4px offset |
|
|
192
|
+
|
|
193
|
+
### Layout
|
|
194
|
+
|
|
195
|
+
- Icons: left (arrow_back) and/or right (arrow_forward), both optional
|
|
196
|
+
- Text container: `px-[8px]` inner padding
|
|
197
|
+
- Icon + text in flex row, items-center
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 2. Text Input
|
|
202
|
+
|
|
203
|
+
> **Prioridade: 2** — Define padrao de formularios.
|
|
204
|
+
> **shadcn mapping:** `Input`
|
|
205
|
+
|
|
206
|
+
### Sizes
|
|
207
|
+
|
|
208
|
+
| Size | Height | Width | Padding | Font Size | Icon Size | Border Radius |
|
|
209
|
+
|---|---|---|---|---|---|---|
|
|
210
|
+
| **Tiny** | 32px | 260px | `pl-[12px] pr-[16px]` | 12px | 16px | `var(--radius/sm, 12px)` |
|
|
211
|
+
| **Mini** | 40px | 260px | `pl-[14px] pr-[18px]` | 14px | 20px | `var(--radius/sm, 12px)` |
|
|
212
|
+
| **Small** | 48px | 320px | `pl-[16px] pr-[20px]` | 16px | 24px | `var(--radius/sm, 12px)` |
|
|
213
|
+
| **Medium** | 64px | 320px | `pl-[20px] pr-[24px]` | 16px | 24px | `var(--radius/sm, 12px)` |
|
|
214
|
+
| **Large** | 80px | 320px | `pl-[24px] pr-[28px]` | 16px | 24px | `var(--radius/sm, 12px)` |
|
|
215
|
+
|
|
216
|
+
### States
|
|
217
|
+
|
|
218
|
+
```yaml
|
|
219
|
+
default:
|
|
220
|
+
background: "rgba(255,255,255,0.1)"
|
|
221
|
+
color: "rgba(255,255,255,0.5)" # placeholder
|
|
222
|
+
border: "none"
|
|
223
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
224
|
+
font-family: "Inter"
|
|
225
|
+
font-weight: 500
|
|
226
|
+
overflow: "clip"
|
|
227
|
+
|
|
228
|
+
hover:
|
|
229
|
+
background: "rgba(255,255,255,0.2)"
|
|
230
|
+
cursor: "pointer"
|
|
231
|
+
|
|
232
|
+
focus:
|
|
233
|
+
background: "rgba(255,255,255,0.1)"
|
|
234
|
+
ring: "2px solid var(--color/surface/white, white)"
|
|
235
|
+
ring-offset: "-4px"
|
|
236
|
+
ring-radius: "var(--radius/md, 16px)"
|
|
237
|
+
|
|
238
|
+
pressed:
|
|
239
|
+
background: "rgba(255,255,255,0.1)"
|
|
240
|
+
color: "rgba(255,255,255,1)" # text becomes full white
|
|
241
|
+
|
|
242
|
+
filled:
|
|
243
|
+
background: "rgba(255,255,255,0.1)"
|
|
244
|
+
color: "rgba(255,255,255,1)" # user text full white
|
|
245
|
+
# clear/X icon may appear on right
|
|
246
|
+
|
|
247
|
+
disabled:
|
|
248
|
+
background: "rgba(255,255,255,0.1)"
|
|
249
|
+
opacity: "var(--opacity/50, 0.5)"
|
|
250
|
+
pointer-events: "none"
|
|
251
|
+
color: "rgba(255,255,255,0.6)"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Token Mapping
|
|
255
|
+
|
|
256
|
+
| Figma Value | CSS Variable | Notes |
|
|
257
|
+
|---|---|---|
|
|
258
|
+
| `rgba(255,255,255,0.1)` | `--input` (dark) / `--accent` | Input background |
|
|
259
|
+
| `rgba(255,255,255,0.5)` | `--muted-foreground` | Placeholder text |
|
|
260
|
+
| `rgba(255,255,255,1)` | `--foreground` | Filled/active text |
|
|
261
|
+
| `var(--radius/sm, 12px)` | `--radius-lg` | Input border radius |
|
|
262
|
+
| Focus ring 16px radius | `--radius-md` mapped to ring | Slightly larger than input radius |
|
|
263
|
+
| `opacity: 0.5` | — | Disabled state |
|
|
264
|
+
|
|
265
|
+
### Layout
|
|
266
|
+
|
|
267
|
+
- Left icon: optional (contextual — profile, search, lock, calendar, etc.)
|
|
268
|
+
- Right icon: optional (info, clear X, eye toggle, etc.)
|
|
269
|
+
- Gap between icon and text: `14px`
|
|
270
|
+
- Placeholder and value text: Inter Medium
|
|
271
|
+
|
|
272
|
+
### Input Variants (shared pattern)
|
|
273
|
+
|
|
274
|
+
All input types share the same base structure with different left/right icons:
|
|
275
|
+
|
|
276
|
+
| Input Type | Left Icon | Right Icon | Special |
|
|
277
|
+
|---|---|---|---|
|
|
278
|
+
| **Text Input** | profile | info | — |
|
|
279
|
+
| **Search Input** | search | kbd badge (CTRL+F) | — |
|
|
280
|
+
| **Password Input** | lock | eye (toggle visibility) | Dots for hidden text |
|
|
281
|
+
| **Date Input** | calendar | — | Placeholder: dd/mm/aaaa |
|
|
282
|
+
| **Time Input** | clock | — | Placeholder: 00:00 |
|
|
283
|
+
| **URL Input** | link | — | — |
|
|
284
|
+
| **Email Input** | mail | clear X (on filled) | — |
|
|
285
|
+
| **Number Input** | — | +/- stepper buttons | Stepper is unique |
|
|
286
|
+
| **Upload Input** | upload | — | File list below, feedback states |
|
|
287
|
+
| **Option Input** | number badge | — | Numbered choices, selected state |
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 3. Tag (Badge)
|
|
292
|
+
|
|
293
|
+
> **Prioridade: 3** — Componente simples, valida tokens.
|
|
294
|
+
> **shadcn mapping:** `Badge`
|
|
295
|
+
|
|
296
|
+
### Sizes
|
|
297
|
+
|
|
298
|
+
| Size | Height | Padding | Font Size |
|
|
299
|
+
|---|---|---|---|
|
|
300
|
+
| **Tiny** | 20px | `px-[8px]` | 10px |
|
|
301
|
+
| **Mini** | 24px | `px-[10px]` | 12px |
|
|
302
|
+
|
|
303
|
+
### States
|
|
304
|
+
|
|
305
|
+
```yaml
|
|
306
|
+
default:
|
|
307
|
+
background: "rgba(255,255,255,0.1)"
|
|
308
|
+
color: "rgba(255,255,255,0.8)"
|
|
309
|
+
border-radius: "100px" # pill
|
|
310
|
+
font-family: "Inter"
|
|
311
|
+
font-weight: 500
|
|
312
|
+
|
|
313
|
+
hover:
|
|
314
|
+
background: "rgba(255,255,255,0.2)"
|
|
315
|
+
|
|
316
|
+
disabled:
|
|
317
|
+
opacity: 0.5
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Layout
|
|
321
|
+
|
|
322
|
+
- Optional close X button on right
|
|
323
|
+
- Text + optional X icon in flex row
|
|
324
|
+
|
|
325
|
+
### Token Mapping
|
|
326
|
+
|
|
327
|
+
| Figma Value | CSS Variable |
|
|
328
|
+
|---|---|
|
|
329
|
+
| `rgba(255,255,255,0.1)` bg | `--secondary` |
|
|
330
|
+
| `rgba(255,255,255,0.8)` text | `--secondary-foreground` at 80% |
|
|
331
|
+
| `100px` radius | `rounded-full` |
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 4. Checkbox
|
|
336
|
+
|
|
337
|
+
> **shadcn mapping:** `Checkbox`
|
|
338
|
+
|
|
339
|
+
### Sizes
|
|
340
|
+
|
|
341
|
+
| Size | Box Size | Icon Size |
|
|
342
|
+
|---|---|---|
|
|
343
|
+
| **Tiny** | 16px | 12px |
|
|
344
|
+
| **Mini** | 20px | 16px |
|
|
345
|
+
| **Small** | 24px | 20px |
|
|
346
|
+
|
|
347
|
+
### States
|
|
348
|
+
|
|
349
|
+
```yaml
|
|
350
|
+
unchecked:
|
|
351
|
+
background: "transparent"
|
|
352
|
+
border: "2px solid rgba(255,255,255,0.3)"
|
|
353
|
+
border-radius: "var(--radius/min, 4px)"
|
|
354
|
+
|
|
355
|
+
checked:
|
|
356
|
+
background: "rgba(255,255,255,0.9)"
|
|
357
|
+
border: "none"
|
|
358
|
+
icon-color: "var(--color/surface/950, #101010)" # dark checkmark
|
|
359
|
+
|
|
360
|
+
indeterminate:
|
|
361
|
+
background: "rgba(255,255,255,0.9)"
|
|
362
|
+
border: "none"
|
|
363
|
+
icon-color: "var(--color/surface/950, #101010)" # dark dash
|
|
364
|
+
|
|
365
|
+
hover:
|
|
366
|
+
border-color: "rgba(255,255,255,0.5)" # unchecked
|
|
367
|
+
background: "var(--color/surface/white)" # checked
|
|
368
|
+
|
|
369
|
+
focus:
|
|
370
|
+
ring: "2px solid white"
|
|
371
|
+
ring-offset: "-4px"
|
|
372
|
+
|
|
373
|
+
disabled:
|
|
374
|
+
opacity: 0.2
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Token Mapping
|
|
378
|
+
|
|
379
|
+
| Figma Value | CSS Variable |
|
|
380
|
+
|---|---|
|
|
381
|
+
| `rgba(255,255,255,0.3)` border | `--border` |
|
|
382
|
+
| `rgba(255,255,255,0.9)` checked bg | `--primary` (dark) |
|
|
383
|
+
| `#101010` checkmark | `--primary-foreground` (dark) |
|
|
384
|
+
| `4px` radius | `--radius-sm` |
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## 5. Radio Button
|
|
389
|
+
|
|
390
|
+
> **shadcn mapping:** `RadioGroup` + `RadioGroupItem`
|
|
391
|
+
|
|
392
|
+
### Sizes
|
|
393
|
+
|
|
394
|
+
| Size | Outer Size | Inner Dot Size |
|
|
395
|
+
|---|---|---|
|
|
396
|
+
| **Tiny** | 16px | 8px |
|
|
397
|
+
| **Mini** | 20px | 10px |
|
|
398
|
+
| **Small** | 24px | 12px |
|
|
399
|
+
|
|
400
|
+
### States
|
|
401
|
+
|
|
402
|
+
```yaml
|
|
403
|
+
unselected:
|
|
404
|
+
background: "transparent"
|
|
405
|
+
border: "2px solid rgba(255,255,255,0.3)"
|
|
406
|
+
border-radius: "50%"
|
|
407
|
+
|
|
408
|
+
selected:
|
|
409
|
+
background: "transparent"
|
|
410
|
+
border: "2px solid rgba(255,255,255,0.9)"
|
|
411
|
+
inner-dot: "rgba(255,255,255,0.9)"
|
|
412
|
+
|
|
413
|
+
hover:
|
|
414
|
+
border-color: "rgba(255,255,255,0.5)"
|
|
415
|
+
|
|
416
|
+
focus:
|
|
417
|
+
ring: "2px solid white"
|
|
418
|
+
ring-offset: "-4px"
|
|
419
|
+
ring-radius: "50%"
|
|
420
|
+
|
|
421
|
+
disabled:
|
|
422
|
+
opacity: 0.2
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## 6. Toggle (Switch)
|
|
428
|
+
|
|
429
|
+
> **shadcn mapping:** `Switch`
|
|
430
|
+
|
|
431
|
+
### Sizes
|
|
432
|
+
|
|
433
|
+
| Size | Track Width | Track Height | Thumb Size |
|
|
434
|
+
|---|---|---|---|
|
|
435
|
+
| **Tiny** | 28px | 16px | 12px |
|
|
436
|
+
| **Mini** | 36px | 20px | 16px |
|
|
437
|
+
| **Small** | 44px | 24px | 20px |
|
|
438
|
+
|
|
439
|
+
### States
|
|
440
|
+
|
|
441
|
+
```yaml
|
|
442
|
+
off:
|
|
443
|
+
track-background: "rgba(255,255,255,0.1)"
|
|
444
|
+
thumb-background: "rgba(255,255,255,0.5)"
|
|
445
|
+
border-radius: "100px"
|
|
446
|
+
|
|
447
|
+
on:
|
|
448
|
+
track-background: "rgba(255,255,255,0.9)"
|
|
449
|
+
thumb-background: "var(--color/surface/950, #101010)"
|
|
450
|
+
thumb-position: "right"
|
|
451
|
+
|
|
452
|
+
hover:
|
|
453
|
+
track-background: "rgba(255,255,255,0.2)" # off
|
|
454
|
+
# or full white for on
|
|
455
|
+
|
|
456
|
+
focus:
|
|
457
|
+
ring: "2px solid white"
|
|
458
|
+
|
|
459
|
+
disabled:
|
|
460
|
+
opacity: 0.2
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
### Token Mapping
|
|
464
|
+
|
|
465
|
+
| Figma Value | CSS Variable |
|
|
466
|
+
|---|---|
|
|
467
|
+
| `rgba(255,255,255,0.9)` on track | `--primary` (dark) |
|
|
468
|
+
| `#101010` on thumb | `--primary-foreground` (dark) |
|
|
469
|
+
| `rgba(255,255,255,0.1)` off track | `--input` |
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## 7. Icon Button
|
|
474
|
+
|
|
475
|
+
> **shadcn mapping:** `Button` variant=icon
|
|
476
|
+
|
|
477
|
+
### Sizes
|
|
478
|
+
|
|
479
|
+
| Size | Dimensions | Icon Size | Border Radius |
|
|
480
|
+
|---|---|---|---|
|
|
481
|
+
| **Tiny** | 24x24 | 16px | `100px` (pill) |
|
|
482
|
+
| **Mini** | 32x32 | 20px | `100px` |
|
|
483
|
+
| **Small** | 40x40 | 24px | `100px` |
|
|
484
|
+
| **Medium** | 48x48 | 32px | `100px` |
|
|
485
|
+
| **Large** | 56x56 | 32px | `100px` |
|
|
486
|
+
|
|
487
|
+
### Variants (same as Button)
|
|
488
|
+
|
|
489
|
+
- **Primary**: `bg-[rgba(255,255,255,0.9)]`, dark icon
|
|
490
|
+
- **Secondary**: `border-2 border-[rgba(255,255,255,0.3)]`, white icon
|
|
491
|
+
- **Tertiary**: `bg-[rgba(255,255,255,0.1)]`, white icon at 80%
|
|
492
|
+
- **Quarter** (Ghost): transparent, white icon at 80%
|
|
493
|
+
|
|
494
|
+
### States
|
|
495
|
+
|
|
496
|
+
Same pattern as Button: hover brightens, focus adds white ring, disabled opacity 0.2.
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
## 8. Link
|
|
501
|
+
|
|
502
|
+
> **shadcn mapping:** Custom (no direct shadcn equivalent, use `<a>` with utility classes)
|
|
503
|
+
|
|
504
|
+
### Sizes
|
|
505
|
+
|
|
506
|
+
| Size | Font Size | Icon Size |
|
|
507
|
+
|---|---|---|
|
|
508
|
+
| **Mini** | 12px | 16px |
|
|
509
|
+
| **Small** | 14px | 20px |
|
|
510
|
+
|
|
511
|
+
### States
|
|
512
|
+
|
|
513
|
+
```yaml
|
|
514
|
+
default:
|
|
515
|
+
color: "rgba(255,255,255,0.8)"
|
|
516
|
+
text-decoration: "underline"
|
|
517
|
+
font-family: "Inter"
|
|
518
|
+
font-weight: 500
|
|
519
|
+
|
|
520
|
+
hover:
|
|
521
|
+
color: "rgba(255,255,255,1)"
|
|
522
|
+
|
|
523
|
+
focus:
|
|
524
|
+
ring: "2px solid white"
|
|
525
|
+
ring-offset: "-2px"
|
|
526
|
+
|
|
527
|
+
pressed:
|
|
528
|
+
color: "rgba(255,255,255,0.6)"
|
|
529
|
+
|
|
530
|
+
disabled:
|
|
531
|
+
opacity: 0.3
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## 9. Avatar
|
|
537
|
+
|
|
538
|
+
> **shadcn mapping:** `Avatar` + `AvatarImage` + `AvatarFallback`
|
|
539
|
+
|
|
540
|
+
### Features
|
|
541
|
+
|
|
542
|
+
- Circular image with colored ring (brand colors)
|
|
543
|
+
- Avatar groups with overlapping layout
|
|
544
|
+
- Fallback: initials on colored background
|
|
545
|
+
|
|
546
|
+
### Sizes (estimated from screenshots)
|
|
547
|
+
|
|
548
|
+
| Size | Dimensions | Ring Width |
|
|
549
|
+
|---|---|---|
|
|
550
|
+
| **Small** | 32px | 2px |
|
|
551
|
+
| **Medium** | 40px | 2px |
|
|
552
|
+
| **Large** | 48px | 3px |
|
|
553
|
+
|
|
554
|
+
### Ring Colors (brand palette)
|
|
555
|
+
|
|
556
|
+
Various brand colors used: Atmos, Midori, Sahara, Khewra, Boreal, etc.
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
## 10. Tooltip
|
|
561
|
+
|
|
562
|
+
> **shadcn mapping:** `Tooltip` + `TooltipTrigger` + `TooltipContent`
|
|
563
|
+
|
|
564
|
+
### Spec
|
|
565
|
+
|
|
566
|
+
```yaml
|
|
567
|
+
background: "var(--color/surface/white, white)" # light tooltip on dark UI
|
|
568
|
+
color: "var(--color/surface/950, #101010)"
|
|
569
|
+
border-radius: "var(--radius/xs, 8px)"
|
|
570
|
+
padding: "4px 8px"
|
|
571
|
+
font-family: "Inter"
|
|
572
|
+
font-size: "12px"
|
|
573
|
+
font-weight: 500
|
|
574
|
+
# Optional keyboard shortcut badge inside
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
## 11. Popover
|
|
580
|
+
|
|
581
|
+
> **shadcn mapping:** `Popover` + `PopoverTrigger` + `PopoverContent`
|
|
582
|
+
|
|
583
|
+
### Spec
|
|
584
|
+
|
|
585
|
+
```yaml
|
|
586
|
+
background: "var(--color/surface/900, #202020)"
|
|
587
|
+
border: "1px solid rgba(255,255,255,0.1)"
|
|
588
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
589
|
+
padding: "16px"
|
|
590
|
+
box-shadow: "0 4px 24px rgba(0,0,0,0.3)"
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
### Variants
|
|
594
|
+
|
|
595
|
+
- **Default**: Simple content
|
|
596
|
+
- **With Form**: Contains inputs and action buttons
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## 12. Dropdown (Select)
|
|
601
|
+
|
|
602
|
+
> **shadcn mapping:** `Select` + `SelectTrigger` + `SelectContent` + `SelectItem`
|
|
603
|
+
|
|
604
|
+
### Trigger
|
|
605
|
+
|
|
606
|
+
Same structure as Text Input — same sizes, same states, with chevron-down icon on right and optional clear X.
|
|
607
|
+
|
|
608
|
+
### Content (dropdown menu)
|
|
609
|
+
|
|
610
|
+
```yaml
|
|
611
|
+
background: "var(--color/surface/900, #202020)"
|
|
612
|
+
border: "1px solid rgba(255,255,255,0.1)"
|
|
613
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
614
|
+
padding: "4px"
|
|
615
|
+
box-shadow: "0 4px 24px rgba(0,0,0,0.3)"
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## 13. Item Menu
|
|
621
|
+
|
|
622
|
+
> **shadcn mapping:** `DropdownMenuItem` / `CommandItem`
|
|
623
|
+
|
|
624
|
+
### Sizes
|
|
625
|
+
|
|
626
|
+
| Size | Height | Padding | Font Size |
|
|
627
|
+
|---|---|---|---|
|
|
628
|
+
| **Small** | 32px | `px-[12px]` | 14px |
|
|
629
|
+
| **Medium** | 40px | `px-[16px]` | 14px |
|
|
630
|
+
| **Large** | 48px | `px-[16px]` | 16px |
|
|
631
|
+
|
|
632
|
+
### States
|
|
633
|
+
|
|
634
|
+
```yaml
|
|
635
|
+
default:
|
|
636
|
+
background: "transparent"
|
|
637
|
+
color: "rgba(255,255,255,0.8)"
|
|
638
|
+
border-radius: "var(--radius/xs, 8px)"
|
|
639
|
+
|
|
640
|
+
hover:
|
|
641
|
+
background: "rgba(255,255,255,0.1)"
|
|
642
|
+
|
|
643
|
+
focus:
|
|
644
|
+
background: "rgba(255,255,255,0.1)"
|
|
645
|
+
ring: "2px solid white"
|
|
646
|
+
|
|
647
|
+
pressed:
|
|
648
|
+
background: "rgba(255,255,255,0.05)"
|
|
649
|
+
|
|
650
|
+
disabled:
|
|
651
|
+
opacity: 0.3
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### Layout
|
|
655
|
+
|
|
656
|
+
- Left: optional icon (24px)
|
|
657
|
+
- Center: label text
|
|
658
|
+
- Right: optional shortcut text or chevron-right icon
|
|
659
|
+
- Gap: 8px between elements
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
## 14. Textarea
|
|
664
|
+
|
|
665
|
+
> **shadcn mapping:** `Textarea`
|
|
666
|
+
|
|
667
|
+
### Sizes
|
|
668
|
+
|
|
669
|
+
| Size | Min Height | Padding | Font Size |
|
|
670
|
+
|---|---|---|---|
|
|
671
|
+
| **Tiny** | 64px | `p-[12px]` | 12px |
|
|
672
|
+
| **Mini** | 80px | `p-[14px]` | 14px |
|
|
673
|
+
| **Default** | 120px | `p-[16px]` | 16px |
|
|
674
|
+
|
|
675
|
+
### States
|
|
676
|
+
|
|
677
|
+
Same as Text Input: `rgba(255,255,255,0.1)` bg, focus ring, disabled opacity 0.5.
|
|
678
|
+
|
|
679
|
+
```yaml
|
|
680
|
+
default:
|
|
681
|
+
background: "rgba(255,255,255,0.1)"
|
|
682
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
683
|
+
font-family: "Inter"
|
|
684
|
+
font-weight: 500
|
|
685
|
+
resize: "vertical"
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
---
|
|
689
|
+
|
|
690
|
+
## 15. Dropdown Menu
|
|
691
|
+
|
|
692
|
+
> **shadcn mapping:** `DropdownMenu` + `DropdownMenuContent` + `DropdownMenuItem` + `DropdownMenuSeparator`
|
|
693
|
+
|
|
694
|
+
### Variants
|
|
695
|
+
|
|
696
|
+
- **Simple**: Plain text items
|
|
697
|
+
- **With Search**: Search input at top, filtered items below
|
|
698
|
+
- **Complete**: Sections with headers, icons, descriptions, and separators
|
|
699
|
+
|
|
700
|
+
### Container
|
|
701
|
+
|
|
702
|
+
```yaml
|
|
703
|
+
background: "var(--color/surface/900, #202020)"
|
|
704
|
+
border: "1px solid rgba(255,255,255,0.1)"
|
|
705
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
706
|
+
padding: "4px"
|
|
707
|
+
min-width: "200px"
|
|
708
|
+
box-shadow: "0 4px 24px rgba(0,0,0,0.3)"
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
---
|
|
712
|
+
|
|
713
|
+
## 16. Toasts
|
|
714
|
+
|
|
715
|
+
> **shadcn mapping:** `Sonner` (toast library)
|
|
716
|
+
> **Nota do usuario:** "Animations sao apenas visualizacao, nao esta funcionando direito, fazer do jeito certo"
|
|
717
|
+
|
|
718
|
+
### Variants
|
|
719
|
+
|
|
720
|
+
| Type | Icon Color | Icon | Token |
|
|
721
|
+
|---|---|---|---|
|
|
722
|
+
| **Success** | `--success` (Midori #3A913F) | Checkmark circle | `oklch(0.585 0.145 144.414)` |
|
|
723
|
+
| **Error** | `--destructive` (Khewra #DC625E) | X circle | `oklch(0.646 0.154 24.222)` |
|
|
724
|
+
| **Warning** | `--warning` (Sahara #D6A461) | Warning triangle | `oklch(0.751 0.103 73.232)` |
|
|
725
|
+
| **Info** | `--info` (Atmos #77C5D5) | Info circle | `oklch(0.779 0.08 212.201)` |
|
|
726
|
+
|
|
727
|
+
### Spec
|
|
728
|
+
|
|
729
|
+
```yaml
|
|
730
|
+
background: "var(--color/surface/900, #202020)"
|
|
731
|
+
border: "1px solid rgba(255,255,255,0.1)"
|
|
732
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
733
|
+
padding: "16px"
|
|
734
|
+
color: "rgba(255,255,255,0.9)"
|
|
735
|
+
font-family: "Inter"
|
|
736
|
+
font-size: "14px"
|
|
737
|
+
# Action buttons: "Confirmar" / "Desfazer" text links
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
### Layout
|
|
741
|
+
|
|
742
|
+
- Left: colored status icon
|
|
743
|
+
- Center: title (bold) + description
|
|
744
|
+
- Right: optional action buttons (text links)
|
|
745
|
+
|
|
746
|
+
---
|
|
747
|
+
|
|
748
|
+
## 17. Basic Dialog
|
|
749
|
+
|
|
750
|
+
> **shadcn mapping:** `Dialog` + `DialogContent` + `DialogHeader` + `DialogFooter`
|
|
751
|
+
|
|
752
|
+
### Spec
|
|
753
|
+
|
|
754
|
+
```yaml
|
|
755
|
+
overlay:
|
|
756
|
+
background: "rgba(0,0,0,0.5)"
|
|
757
|
+
|
|
758
|
+
content:
|
|
759
|
+
background: "var(--color/surface/900, #202020)"
|
|
760
|
+
border: "1px solid rgba(255,255,255,0.1)"
|
|
761
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
762
|
+
padding: "24px"
|
|
763
|
+
max-width: "400px"
|
|
764
|
+
box-shadow: "0 8px 32px rgba(0,0,0,0.5)"
|
|
765
|
+
|
|
766
|
+
header:
|
|
767
|
+
icon: "warning triangle (colored)"
|
|
768
|
+
title: "Inter Bold, 18px, white"
|
|
769
|
+
description: "Inter Regular, 14px, rgba(255,255,255,0.6)"
|
|
770
|
+
|
|
771
|
+
body:
|
|
772
|
+
# Optional input field
|
|
773
|
+
margin-top: "16px"
|
|
774
|
+
|
|
775
|
+
footer:
|
|
776
|
+
display: "flex"
|
|
777
|
+
gap: "8px"
|
|
778
|
+
justify-content: "flex-end"
|
|
779
|
+
margin-top: "24px"
|
|
780
|
+
# Primary + Secondary buttons
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
## 18. Input Feedback
|
|
786
|
+
|
|
787
|
+
> **shadcn mapping:** Custom validation states on Input
|
|
788
|
+
|
|
789
|
+
### Feedback Types
|
|
790
|
+
|
|
791
|
+
| Type | Border Color | Icon Color | Token |
|
|
792
|
+
|---|---|---|---|
|
|
793
|
+
| **User Error** | `--destructive` (Khewra) | Khewra | Red border + error icon |
|
|
794
|
+
| **System Error** | `--warning` (Sahara) | Sahara | Orange border + warning icon |
|
|
795
|
+
| **Success** | `--success` (Midori) | Midori | Green border + check icon |
|
|
796
|
+
|
|
797
|
+
### Spec
|
|
798
|
+
|
|
799
|
+
```yaml
|
|
800
|
+
error:
|
|
801
|
+
border: "2px solid var(--destructive)"
|
|
802
|
+
# Error message below input
|
|
803
|
+
message-color: "var(--destructive)"
|
|
804
|
+
message-font-size: "12px"
|
|
805
|
+
|
|
806
|
+
warning:
|
|
807
|
+
border: "2px solid var(--warning)"
|
|
808
|
+
message-color: "var(--warning)"
|
|
809
|
+
|
|
810
|
+
success:
|
|
811
|
+
border: "2px solid var(--success)"
|
|
812
|
+
message-color: "var(--success)"
|
|
813
|
+
|
|
814
|
+
multiple:
|
|
815
|
+
# Multiple validation messages stacked below input
|
|
816
|
+
# Each with its own icon and color
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
---
|
|
820
|
+
|
|
821
|
+
## 19. Notification Bar
|
|
822
|
+
|
|
823
|
+
> **shadcn mapping:** Custom component (Card-based)
|
|
824
|
+
|
|
825
|
+
### Spec
|
|
826
|
+
|
|
827
|
+
```yaml
|
|
828
|
+
background: "var(--color/surface/900, #202020)"
|
|
829
|
+
border: "1px solid rgba(255,255,255,0.1)"
|
|
830
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
831
|
+
padding: "16px"
|
|
832
|
+
# Layout: image left, content center, actions right
|
|
833
|
+
# Content: title (bold), time (muted), description
|
|
834
|
+
# Actions: Accept (primary button) / Decline (ghost button)
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
---
|
|
838
|
+
|
|
839
|
+
## 20. Chat Notification
|
|
840
|
+
|
|
841
|
+
> **shadcn mapping:** Custom component
|
|
842
|
+
|
|
843
|
+
### Spec
|
|
844
|
+
|
|
845
|
+
```yaml
|
|
846
|
+
background: "var(--color/surface/900, #202020)"
|
|
847
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
848
|
+
padding: "12px 16px"
|
|
849
|
+
# Layout: avatar left, content center, badge right
|
|
850
|
+
# Content: name (bold white), message (muted), time
|
|
851
|
+
# Badge: unread count (white bg, dark text, circular)
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
---
|
|
855
|
+
|
|
856
|
+
## 21. Comment Area
|
|
857
|
+
|
|
858
|
+
> **shadcn mapping:** Custom (Textarea + action buttons)
|
|
859
|
+
|
|
860
|
+
### Spec
|
|
861
|
+
|
|
862
|
+
```yaml
|
|
863
|
+
textarea:
|
|
864
|
+
# Same as Textarea component base
|
|
865
|
+
background: "rgba(255,255,255,0.1)"
|
|
866
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
867
|
+
|
|
868
|
+
actions:
|
|
869
|
+
# Bottom bar with + (attach), star (favorite), send icons
|
|
870
|
+
# Icon buttons: ghost variant (quarter)
|
|
871
|
+
padding: "8px"
|
|
872
|
+
border-top: "1px solid rgba(255,255,255,0.1)"
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
---
|
|
876
|
+
|
|
877
|
+
## 22. Prompt Area
|
|
878
|
+
|
|
879
|
+
> **shadcn mapping:** Custom (AI prompt input)
|
|
880
|
+
> **Nota do usuario:** "Incompleto, precisa ser planejado"
|
|
881
|
+
|
|
882
|
+
### Spec (partial)
|
|
883
|
+
|
|
884
|
+
```yaml
|
|
885
|
+
container:
|
|
886
|
+
background: "rgba(255,255,255,0.1)"
|
|
887
|
+
border-radius: "var(--radius/sm, 12px)"
|
|
888
|
+
padding: "12px 16px"
|
|
889
|
+
|
|
890
|
+
input:
|
|
891
|
+
# Textarea-like input area
|
|
892
|
+
font-family: "Inter"
|
|
893
|
+
placeholder: "AI prompt text"
|
|
894
|
+
|
|
895
|
+
actions:
|
|
896
|
+
# Bottom: + (attach), mic (voice), send icon button
|
|
897
|
+
# Model selector dropdown
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 23. Profile Header
|
|
903
|
+
|
|
904
|
+
> **shadcn mapping:** Custom component
|
|
905
|
+
|
|
906
|
+
### Variants
|
|
907
|
+
|
|
908
|
+
- **Default**: Avatar + name + role
|
|
909
|
+
- **With Badges**: Avatar + name + role + badge tags
|
|
910
|
+
|
|
911
|
+
---
|
|
912
|
+
|
|
913
|
+
## Componentes Prontos para Adaptacao
|
|
914
|
+
|
|
915
|
+
### Prioridade Alta (core — adaptar primeiro)
|
|
916
|
+
|
|
917
|
+
| # | Component | shadcn Base | Complexity |
|
|
918
|
+
|---|---|---|---|
|
|
919
|
+
| 1 | **Button** | `Button` | Alta — 4 variants, 4 sizes, 5 states |
|
|
920
|
+
| 2 | **Text Input** | `Input` | Media — 5 sizes, 6 states, 10 sub-types |
|
|
921
|
+
| 3 | **Tag** | `Badge` | Baixa — 2 sizes, pill shape |
|
|
922
|
+
| 4 | **Checkbox** | `Checkbox` | Baixa — 3 sizes, 3 check states |
|
|
923
|
+
| 5 | **Radio Button** | `RadioGroup` | Baixa — 3 sizes |
|
|
924
|
+
| 6 | **Toggle** | `Switch` | Baixa — 3 sizes |
|
|
925
|
+
|
|
926
|
+
### Prioridade Media (compostos)
|
|
927
|
+
|
|
928
|
+
| # | Component | shadcn Base | Complexity |
|
|
929
|
+
|---|---|---|---|
|
|
930
|
+
| 7 | **Icon Button** | `Button` variant=icon | Media — reusa Button |
|
|
931
|
+
| 8 | **Dropdown** | `Select` | Media — trigger = Input |
|
|
932
|
+
| 9 | **Item Menu** | `DropdownMenuItem` | Baixa |
|
|
933
|
+
| 10 | **Textarea** | `Textarea` | Baixa — segue Input |
|
|
934
|
+
| 11 | **Dropdown Menu** | `DropdownMenu` | Media — 3 variants |
|
|
935
|
+
| 12 | **Tooltip** | `Tooltip` | Baixa |
|
|
936
|
+
| 13 | **Popover** | `Popover` | Baixa |
|
|
937
|
+
|
|
938
|
+
### Prioridade Baixa (feedback + compostos complexos)
|
|
939
|
+
|
|
940
|
+
| # | Component | shadcn Base | Complexity |
|
|
941
|
+
|---|---|---|---|
|
|
942
|
+
| 14 | **Toasts** | `Sonner` | Media — 4 types |
|
|
943
|
+
| 15 | **Basic Dialog** | `Dialog` | Media |
|
|
944
|
+
| 16 | **Input Feedback** | Custom on Input | Baixa — adds borders |
|
|
945
|
+
| 17 | **Link** | Custom `<a>` | Baixa |
|
|
946
|
+
| 18 | **Avatar** | `Avatar` | Baixa |
|
|
947
|
+
|
|
948
|
+
### Fora de Escopo (precisa planejamento)
|
|
949
|
+
|
|
950
|
+
| # | Component | Motivo |
|
|
951
|
+
|---|---|---|
|
|
952
|
+
| 19 | **Notification Bar** | Componente custom, sem shadcn base |
|
|
953
|
+
| 20 | **Chat Notification** | Componente custom, sem shadcn base |
|
|
954
|
+
| 21 | **Comment Area** | Componente composto (textarea + actions) |
|
|
955
|
+
| 22 | **Prompt Area** | Incompleto no Figma, precisa ser planejado |
|
|
956
|
+
| 23 | **Profile Header** | Componente custom layout |
|
|
957
|
+
|
|
958
|
+
---
|
|
959
|
+
|
|
960
|
+
## Validacao
|
|
961
|
+
|
|
962
|
+
- [x] Button especificado (4 variants, 4 sizes, 5 states)
|
|
963
|
+
- [x] Input especificado (5 sizes, 6 states, 10 sub-types)
|
|
964
|
+
- [x] Todos os estados basicos cobertos (default, hover, focus, pressed, disabled)
|
|
965
|
+
- [x] Valores mapeados para tokens existentes da Phase 1
|
|
966
|
+
- [x] Screenshots confirmam CSS do Figma Dev Mode (validacao cruzada OK)
|
|
967
|
+
|
|
968
|
+
---
|
|
969
|
+
|
|
970
|
+
*Gerado por: Foundations Pipeline — Phase 2 (f2-ingest-base-components)*
|
|
971
|
+
*Fonte: Figma Dev Mode + components-ref/ screenshots + Figma MCP design context*
|
|
972
|
+
*Data: 2026-02-21*
|