@codyswann/lisa 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +867 -0
- package/all/copy-overwrite/.claude/README.md +205 -0
- package/all/copy-overwrite/.claude/agents/agent-architect.md +311 -0
- package/all/copy-overwrite/.claude/agents/codebase-analyzer.md +146 -0
- package/all/copy-overwrite/.claude/agents/codebase-locator.md +125 -0
- package/all/copy-overwrite/.claude/agents/codebase-pattern-finder.md +237 -0
- package/all/copy-overwrite/.claude/agents/git-history-analyzer.md +183 -0
- package/all/copy-overwrite/.claude/agents/hooks-expert.md +74 -0
- package/all/copy-overwrite/.claude/agents/skill-evaluator.md +246 -0
- package/all/copy-overwrite/.claude/agents/slash-command-architect.md +87 -0
- package/all/copy-overwrite/.claude/agents/web-search-researcher.md +112 -0
- package/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +8 -0
- package/all/copy-overwrite/.claude/commands/git/commit.md +44 -0
- package/all/copy-overwrite/.claude/commands/git/prune.md +34 -0
- package/all/copy-overwrite/.claude/commands/git/submit-pr.md +50 -0
- package/all/copy-overwrite/.claude/commands/jira/create.md +50 -0
- package/all/copy-overwrite/.claude/commands/jira/verify.md +34 -0
- package/all/copy-overwrite/.claude/commands/project/archive.md +8 -0
- package/all/copy-overwrite/.claude/commands/project/bootstrap.md +49 -0
- package/all/copy-overwrite/.claude/commands/project/complete-task.md +7 -0
- package/all/copy-overwrite/.claude/commands/project/debrief.md +65 -0
- package/all/copy-overwrite/.claude/commands/project/execute.md +94 -0
- package/all/copy-overwrite/.claude/commands/project/implement.md +42 -0
- package/all/copy-overwrite/.claude/commands/project/local-code-review.md +88 -0
- package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +74 -0
- package/all/copy-overwrite/.claude/commands/project/plan.md +314 -0
- package/all/copy-overwrite/.claude/commands/project/research.md +248 -0
- package/all/copy-overwrite/.claude/commands/project/review.md +63 -0
- package/all/copy-overwrite/.claude/commands/project/setup.md +19 -0
- package/all/copy-overwrite/.claude/commands/project/verify.md +38 -0
- package/all/copy-overwrite/.claude/commands/pull-request/review.md +12 -0
- package/all/copy-overwrite/.claude/commands/rules/format-md.md +72 -0
- package/all/copy-overwrite/.claude/commands/sonarqube/check.md +6 -0
- package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +3 -0
- package/all/copy-overwrite/.claude/hooks/README.md +301 -0
- package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +181 -0
- package/all/copy-overwrite/.claude/settings.json +41 -0
- package/all/copy-overwrite/.claude/settings.local.json.example +14 -0
- package/all/copy-overwrite/.claude/skills/coding-philosophy/SKILL.md +405 -0
- package/all/copy-overwrite/.claude/skills/coding-philosophy/references/function-structure.md +416 -0
- package/all/copy-overwrite/.claude/skills/coding-philosophy/references/immutable-patterns.md +316 -0
- package/all/copy-overwrite/.claude/skills/prompt-complexity-scorer/SKILL.md +118 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/SKILL.md +210 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/all/copy-overwrite/CLAUDE.md +77 -0
- package/all/copy-overwrite/HUMAN.md +17 -0
- package/all/copy-overwrite/specs/.keep +0 -0
- package/all/create-only/PROJECT_RULES.md +0 -0
- package/cdk/merge/package.json +20 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +107 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/prompts.d.ts +45 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +58 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/core/config.d.ts +73 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +36 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lisa.d.ts +81 -0
- package/dist/core/lisa.d.ts.map +1 -0
- package/dist/core/lisa.js +459 -0
- package/dist/core/lisa.js.map +1 -0
- package/dist/core/manifest.d.ts +58 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +104 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/detection/detector.interface.d.ts +15 -0
- package/dist/detection/detector.interface.d.ts.map +1 -0
- package/dist/detection/detector.interface.js +2 -0
- package/dist/detection/detector.interface.js.map +1 -0
- package/dist/detection/detectors/cdk.d.ts +10 -0
- package/dist/detection/detectors/cdk.d.ts.map +1 -0
- package/dist/detection/detectors/cdk.js +34 -0
- package/dist/detection/detectors/cdk.js.map +1 -0
- package/dist/detection/detectors/expo.d.ts +10 -0
- package/dist/detection/detectors/expo.d.ts.map +1 -0
- package/dist/detection/detectors/expo.js +30 -0
- package/dist/detection/detectors/expo.js.map +1 -0
- package/dist/detection/detectors/nestjs.d.ts +10 -0
- package/dist/detection/detectors/nestjs.d.ts.map +1 -0
- package/dist/detection/detectors/nestjs.js +34 -0
- package/dist/detection/detectors/nestjs.js.map +1 -0
- package/dist/detection/detectors/npm-package.d.ts +13 -0
- package/dist/detection/detectors/npm-package.d.ts.map +1 -0
- package/dist/detection/detectors/npm-package.js +30 -0
- package/dist/detection/detectors/npm-package.js.map +1 -0
- package/dist/detection/detectors/typescript.d.ts +10 -0
- package/dist/detection/detectors/typescript.d.ts.map +1 -0
- package/dist/detection/detectors/typescript.js +25 -0
- package/dist/detection/detectors/typescript.js.map +1 -0
- package/dist/detection/index.d.ts +24 -0
- package/dist/detection/index.d.ts.map +1 -0
- package/dist/detection/index.js +57 -0
- package/dist/detection/index.js.map +1 -0
- package/dist/errors/index.d.ts +69 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +110 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/console-logger.d.ts +12 -0
- package/dist/logging/console-logger.d.ts.map +1 -0
- package/dist/logging/console-logger.js +22 -0
- package/dist/logging/console-logger.js.map +1 -0
- package/dist/logging/index.d.ts +4 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.interface.d.ts +20 -0
- package/dist/logging/logger.interface.d.ts.map +1 -0
- package/dist/logging/logger.interface.js +2 -0
- package/dist/logging/logger.interface.js.map +1 -0
- package/dist/logging/silent-logger.d.ts +12 -0
- package/dist/logging/silent-logger.d.ts.map +1 -0
- package/dist/logging/silent-logger.js +21 -0
- package/dist/logging/silent-logger.js.map +1 -0
- package/dist/strategies/copy-contents.d.ts +14 -0
- package/dist/strategies/copy-contents.d.ts.map +1 -0
- package/dist/strategies/copy-contents.js +69 -0
- package/dist/strategies/copy-contents.js.map +1 -0
- package/dist/strategies/copy-overwrite.d.ts +14 -0
- package/dist/strategies/copy-overwrite.d.ts.map +1 -0
- package/dist/strategies/copy-overwrite.js +47 -0
- package/dist/strategies/copy-overwrite.js.map +1 -0
- package/dist/strategies/create-only.d.ts +13 -0
- package/dist/strategies/create-only.d.ts.map +1 -0
- package/dist/strategies/create-only.js +30 -0
- package/dist/strategies/create-only.js.map +1 -0
- package/dist/strategies/index.d.ts +31 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/index.js +52 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/strategies/merge.d.ts +13 -0
- package/dist/strategies/merge.d.ts.map +1 -0
- package/dist/strategies/merge.js +60 -0
- package/dist/strategies/merge.js.map +1 -0
- package/dist/strategies/strategy.interface.d.ts +31 -0
- package/dist/strategies/strategy.interface.d.ts.map +1 -0
- package/dist/strategies/strategy.interface.js +2 -0
- package/dist/strategies/strategy.interface.js.map +1 -0
- package/dist/transaction/backup.d.ts +38 -0
- package/dist/transaction/backup.d.ts.map +1 -0
- package/dist/transaction/backup.js +97 -0
- package/dist/transaction/backup.js.map +1 -0
- package/dist/transaction/index.d.ts +4 -0
- package/dist/transaction/index.d.ts.map +1 -0
- package/dist/transaction/index.js +3 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction/transaction.d.ts +34 -0
- package/dist/transaction/transaction.d.ts.map +1 -0
- package/dist/transaction/transaction.js +68 -0
- package/dist/transaction/transaction.js.map +1 -0
- package/dist/utils/file-operations.d.ts +29 -0
- package/dist/utils/file-operations.d.ts.map +1 -0
- package/dist/utils/file-operations.js +84 -0
- package/dist/utils/file-operations.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-utils.d.ts +22 -0
- package/dist/utils/json-utils.d.ts.map +1 -0
- package/dist/utils/json-utils.js +57 -0
- package/dist/utils/json-utils.js.map +1 -0
- package/dist/utils/path-utils.d.ts +21 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +35 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/eslint-plugin-code-organization/README.md +149 -0
- package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
- package/eslint-plugin-code-organization/index.js +23 -0
- package/eslint-plugin-code-organization/package.json +10 -0
- package/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
- package/expo/copy-overwrite/.claude/skills/apollo-client/SKILL.md +238 -0
- package/expo/copy-overwrite/.claude/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +327 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/SKILL.md +299 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/examples.md +749 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/patterns.md +318 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +198 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +207 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +414 -0
- package/expo/copy-overwrite/.claude/skills/directory-structure/SKILL.md +202 -0
- package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +443 -0
- package/expo/copy-overwrite/.claude/skills/expo-env-config/SKILL.md +309 -0
- package/expo/copy-overwrite/.claude/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/SKILL.md +431 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +169 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/SKILL.md +411 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +354 -0
- package/expo/copy-overwrite/.claude/skills/local-state/SKILL.md +362 -0
- package/expo/copy-overwrite/.claude/skills/local-state/references/async-storage.md +505 -0
- package/expo/copy-overwrite/.claude/skills/local-state/references/persistence-patterns.md +711 -0
- package/expo/copy-overwrite/.claude/skills/local-state/references/reactive-variables.md +446 -0
- package/expo/copy-overwrite/.claude/skills/playwright-selectors/SKILL.md +223 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/SKILL.md +319 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/async-patterns.md +420 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/expo-router-testing.md +556 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/mocking-patterns.md +590 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/query-priority.md +291 -0
- package/expo/copy-overwrite/.easignore.extra +2 -0
- package/expo/copy-overwrite/.mcp.json +33 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/README.md +234 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +84 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +196 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +289 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +32 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/package.json +10 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +230 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +91 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +178 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +238 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +260 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +29 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/package.json +10 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +51 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +55 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-inline-styles.js +73 -0
- package/expo/copy-overwrite/eslint.config.mjs +560 -0
- package/expo/copy-overwrite/lighthouserc.js +194 -0
- package/expo/create-only/lighthouserc-config.json +28 -0
- package/expo/merge/package.json +132 -0
- package/lisa.sh +35 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/SKILL.md +176 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/project-patterns.md +483 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +536 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/SKILL.md +275 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/nestjs/merge/package.json +75 -0
- package/package.json +124 -0
- package/typescript/copy-contents/.husky/commit-msg +91 -0
- package/typescript/copy-contents/.husky/pre-commit +96 -0
- package/typescript/copy-contents/.husky/pre-push +211 -0
- package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +74 -0
- package/typescript/copy-overwrite/.claude/hooks/install_pkgs.sh +59 -0
- package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +103 -0
- package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +388 -0
- package/typescript/copy-overwrite/.github/README.md +455 -0
- package/typescript/copy-overwrite/.github/dependabot.yml +40 -0
- package/typescript/copy-overwrite/.github/k6/BROWSER_TESTING_NOTE.md +129 -0
- package/typescript/copy-overwrite/.github/k6/INTEGRATION_GUIDE.md +354 -0
- package/typescript/copy-overwrite/.github/k6/README.md +386 -0
- package/typescript/copy-overwrite/.github/k6/SCENARIO_SELECTION_GUIDE.md +264 -0
- package/typescript/copy-overwrite/.github/k6/examples/customer-deploy-integration.yml +115 -0
- package/typescript/copy-overwrite/.github/k6/examples/data-driven-test.js +268 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/load.js +142 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/load.json +27 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/smoke.js +26 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/smoke.json +20 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/soak.js +244 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/soak.json +29 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/spike.js +180 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/spike.json +32 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/stress.js +206 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/stress.json +38 -0
- package/typescript/copy-overwrite/.github/k6/scripts/api-test.js +452 -0
- package/typescript/copy-overwrite/.github/k6/scripts/default-test.js +185 -0
- package/typescript/copy-overwrite/.github/k6/thresholds/normal.json +30 -0
- package/typescript/copy-overwrite/.github/k6/thresholds/relaxed.json +21 -0
- package/typescript/copy-overwrite/.github/k6/thresholds/strict.json +29 -0
- package/typescript/copy-overwrite/.github/workflows/build.yml +72 -0
- package/typescript/copy-overwrite/.github/workflows/ci.yml +49 -0
- package/typescript/copy-overwrite/.github/workflows/claude.yml +51 -0
- package/typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml +113 -0
- package/typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml +195 -0
- package/typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml +267 -0
- package/typescript/copy-overwrite/.github/workflows/deploy.yml +228 -0
- package/typescript/copy-overwrite/.github/workflows/k6-load-test-README.md +230 -0
- package/typescript/copy-overwrite/.github/workflows/lighthouse.yml +68 -0
- package/typescript/copy-overwrite/.github/workflows/load-test.yml +282 -0
- package/typescript/copy-overwrite/.github/workflows/quality.yml +1737 -0
- package/typescript/copy-overwrite/.github/workflows/release.yml +1599 -0
- package/typescript/copy-overwrite/.gitleaksignore +28 -0
- package/typescript/copy-overwrite/.nvmrc +1 -0
- package/typescript/copy-overwrite/.prettierignore +23 -0
- package/typescript/copy-overwrite/.prettierrc.json +22 -0
- package/typescript/copy-overwrite/.versionrc +42 -0
- package/typescript/copy-overwrite/.yamllint +20 -0
- package/typescript/copy-overwrite/commitlint.config.js +11 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/README.md +149 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +23 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/package.json +10 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
- package/typescript/copy-overwrite/eslint.config.mjs +390 -0
- package/typescript/copy-overwrite/eslint.ignore.config.json +57 -0
- package/typescript/copy-overwrite/eslint.thresholds.config.json +5 -0
- package/typescript/github-rulesets/base.json +106 -0
- package/typescript/merge/.claude/settings.json +28 -0
- package/typescript/merge/package.json +71 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# Color Tokens Reference
|
|
2
|
+
|
|
3
|
+
This reference provides the complete semantic color token system for Gluestack UI v3.
|
|
4
|
+
|
|
5
|
+
## Token Scale
|
|
6
|
+
|
|
7
|
+
All color tokens follow the 0-950 scale:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
0 → 50 → 100 → 200 → 300 → 400 → 500 → 600 → 700 → 800 → 900 → 950
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Lower values are lighter, higher values are darker.
|
|
14
|
+
|
|
15
|
+
## Semantic Color Categories
|
|
16
|
+
|
|
17
|
+
### Primary (Brand Identity)
|
|
18
|
+
|
|
19
|
+
Use for main brand elements, key interactive components, and primary actions.
|
|
20
|
+
|
|
21
|
+
| Token | Usage |
|
|
22
|
+
| ------------- | -------------------------------- |
|
|
23
|
+
| `primary-0` | Lightest tint, subtle highlights |
|
|
24
|
+
| `primary-50` | Very light backgrounds |
|
|
25
|
+
| `primary-100` | Light hover states |
|
|
26
|
+
| `primary-200` | Light borders |
|
|
27
|
+
| `primary-300` | Muted elements |
|
|
28
|
+
| `primary-400` | Subdued text/icons |
|
|
29
|
+
| `primary-500` | **Default** - buttons, links |
|
|
30
|
+
| `primary-600` | Hover states for primary-500 |
|
|
31
|
+
| `primary-700` | Active/pressed states |
|
|
32
|
+
| `primary-800` | Dark variant |
|
|
33
|
+
| `primary-900` | Very dark variant |
|
|
34
|
+
| `primary-950` | Darkest shade |
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
<Button className="bg-primary-500 hover:bg-primary-600 active:bg-primary-700">
|
|
38
|
+
<ButtonText className="text-typography-0">Primary Action</ButtonText>
|
|
39
|
+
</Button>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Secondary (Supporting Elements)
|
|
43
|
+
|
|
44
|
+
Use for secondary actions, alternative buttons, and supporting UI.
|
|
45
|
+
|
|
46
|
+
| Token | Common Usage |
|
|
47
|
+
| --------------- | ----------------- |
|
|
48
|
+
| `secondary-100` | Light backgrounds |
|
|
49
|
+
| `secondary-200` | Borders, dividers |
|
|
50
|
+
| `secondary-500` | Secondary buttons |
|
|
51
|
+
| `secondary-600` | Hover states |
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
<Button className="bg-secondary-500">
|
|
55
|
+
<ButtonText>Secondary Action</ButtonText>
|
|
56
|
+
</Button>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Tertiary (Accent)
|
|
60
|
+
|
|
61
|
+
Use for tertiary accents and warm tones.
|
|
62
|
+
|
|
63
|
+
| Token | Common Usage |
|
|
64
|
+
| -------------- | ---------------- |
|
|
65
|
+
| `tertiary-400` | Accents |
|
|
66
|
+
| `tertiary-500` | Tertiary buttons |
|
|
67
|
+
|
|
68
|
+
### Error (Destructive/Validation)
|
|
69
|
+
|
|
70
|
+
Use for errors, validation failures, and destructive actions.
|
|
71
|
+
|
|
72
|
+
| Token | Common Usage |
|
|
73
|
+
| ----------- | ------------------------------- |
|
|
74
|
+
| `error-50` | Light error backgrounds |
|
|
75
|
+
| `error-100` | Error container backgrounds |
|
|
76
|
+
| `error-400` | Error icons (light mode) |
|
|
77
|
+
| `error-500` | **Default** - error text, icons |
|
|
78
|
+
| `error-600` | Error text (dark mode) |
|
|
79
|
+
| `error-700` | Dark error elements |
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
// Error message
|
|
83
|
+
<Text className="text-error-500">This field is required</Text>
|
|
84
|
+
|
|
85
|
+
// Error background
|
|
86
|
+
<Box className="bg-error-50 border border-error-200 p-4">
|
|
87
|
+
<Text className="text-error-700">Error occurred</Text>
|
|
88
|
+
</Box>
|
|
89
|
+
|
|
90
|
+
// Destructive button
|
|
91
|
+
<Button action="negative">
|
|
92
|
+
<ButtonText>Delete</ButtonText>
|
|
93
|
+
</Button>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Success (Positive/Confirmation)
|
|
97
|
+
|
|
98
|
+
Use for success states, confirmations, and positive feedback.
|
|
99
|
+
|
|
100
|
+
| Token | Common Usage |
|
|
101
|
+
| ------------- | --------------------------------- |
|
|
102
|
+
| `success-50` | Light success backgrounds |
|
|
103
|
+
| `success-100` | Success container backgrounds |
|
|
104
|
+
| `success-500` | **Default** - success text, icons |
|
|
105
|
+
| `success-600` | Success text emphasis |
|
|
106
|
+
| `success-700` | Dark success elements |
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
// Success message
|
|
110
|
+
<Text className="text-success-600">Changes saved successfully</Text>
|
|
111
|
+
|
|
112
|
+
// Success background
|
|
113
|
+
<Box className="bg-success-50 border border-success-200 p-4">
|
|
114
|
+
<Text className="text-success-700">Operation completed</Text>
|
|
115
|
+
</Box>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Warning (Caution/Attention)
|
|
119
|
+
|
|
120
|
+
Use for warnings, caution states, and attention-required elements.
|
|
121
|
+
|
|
122
|
+
| Token | Common Usage |
|
|
123
|
+
| ------------- | ----------------------------- |
|
|
124
|
+
| `warning-50` | Light warning backgrounds |
|
|
125
|
+
| `warning-100` | Warning container backgrounds |
|
|
126
|
+
| `warning-400` | Warning icons |
|
|
127
|
+
| `warning-500` | **Default** - warning text |
|
|
128
|
+
| `warning-600` | Warning text emphasis |
|
|
129
|
+
| `warning-700` | Dark warning elements |
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
// Warning message
|
|
133
|
+
<Text className="text-warning-600">Please review before proceeding</Text>
|
|
134
|
+
|
|
135
|
+
// Warning background
|
|
136
|
+
<Box className="bg-warning-50 border border-warning-300 p-4">
|
|
137
|
+
<Text className="text-warning-700">Action required</Text>
|
|
138
|
+
</Box>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Info (Informational)
|
|
142
|
+
|
|
143
|
+
Use for informational content, tips, and neutral highlights.
|
|
144
|
+
|
|
145
|
+
| Token | Common Usage |
|
|
146
|
+
| ---------- | ------------------------------ |
|
|
147
|
+
| `info-50` | Light info backgrounds |
|
|
148
|
+
| `info-100` | Info container backgrounds |
|
|
149
|
+
| `info-500` | **Default** - info text, icons |
|
|
150
|
+
| `info-600` | Info text emphasis |
|
|
151
|
+
| `info-700` | Dark info elements |
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
// Info message
|
|
155
|
+
<Text className="text-info-600">Tip: You can also use keyboard shortcuts</Text>
|
|
156
|
+
|
|
157
|
+
// Info background
|
|
158
|
+
<Box className="bg-info-50 border border-info-200 p-4">
|
|
159
|
+
<Text className="text-info-700">Learn more about this feature</Text>
|
|
160
|
+
</Box>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Typography (Text Colors)
|
|
164
|
+
|
|
165
|
+
Use for all text content. The scale provides contrast levels.
|
|
166
|
+
|
|
167
|
+
| Token | Usage |
|
|
168
|
+
| ---------------- | ------------------------------------ |
|
|
169
|
+
| `typography-0` | White text (on dark backgrounds) |
|
|
170
|
+
| `typography-50` | Very light text |
|
|
171
|
+
| `typography-100` | Light placeholder text |
|
|
172
|
+
| `typography-200` | Disabled text |
|
|
173
|
+
| `typography-300` | Tertiary text |
|
|
174
|
+
| `typography-400` | Quaternary text |
|
|
175
|
+
| `typography-500` | Secondary text, captions |
|
|
176
|
+
| `typography-600` | Muted body text |
|
|
177
|
+
| `typography-700` | Body text |
|
|
178
|
+
| `typography-800` | Emphasized text |
|
|
179
|
+
| `typography-900` | **Default** - headings, primary text |
|
|
180
|
+
| `typography-950` | Maximum contrast text |
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
// Primary heading
|
|
184
|
+
<Heading className="text-typography-900">Page Title</Heading>
|
|
185
|
+
|
|
186
|
+
// Body text
|
|
187
|
+
<Text className="text-typography-700">Regular paragraph text</Text>
|
|
188
|
+
|
|
189
|
+
// Secondary/muted text
|
|
190
|
+
<Text className="text-typography-500">Last updated 2 hours ago</Text>
|
|
191
|
+
|
|
192
|
+
// White text on dark background
|
|
193
|
+
<Box className="bg-primary-500">
|
|
194
|
+
<Text className="text-typography-0">Button label</Text>
|
|
195
|
+
</Box>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Outline (Borders)
|
|
199
|
+
|
|
200
|
+
Use for borders, dividers, and outlines.
|
|
201
|
+
|
|
202
|
+
| Token | Usage |
|
|
203
|
+
| ------------- | ---------------------------------- |
|
|
204
|
+
| `outline-0` | White borders |
|
|
205
|
+
| `outline-50` | Very subtle borders |
|
|
206
|
+
| `outline-100` | Light dividers |
|
|
207
|
+
| `outline-200` | **Default** - input borders, cards |
|
|
208
|
+
| `outline-300` | Emphasized borders |
|
|
209
|
+
| `outline-400` | Focus rings (muted) |
|
|
210
|
+
| `outline-500` | Strong borders |
|
|
211
|
+
| `outline-600` | Dark borders |
|
|
212
|
+
| `outline-700` | Very dark borders |
|
|
213
|
+
|
|
214
|
+
```tsx
|
|
215
|
+
// Card with border
|
|
216
|
+
<Box className="border border-outline-200 rounded-lg p-4">
|
|
217
|
+
<Text>Card content</Text>
|
|
218
|
+
</Box>
|
|
219
|
+
|
|
220
|
+
// Input field
|
|
221
|
+
<Input className="border border-outline-300 focus:border-primary-500" />
|
|
222
|
+
|
|
223
|
+
// Divider
|
|
224
|
+
<Box className="h-px bg-outline-100 my-4" />
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Background (Surface Colors)
|
|
228
|
+
|
|
229
|
+
Use for component and page backgrounds.
|
|
230
|
+
|
|
231
|
+
| Token | Usage |
|
|
232
|
+
| ---------------- | ---------------------------------------------- |
|
|
233
|
+
| `background-0` | **Default** - white, main content (light mode) |
|
|
234
|
+
| `background-50` | Elevated surfaces, cards |
|
|
235
|
+
| `background-100` | Subtle backgrounds |
|
|
236
|
+
| `background-200` | Muted sections |
|
|
237
|
+
| `background-300` | Disabled states |
|
|
238
|
+
| `background-400` | Hover states (dark) |
|
|
239
|
+
| `background-500` | Mid-tone |
|
|
240
|
+
| `background-600` | Dark surfaces |
|
|
241
|
+
| `background-700` | Darker surfaces |
|
|
242
|
+
| `background-800` | Very dark surfaces |
|
|
243
|
+
| `background-900` | Near-black |
|
|
244
|
+
| `background-950` | **Default** - main content (dark mode) |
|
|
245
|
+
|
|
246
|
+
```tsx
|
|
247
|
+
// Light mode page
|
|
248
|
+
<Box className="bg-background-0 min-h-screen">
|
|
249
|
+
<Box className="bg-background-50 p-4 rounded-lg">
|
|
250
|
+
Card content
|
|
251
|
+
</Box>
|
|
252
|
+
</Box>
|
|
253
|
+
|
|
254
|
+
// Dark mode page
|
|
255
|
+
<Box className="bg-background-950 min-h-screen">
|
|
256
|
+
<Box className="bg-background-900 p-4 rounded-lg">
|
|
257
|
+
Card content
|
|
258
|
+
</Box>
|
|
259
|
+
</Box>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Special Background Tokens
|
|
263
|
+
|
|
264
|
+
State-specific background tokens for semantic meaning:
|
|
265
|
+
|
|
266
|
+
| Token | Usage |
|
|
267
|
+
| ----------------------- | ------------------------ |
|
|
268
|
+
| `bg-background-error` | Error state container |
|
|
269
|
+
| `bg-background-warning` | Warning state container |
|
|
270
|
+
| `bg-background-success` | Success state container |
|
|
271
|
+
| `bg-background-info` | Info state container |
|
|
272
|
+
| `bg-background-muted` | Muted/disabled container |
|
|
273
|
+
|
|
274
|
+
```tsx
|
|
275
|
+
// Error state
|
|
276
|
+
<Box className="bg-background-error p-4 rounded-lg">
|
|
277
|
+
<Text className="text-error-700">Error message</Text>
|
|
278
|
+
</Box>
|
|
279
|
+
|
|
280
|
+
// Muted/disabled
|
|
281
|
+
<Box className="bg-background-muted p-4 rounded-lg opacity-50">
|
|
282
|
+
<Text className="text-typography-500">Disabled content</Text>
|
|
283
|
+
</Box>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Indicator Tokens
|
|
287
|
+
|
|
288
|
+
Use for focus rings and status indicators:
|
|
289
|
+
|
|
290
|
+
| Token | Usage |
|
|
291
|
+
| ------------------------ | ----------------------- |
|
|
292
|
+
| `ring-indicator-primary` | Primary focus indicator |
|
|
293
|
+
| `ring-indicator-info` | Info focus indicator |
|
|
294
|
+
| `ring-indicator-error` | Error focus indicator |
|
|
295
|
+
|
|
296
|
+
## Dark Mode Mapping
|
|
297
|
+
|
|
298
|
+
Use `dark:` prefix for dark mode variants:
|
|
299
|
+
|
|
300
|
+
```tsx
|
|
301
|
+
// Text that adapts to dark mode
|
|
302
|
+
<Text className="text-typography-900 dark:text-typography-0">
|
|
303
|
+
Adaptive text
|
|
304
|
+
</Text>
|
|
305
|
+
|
|
306
|
+
// Background that adapts
|
|
307
|
+
<Box className="bg-background-0 dark:bg-background-950">
|
|
308
|
+
<Text className="text-typography-900 dark:text-typography-0">
|
|
309
|
+
Content
|
|
310
|
+
</Text>
|
|
311
|
+
</Box>
|
|
312
|
+
|
|
313
|
+
// Border that adapts
|
|
314
|
+
<Box className="border border-outline-200 dark:border-outline-700">
|
|
315
|
+
Content
|
|
316
|
+
</Box>
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Common Light/Dark Mode Pairs
|
|
320
|
+
|
|
321
|
+
| Light Mode | Dark Mode | Usage |
|
|
322
|
+
| ---------------- | ---------------- | --------------- |
|
|
323
|
+
| `background-0` | `background-950` | Page background |
|
|
324
|
+
| `background-50` | `background-900` | Card background |
|
|
325
|
+
| `typography-900` | `typography-0` | Primary text |
|
|
326
|
+
| `typography-700` | `typography-200` | Body text |
|
|
327
|
+
| `typography-500` | `typography-400` | Secondary text |
|
|
328
|
+
| `outline-200` | `outline-700` | Borders |
|
|
329
|
+
| `outline-100` | `outline-800` | Dividers |
|
|
330
|
+
|
|
331
|
+
## Prohibited Raw Color Usage
|
|
332
|
+
|
|
333
|
+
Never use raw Tailwind colors. Map to semantic tokens:
|
|
334
|
+
|
|
335
|
+
| Raw Color | Semantic Token |
|
|
336
|
+
| ----------------------------- | ------------------------------------------- |
|
|
337
|
+
| `red-*` | `error-*` |
|
|
338
|
+
| `green-*` | `success-*` |
|
|
339
|
+
| `yellow-*`, `amber-*` | `warning-*` |
|
|
340
|
+
| `blue-*`, `cyan-*` | `info-*` or `primary-*` |
|
|
341
|
+
| `gray-*`, `slate-*`, `zinc-*` | `typography-*`, `outline-*`, `background-*` |
|
|
342
|
+
| `white` | `typography-0` or `background-0` |
|
|
343
|
+
| `black` | `typography-950` or `background-950` |
|
package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Component Mapping Reference
|
|
2
|
+
|
|
3
|
+
This reference provides the complete mapping from React Native primitives to Gluestack UI v3 equivalents.
|
|
4
|
+
|
|
5
|
+
## Core Layout Components
|
|
6
|
+
|
|
7
|
+
| React Native | Gluestack | Import Path |
|
|
8
|
+
| ---------------------- | ------------------------------ | ---------------------------------------- |
|
|
9
|
+
| `View` | `Box` | `@/components/ui/box` |
|
|
10
|
+
| `ScrollView` | `ScrollView` | `@/components/ui/scroll-view` |
|
|
11
|
+
| `SafeAreaView` | Use `useSafeAreaInsets()` hook | `react-native-safe-area-context` |
|
|
12
|
+
| `KeyboardAvoidingView` | `KeyboardAvoidingView` | `@/components/ui/keyboard-avoiding-view` |
|
|
13
|
+
|
|
14
|
+
## Text Components
|
|
15
|
+
|
|
16
|
+
| React Native | Gluestack | Import Path |
|
|
17
|
+
| ---------------- | --------- | ------------------------- |
|
|
18
|
+
| `Text` | `Text` | `@/components/ui/text` |
|
|
19
|
+
| `Text` (heading) | `Heading` | `@/components/ui/heading` |
|
|
20
|
+
|
|
21
|
+
## Interactive Components
|
|
22
|
+
|
|
23
|
+
| React Native | Gluestack | Import Path |
|
|
24
|
+
| -------------------------- | ----------------------- | --------------------------- |
|
|
25
|
+
| `TouchableOpacity` | `Pressable` | `@/components/ui/pressable` |
|
|
26
|
+
| `TouchableHighlight` | `Pressable` | `@/components/ui/pressable` |
|
|
27
|
+
| `TouchableWithoutFeedback` | `Pressable` | `@/components/ui/pressable` |
|
|
28
|
+
| `Button` | `Button` + `ButtonText` | `@/components/ui/button` |
|
|
29
|
+
| `Switch` | `Switch` | `@/components/ui/switch` |
|
|
30
|
+
|
|
31
|
+
## Form Components
|
|
32
|
+
|
|
33
|
+
| React Native | Gluestack | Import Path |
|
|
34
|
+
| ----------------------- | ---------------------------- | -------------------------- |
|
|
35
|
+
| `TextInput` | `Input` + `InputField` | `@/components/ui/input` |
|
|
36
|
+
| `TextInput` (multiline) | `Textarea` + `TextareaInput` | `@/components/ui/textarea` |
|
|
37
|
+
| N/A | `Select` | `@/components/ui/select` |
|
|
38
|
+
| N/A | `Checkbox` | `@/components/ui/checkbox` |
|
|
39
|
+
| N/A | `Radio` | `@/components/ui/radio` |
|
|
40
|
+
| N/A | `Slider` | `@/components/ui/slider` |
|
|
41
|
+
|
|
42
|
+
## Media Components
|
|
43
|
+
|
|
44
|
+
| React Native | Gluestack | Import Path |
|
|
45
|
+
| ------------ | --------- | ------------------------ |
|
|
46
|
+
| `Image` | `Image` | `@/components/ui/image` |
|
|
47
|
+
| N/A | `Avatar` | `@/components/ui/avatar` |
|
|
48
|
+
| N/A | `Icon` | `@/components/ui/icon` |
|
|
49
|
+
|
|
50
|
+
## List Components
|
|
51
|
+
|
|
52
|
+
| React Native | Recommended | Import Path |
|
|
53
|
+
| ----------------- | ------------------------- | --------------------- |
|
|
54
|
+
| `FlatList` | `FlashList` | `@shopify/flash-list` |
|
|
55
|
+
| `SectionList` | `FlashList` with sections | `@shopify/flash-list` |
|
|
56
|
+
| `VirtualizedList` | `FlashList` | `@shopify/flash-list` |
|
|
57
|
+
|
|
58
|
+
## Feedback Components
|
|
59
|
+
|
|
60
|
+
| React Native | Gluestack | Import Path |
|
|
61
|
+
| ------------------- | ------------- | ------------------------------ |
|
|
62
|
+
| `ActivityIndicator` | `Spinner` | `@/components/ui/spinner` |
|
|
63
|
+
| `Modal` | `Modal` | `@/components/ui/modal` |
|
|
64
|
+
| `Alert.alert()` | `AlertDialog` | `@/components/ui/alert-dialog` |
|
|
65
|
+
| N/A | `Toast` | `@/components/ui/toast` |
|
|
66
|
+
| N/A | `Progress` | `@/components/ui/progress` |
|
|
67
|
+
|
|
68
|
+
## Navigation Components
|
|
69
|
+
|
|
70
|
+
| React Native | Gluestack | Import Path |
|
|
71
|
+
| ------------ | ------------- | ----------------------------- |
|
|
72
|
+
| N/A | `Menu` | `@/components/ui/menu` |
|
|
73
|
+
| N/A | `Actionsheet` | `@/components/ui/actionsheet` |
|
|
74
|
+
| N/A | `Popover` | `@/components/ui/popover` |
|
|
75
|
+
| N/A | `Tooltip` | `@/components/ui/tooltip` |
|
|
76
|
+
|
|
77
|
+
## Overlay Components
|
|
78
|
+
|
|
79
|
+
| React Native | Gluestack | Import Path |
|
|
80
|
+
| ------------ | ---------- | -------------------------- |
|
|
81
|
+
| `Modal` | `Modal` | `@/components/ui/modal` |
|
|
82
|
+
| N/A | `Drawer` | `@/components/ui/drawer` |
|
|
83
|
+
| N/A | `Backdrop` | Part of overlay components |
|
|
84
|
+
|
|
85
|
+
## Display Components
|
|
86
|
+
|
|
87
|
+
| React Native | Gluestack | Import Path |
|
|
88
|
+
| ------------ | ----------- | --------------------------- |
|
|
89
|
+
| N/A | `Badge` | `@/components/ui/badge` |
|
|
90
|
+
| N/A | `Card` | `@/components/ui/card` |
|
|
91
|
+
| N/A | `Divider` | `@/components/ui/divider` |
|
|
92
|
+
| N/A | `Accordion` | `@/components/ui/accordion` |
|
|
93
|
+
|
|
94
|
+
## Gluestack Sub-Component Patterns
|
|
95
|
+
|
|
96
|
+
### Button
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
import { Button, ButtonText, ButtonIcon, ButtonSpinner } from "@/components/ui/button";
|
|
100
|
+
|
|
101
|
+
<Button action="primary" size="md" variant="solid">
|
|
102
|
+
<ButtonText>Submit</ButtonText>
|
|
103
|
+
</Button>
|
|
104
|
+
|
|
105
|
+
<Button action="secondary" isDisabled>
|
|
106
|
+
<ButtonSpinner />
|
|
107
|
+
<ButtonText>Loading...</ButtonText>
|
|
108
|
+
</Button>
|
|
109
|
+
|
|
110
|
+
<Button>
|
|
111
|
+
<ButtonText>Next</ButtonText>
|
|
112
|
+
<ButtonIcon as={ChevronRightIcon} />
|
|
113
|
+
</Button>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Input
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
import { Input, InputField, InputSlot, InputIcon } from "@/components/ui/input";
|
|
120
|
+
|
|
121
|
+
<Input variant="outline" size="md">
|
|
122
|
+
<InputField placeholder="Enter email" />
|
|
123
|
+
</Input>
|
|
124
|
+
|
|
125
|
+
<Input>
|
|
126
|
+
<InputSlot>
|
|
127
|
+
<InputIcon as={SearchIcon} />
|
|
128
|
+
</InputSlot>
|
|
129
|
+
<InputField placeholder="Search..." />
|
|
130
|
+
</Input>
|
|
131
|
+
|
|
132
|
+
<Input isInvalid>
|
|
133
|
+
<InputField />
|
|
134
|
+
<InputSlot>
|
|
135
|
+
<InputIcon as={AlertCircleIcon} className="text-error-500" />
|
|
136
|
+
</InputSlot>
|
|
137
|
+
</Input>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Select
|
|
141
|
+
|
|
142
|
+
```tsx
|
|
143
|
+
import {
|
|
144
|
+
Select,
|
|
145
|
+
SelectTrigger,
|
|
146
|
+
SelectInput,
|
|
147
|
+
SelectIcon,
|
|
148
|
+
SelectPortal,
|
|
149
|
+
SelectBackdrop,
|
|
150
|
+
SelectContent,
|
|
151
|
+
SelectDragIndicator,
|
|
152
|
+
SelectDragIndicatorWrapper,
|
|
153
|
+
SelectItem,
|
|
154
|
+
} from "@/components/ui/select";
|
|
155
|
+
|
|
156
|
+
<Select>
|
|
157
|
+
<SelectTrigger variant="outline" size="md">
|
|
158
|
+
<SelectInput placeholder="Select option" />
|
|
159
|
+
<SelectIcon as={ChevronDownIcon} />
|
|
160
|
+
</SelectTrigger>
|
|
161
|
+
<SelectPortal>
|
|
162
|
+
<SelectBackdrop />
|
|
163
|
+
<SelectContent>
|
|
164
|
+
<SelectDragIndicatorWrapper>
|
|
165
|
+
<SelectDragIndicator />
|
|
166
|
+
</SelectDragIndicatorWrapper>
|
|
167
|
+
<SelectItem label="Option 1" value="1" />
|
|
168
|
+
<SelectItem label="Option 2" value="2" />
|
|
169
|
+
</SelectContent>
|
|
170
|
+
</SelectPortal>
|
|
171
|
+
</Select>;
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Modal
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
import {
|
|
178
|
+
Modal,
|
|
179
|
+
ModalBackdrop,
|
|
180
|
+
ModalContent,
|
|
181
|
+
ModalHeader,
|
|
182
|
+
ModalCloseButton,
|
|
183
|
+
ModalBody,
|
|
184
|
+
ModalFooter,
|
|
185
|
+
} from "@/components/ui/modal";
|
|
186
|
+
|
|
187
|
+
<Modal isOpen={showModal} onClose={handleClose}>
|
|
188
|
+
<ModalBackdrop />
|
|
189
|
+
<ModalContent>
|
|
190
|
+
<ModalHeader>
|
|
191
|
+
<Heading size="lg">Title</Heading>
|
|
192
|
+
<ModalCloseButton>
|
|
193
|
+
<Icon as={CloseIcon} />
|
|
194
|
+
</ModalCloseButton>
|
|
195
|
+
</ModalHeader>
|
|
196
|
+
<ModalBody>
|
|
197
|
+
<Text>Modal content here</Text>
|
|
198
|
+
</ModalBody>
|
|
199
|
+
<ModalFooter>
|
|
200
|
+
<Button onPress={handleClose}>
|
|
201
|
+
<ButtonText>Close</ButtonText>
|
|
202
|
+
</Button>
|
|
203
|
+
</ModalFooter>
|
|
204
|
+
</ModalContent>
|
|
205
|
+
</Modal>;
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Avatar
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
import {
|
|
212
|
+
Avatar,
|
|
213
|
+
AvatarFallbackText,
|
|
214
|
+
AvatarImage,
|
|
215
|
+
AvatarBadge,
|
|
216
|
+
} from "@/components/ui/avatar";
|
|
217
|
+
|
|
218
|
+
<Avatar size="md">
|
|
219
|
+
<AvatarFallbackText>JD</AvatarFallbackText>
|
|
220
|
+
<AvatarImage source={{ uri: imageUrl }} />
|
|
221
|
+
<AvatarBadge />
|
|
222
|
+
</Avatar>;
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Checkbox
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import {
|
|
229
|
+
Checkbox,
|
|
230
|
+
CheckboxIndicator,
|
|
231
|
+
CheckboxIcon,
|
|
232
|
+
CheckboxLabel,
|
|
233
|
+
} from "@/components/ui/checkbox";
|
|
234
|
+
|
|
235
|
+
<Checkbox value="terms" isChecked={isChecked} onChange={setIsChecked}>
|
|
236
|
+
<CheckboxIndicator>
|
|
237
|
+
<CheckboxIcon as={CheckIcon} />
|
|
238
|
+
</CheckboxIndicator>
|
|
239
|
+
<CheckboxLabel>Accept terms</CheckboxLabel>
|
|
240
|
+
</Checkbox>;
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Toast
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
import {
|
|
247
|
+
useToast,
|
|
248
|
+
Toast,
|
|
249
|
+
ToastTitle,
|
|
250
|
+
ToastDescription,
|
|
251
|
+
} from "@/components/ui/toast";
|
|
252
|
+
|
|
253
|
+
const toast = useToast();
|
|
254
|
+
|
|
255
|
+
toast.show({
|
|
256
|
+
placement: "top",
|
|
257
|
+
render: ({ id }) => (
|
|
258
|
+
<Toast nativeID={id} action="success">
|
|
259
|
+
<ToastTitle>Success!</ToastTitle>
|
|
260
|
+
<ToastDescription>Your changes have been saved.</ToastDescription>
|
|
261
|
+
</Toast>
|
|
262
|
+
),
|
|
263
|
+
});
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Component Variants
|
|
267
|
+
|
|
268
|
+
### Button Variants
|
|
269
|
+
|
|
270
|
+
| Prop | Values |
|
|
271
|
+
| --------- | ---------------------------------------------- |
|
|
272
|
+
| `action` | `primary`, `secondary`, `positive`, `negative` |
|
|
273
|
+
| `variant` | `solid`, `outline`, `link` |
|
|
274
|
+
| `size` | `xs`, `sm`, `md`, `lg`, `xl` |
|
|
275
|
+
|
|
276
|
+
### Input Variants
|
|
277
|
+
|
|
278
|
+
| Prop | Values |
|
|
279
|
+
| --------- | ---------------------------------- |
|
|
280
|
+
| `variant` | `outline`, `underlined`, `rounded` |
|
|
281
|
+
| `size` | `sm`, `md`, `lg`, `xl` |
|
|
282
|
+
|
|
283
|
+
### Text/Heading Sizes
|
|
284
|
+
|
|
285
|
+
| Component | Sizes |
|
|
286
|
+
| --------- | ---------------------------------------------------------------------- |
|
|
287
|
+
| `Text` | `2xs`, `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl` |
|
|
288
|
+
| `Heading` | `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl` |
|
|
289
|
+
|
|
290
|
+
## When to Keep React Native Primitives
|
|
291
|
+
|
|
292
|
+
Use React Native primitives only when:
|
|
293
|
+
|
|
294
|
+
1. **Platform-specific native behavior** - Deep native integration required
|
|
295
|
+
2. **Third-party library requirements** - Library expects RN primitives
|
|
296
|
+
3. **Performance-critical rendering** - Measured wrapper overhead (rare)
|
|
297
|
+
4. **Animated components** - Using `Animated.View`, `Animated.Text`, etc.
|
|
298
|
+
|
|
299
|
+
```tsx
|
|
300
|
+
// Acceptable: Animated primitives
|
|
301
|
+
import Animated from "react-native-reanimated";
|
|
302
|
+
|
|
303
|
+
const AnimatedBox = Animated.createAnimatedComponent(Box);
|
|
304
|
+
|
|
305
|
+
// Acceptable: Platform-specific requirement
|
|
306
|
+
import { Platform, PermissionsAndroid } from "react-native";
|
|
307
|
+
```
|