@julianoczkowski/create-trimble-app 2.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/README.md +191 -0
- package/bin/create-trimble-app.js +9 -0
- package/package.json +67 -0
- package/src/cli.js +134 -0
- package/src/frameworks.js +28 -0
- package/src/scaffold.js +209 -0
- package/src/utils/file.js +47 -0
- package/src/utils/git.js +140 -0
- package/src/utils/install.js +25 -0
- package/src/utils/logger.js +124 -0
- package/templates/angular/.cursor/commands/remove-dev-content.md +394 -0
- package/templates/angular/.cursor/mcp.json +13 -0
- package/templates/angular/.cursor/rules/modus-angular-20.mdc +82 -0
- package/templates/angular/.cursor/rules/modus-angular-accordion-state-management-short.mdc +45 -0
- package/templates/angular/.cursor/rules/modus-angular-accordion-state-management.mdc +322 -0
- package/templates/angular/.cursor/rules/modus-angular-best-practices.mdc +472 -0
- package/templates/angular/.cursor/rules/modus-angular-border-usage-short.mdc +48 -0
- package/templates/angular/.cursor/rules/modus-angular-border-usage.mdc +286 -0
- package/templates/angular/.cursor/rules/modus-angular-button-group-usage-short.mdc +47 -0
- package/templates/angular/.cursor/rules/modus-angular-button-group-usage.mdc +263 -0
- package/templates/angular/.cursor/rules/modus-angular-checkbox-value-inversion-short.mdc +36 -0
- package/templates/angular/.cursor/rules/modus-angular-checkbox-value-inversion.mdc +92 -0
- package/templates/angular/.cursor/rules/modus-angular-chrome-devtools-testing-short.mdc +34 -0
- package/templates/angular/.cursor/rules/modus-angular-chrome-devtools-testing.mdc +185 -0
- package/templates/angular/.cursor/rules/modus-angular-color-usage-short.mdc +56 -0
- package/templates/angular/.cursor/rules/modus-angular-color-usage.mdc +208 -0
- package/templates/angular/.cursor/rules/modus-angular-components-reference.mdc +114 -0
- package/templates/angular/.cursor/rules/modus-angular-design-system.mdc +273 -0
- package/templates/angular/.cursor/rules/modus-angular-development-workflow-short.mdc +43 -0
- package/templates/angular/.cursor/rules/modus-angular-development-workflow.mdc +145 -0
- package/templates/angular/.cursor/rules/modus-angular-essentials.mdc +272 -0
- package/templates/angular/.cursor/rules/modus-angular-forms-validation-short.mdc +56 -0
- package/templates/angular/.cursor/rules/modus-angular-forms-validation.mdc +124 -0
- package/templates/angular/.cursor/rules/modus-angular-icon-names.mdc +70 -0
- package/templates/angular/.cursor/rules/modus-angular-icons-short.mdc +40 -0
- package/templates/angular/.cursor/rules/modus-angular-icons.mdc +137 -0
- package/templates/angular/.cursor/rules/modus-angular-implementation-guides-short.mdc +36 -0
- package/templates/angular/.cursor/rules/modus-angular-implementation-guides.mdc +301 -0
- package/templates/angular/.cursor/rules/modus-angular-integration-short.mdc +60 -0
- package/templates/angular/.cursor/rules/modus-angular-integration.mdc +1096 -0
- package/templates/angular/.cursor/rules/modus-angular-master.mdc +164 -0
- package/templates/angular/.cursor/rules/modus-angular-modal-usage-short.mdc +51 -0
- package/templates/angular/.cursor/rules/modus-angular-modal-usage.mdc +115 -0
- package/templates/angular/.cursor/rules/modus-angular-navbar-usage-short.mdc +49 -0
- package/templates/angular/.cursor/rules/modus-angular-navbar-usage.mdc +146 -0
- package/templates/angular/.cursor/rules/modus-angular-no-emojis.mdc +66 -0
- package/templates/angular/.cursor/rules/modus-angular-opacity-utilities-short.mdc +43 -0
- package/templates/angular/.cursor/rules/modus-angular-opacity-utilities.mdc +160 -0
- package/templates/angular/.cursor/rules/modus-angular-select-vs-dropdown-menu-short.mdc +51 -0
- package/templates/angular/.cursor/rules/modus-angular-select-vs-dropdown-menu.mdc +83 -0
- package/templates/angular/.cursor/rules/modus-angular-semantic-html-short.mdc +36 -0
- package/templates/angular/.cursor/rules/modus-angular-semantic-html.mdc +81 -0
- package/templates/angular/.cursor/rules/modus-angular-side-navigation-usage-short.mdc +50 -0
- package/templates/angular/.cursor/rules/modus-angular-side-navigation-usage.mdc +136 -0
- package/templates/angular/.cursor/rules/modus-angular-table-usage-short.mdc +52 -0
- package/templates/angular/.cursor/rules/modus-angular-table-usage.mdc +151 -0
- package/templates/angular/.cursor/rules/modus-angular-tailwind-usage-short.mdc +44 -0
- package/templates/angular/.cursor/rules/modus-angular-tailwind-usage.mdc +242 -0
- package/templates/angular/.cursor/rules/modus-angular-themes-short.mdc +54 -0
- package/templates/angular/.cursor/rules/modus-angular-themes.mdc +222 -0
- package/templates/angular/.cursor/rules/modus-angular-utility-panel-usage-short.mdc +52 -0
- package/templates/angular/.cursor/rules/modus-angular-utility-panel-usage.mdc +130 -0
- package/templates/angular/.cursor/rules/ux/gestalt-laws-detailed.mdc +514 -0
- package/templates/angular/.cursor/rules/ux/ux-ui-foundations.mdc +235 -0
- package/templates/angular/.cursor/skills/run-lint-checks/SKILL.md +169 -0
- package/templates/angular/.editorconfig +17 -0
- package/templates/angular/.github/dependabot.yml +19 -0
- package/templates/angular/.github/workflows/a11y-check.yml +135 -0
- package/templates/angular/.github/workflows/ci.yml +44 -0
- package/templates/angular/.husky/pre-commit +32 -0
- package/templates/angular/.postcssrc.json +5 -0
- package/templates/angular/.vscode/extensions.json +4 -0
- package/templates/angular/.vscode/launch.json +20 -0
- package/templates/angular/.vscode/tasks.json +42 -0
- package/templates/angular/CLAUDE.md +148 -0
- package/templates/angular/README.md +92 -0
- package/templates/angular/amplify.yml +25 -0
- package/templates/angular/angular.json +106 -0
- package/templates/angular/data/modusIcons.ts +861 -0
- package/templates/angular/package-lock.json +11030 -0
- package/templates/angular/package.json +66 -0
- package/templates/angular/public/angular-icon.svg +12 -0
- package/templates/angular/public/favicon.ico +0 -0
- package/templates/angular/public/modus-icons.css +49 -0
- package/templates/angular/public/vite.svg +1 -0
- package/templates/angular/scripts/README.md +410 -0
- package/templates/angular/scripts/check-border-violations.js +352 -0
- package/templates/angular/scripts/check-icon-names.js +402 -0
- package/templates/angular/scripts/check-inline-styles.js +292 -0
- package/templates/angular/scripts/check-modus-colors.js +282 -0
- package/templates/angular/scripts/check-modus-icons.js +263 -0
- package/templates/angular/scripts/check-opacity-utilities.js +426 -0
- package/templates/angular/scripts/check-semantic-html.js +452 -0
- package/templates/angular/scripts/check-typescript.js +109 -0
- package/templates/angular/src/app/app.config.ts +29 -0
- package/templates/angular/src/app/app.css +0 -0
- package/templates/angular/src/app/app.html +4 -0
- package/templates/angular/src/app/app.routes.ts +351 -0
- package/templates/angular/src/app/app.spec.ts +27 -0
- package/templates/angular/src/app/app.ts +47 -0
- package/templates/angular/src/app/components/README.md +77 -0
- package/templates/angular/src/app/components/index.ts +53 -0
- package/templates/angular/src/app/components/modus-accordion.component.ts +50 -0
- package/templates/angular/src/app/components/modus-alert.component.ts +133 -0
- package/templates/angular/src/app/components/modus-autocomplete.component.ts +262 -0
- package/templates/angular/src/app/components/modus-avatar.component.ts +75 -0
- package/templates/angular/src/app/components/modus-badge.component.ts +84 -0
- package/templates/angular/src/app/components/modus-breadcrumbs.component.ts +65 -0
- package/templates/angular/src/app/components/modus-button-group.component.ts +82 -0
- package/templates/angular/src/app/components/modus-button.component.ts +292 -0
- package/templates/angular/src/app/components/modus-card.component.ts +73 -0
- package/templates/angular/src/app/components/modus-checkbox.component.ts +117 -0
- package/templates/angular/src/app/components/modus-chip.component.ts +97 -0
- package/templates/angular/src/app/components/modus-collapse.component.ts +118 -0
- package/templates/angular/src/app/components/modus-date.component.ts +165 -0
- package/templates/angular/src/app/components/modus-dropdown-menu.component.ts +108 -0
- package/templates/angular/src/app/components/modus-file-dropzone.component.ts +121 -0
- package/templates/angular/src/app/components/modus-handle.component.ts +96 -0
- package/templates/angular/src/app/components/modus-icon.component.ts +81 -0
- package/templates/angular/src/app/components/modus-input-feedback.component.ts +54 -0
- package/templates/angular/src/app/components/modus-input-label.component.ts +62 -0
- package/templates/angular/src/app/components/modus-loader.component.ts +48 -0
- package/templates/angular/src/app/components/modus-logo.component.ts +115 -0
- package/templates/angular/src/app/components/modus-menu-item.component.ts +116 -0
- package/templates/angular/src/app/components/modus-menu.component.ts +58 -0
- package/templates/angular/src/app/components/modus-modal.component.ts +70 -0
- package/templates/angular/src/app/components/modus-navbar.component.ts +303 -0
- package/templates/angular/src/app/components/modus-number-input.component.ts +174 -0
- package/templates/angular/src/app/components/modus-pagination.component.ts +74 -0
- package/templates/angular/src/app/components/modus-panel.component.ts +61 -0
- package/templates/angular/src/app/components/modus-progress.component.ts +62 -0
- package/templates/angular/src/app/components/modus-radio.component.ts +102 -0
- package/templates/angular/src/app/components/modus-rating.component.ts +80 -0
- package/templates/angular/src/app/components/modus-select.component.ts +131 -0
- package/templates/angular/src/app/components/modus-side-navigation.component.ts +90 -0
- package/templates/angular/src/app/components/modus-skeleton.component.ts +54 -0
- package/templates/angular/src/app/components/modus-slider.component.ts +132 -0
- package/templates/angular/src/app/components/modus-stepper.component.ts +65 -0
- package/templates/angular/src/app/components/modus-switch.component.ts +118 -0
- package/templates/angular/src/app/components/modus-table.component.ts +204 -0
- package/templates/angular/src/app/components/modus-tabs.component.ts +82 -0
- package/templates/angular/src/app/components/modus-text-input.component.ts +221 -0
- package/templates/angular/src/app/components/modus-textarea.component.ts +168 -0
- package/templates/angular/src/app/components/modus-theme-switcher.component.ts +45 -0
- package/templates/angular/src/app/components/modus-time-input.component.ts +172 -0
- package/templates/angular/src/app/components/modus-toast.component.ts +63 -0
- package/templates/angular/src/app/components/modus-toolbar.component.ts +43 -0
- package/templates/angular/src/app/components/modus-tooltip.component.ts +83 -0
- package/templates/angular/src/app/components/modus-typography.component.ts +79 -0
- package/templates/angular/src/app/components/modus-utility-panel.component.ts +275 -0
- package/templates/angular/src/app/components/theme-demo.component.ts +1242 -0
- package/templates/angular/src/app/data/component-demos.ts +360 -0
- package/templates/angular/src/app/data/modus-icons.ts +806 -0
- package/templates/angular/src/app/demos/accordion/accordion-demo.component.ts +212 -0
- package/templates/angular/src/app/demos/alert/alert-demo.component.ts +108 -0
- package/templates/angular/src/app/demos/autocomplete/autocomplete-demo.component.ts +174 -0
- package/templates/angular/src/app/demos/avatar/avatar-demo.component.ts +149 -0
- package/templates/angular/src/app/demos/badge/badge-demo.component.ts +148 -0
- package/templates/angular/src/app/demos/breadcrumbs/breadcrumbs-demo.component.ts +96 -0
- package/templates/angular/src/app/demos/button/button-demo.component.ts +256 -0
- package/templates/angular/src/app/demos/button-group/button-group-demo.component.ts +215 -0
- package/templates/angular/src/app/demos/card/card-demo.component.ts +180 -0
- package/templates/angular/src/app/demos/checkbox/checkbox-demo.component.ts +71 -0
- package/templates/angular/src/app/demos/chip/chip-demo.component.ts +183 -0
- package/templates/angular/src/app/demos/date/date-demo.component.ts +193 -0
- package/templates/angular/src/app/demos/dropdown/dropdown-demo.component.ts +196 -0
- package/templates/angular/src/app/demos/file-dropzone/file-dropzone-demo.component.ts +176 -0
- package/templates/angular/src/app/demos/handle/handle-demo.component.ts +265 -0
- package/templates/angular/src/app/demos/icon/icon-demo.component.ts +65 -0
- package/templates/angular/src/app/demos/input-feedback/input-feedback-demo.component.ts +189 -0
- package/templates/angular/src/app/demos/input-label/input-label-demo.component.ts +330 -0
- package/templates/angular/src/app/demos/loader/loader-demo.component.ts +143 -0
- package/templates/angular/src/app/demos/logo/logo-demo.component.ts +191 -0
- package/templates/angular/src/app/demos/menu/menu-demo.component.ts +72 -0
- package/templates/angular/src/app/demos/modal/modal-demo.component.ts +278 -0
- package/templates/angular/src/app/demos/navbar/navbar-demo.component.ts +135 -0
- package/templates/angular/src/app/demos/number-input/number-input-demo.component.ts +175 -0
- package/templates/angular/src/app/demos/pagination/pagination-demo.component.ts +134 -0
- package/templates/angular/src/app/demos/panel/panel-demo.component.ts +235 -0
- package/templates/angular/src/app/demos/progress/progress-demo.component.ts +169 -0
- package/templates/angular/src/app/demos/radio/radio-demo.component.ts +161 -0
- package/templates/angular/src/app/demos/rating/rating-demo.component.ts +97 -0
- package/templates/angular/src/app/demos/select/select-demo.component.ts +107 -0
- package/templates/angular/src/app/demos/shared/demo-example-clean.component.ts +41 -0
- package/templates/angular/src/app/demos/shared/demo-example.component.ts +42 -0
- package/templates/angular/src/app/demos/shared/demo-page.component.ts +97 -0
- package/templates/angular/src/app/demos/shared/index.ts +3 -0
- package/templates/angular/src/app/demos/side-navigation/side-navigation-demo.component.ts +524 -0
- package/templates/angular/src/app/demos/skeleton/skeleton-demo.component.ts +112 -0
- package/templates/angular/src/app/demos/slider/slider-demo.component.ts +76 -0
- package/templates/angular/src/app/demos/stepper/stepper-demo.component.ts +79 -0
- package/templates/angular/src/app/demos/switch/switch-demo.component.ts +113 -0
- package/templates/angular/src/app/demos/table/table-demo.component.ts +405 -0
- package/templates/angular/src/app/demos/tabs/tabs-demo.component.ts +318 -0
- package/templates/angular/src/app/demos/text-input/text-input-demo.component.ts +160 -0
- package/templates/angular/src/app/demos/textarea/textarea-demo.component.ts +95 -0
- package/templates/angular/src/app/demos/theme-switcher/theme-switcher-demo.component.ts +38 -0
- package/templates/angular/src/app/demos/time-input/time-input-demo.component.ts +130 -0
- package/templates/angular/src/app/demos/toast/toast-demo.component.ts +258 -0
- package/templates/angular/src/app/demos/toolbar/toolbar-demo.component.ts +54 -0
- package/templates/angular/src/app/demos/tooltip/tooltip-demo.component.ts +163 -0
- package/templates/angular/src/app/demos/utility-panel/utility-panel-demo.component.ts +197 -0
- package/templates/angular/src/app/dev/dev-config.ts +119 -0
- package/templates/angular/src/app/dev/dev-panel/dev-panel.component.ts +215 -0
- package/templates/angular/src/app/dev/dev-panel.service.ts +63 -0
- package/templates/angular/src/app/dev/index.ts +8 -0
- package/templates/angular/src/app/dev/theme-switcher-dropdown/theme-switcher-dropdown.component.ts +134 -0
- package/templates/angular/src/app/dev-pages/color-palette/color-palette.component.ts +229 -0
- package/templates/angular/src/app/dev-pages/components-gallery/components-gallery.component.ts +486 -0
- package/templates/angular/src/app/dev-pages/icons/icons.component.ts +149 -0
- package/templates/angular/src/app/pages/home/home.component.ts +251 -0
- package/templates/angular/src/app/services/README.md +57 -0
- package/templates/angular/src/app/services/theme.service.ts +163 -0
- package/templates/angular/src/environments/environment.development.ts +8 -0
- package/templates/angular/src/environments/environment.ts +8 -0
- package/templates/angular/src/index.html +14 -0
- package/templates/angular/src/main.ts +6 -0
- package/templates/angular/src/styles.css +1328 -0
- package/templates/angular/tsconfig.app.json +15 -0
- package/templates/angular/tsconfig.json +35 -0
- package/templates/angular/tsconfig.spec.json +14 -0
- package/templates/config.json +23 -0
- package/templates/react/.cursor/commands/remove-dev-content.md +311 -0
- package/templates/react/.cursor/mcp.json +13 -0
- package/templates/react/.cursor/rules/README.md +240 -0
- package/templates/react/.cursor/rules/border-usage-guidelines-short.mdc +22 -0
- package/templates/react/.cursor/rules/border-usage-guidelines.mdc +380 -0
- package/templates/react/.cursor/rules/chrome-devtools-testing-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/development-workflow-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/development-workflow-react.mdc +292 -0
- package/templates/react/.cursor/rules/implementation-guides-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/implementation-guides-react.mdc +446 -0
- package/templates/react/.cursor/rules/modus-accordion-state-management-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-accordion-state-management-react.mdc +445 -0
- package/templates/react/.cursor/rules/modus-button-group-usage-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-button-group-usage-react.mdc +117 -0
- package/templates/react/.cursor/rules/modus-checkbox-value-inversion-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-checkbox-value-inversion-react.mdc +492 -0
- package/templates/react/.cursor/rules/modus-color-usage-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-color-usage-react.mdc +420 -0
- package/templates/react/.cursor/rules/modus-components-reference.mdc +366 -0
- package/templates/react/.cursor/rules/modus-icon-names.mdc +63 -0
- package/templates/react/.cursor/rules/modus-icons-react-short.mdc +24 -0
- package/templates/react/.cursor/rules/modus-icons-react.mdc +402 -0
- package/templates/react/.cursor/rules/modus-modal-implementation-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-modal-implementation-react.mdc +831 -0
- package/templates/react/.cursor/rules/modus-navbar-side-navigation-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-navbar-side-navigation-react.mdc +247 -0
- package/templates/react/.cursor/rules/modus-no-emojis-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-opacity-utilities-react-short.mdc +70 -0
- package/templates/react/.cursor/rules/modus-opacity-utilities-react.mdc +208 -0
- package/templates/react/.cursor/rules/modus-react-best-practices-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-react-best-practices.mdc +508 -0
- package/templates/react/.cursor/rules/modus-react-essentials.mdc +209 -0
- package/templates/react/.cursor/rules/modus-react-integration-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-react-integration.mdc +509 -0
- package/templates/react/.cursor/rules/modus-react-key-warnings-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-react-key-warnings.mdc +805 -0
- package/templates/react/.cursor/rules/modus-react-master.mdc +160 -0
- package/templates/react/.cursor/rules/modus-select-vs-dropdown-menu-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-select-vs-dropdown-menu-react.mdc +442 -0
- package/templates/react/.cursor/rules/modus-semantic-html-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-semantic-html-react.mdc +427 -0
- package/templates/react/.cursor/rules/modus-tailwind-usage-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-tailwind-usage-react.mdc +642 -0
- package/templates/react/.cursor/rules/modus-themes-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-themes-react.mdc +506 -0
- package/templates/react/.cursor/rules/ux/gestalt-laws-detailed.mdc +456 -0
- package/templates/react/.cursor/rules/ux/ux-ui-foundations.mdc +211 -0
- package/templates/react/.cursor/skills/create-modus-form-component/SKILL.md +518 -0
- package/templates/react/.cursor/skills/create-modus-wrapper-component/SKILL.md +252 -0
- package/templates/react/.cursor/skills/fix-modus-component-event-issues/SKILL.md +345 -0
- package/templates/react/.cursor/skills/handle-modus-checkbox-value-bug/SKILL.md +202 -0
- package/templates/react/.cursor/skills/implement-modus-modal-with-refs/SKILL.md +386 -0
- package/templates/react/.cursor/skills/integrate-modus-icons/SKILL.md +300 -0
- package/templates/react/.cursor/skills/run-lint-checks/SKILL.md +235 -0
- package/templates/react/.cursor/skills/set-up-modus-event-listeners/SKILL.md +284 -0
- package/templates/react/.cursor/skills/style-modus-components-with-tailwind/SKILL.md +382 -0
- package/templates/react/.env.development +3 -0
- package/templates/react/.env.production +3 -0
- package/templates/react/.github/CODEOWNERS +28 -0
- package/templates/react/.github/ISSUE_TEMPLATE/bug_report.yml +176 -0
- package/templates/react/.github/ISSUE_TEMPLATE/config.yml +20 -0
- package/templates/react/.github/ISSUE_TEMPLATE/documentation.yml +115 -0
- package/templates/react/.github/ISSUE_TEMPLATE/feature_request.yml +171 -0
- package/templates/react/.github/ISSUE_TEMPLATE/question.yml +139 -0
- package/templates/react/.github/copilot-instructions.md +80 -0
- package/templates/react/.github/instructions/components.instructions.md +82 -0
- package/templates/react/.github/instructions/demos.instructions.md +82 -0
- package/templates/react/.github/instructions/pages.instructions.md +76 -0
- package/templates/react/.github/instructions/styles.instructions.md +77 -0
- package/templates/react/.github/instructions/typescript.instructions.md +101 -0
- package/templates/react/.github/pull_request_template.md +188 -0
- package/templates/react/.github/workflows/ci.yml +43 -0
- package/templates/react/.github/workflows/claude-code-review.yml +44 -0
- package/templates/react/.github/workflows/claude.yml +50 -0
- package/templates/react/.husky/pre-commit +28 -0
- package/templates/react/.vscode/extensions.json +8 -0
- package/templates/react/CLAUDE.md +119 -0
- package/templates/react/CODE_OF_CONDUCT.md +79 -0
- package/templates/react/CONTRIBUTING.md +65 -0
- package/templates/react/LICENSE +21 -0
- package/templates/react/README.md +728 -0
- package/templates/react/SECURITY.md +50 -0
- package/templates/react/eslint.config.js +23 -0
- package/templates/react/index.html +13 -0
- package/templates/react/package-lock.json +5209 -0
- package/templates/react/package.json +49 -0
- package/templates/react/postcss.config.js +6 -0
- package/templates/react/public/react.svg +1 -0
- package/templates/react/public/vite.svg +1 -0
- package/templates/react/readme_assets/getting_started_header.png +0 -0
- package/templates/react/readme_assets/hero.png +0 -0
- package/templates/react/readme_assets/modus_comp.png +0 -0
- package/templates/react/readme_assets/modus_figma_mcp.png +0 -0
- package/templates/react/readme_assets/teaser_comp.gif +0 -0
- package/templates/react/scripts/README.md +343 -0
- package/templates/react/scripts/check-border-violations.js +483 -0
- package/templates/react/scripts/check-icon-names.js +486 -0
- package/templates/react/scripts/check-inline-styles.js +364 -0
- package/templates/react/scripts/check-modus-colors.js +247 -0
- package/templates/react/scripts/check-modus-icons.js +256 -0
- package/templates/react/scripts/check-opacity-utilities.js +481 -0
- package/templates/react/scripts/check-semantic-html.js +476 -0
- package/templates/react/scripts/check-typescript.js +109 -0
- package/templates/react/src/App.css +42 -0
- package/templates/react/src/App.tsx +54 -0
- package/templates/react/src/assets/react.svg +1 -0
- package/templates/react/src/components/DemoExample.tsx +61 -0
- package/templates/react/src/components/DemoPage.tsx +81 -0
- package/templates/react/src/components/ModusAccordion.tsx +89 -0
- package/templates/react/src/components/ModusAlert.tsx +85 -0
- package/templates/react/src/components/ModusAutocomplete.tsx +207 -0
- package/templates/react/src/components/ModusAvatar.tsx +50 -0
- package/templates/react/src/components/ModusBadge.tsx +82 -0
- package/templates/react/src/components/ModusBreadcrumbs.tsx +75 -0
- package/templates/react/src/components/ModusButton.tsx +244 -0
- package/templates/react/src/components/ModusButtonGroup.tsx +91 -0
- package/templates/react/src/components/ModusCard.tsx +70 -0
- package/templates/react/src/components/ModusCheckbox.tsx +168 -0
- package/templates/react/src/components/ModusChip.tsx +93 -0
- package/templates/react/src/components/ModusDate.tsx +154 -0
- package/templates/react/src/components/ModusDropdownMenu.tsx +148 -0
- package/templates/react/src/components/ModusFileDropzone.tsx +140 -0
- package/templates/react/src/components/ModusHandle.tsx +101 -0
- package/templates/react/src/components/ModusIcon.tsx +49 -0
- package/templates/react/src/components/ModusInputFeedback.tsx +52 -0
- package/templates/react/src/components/ModusInputLabel.tsx +50 -0
- package/templates/react/src/components/ModusLoader.tsx +42 -0
- package/templates/react/src/components/ModusLogo.tsx +102 -0
- package/templates/react/src/components/ModusMenu.tsx +119 -0
- package/templates/react/src/components/ModusMenuItem.tsx +86 -0
- package/templates/react/src/components/ModusModal.tsx +145 -0
- package/templates/react/src/components/ModusNavbar.tsx +504 -0
- package/templates/react/src/components/ModusNumberInput.tsx +230 -0
- package/templates/react/src/components/ModusPagination.tsx +94 -0
- package/templates/react/src/components/ModusPanel.tsx +92 -0
- package/templates/react/src/components/ModusProgress.tsx +70 -0
- package/templates/react/src/components/ModusProvider.tsx +18 -0
- package/templates/react/src/components/ModusRadio.tsx +114 -0
- package/templates/react/src/components/ModusRating.tsx +108 -0
- package/templates/react/src/components/ModusSelect.tsx +171 -0
- package/templates/react/src/components/ModusSideNavigation.tsx +149 -0
- package/templates/react/src/components/ModusSkeleton.tsx +42 -0
- package/templates/react/src/components/ModusSlider.tsx +128 -0
- package/templates/react/src/components/ModusStepper.tsx +85 -0
- package/templates/react/src/components/ModusSwitch.tsx +130 -0
- package/templates/react/src/components/ModusTable.tsx +309 -0
- package/templates/react/src/components/ModusTabs.tsx +114 -0
- package/templates/react/src/components/ModusTextInput.tsx +179 -0
- package/templates/react/src/components/ModusTextarea.tsx +164 -0
- package/templates/react/src/components/ModusThemeSwitcher.tsx +58 -0
- package/templates/react/src/components/ModusTimeInput.tsx +176 -0
- package/templates/react/src/components/ModusToast.tsx +207 -0
- package/templates/react/src/components/ModusToolbar.tsx +70 -0
- package/templates/react/src/components/ModusTooltip.tsx +97 -0
- package/templates/react/src/components/ModusUtilityPanel.tsx +198 -0
- package/templates/react/src/components/ThemeSwitcherDropdown.tsx +117 -0
- package/templates/react/src/components/ThemeToggleSimple.tsx +157 -0
- package/templates/react/src/config/routes.ts +196 -0
- package/templates/react/src/contexts/ThemeContext.tsx +81 -0
- package/templates/react/src/contexts/ThemeContextData.tsx +89 -0
- package/templates/react/src/data/modusIcons.ts +865 -0
- package/templates/react/src/demos/accordion-demo/page.tsx +236 -0
- package/templates/react/src/demos/alert-demo/page.tsx +94 -0
- package/templates/react/src/demos/autocomplete-demo/page.tsx +166 -0
- package/templates/react/src/demos/avatar-demo/page.tsx +135 -0
- package/templates/react/src/demos/badge-demo/page.tsx +174 -0
- package/templates/react/src/demos/breadcrumbs-demo/page.tsx +88 -0
- package/templates/react/src/demos/button-demo/page.tsx +261 -0
- package/templates/react/src/demos/button-group-demo/page.tsx +231 -0
- package/templates/react/src/demos/card-demo/page.tsx +241 -0
- package/templates/react/src/demos/checkbox-demo/page.tsx +79 -0
- package/templates/react/src/demos/chip-demo/page.tsx +197 -0
- package/templates/react/src/demos/date-demo/page.tsx +179 -0
- package/templates/react/src/demos/dropdown-demo/page.tsx +150 -0
- package/templates/react/src/demos/file-dropzone-demo/page.tsx +186 -0
- package/templates/react/src/demos/handle-demo/page.tsx +313 -0
- package/templates/react/src/demos/icon-demo/page.tsx +72 -0
- package/templates/react/src/demos/input-feedback-demo/page.tsx +202 -0
- package/templates/react/src/demos/input-label-demo/page.tsx +392 -0
- package/templates/react/src/demos/loader-demo/page.tsx +138 -0
- package/templates/react/src/demos/logo-demo/page.tsx +292 -0
- package/templates/react/src/demos/menu-demo/page.tsx +70 -0
- package/templates/react/src/demos/modal-demo/page.tsx +332 -0
- package/templates/react/src/demos/navbar-demo/page.tsx +141 -0
- package/templates/react/src/demos/number-input-demo/page.tsx +180 -0
- package/templates/react/src/demos/pagination-demo/page.tsx +147 -0
- package/templates/react/src/demos/panel-demo/page.tsx +376 -0
- package/templates/react/src/demos/progress-demo/page.tsx +185 -0
- package/templates/react/src/demos/radio-demo/page.tsx +242 -0
- package/templates/react/src/demos/rating-demo/page.tsx +97 -0
- package/templates/react/src/demos/select-demo/page.tsx +111 -0
- package/templates/react/src/demos/side-navigation-demo/page.tsx +775 -0
- package/templates/react/src/demos/skeleton-demo/page.tsx +107 -0
- package/templates/react/src/demos/slider-demo/page.tsx +78 -0
- package/templates/react/src/demos/stepper-demo/page.tsx +86 -0
- package/templates/react/src/demos/switch-demo/page.tsx +146 -0
- package/templates/react/src/demos/table-demo/page.tsx +489 -0
- package/templates/react/src/demos/tabs-demo/page.tsx +187 -0
- package/templates/react/src/demos/text-input-demo/page.tsx +151 -0
- package/templates/react/src/demos/textarea-demo/page.tsx +73 -0
- package/templates/react/src/demos/theme-switcher-demo/page.tsx +26 -0
- package/templates/react/src/demos/time-input-demo/page.tsx +148 -0
- package/templates/react/src/demos/toast-demo/page.tsx +302 -0
- package/templates/react/src/demos/toolbar-demo/page.tsx +49 -0
- package/templates/react/src/demos/tooltip-demo/page.tsx +209 -0
- package/templates/react/src/demos/typography-test/page.tsx +28 -0
- package/templates/react/src/demos/utility-panel-demo/page.tsx +197 -0
- package/templates/react/src/dev/DevPanel.tsx +219 -0
- package/templates/react/src/dev/DevPanelContext.ts +14 -0
- package/templates/react/src/dev/DevPanelProvider.tsx +63 -0
- package/templates/react/src/dev/DevRoutes.tsx +98 -0
- package/templates/react/src/dev/config.ts +127 -0
- package/templates/react/src/dev/index.ts +8 -0
- package/templates/react/src/dev/useDevPanel.ts +17 -0
- package/templates/react/src/dev-pages/ColorPalettePage.tsx +347 -0
- package/templates/react/src/dev-pages/ComponentsGalleryPage.tsx +489 -0
- package/templates/react/src/dev-pages/IconsPage.tsx +137 -0
- package/templates/react/src/dev-pages/index.ts +3 -0
- package/templates/react/src/hooks/useTheme.ts +15 -0
- package/templates/react/src/index.css +635 -0
- package/templates/react/src/main.tsx +14 -0
- package/templates/react/src/pages/HomePage.tsx +283 -0
- package/templates/react/src/vite-env.d.ts +9 -0
- package/templates/react/tailwind.config.js +58 -0
- package/templates/react/tsconfig.app.json +27 -0
- package/templates/react/tsconfig.json +7 -0
- package/templates/react/tsconfig.node.json +25 -0
- package/templates/react/vite.config.ts +18 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Angular Design System with Tailwind v4 and Modus 9-color system
|
|
3
|
+
globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Angular Design System - Tailwind v4 with Modus
|
|
8
|
+
|
|
9
|
+
## Design System Overview
|
|
10
|
+
|
|
11
|
+
This Angular application uses a **9-color design system** that enforces semantic color usage through Tailwind classes. **Direct usage of `--modus-wc-color-*` variables is prohibited** - only use the 9 semantic colors through Tailwind utilities.
|
|
12
|
+
|
|
13
|
+
## Color System
|
|
14
|
+
|
|
15
|
+
### 9 Core Colors
|
|
16
|
+
|
|
17
|
+
The design system consists of 9 core colors, each with semantic names that map to Modus CDN variables:
|
|
18
|
+
|
|
19
|
+
| Semantic Name | Modus Variable | Usage |
|
|
20
|
+
| ------------- | ------------------------------- | --------------------------- |
|
|
21
|
+
| `background` | `--modus-wc-color-base-page` | Page background |
|
|
22
|
+
| `foreground` | `--modus-wc-color-base-content` | Primary text |
|
|
23
|
+
| `card` | `--modus-wc-color-base-100` | Card backgrounds |
|
|
24
|
+
| `muted` | `--modus-wc-color-base-200` | Subtle backgrounds, borders |
|
|
25
|
+
| `secondary` | `--modus-wc-color-base-300` | Secondary UI elements |
|
|
26
|
+
| `primary` | `--modus-wc-color-info` | Primary actions, info |
|
|
27
|
+
| `success` | `--modus-wc-color-success` | Success states |
|
|
28
|
+
| `warning` | `--modus-wc-color-warning` | Warning states |
|
|
29
|
+
| `destructive` | `--modus-wc-color-error` | Error/destructive states |
|
|
30
|
+
|
|
31
|
+
### Color Variables in `src/styles.css`
|
|
32
|
+
|
|
33
|
+
The 9 semantic colors are mapped to Modus variables in the `@theme` block:
|
|
34
|
+
|
|
35
|
+
```css
|
|
36
|
+
@theme {
|
|
37
|
+
/* 9-Color Design System */
|
|
38
|
+
--color-background: var(--modus-wc-color-base-page);
|
|
39
|
+
--color-foreground: var(--modus-wc-color-base-content);
|
|
40
|
+
--color-card: var(--modus-wc-color-base-100);
|
|
41
|
+
--color-card-foreground: var(--modus-wc-color-base-content);
|
|
42
|
+
--color-muted: var(--modus-wc-color-base-200);
|
|
43
|
+
--color-muted-foreground: var(--modus-wc-color-base-content);
|
|
44
|
+
--color-secondary: var(--modus-wc-color-base-300);
|
|
45
|
+
--color-secondary-foreground: var(--modus-wc-color-base-content);
|
|
46
|
+
--color-primary: var(--modus-wc-color-info);
|
|
47
|
+
--color-primary-foreground: var(--modus-wc-color-base-page);
|
|
48
|
+
--color-success: var(--modus-wc-color-success);
|
|
49
|
+
--color-success-foreground: var(--modus-wc-color-base-page);
|
|
50
|
+
--color-warning: var(--modus-wc-color-warning);
|
|
51
|
+
--color-warning-foreground: var(--modus-wc-color-base-content);
|
|
52
|
+
--color-destructive: var(--modus-wc-color-error);
|
|
53
|
+
--color-destructive-foreground: var(--modus-wc-color-base-page);
|
|
54
|
+
--color-border: var(--modus-wc-color-base-200);
|
|
55
|
+
--color-ring: var(--modus-wc-color-info);
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Tailwind v4 Integration
|
|
60
|
+
|
|
61
|
+
### Modus Font Size Scale
|
|
62
|
+
|
|
63
|
+
Tailwind text utilities are mapped to Modus font sizes for consistency:
|
|
64
|
+
|
|
65
|
+
| Tailwind Class | Modus Variable | Size | Usage |
|
|
66
|
+
| -------------- | -------------------------- | ---- | ----------------------------- |
|
|
67
|
+
| `text-2xs` | `--modus-wc-font-size-2xs` | 8px | Micro text, badges |
|
|
68
|
+
| `text-xs` | `--modus-wc-font-size-xs` | 10px | Small labels, captions |
|
|
69
|
+
| `text-sm` | `--modus-wc-font-size-sm` | 12px | Secondary text, icons |
|
|
70
|
+
| `text-base` | `--modus-wc-font-size-md` | 14px | **Modus base size** |
|
|
71
|
+
| `text-lg` | `--modus-wc-font-size-lg` | 16px | Body text, icons |
|
|
72
|
+
| `text-xl` | `--modus-wc-font-size-xl` | 18px | Large text, icon-only buttons |
|
|
73
|
+
| `text-2xl` | `--modus-wc-font-size-2xl` | 20px | Headings |
|
|
74
|
+
| `text-3xl` | `--modus-wc-font-size-3xl` | 24px | Large headings |
|
|
75
|
+
| `text-4xl` | `--modus-wc-font-size-4xl` | 30px | Display text |
|
|
76
|
+
|
|
77
|
+
**Note**: Modus uses 14px (`text-base`) as the default body text size, not 16px like standard Tailwind.
|
|
78
|
+
|
|
79
|
+
**Implementation**: Tailwind text utilities are overridden with custom CSS classes that use Modus font size variables:
|
|
80
|
+
|
|
81
|
+
```css
|
|
82
|
+
.text-base {
|
|
83
|
+
font-size: var(--modus-wc-font-size-md) !important; /* 14px - Modus base */
|
|
84
|
+
}
|
|
85
|
+
.text-lg {
|
|
86
|
+
font-size: var(--modus-wc-font-size-lg) !important; /* 16px */
|
|
87
|
+
}
|
|
88
|
+
/* ... other sizes ... */
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Available Tailwind Classes
|
|
92
|
+
|
|
93
|
+
Use these Tailwind classes (they work with Tailwind v4 via CSS variables):
|
|
94
|
+
|
|
95
|
+
#### Background Colors
|
|
96
|
+
|
|
97
|
+
- `bg-background` - Page background
|
|
98
|
+
- `bg-card` - Card background
|
|
99
|
+
- `bg-muted` - Subtle background
|
|
100
|
+
- `bg-secondary` - Secondary background
|
|
101
|
+
- `bg-primary` - Primary/info background
|
|
102
|
+
- `bg-success` - Success background
|
|
103
|
+
- `bg-warning` - Warning background
|
|
104
|
+
- `bg-destructive` - Destructive/error background
|
|
105
|
+
|
|
106
|
+
#### Text Colors
|
|
107
|
+
|
|
108
|
+
- `text-foreground` - Primary text
|
|
109
|
+
- `text-card-foreground` - Text on cards
|
|
110
|
+
- `text-muted-foreground` - Muted text
|
|
111
|
+
- `text-secondary-foreground` - Secondary text
|
|
112
|
+
- `text-primary-foreground` - Text on primary
|
|
113
|
+
- `text-success-foreground` - Text on success
|
|
114
|
+
- `text-warning-foreground` - Text on warning
|
|
115
|
+
- `text-destructive-foreground` - Text on destructive
|
|
116
|
+
|
|
117
|
+
#### Border Colors
|
|
118
|
+
|
|
119
|
+
- `border-border` - Default border
|
|
120
|
+
- `border-primary` - Primary border
|
|
121
|
+
- `border-success` - Success border
|
|
122
|
+
- `border-warning` - Warning border
|
|
123
|
+
- `border-destructive` - Destructive border
|
|
124
|
+
|
|
125
|
+
## Custom Utilities
|
|
126
|
+
|
|
127
|
+
### Border Utilities (Tailwind v4 Workarounds)
|
|
128
|
+
|
|
129
|
+
Due to Tailwind v4 limitations with borders, use these custom utilities:
|
|
130
|
+
|
|
131
|
+
#### Default Borders
|
|
132
|
+
|
|
133
|
+
- `.border-default` - 1px solid border
|
|
134
|
+
- `.border-thick` - 2px solid border
|
|
135
|
+
- `.border-dashed` - 1px dashed border
|
|
136
|
+
- `.border-bottom-default` - Bottom border only
|
|
137
|
+
- `.border-top-default` - Top border only
|
|
138
|
+
- `.border-left-default` - Left border only
|
|
139
|
+
- `.border-right-default` - Right border only
|
|
140
|
+
|
|
141
|
+
#### Color-Specific Borders
|
|
142
|
+
|
|
143
|
+
- `.border-primary` - Primary color border
|
|
144
|
+
- `.border-thick-primary` - 2px primary border
|
|
145
|
+
- `.border-success` - Success color border
|
|
146
|
+
- `.border-warning` - Warning color border
|
|
147
|
+
- `.border-destructive` - Destructive color border
|
|
148
|
+
- Plus directional variants: `.border-top-primary`, `.border-bottom-success`, etc.
|
|
149
|
+
|
|
150
|
+
### Opacity Utilities
|
|
151
|
+
|
|
152
|
+
All colors support opacity variants (20%, 40%, 60%, 80%):
|
|
153
|
+
|
|
154
|
+
#### Text Opacity
|
|
155
|
+
|
|
156
|
+
- `.text-foreground-80`, `.text-foreground-60`, `.text-foreground-40`, `.text-foreground-20`
|
|
157
|
+
- `.text-primary-80`, `.text-primary-60`, `.text-primary-40`, `.text-primary-20`
|
|
158
|
+
- `.text-success-80`, `.text-success-60`, etc.
|
|
159
|
+
- Same pattern for: `card`, `muted`, `secondary`, `warning`, `destructive`
|
|
160
|
+
|
|
161
|
+
#### Background Opacity
|
|
162
|
+
|
|
163
|
+
- `.bg-foreground-80`, `.bg-foreground-60`, `.bg-foreground-40`, `.bg-foreground-20`
|
|
164
|
+
- `.bg-primary-80`, `.bg-primary-60`, etc.
|
|
165
|
+
- Same pattern for all colors
|
|
166
|
+
|
|
167
|
+
#### Border Opacity
|
|
168
|
+
|
|
169
|
+
- `.border-foreground-80`, `.border-foreground-60`, etc.
|
|
170
|
+
- Same pattern for all colors
|
|
171
|
+
|
|
172
|
+
## Usage Patterns
|
|
173
|
+
|
|
174
|
+
### Component Styling
|
|
175
|
+
|
|
176
|
+
```html
|
|
177
|
+
<!-- ✅ CORRECT: Use Tailwind classes with design system colors -->
|
|
178
|
+
<div class="bg-card text-card-foreground border border-border rounded-lg p-4">
|
|
179
|
+
<h2 class="text-foreground text-xl font-semibold">Card Title</h2>
|
|
180
|
+
<p class="text-muted-foreground">Card content</p>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
<!-- ✅ CORRECT: Use custom border utilities -->
|
|
184
|
+
<div class="border-default border-primary rounded-lg p-4">Primary bordered card</div>
|
|
185
|
+
|
|
186
|
+
<!-- ✅ CORRECT: Use opacity utilities -->
|
|
187
|
+
<p class="text-foreground-60">Muted text</p>
|
|
188
|
+
<div class="bg-primary-20 border-primary rounded p-2">Subtle primary background</div>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Status Colors
|
|
192
|
+
|
|
193
|
+
```html
|
|
194
|
+
<!-- ✅ CORRECT: Status indicators -->
|
|
195
|
+
<div class="bg-success text-success-foreground border-success p-3 rounded">Success message</div>
|
|
196
|
+
|
|
197
|
+
<div class="bg-warning text-warning-foreground border-warning p-3 rounded">Warning message</div>
|
|
198
|
+
|
|
199
|
+
<div class="bg-destructive text-destructive-foreground border-destructive p-3 rounded">Error message</div>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Forbidden Patterns
|
|
203
|
+
|
|
204
|
+
### ❌ Never Use Raw Modus Variables
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<!-- ❌ WRONG: Raw Modus variables are PROHIBITED -->
|
|
208
|
+
<div style="background: var(--modus-wc-color-base-page);">
|
|
209
|
+
<div class="bg-[var(--modus-wc-color-info)]"></div>
|
|
210
|
+
<p style="color: var(--modus-wc-color-gray-4);">Don't do this!</p>
|
|
211
|
+
</div>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### ❌ Never Use Hardcoded Colors
|
|
215
|
+
|
|
216
|
+
```html
|
|
217
|
+
<!-- ❌ WRONG: Hardcoded colors -->
|
|
218
|
+
<div style="background: #ffffff; color: #000000;">
|
|
219
|
+
<div class="bg-[#ffffff] text-[#000000]"></div>
|
|
220
|
+
</div>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### ❌ Never Use Generic Tailwind Colors
|
|
224
|
+
|
|
225
|
+
```html
|
|
226
|
+
<!-- ❌ WRONG: Generic Tailwind colors -->
|
|
227
|
+
<div class="bg-blue-500 text-white border-gray-300"></div>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### ❌ Never Use Inline Styles (except dynamic values)
|
|
231
|
+
|
|
232
|
+
```html
|
|
233
|
+
<!-- ❌ WRONG: Static inline styles -->
|
|
234
|
+
<div style="margin-right: 8px;">Use mr-2 instead</div>
|
|
235
|
+
|
|
236
|
+
<!-- ✅ CORRECT: Tailwind classes -->
|
|
237
|
+
<div class="mr-2">Content</div>
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## File Location
|
|
241
|
+
|
|
242
|
+
All design system colors and utilities are defined in:
|
|
243
|
+
|
|
244
|
+
- **`src/styles.css`** - Complete color system, opacity variants, and custom utilities
|
|
245
|
+
|
|
246
|
+
This file ensures LLMs can access all available colors and utilities when generating code.
|
|
247
|
+
|
|
248
|
+
## Tailwind v4 Configuration
|
|
249
|
+
|
|
250
|
+
Tailwind v4 uses CSS imports and reads CSS variables directly from `src/styles.css`. No separate `tailwind.config.js` is required for basic color mapping.
|
|
251
|
+
|
|
252
|
+
PostCSS configuration is in `.postcssrc.json`:
|
|
253
|
+
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"plugins": {
|
|
257
|
+
"@tailwindcss/postcss": {}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Key Takeaways
|
|
263
|
+
|
|
264
|
+
1. **Always use semantic design system colors**: `bg-background`, `text-foreground`, `bg-card`, etc.
|
|
265
|
+
2. **Never use raw Modus variables**: Don't use `var(--modus-wc-color-*)` directly
|
|
266
|
+
3. **Never use hardcoded colors**: No hex, RGB, or generic Tailwind colors
|
|
267
|
+
4. **Use custom border utilities**: For borders in Tailwind v4, use `.border-default`, `.border-primary`, etc.
|
|
268
|
+
5. **Use opacity utilities**: For opacity, use `.text-foreground-80`, `.bg-primary-20`, etc.
|
|
269
|
+
6. **All colors are local**: Defined in `src/styles.css` for LLM context awareness
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
**Remember**: This Angular application uses a **strict 9-color design system**. **Direct usage of `--modus-wc-color-*` variables is PROHIBITED**. Always use only the 9 semantic colors through Tailwind classes. Use custom border and opacity utilities to work around Tailwind v4 limitations.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Development workflow and quality assurance for Angular + Vite with Modus
|
|
3
|
+
globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Modus Development Workflow - Short
|
|
8
|
+
|
|
9
|
+
Essential linting and quality checks for Angular + Vite development.
|
|
10
|
+
|
|
11
|
+
## Key Rules
|
|
12
|
+
|
|
13
|
+
- **Run linting commands during development** - `npm run lint:all` before commits
|
|
14
|
+
- **Fix violations before committing** - No violations in committed code
|
|
15
|
+
- **Check inline styles** - `npm run lint:styles` to catch inline style violations
|
|
16
|
+
- **Verify design system colors** - `npm run lint:colors` for color compliance
|
|
17
|
+
- **Validate Modus icons** - `npm run lint:icons` for icon usage
|
|
18
|
+
- **Check border usage** - `npm run lint:borders` for border compliance
|
|
19
|
+
- **Check opacity utilities** - `npm run lint:opacity` for opacity compliance
|
|
20
|
+
|
|
21
|
+
## Linting Commands
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run lint:styles # Check inline styles
|
|
25
|
+
npm run lint:colors # Check color usage
|
|
26
|
+
npm run lint:icons # Check icon usage
|
|
27
|
+
npm run lint:borders # Check border violations
|
|
28
|
+
npm run lint:opacity # Check opacity utilities
|
|
29
|
+
npm run type-check # TypeScript validation
|
|
30
|
+
npm run lint:all # Run all checks
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Angular Best Practices
|
|
34
|
+
|
|
35
|
+
- **Use standalone components** with signal-based APIs
|
|
36
|
+
- **Use `input()` and `output()`** functions, not decorators
|
|
37
|
+
- **Use `ChangeDetectionStrategy.OnPush`** for performance
|
|
38
|
+
- **Use `inject()`** for dependency injection
|
|
39
|
+
- **Use modern control flow** (`@if`, `@for`, `@switch`)
|
|
40
|
+
|
|
41
|
+
## Reference
|
|
42
|
+
|
|
43
|
+
For detailed workflow guide and quality gates, fetch the full rule: `modus-angular-development-workflow`
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Development workflow and quality assurance for Angular + Vite with Modus
|
|
3
|
+
globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Development Workflow & Quality Assurance for Angular + Vite
|
|
8
|
+
|
|
9
|
+
## MANDATORY: Always Run Linting Commands During Development
|
|
10
|
+
|
|
11
|
+
**CRITICAL**: Before making any code changes, always run these linting commands to ensure design system compliance:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Check for inline styles that should use Tailwind classes
|
|
15
|
+
npm run lint:styles
|
|
16
|
+
|
|
17
|
+
# Check for non-Modus colors (hex, RGB, Tailwind colors)
|
|
18
|
+
npm run lint:colors
|
|
19
|
+
|
|
20
|
+
# Check for non-Modus icons (Font Awesome, Material Icons, etc.)
|
|
21
|
+
npm run lint:icons
|
|
22
|
+
|
|
23
|
+
# Check for border violations (Tailwind color classes in borders)
|
|
24
|
+
npm run lint:borders
|
|
25
|
+
|
|
26
|
+
# Check for opacity violations (using /80 syntax instead of custom utilities)
|
|
27
|
+
npm run lint:opacity
|
|
28
|
+
|
|
29
|
+
# Validate Modus icon names
|
|
30
|
+
npm run lint:icon-names
|
|
31
|
+
|
|
32
|
+
# Run TypeScript type checking
|
|
33
|
+
npm run type-check
|
|
34
|
+
|
|
35
|
+
# Run all linting checks at once
|
|
36
|
+
npm run lint:all
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Pre-Development Checklist
|
|
40
|
+
|
|
41
|
+
Before starting any new feature or component:
|
|
42
|
+
|
|
43
|
+
1. **Run Design System Lints**:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm run lint:styles # Check inline styles
|
|
47
|
+
npm run lint:colors # Check color usage
|
|
48
|
+
npm run lint:icons # Check icon usage
|
|
49
|
+
npm run lint:borders # Check border violations
|
|
50
|
+
npm run lint:opacity # Check opacity utilities
|
|
51
|
+
npm run type-check # TypeScript validation
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
2. **Verify Theme Compatibility**:
|
|
55
|
+
|
|
56
|
+
- Test with all 6 Modus themes (classic/modern, light/dark, connect themes)
|
|
57
|
+
- Ensure components work in both light and dark modes
|
|
58
|
+
|
|
59
|
+
3. **Check Component Architecture**:
|
|
60
|
+
- Use single configurable components (not multiple specific ones)
|
|
61
|
+
- Follow Modus Web Components wrapper patterns
|
|
62
|
+
- Use signals for state management
|
|
63
|
+
|
|
64
|
+
## Common Violations to Watch For
|
|
65
|
+
|
|
66
|
+
### Inline Styles (lint:styles):
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// VIOLATION: Inline styles
|
|
70
|
+
template: `<div style="background-color: var(--modus-wc-color-base-page)">`;
|
|
71
|
+
template: `<div [style.margin-right.px]="8">`;
|
|
72
|
+
|
|
73
|
+
// CORRECT: Tailwind classes
|
|
74
|
+
template: `<div class="bg-background mr-2 text-foreground">`;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Color Usage (lint:colors):
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// VIOLATION: Non-Modus colors
|
|
81
|
+
template: `<div style="background-color: #ffffff">`;
|
|
82
|
+
template: `<div class="bg-blue-500 text-red-400">`;
|
|
83
|
+
|
|
84
|
+
// CORRECT: Modus design system colors
|
|
85
|
+
template: `<div class="bg-background text-foreground">`;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Icon Usage (lint:icons):
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
// VIOLATION: Non-Modus icons
|
|
92
|
+
template: `<i class="fa fa-home"></i>`;
|
|
93
|
+
template: `<mat-icon>home</mat-icon>`;
|
|
94
|
+
|
|
95
|
+
// CORRECT: Modus icons
|
|
96
|
+
template: `<i class="modus-icons">home</i>`;
|
|
97
|
+
template: `<modus-icon name="home" />`;
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Border Violations (lint:borders):
|
|
101
|
+
|
|
102
|
+
```html
|
|
103
|
+
<!-- VIOLATION: Tailwind color classes in borders -->
|
|
104
|
+
<div class="border border-red-500">Error message</div>
|
|
105
|
+
|
|
106
|
+
<!-- CORRECT: Design system border utilities -->
|
|
107
|
+
<div class="border-destructive">Error message</div>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Opacity Violations (lint:opacity):
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<!-- VIOLATION: Tailwind opacity syntax -->
|
|
114
|
+
<div class="text-foreground/80">Text with opacity</div>
|
|
115
|
+
|
|
116
|
+
<!-- CORRECT: Custom opacity utilities -->
|
|
117
|
+
<div class="text-foreground-80">Text with opacity</div>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Quality Gates
|
|
121
|
+
|
|
122
|
+
**Pre-commit Requirements:**
|
|
123
|
+
|
|
124
|
+
- [ ] `npm run lint:styles` passes (0 violations)
|
|
125
|
+
- [ ] `npm run lint:colors` passes (0 violations)
|
|
126
|
+
- [ ] `npm run lint:icons` passes (0 violations)
|
|
127
|
+
- [ ] `npm run lint:borders` passes (0 violations)
|
|
128
|
+
- [ ] `npm run lint:opacity` passes (0 violations)
|
|
129
|
+
- [ ] `npm run type-check` passes (0 TypeScript errors)
|
|
130
|
+
- [ ] All 6 themes tested (classic/modern, light/dark, connect themes)
|
|
131
|
+
- [ ] No console errors or warnings
|
|
132
|
+
|
|
133
|
+
## Angular + Vite Best Practices
|
|
134
|
+
|
|
135
|
+
### Component Development:
|
|
136
|
+
|
|
137
|
+
1. **Use standalone components** with signal-based APIs
|
|
138
|
+
2. **Use `input()` and `output()`** functions, not decorators
|
|
139
|
+
3. **Use `ChangeDetectionStrategy.OnPush`** for performance
|
|
140
|
+
4. **Use `inject()`** for dependency injection
|
|
141
|
+
5. **Use modern control flow** (`@if`, `@for`, `@switch`)
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
**Remember**: Quality gates are non-negotiable. All linting commands must pass before any code is considered complete.
|