@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,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Modus Icons usage guide for Angular applications
|
|
3
|
+
globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Modus Icons Usage Guide for Angular Applications
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Modus Icons use **icon font ligatures** with **underscore naming convention**.
|
|
12
|
+
|
|
13
|
+
## Icon Naming Convention
|
|
14
|
+
|
|
15
|
+
**CRITICAL: Modus Icons use UNDERSCORES (\_), not hyphens (-)**
|
|
16
|
+
|
|
17
|
+
### CORRECT Icon Names
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<i class="modus-icons">save_disk</i>
|
|
21
|
+
<i class="modus-icons">arrow_left</i>
|
|
22
|
+
<i class="modus-icons">arrow_right</i>
|
|
23
|
+
<i class="modus-icons">add_circle</i>
|
|
24
|
+
<i class="modus-icons">user_permissions</i>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### INCORRECT Icon Names
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<!-- Don't use hyphens -->
|
|
31
|
+
<i class="modus-icons">save-disk</i>
|
|
32
|
+
<i class="modus-icons">arrow-left</i>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage Patterns
|
|
36
|
+
|
|
37
|
+
### Angular Component Integration
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<!-- Icon with text (left position) -->
|
|
41
|
+
<modus-button icon="save_disk" iconPosition="left">Save File</modus-button>
|
|
42
|
+
|
|
43
|
+
<!-- Icon with text (right position) -->
|
|
44
|
+
<modus-button icon="download" iconPosition="right">Download</modus-button>
|
|
45
|
+
|
|
46
|
+
<!-- Icon only (requires aria-label) -->
|
|
47
|
+
<modus-button icon="settings" iconPosition="only" ariaLabel="Open settings"></modus-button>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Direct HTML Usage
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<!-- Decorative icon (not announced by screen readers) -->
|
|
54
|
+
<i class="modus-icons text-lg" aria-hidden="true">user_add</i>
|
|
55
|
+
|
|
56
|
+
<!-- Informational icon (announced by screen readers) -->
|
|
57
|
+
<i class="modus-icons text-base" role="img" aria-label="Settings">settings</i>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Sizing Icons
|
|
61
|
+
|
|
62
|
+
Use Tailwind text utilities mapped to Modus font sizes:
|
|
63
|
+
|
|
64
|
+
| Tailwind Class | Size | Usage |
|
|
65
|
+
| -------------- | ---- | ---------------------- |
|
|
66
|
+
| `text-2xs` | 8px | Micro icons, badges |
|
|
67
|
+
| `text-xs` | 10px | Small labels, captions |
|
|
68
|
+
| `text-sm` | 12px | Secondary icons |
|
|
69
|
+
| `text-base` | 14px | **Modus default size** |
|
|
70
|
+
| `text-lg` | 16px | Body text icons |
|
|
71
|
+
| `text-xl` | 18px | Large icons |
|
|
72
|
+
| `text-2xl` | 20px | Prominent icons |
|
|
73
|
+
| `text-3xl` | 24px | Display icons |
|
|
74
|
+
| `text-4xl` | 30px | Hero icons |
|
|
75
|
+
|
|
76
|
+
### Coloring Icons
|
|
77
|
+
|
|
78
|
+
Use design system color classes:
|
|
79
|
+
|
|
80
|
+
```html
|
|
81
|
+
<i class="modus-icons text-primary">info</i>
|
|
82
|
+
<i class="modus-icons text-success">check_circle</i>
|
|
83
|
+
<i class="modus-icons text-warning">warning</i>
|
|
84
|
+
<i class="modus-icons text-error">error</i>
|
|
85
|
+
<i class="modus-icons text-muted-foreground">help</i>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Common Icon Names
|
|
89
|
+
|
|
90
|
+
### Navigation Icons
|
|
91
|
+
|
|
92
|
+
`arrow_left`, `arrow_right`, `arrow_up`, `arrow_down`, `chevron_left`, `chevron_right`, `menu`, `close`
|
|
93
|
+
|
|
94
|
+
### Action Icons
|
|
95
|
+
|
|
96
|
+
`add`, `add_circle`, `edit`, `delete`, `save_disk`, `download`, `upload`, `copy`, `cut`, `paste`
|
|
97
|
+
|
|
98
|
+
### Status Icons
|
|
99
|
+
|
|
100
|
+
`check`, `check_circle`, `error`, `warning`, `info`, `help`
|
|
101
|
+
|
|
102
|
+
### File Icons
|
|
103
|
+
|
|
104
|
+
`file`, `file_upload`, `file_download`, `folder`, `image`, `document`
|
|
105
|
+
|
|
106
|
+
## Accessibility Guidelines
|
|
107
|
+
|
|
108
|
+
### Decorative Icons
|
|
109
|
+
|
|
110
|
+
```html
|
|
111
|
+
<button>
|
|
112
|
+
<i class="modus-icons mr-2" aria-hidden="true">save_disk</i>
|
|
113
|
+
Save Document
|
|
114
|
+
</button>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Informational Icons
|
|
118
|
+
|
|
119
|
+
```html
|
|
120
|
+
<i class="modus-icons" role="img" aria-label="Warning">warning</i>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Icon-Only Buttons
|
|
124
|
+
|
|
125
|
+
```html
|
|
126
|
+
<modus-button icon="settings" iconPosition="only" ariaLabel="Open settings menu"></modus-button>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
**Key Takeaways:**
|
|
132
|
+
|
|
133
|
+
1. **Always use underscores** in icon names (`save_disk`, not `save-disk`)
|
|
134
|
+
2. **Load font via HTML link**, not CSS import
|
|
135
|
+
3. **Use `modus-icons` class** with icon name as text content
|
|
136
|
+
4. **Provide accessibility labels** for informational and icon-only usage
|
|
137
|
+
5. **Test visually** to ensure icons render as glyphs, not text
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create comprehensive implementation guides for major feature development in Angular + Vite
|
|
3
|
+
globs: ["**/.cursor/rules/implementation-guides/**/*.md"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Implementation Guides - Short
|
|
8
|
+
|
|
9
|
+
Create comprehensive implementation guides for major feature development.
|
|
10
|
+
|
|
11
|
+
## Key Rules
|
|
12
|
+
|
|
13
|
+
- **Create guides for major features** - Any feature requiring 2+ hours of development
|
|
14
|
+
- **Document before coding** - Plan architecture and approach first
|
|
15
|
+
- **Use required template sections** - Overview, architecture, plan, testing, review
|
|
16
|
+
- **Store in `implementation_guides/`** - Organized by feature name and date
|
|
17
|
+
- **Update status throughout development** - Planning > In Progress > Complete > Archived
|
|
18
|
+
- **Include post-implementation review** - Document lessons learned and improvements
|
|
19
|
+
- **Reference in commits** - Link to implementation guide in commit messages
|
|
20
|
+
|
|
21
|
+
## When to Create
|
|
22
|
+
|
|
23
|
+
**Create guides for:**
|
|
24
|
+
- New page/view components with complex functionality
|
|
25
|
+
- New reusable components or design system additions
|
|
26
|
+
- API integrations
|
|
27
|
+
- Features requiring 2+ hours of development
|
|
28
|
+
|
|
29
|
+
**Skip for:**
|
|
30
|
+
- Simple bug fixes (< 30 minutes)
|
|
31
|
+
- Minor text or styling tweaks
|
|
32
|
+
- Documentation updates
|
|
33
|
+
|
|
34
|
+
## Reference
|
|
35
|
+
|
|
36
|
+
For detailed template structure and lifecycle management, fetch the full rule: `modus-angular-implementation-guides`
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create comprehensive implementation guides for major feature development in Angular + Vite
|
|
3
|
+
globs: ["**/.cursor/rules/implementation-guides/**/*.md"]
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Implementation Guide Documentation Rules for Angular + Vite
|
|
8
|
+
|
|
9
|
+
## Pre-Development Documentation Requirements
|
|
10
|
+
|
|
11
|
+
### MANDATORY: Implementation Guide Creation
|
|
12
|
+
|
|
13
|
+
**BEFORE starting ANY major feature development, you MUST:**
|
|
14
|
+
|
|
15
|
+
1. **Create a comprehensive implementation guide** in `/implementation_guides/`
|
|
16
|
+
2. **Document the complete approach** before writing any code
|
|
17
|
+
3. **Get stakeholder review** of the implementation plan
|
|
18
|
+
4. **Update guides with lessons learned** during and after implementation
|
|
19
|
+
|
|
20
|
+
### What Constitutes a "Major Feature"
|
|
21
|
+
|
|
22
|
+
**Always create implementation guides for:**
|
|
23
|
+
|
|
24
|
+
- New page/view components with complex functionality
|
|
25
|
+
- New reusable component libraries or design system additions
|
|
26
|
+
- Integration with external APIs or services
|
|
27
|
+
- Authentication, authorization, or security features
|
|
28
|
+
- Data management patterns (stores, state management)
|
|
29
|
+
- Routing or navigation changes
|
|
30
|
+
- Performance optimization initiatives
|
|
31
|
+
- Accessibility improvements or compliance work
|
|
32
|
+
- Build process, tooling, or infrastructure changes
|
|
33
|
+
- Any feature requiring more than 2 hours of development time
|
|
34
|
+
|
|
35
|
+
**Skip implementation guides for:**
|
|
36
|
+
|
|
37
|
+
- Simple bug fixes (< 30 minutes)
|
|
38
|
+
- Minor text or styling tweaks
|
|
39
|
+
- Documentation updates
|
|
40
|
+
- Dependency version updates (unless breaking changes)
|
|
41
|
+
|
|
42
|
+
## Implementation Guide Structure
|
|
43
|
+
|
|
44
|
+
### File Location & Naming
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
implementation_guides/
|
|
48
|
+
├── feature-name-YYYY-MM-DD.md # New feature guides
|
|
49
|
+
├── integration-api-name-YYYY-MM-DD.md # API integration guides
|
|
50
|
+
├── component-library-YYYY-MM-DD.md # Component development guides
|
|
51
|
+
└── performance-optimization-YYYY-MM-DD.md # Performance guides
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Naming Convention:**
|
|
55
|
+
|
|
56
|
+
- Use kebab-case for file names
|
|
57
|
+
- Include date for chronological tracking
|
|
58
|
+
- Be descriptive but concise
|
|
59
|
+
|
|
60
|
+
### Required Implementation Guide Template
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
# [Feature Name] Implementation Guide
|
|
64
|
+
|
|
65
|
+
**Date:** YYYY-MM-DD
|
|
66
|
+
**Author:** [Your Name]
|
|
67
|
+
**Status:** [Planning | In Progress | Complete | Archived]
|
|
68
|
+
|
|
69
|
+
## Overview & Objectives
|
|
70
|
+
|
|
71
|
+
### Problem Statement
|
|
72
|
+
|
|
73
|
+
- What problem are we solving?
|
|
74
|
+
- Why is this feature needed?
|
|
75
|
+
- What are the success criteria?
|
|
76
|
+
|
|
77
|
+
### Goals & Requirements
|
|
78
|
+
|
|
79
|
+
- [ ] Functional requirement 1
|
|
80
|
+
- [ ] Functional requirement 2
|
|
81
|
+
- [ ] Non-functional requirement 1 (performance, accessibility, etc.)
|
|
82
|
+
|
|
83
|
+
## Technical Architecture
|
|
84
|
+
|
|
85
|
+
### Component Architecture
|
|
86
|
+
|
|
87
|
+
- High-level component structure
|
|
88
|
+
- Data flow diagrams
|
|
89
|
+
- State management approach (signals, services)
|
|
90
|
+
|
|
91
|
+
### Angular-Specific Patterns
|
|
92
|
+
|
|
93
|
+
- Standalone components used
|
|
94
|
+
- Signal-based state management
|
|
95
|
+
- Service patterns
|
|
96
|
+
- Routing configuration
|
|
97
|
+
|
|
98
|
+
### Dependencies & Integrations
|
|
99
|
+
|
|
100
|
+
- New dependencies required
|
|
101
|
+
- External API integrations
|
|
102
|
+
- Modus Web Components usage
|
|
103
|
+
|
|
104
|
+
### File Structure Changes
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
src/app/
|
|
108
|
+
├── components/
|
|
109
|
+
│ └── new-component.component.ts
|
|
110
|
+
├── pages/
|
|
111
|
+
│ └── new-page/
|
|
112
|
+
│ └── new-page.component.ts
|
|
113
|
+
├── services/
|
|
114
|
+
│ └── new-feature.service.ts
|
|
115
|
+
└── app.routes.ts
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Design System Integration
|
|
119
|
+
|
|
120
|
+
### Modus Components Used
|
|
121
|
+
|
|
122
|
+
- List specific Modus Web Components
|
|
123
|
+
- Color variables and theming approach
|
|
124
|
+
- Accessibility considerations
|
|
125
|
+
|
|
126
|
+
## Implementation Plan
|
|
127
|
+
|
|
128
|
+
### Phase 1: Foundation
|
|
129
|
+
|
|
130
|
+
- [ ] Task 1
|
|
131
|
+
- [ ] Task 2
|
|
132
|
+
- [ ] Task 3
|
|
133
|
+
|
|
134
|
+
### Phase 2: Core Features
|
|
135
|
+
|
|
136
|
+
- [ ] Task 1
|
|
137
|
+
- [ ] Task 2
|
|
138
|
+
|
|
139
|
+
### Phase 3: Polish & Testing
|
|
140
|
+
|
|
141
|
+
- [ ] Task 1
|
|
142
|
+
- [ ] Task 2
|
|
143
|
+
|
|
144
|
+
## Testing Strategy
|
|
145
|
+
|
|
146
|
+
### Unit Testing
|
|
147
|
+
|
|
148
|
+
- Components to test
|
|
149
|
+
- Test scenarios
|
|
150
|
+
- Mock requirements
|
|
151
|
+
|
|
152
|
+
### Integration Testing
|
|
153
|
+
|
|
154
|
+
- API integration tests
|
|
155
|
+
- Component interaction tests
|
|
156
|
+
|
|
157
|
+
### Accessibility Testing
|
|
158
|
+
|
|
159
|
+
- WCAG compliance checklist
|
|
160
|
+
- Screen reader testing
|
|
161
|
+
- Keyboard navigation testing
|
|
162
|
+
|
|
163
|
+
## Post-Implementation Review
|
|
164
|
+
|
|
165
|
+
### Lessons Learned
|
|
166
|
+
|
|
167
|
+
_[Update this section during/after implementation]_
|
|
168
|
+
|
|
169
|
+
#### What Went Well
|
|
170
|
+
|
|
171
|
+
-
|
|
172
|
+
|
|
173
|
+
#### Challenges Encountered
|
|
174
|
+
|
|
175
|
+
-
|
|
176
|
+
|
|
177
|
+
#### Solutions & Workarounds
|
|
178
|
+
|
|
179
|
+
-
|
|
180
|
+
|
|
181
|
+
#### Future Improvements
|
|
182
|
+
|
|
183
|
+
-
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Implementation Guide Lifecycle
|
|
187
|
+
|
|
188
|
+
### Pre-Development Phase
|
|
189
|
+
|
|
190
|
+
1. **Create Implementation Guide**
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Create new guide with proper naming
|
|
194
|
+
touch implementation_guides/feature-name-$(date +%Y-%m-%d).md
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
2. **Fill Out Complete Template**
|
|
198
|
+
|
|
199
|
+
- All sections must be completed before coding begins
|
|
200
|
+
- Get team/stakeholder review of the plan
|
|
201
|
+
|
|
202
|
+
### During Implementation Phase
|
|
203
|
+
|
|
204
|
+
#### Update guides in real-time as you encounter issues
|
|
205
|
+
|
|
206
|
+
#### When You Encounter Problems
|
|
207
|
+
|
|
208
|
+
1. **Document the Issue**
|
|
209
|
+
|
|
210
|
+
```markdown
|
|
211
|
+
#### Challenge: [Brief Description]
|
|
212
|
+
|
|
213
|
+
**Date:** YYYY-MM-DD
|
|
214
|
+
**Problem:** Detailed description of what went wrong
|
|
215
|
+
**Impact:** How this affected the implementation
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
2. **Document the Solution**
|
|
219
|
+
|
|
220
|
+
```markdown
|
|
221
|
+
**Solution:** Step-by-step solution implemented
|
|
222
|
+
**Code Changes:** Link to commits or describe changes
|
|
223
|
+
**Time Impact:** Additional time required
|
|
224
|
+
**Prevention:** How to avoid this in future implementations
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Quality Standards
|
|
228
|
+
|
|
229
|
+
**Every implementation guide must:**
|
|
230
|
+
|
|
231
|
+
- [ ] **Complete Template**: All required sections filled out
|
|
232
|
+
- [ ] **Technical Accuracy**: Architecture matches actual implementation
|
|
233
|
+
- [ ] **Lessons Learned**: Post-implementation section completed
|
|
234
|
+
- [ ] **Performance Data**: Actual metrics recorded
|
|
235
|
+
- [ ] **Accessibility Results**: WCAG compliance documented
|
|
236
|
+
|
|
237
|
+
## Angular + Vite Specific Considerations
|
|
238
|
+
|
|
239
|
+
### Component Architecture Patterns
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
@Component({
|
|
243
|
+
selector: 'app-new-component',
|
|
244
|
+
template: `
|
|
245
|
+
<div class="bg-background text-foreground">
|
|
246
|
+
@if (isLoading()) {
|
|
247
|
+
<modus-loader />
|
|
248
|
+
} @else {
|
|
249
|
+
<div>{{ content() }}</div>
|
|
250
|
+
}
|
|
251
|
+
</div>
|
|
252
|
+
`,
|
|
253
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
254
|
+
})
|
|
255
|
+
export class NewComponent {
|
|
256
|
+
private service = inject(NewFeatureService);
|
|
257
|
+
|
|
258
|
+
readonly isLoading = signal(false);
|
|
259
|
+
readonly content = signal('');
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### State Management Patterns
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
@Injectable({ providedIn: 'root' })
|
|
267
|
+
export class FeatureService {
|
|
268
|
+
private readonly featureState = signal(initialState);
|
|
269
|
+
|
|
270
|
+
readonly state = this.featureState.asReadonly();
|
|
271
|
+
|
|
272
|
+
updateState(newState: Partial<FeatureState>): void {
|
|
273
|
+
this.featureState.update(current => ({ ...current, ...newState }));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Routing Patterns
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
export const routes: Routes = [
|
|
282
|
+
{
|
|
283
|
+
path: 'feature',
|
|
284
|
+
loadComponent: () => import('./feature/feature.component').then(m => m.FeatureComponent),
|
|
285
|
+
},
|
|
286
|
+
];
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Common Anti-Patterns to Avoid
|
|
290
|
+
|
|
291
|
+
### Don't Skip Implementation Guides
|
|
292
|
+
|
|
293
|
+
- **Never start major development without a guide**
|
|
294
|
+
- **Don't create guides after the fact** - they lose their planning value
|
|
295
|
+
- **Don't leave guides incomplete** - they become technical debt
|
|
296
|
+
|
|
297
|
+
### Don't Create Shallow Guides
|
|
298
|
+
|
|
299
|
+
- **Avoid vague descriptions** - be specific about technical approaches
|
|
300
|
+
- **Don't skip the architecture section** - future developers need this context
|
|
301
|
+
- **Don't ignore lessons learned** - this is the most valuable section
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Integration patterns for Modus Web Components with Angular standalone wrapper components
|
|
3
|
+
globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Modus Angular Integration - Short
|
|
8
|
+
|
|
9
|
+
Essential integration patterns for Modus Web Components with Angular.
|
|
10
|
+
|
|
11
|
+
## Key Rules
|
|
12
|
+
|
|
13
|
+
- **Use wrapper components** - Always use `<modus-button>`, not `<modus-wc-button>` directly
|
|
14
|
+
- **Signal-based API** - Use `input()`, `output()`, `signal()`, `computed()`
|
|
15
|
+
- **OnPush change detection** - All components use `ChangeDetectionStrategy.OnPush`
|
|
16
|
+
- **Event handling** - Extract `event.detail` from CustomEvent when needed
|
|
17
|
+
- **Modern control flow** - Use `@if`, `@for`, `@switch`, not `*ngIf`, `*ngFor`
|
|
18
|
+
- **inject() for DI** - Use `inject()` function, not constructor injection
|
|
19
|
+
|
|
20
|
+
## Wrapper Pattern
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
@Component({
|
|
24
|
+
selector: 'modus-button', // Users use <modus-button>
|
|
25
|
+
template: `
|
|
26
|
+
<modus-wc-button
|
|
27
|
+
[color]="color()"
|
|
28
|
+
[variant]="variant()"
|
|
29
|
+
(buttonClick)="handleButtonClick($event)"
|
|
30
|
+
>
|
|
31
|
+
<ng-content />
|
|
32
|
+
</modus-wc-button>
|
|
33
|
+
`,
|
|
34
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
|
+
})
|
|
36
|
+
export class ModusButtonComponent {
|
|
37
|
+
readonly color = input<ButtonColor>('primary');
|
|
38
|
+
readonly buttonClick = output<MouseEvent | KeyboardEvent>();
|
|
39
|
+
|
|
40
|
+
handleButtonClick(event: CustomEvent<MouseEvent | KeyboardEvent>): void {
|
|
41
|
+
this.buttonClick.emit(event.detail);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Template Usage
|
|
47
|
+
|
|
48
|
+
```html
|
|
49
|
+
<!-- CORRECT: Use wrapper component -->
|
|
50
|
+
<modus-button [color]="'primary'" (buttonClick)="handleClick($event)">
|
|
51
|
+
Click Me
|
|
52
|
+
</modus-button>
|
|
53
|
+
|
|
54
|
+
<!-- WRONG: Never use web component directly -->
|
|
55
|
+
<modus-wc-button>Don't do this</modus-wc-button>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Reference
|
|
59
|
+
|
|
60
|
+
For detailed integration patterns and component list, fetch the full rule: `modus-angular-integration`
|