@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,15 @@
|
|
|
1
|
+
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
|
|
2
|
+
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
|
|
3
|
+
{
|
|
4
|
+
"extends": "./tsconfig.json",
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"outDir": "./out-tsc/app",
|
|
7
|
+
"types": []
|
|
8
|
+
},
|
|
9
|
+
"include": [
|
|
10
|
+
"src/**/*.ts"
|
|
11
|
+
],
|
|
12
|
+
"exclude": [
|
|
13
|
+
"src/**/*.spec.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
|
|
2
|
+
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
|
|
3
|
+
{
|
|
4
|
+
"compileOnSave": false,
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"strict": true,
|
|
7
|
+
"noImplicitOverride": true,
|
|
8
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
9
|
+
"noImplicitReturns": true,
|
|
10
|
+
"noFallthroughCasesInSwitch": true,
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"isolatedModules": true,
|
|
13
|
+
"experimentalDecorators": true,
|
|
14
|
+
"importHelpers": true,
|
|
15
|
+
"target": "ES2022",
|
|
16
|
+
"module": "esnext",
|
|
17
|
+
"moduleResolution": "bundler"
|
|
18
|
+
},
|
|
19
|
+
"angularCompilerOptions": {
|
|
20
|
+
"enableI18nLegacyMessageIdFormat": false,
|
|
21
|
+
"strictInjectionParameters": true,
|
|
22
|
+
"strictInputAccessModifiers": true,
|
|
23
|
+
"typeCheckHostBindings": true,
|
|
24
|
+
"strictTemplates": true
|
|
25
|
+
},
|
|
26
|
+
"files": [],
|
|
27
|
+
"references": [
|
|
28
|
+
{
|
|
29
|
+
"path": "./tsconfig.app.json"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"path": "./tsconfig.spec.json"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
|
|
2
|
+
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
|
|
3
|
+
{
|
|
4
|
+
"extends": "./tsconfig.json",
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"outDir": "./out-tsc/spec",
|
|
7
|
+
"types": [
|
|
8
|
+
"jasmine"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"include": [
|
|
12
|
+
"src/**/*.ts"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"frameworks": {
|
|
3
|
+
"react": {
|
|
4
|
+
"name": "React + Vite + Modus 2.0 Components",
|
|
5
|
+
"description": "Theming + Icons + MCP + Skills",
|
|
6
|
+
"supportsTypeScript": true,
|
|
7
|
+
"badge": "●",
|
|
8
|
+
"note": "Most Popular"
|
|
9
|
+
},
|
|
10
|
+
"angular": {
|
|
11
|
+
"name": "Angular + Modus 2.0 Web Components",
|
|
12
|
+
"description": "Theming + Icons + MCP + Skills",
|
|
13
|
+
"supportsTypeScript": true,
|
|
14
|
+
"badge": "■",
|
|
15
|
+
"note": "Enterprise Grade"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"meta": {
|
|
19
|
+
"configVersion": "2.0.0",
|
|
20
|
+
"templatesIncluded": true,
|
|
21
|
+
"lastUpdated": "2026-01-28"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# Remove Dev Content
|
|
2
|
+
|
|
3
|
+
Remove all development and exploration content from this Modus React app, preparing it for production use while keeping all core Modus wrapper components intact.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This command removes:
|
|
8
|
+
- Dev Panel (floating development panel)
|
|
9
|
+
- All 48 component demo pages
|
|
10
|
+
- Reference pages (colors, icons, components gallery)
|
|
11
|
+
- Dev-only helper components
|
|
12
|
+
- Icon reference data (`src/data/modusIcons.ts`)
|
|
13
|
+
|
|
14
|
+
And updates:
|
|
15
|
+
- Icon names validation script to handle missing icon reference file gracefully
|
|
16
|
+
|
|
17
|
+
While preserving:
|
|
18
|
+
- All 45 Modus wrapper components
|
|
19
|
+
- Theme system (ThemeProvider, useTheme)
|
|
20
|
+
- Core infrastructure (ModusProvider, main.tsx, index.css)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Step 1: Delete Entire Directories
|
|
25
|
+
|
|
26
|
+
Remove these directories completely:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
src/demos/ # 48 component demo pages
|
|
30
|
+
src/dev/ # Dev panel infrastructure
|
|
31
|
+
src/dev-pages/ # Colors, Icons, Components gallery pages
|
|
32
|
+
src/data/ # modusIcons.ts (only used by IconsPage)
|
|
33
|
+
src/config/ # Deprecated routes.ts
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Step 2: Delete Dev-Only Files from src/components/
|
|
39
|
+
|
|
40
|
+
Remove these 4 files from `src/components/`:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
src/components/DemoPage.tsx
|
|
44
|
+
src/components/DemoExample.tsx
|
|
45
|
+
src/components/ThemeSwitcherDropdown.tsx
|
|
46
|
+
src/components/ThemeToggleSimple.tsx
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Step 3: Update src/App.tsx
|
|
52
|
+
|
|
53
|
+
Remove all dev panel imports and usage. The file should become:
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
|
|
57
|
+
import ModusProvider from "./components/ModusProvider";
|
|
58
|
+
import { ThemeProvider } from "./contexts/ThemeContext";
|
|
59
|
+
|
|
60
|
+
// Your pages
|
|
61
|
+
import HomePage from "./pages/HomePage";
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Main Application Component.
|
|
65
|
+
*
|
|
66
|
+
* Structure:
|
|
67
|
+
* - ThemeProvider: Manages Modus themes (6 themes available)
|
|
68
|
+
* - ModusProvider: Provides Modus Web Components CSS
|
|
69
|
+
* - Router: React Router for navigation
|
|
70
|
+
*
|
|
71
|
+
* Add your routes below.
|
|
72
|
+
*/
|
|
73
|
+
function App() {
|
|
74
|
+
return (
|
|
75
|
+
<ThemeProvider>
|
|
76
|
+
<ModusProvider>
|
|
77
|
+
<Router>
|
|
78
|
+
<Routes>
|
|
79
|
+
{/* Your application routes */}
|
|
80
|
+
<Route path="/" element={<HomePage />} />
|
|
81
|
+
{/* Example: <Route path="/about" element={<AboutPage />} /> */}
|
|
82
|
+
</Routes>
|
|
83
|
+
</Router>
|
|
84
|
+
</ModusProvider>
|
|
85
|
+
</ThemeProvider>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export default App;
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**What was removed:**
|
|
93
|
+
- Import: `import { DevPanelProvider, DevPanel, DevRoutes, isDevPanelEnabled } from "./dev";`
|
|
94
|
+
- Variable: `const showDevPanel = isDevPanelEnabled();`
|
|
95
|
+
- Component: `<DevPanelProvider>` wrapper
|
|
96
|
+
- Route: `{showDevPanel && <Route path="/dev/*" element={<DevRoutes />} />}`
|
|
97
|
+
- Component: `{showDevPanel && <DevPanel />}`
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Step 4: Update src/pages/HomePage.tsx
|
|
102
|
+
|
|
103
|
+
Remove all Dev Panel references from the HomePage. Specifically remove:
|
|
104
|
+
|
|
105
|
+
1. The "Open Dev Panel" button (the ModusButton that dispatches a keyboard event)
|
|
106
|
+
2. The "Use the Dev Panel" getting started item mentioning Ctrl+Shift+D
|
|
107
|
+
3. Any references to the Dev Panel keyboard shortcut
|
|
108
|
+
|
|
109
|
+
Keep the overall page structure as a starting template for the user's app.
|
|
110
|
+
|
|
111
|
+
**Example of cleaned HomePage structure:**
|
|
112
|
+
|
|
113
|
+
```tsx
|
|
114
|
+
import ModusButton from "../components/ModusButton";
|
|
115
|
+
|
|
116
|
+
export default function HomePage() {
|
|
117
|
+
return (
|
|
118
|
+
<div className="min-h-screen flex flex-col bg-background">
|
|
119
|
+
<div className="flex-1 flex flex-col items-center p-8">
|
|
120
|
+
<div className="max-w-4xl w-full space-y-8">
|
|
121
|
+
{/* Header */}
|
|
122
|
+
<div className="text-center space-y-4">
|
|
123
|
+
<div className="flex items-center justify-center gap-3">
|
|
124
|
+
<i className="modus-icons text-5xl text-primary">launch</i>
|
|
125
|
+
</div>
|
|
126
|
+
<div className="text-4xl font-bold text-foreground">
|
|
127
|
+
Modus React App
|
|
128
|
+
</div>
|
|
129
|
+
<div className="text-xl text-foreground-60">
|
|
130
|
+
A production-ready React boilerplate with Modus Design System
|
|
131
|
+
integration.
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
{/* Getting Started - without Dev Panel references */}
|
|
136
|
+
<div className="bg-card border-default rounded-lg p-6 space-y-4">
|
|
137
|
+
<div className="text-lg font-semibold text-foreground">
|
|
138
|
+
Getting Started
|
|
139
|
+
</div>
|
|
140
|
+
<div className="space-y-4 text-foreground-80">
|
|
141
|
+
<div className="flex gap-3">
|
|
142
|
+
<div className="flex-shrink-0 w-6 h-6 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-sm font-bold">
|
|
143
|
+
1
|
|
144
|
+
</div>
|
|
145
|
+
<div>
|
|
146
|
+
<div className="font-medium text-foreground">
|
|
147
|
+
Build Your App
|
|
148
|
+
</div>
|
|
149
|
+
<div className="text-sm text-foreground-60">
|
|
150
|
+
Start developing in src/pages/ - add your routes in App.tsx.
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
<div className="flex gap-3">
|
|
155
|
+
<div className="flex-shrink-0 w-6 h-6 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-sm font-bold">
|
|
156
|
+
2
|
|
157
|
+
</div>
|
|
158
|
+
<div>
|
|
159
|
+
<div className="font-medium text-foreground">
|
|
160
|
+
Use Modus Components
|
|
161
|
+
</div>
|
|
162
|
+
<div className="text-sm text-foreground-60">
|
|
163
|
+
Import components from src/components/ to build your UI.
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
<div className="flex gap-3">
|
|
168
|
+
<div className="flex-shrink-0 w-6 h-6 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-sm font-bold">
|
|
169
|
+
3
|
|
170
|
+
</div>
|
|
171
|
+
<div>
|
|
172
|
+
<div className="font-medium text-foreground">Deploy</div>
|
|
173
|
+
<div className="text-sm text-foreground-60">
|
|
174
|
+
Run npm run build for a production-ready bundle.
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
{/* Keep other sections as needed */}
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Step 5: Update Icon Names Validation Script
|
|
192
|
+
|
|
193
|
+
Since `src/data/modusIcons.ts` is deleted (it was only used by the dev panel's IconsPage), we need to update the icon names validation script to handle the missing file gracefully.
|
|
194
|
+
|
|
195
|
+
Update `scripts/check-icon-names.js` to check if the file exists before reading it:
|
|
196
|
+
|
|
197
|
+
**Find this section near the top of the file:**
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
import fs from "fs";
|
|
201
|
+
import path from "path";
|
|
202
|
+
import { glob } from "glob";
|
|
203
|
+
|
|
204
|
+
// Read and parse the Modus icons data from TypeScript file
|
|
205
|
+
const iconsContent = fs.readFileSync(
|
|
206
|
+
path.join(process.cwd(), "src/data/modusIcons.ts"),
|
|
207
|
+
"utf8"
|
|
208
|
+
);
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Replace it with:**
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
import fs from "fs";
|
|
215
|
+
import path from "path";
|
|
216
|
+
import { glob } from "glob";
|
|
217
|
+
|
|
218
|
+
// Colors for console output
|
|
219
|
+
const colors = {
|
|
220
|
+
red: "\x1b[31m",
|
|
221
|
+
green: "\x1b[32m",
|
|
222
|
+
yellow: "\x1b[33m",
|
|
223
|
+
blue: "\x1b[34m",
|
|
224
|
+
magenta: "\x1b[35m",
|
|
225
|
+
cyan: "\x1b[36m",
|
|
226
|
+
white: "\x1b[37m",
|
|
227
|
+
reset: "\x1b[0m",
|
|
228
|
+
bold: "\x1b[1m",
|
|
229
|
+
dim: "\x1b[2m",
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// Check if modusIcons.ts exists (it may have been removed in production builds)
|
|
233
|
+
const iconsFilePath = path.join(process.cwd(), "src/data/modusIcons.ts");
|
|
234
|
+
if (!fs.existsSync(iconsFilePath)) {
|
|
235
|
+
console.log(
|
|
236
|
+
`${colors.bold}${colors.yellow}⚠️ Icon names validation skipped:${colors.reset}`
|
|
237
|
+
);
|
|
238
|
+
console.log(
|
|
239
|
+
`${colors.dim}The icon reference file (src/data/modusIcons.ts) is not present.${colors.reset}`
|
|
240
|
+
);
|
|
241
|
+
console.log(
|
|
242
|
+
`${colors.dim}This is normal if dev content has been removed.${colors.reset}\n`
|
|
243
|
+
);
|
|
244
|
+
process.exit(0);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Read and parse the Modus icons data from TypeScript file
|
|
248
|
+
const iconsContent = fs.readFileSync(iconsFilePath, "utf8");
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Also remove the duplicate colors definition** that appears later in the file (around line 46-58), since we've moved it to the top.
|
|
252
|
+
|
|
253
|
+
**What this does:**
|
|
254
|
+
- Moves the `colors` object definition to the top (before it's used)
|
|
255
|
+
- Checks if `modusIcons.ts` exists before trying to read it
|
|
256
|
+
- Gracefully skips validation with an informative message if the file is missing
|
|
257
|
+
- Exits with code 0 (success) so `npm run lint:all` continues without errors
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Files to KEEP (Do Not Touch)
|
|
262
|
+
|
|
263
|
+
These are core production files that must remain:
|
|
264
|
+
|
|
265
|
+
### Modus Wrapper Components (45 files in src/components/)
|
|
266
|
+
- `ModusAccordion.tsx` through `ModusUtilityPanel.tsx`
|
|
267
|
+
- `ModusProvider.tsx` (required for Modus CSS)
|
|
268
|
+
|
|
269
|
+
### Theme System
|
|
270
|
+
- `src/contexts/ThemeContext.tsx`
|
|
271
|
+
- `src/contexts/ThemeContextData.tsx`
|
|
272
|
+
- `src/hooks/useTheme.ts`
|
|
273
|
+
|
|
274
|
+
### Core Infrastructure
|
|
275
|
+
- `src/main.tsx`
|
|
276
|
+
- `src/index.css`
|
|
277
|
+
- `src/App.css`
|
|
278
|
+
- `src/vite-env.d.ts`
|
|
279
|
+
|
|
280
|
+
### Configuration
|
|
281
|
+
- `vite.config.ts`
|
|
282
|
+
- `package.json`
|
|
283
|
+
- `tsconfig.json` and related
|
|
284
|
+
- `.env.development` / `.env.production`
|
|
285
|
+
|
|
286
|
+
### Cursor Rules and Skills
|
|
287
|
+
- `.cursor/rules/` (all files)
|
|
288
|
+
- `.cursor/skills/` (all files)
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Verification Checklist
|
|
293
|
+
|
|
294
|
+
After removal, verify:
|
|
295
|
+
|
|
296
|
+
- [ ] `npm run dev` starts without errors
|
|
297
|
+
- [ ] `npm run build` completes successfully
|
|
298
|
+
- [ ] `npm run type-check` passes without errors
|
|
299
|
+
- [ ] `npm run lint:all` completes successfully (icon names validation will skip gracefully)
|
|
300
|
+
- [ ] No import errors in App.tsx
|
|
301
|
+
- [ ] HomePage renders without Dev Panel button
|
|
302
|
+
- [ ] All Modus wrapper components are still present
|
|
303
|
+
- [ ] Theme switching still works (if you kept ThemeSwitcher component usage)
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Notes
|
|
308
|
+
|
|
309
|
+
- The Dev Panel is automatically hidden in production builds anyway (controlled by VITE_DEV_PANEL env var)
|
|
310
|
+
- This command is for users who want a clean codebase without any dev exploration code
|
|
311
|
+
- All Modus wrapper components remain fully functional for building your app
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Cursor Rules Index
|
|
2
|
+
|
|
3
|
+
This directory contains all Cursor rules for the Modus React application. Rules provide persistent, reusable context to guide AI assistance.
|
|
4
|
+
|
|
5
|
+
## Rule Structure
|
|
6
|
+
|
|
7
|
+
### Rule Types
|
|
8
|
+
|
|
9
|
+
We use a **short/full rule pattern** for optimal performance and clarity:
|
|
10
|
+
|
|
11
|
+
1. **Short Rules** (`*-short.mdc`):
|
|
12
|
+
- `alwaysApply: true` - Always included in chat context
|
|
13
|
+
- Concise summaries (<50 lines)
|
|
14
|
+
- Essential patterns only
|
|
15
|
+
- Reference full rules for details
|
|
16
|
+
|
|
17
|
+
2. **Full Rules** (`*.mdc` without `-short`):
|
|
18
|
+
- `alwaysApply: false` - Apply intelligently based on context
|
|
19
|
+
- Detailed patterns and examples (<500 lines recommended)
|
|
20
|
+
- Comprehensive guidance
|
|
21
|
+
- Activated by file patterns (`globs`) or description matching
|
|
22
|
+
|
|
23
|
+
### Rule Application
|
|
24
|
+
|
|
25
|
+
Rules are applied in this order (per Cursor documentation):
|
|
26
|
+
|
|
27
|
+
1. **Team Rules** (if applicable)
|
|
28
|
+
2. **Project Rules** (this directory)
|
|
29
|
+
- Always Apply rules (`alwaysApply: true`)
|
|
30
|
+
- Apply Intelligently rules (`alwaysApply: false` with descriptions)
|
|
31
|
+
- Apply to Specific Files (via `globs` patterns)
|
|
32
|
+
3. **User Rules** (global preferences)
|
|
33
|
+
|
|
34
|
+
### Rule File Format
|
|
35
|
+
|
|
36
|
+
All rules use frontmatter metadata:
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
---
|
|
40
|
+
description: Brief contextual description for intelligent application
|
|
41
|
+
globs: ["**/*.tsx", "**/*.ts"] # File patterns that trigger this rule
|
|
42
|
+
alwaysApply: false # true = always apply, false = apply intelligently
|
|
43
|
+
---
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Rule Categories
|
|
47
|
+
|
|
48
|
+
### Component-Specific Rules
|
|
49
|
+
|
|
50
|
+
Rules for specific Modus components with targeted file patterns:
|
|
51
|
+
|
|
52
|
+
| Rule | Short | Full | Description |
|
|
53
|
+
|------|-------|------|-------------|
|
|
54
|
+
| Accordion | `modus-accordion-state-management-react-short.mdc` | `modus-accordion-state-management-react.mdc` | State management patterns |
|
|
55
|
+
| Button Group | `modus-button-group-usage-react-short.mdc` | `modus-button-group-usage-react.mdc` | Button group styling patterns |
|
|
56
|
+
| Checkbox | `modus-checkbox-value-inversion-react-short.mdc` | `modus-checkbox-value-inversion-react.mdc` | Value inversion bug handling |
|
|
57
|
+
| Modal | `modus-modal-implementation-react-short.mdc` | `modus-modal-implementation-react.mdc` | Modal implementation patterns |
|
|
58
|
+
| Navbar + Side Nav | `modus-navbar-side-navigation-react-short.mdc` | `modus-navbar-side-navigation-react.mdc` | Navigation integration |
|
|
59
|
+
| Select/Dropdown | `modus-select-vs-dropdown-menu-react-short.mdc` | `modus-select-vs-dropdown-menu-react.mdc` | Dropdown menu patterns |
|
|
60
|
+
|
|
61
|
+
**Globs Pattern**: `["**/components/Modus[Component]*.tsx", "**/demos/**/page.tsx"]`
|
|
62
|
+
|
|
63
|
+
### Design System Rules
|
|
64
|
+
|
|
65
|
+
Rules for design system usage (colors, icons, borders, etc.):
|
|
66
|
+
|
|
67
|
+
| Rule | Short | Full | Description |
|
|
68
|
+
|------|-------|------|-------------|
|
|
69
|
+
| Colors | `modus-color-usage-react-short.mdc` | `modus-color-usage-react.mdc` | Color system usage |
|
|
70
|
+
| Icons | `modus-icons-react-short.mdc` | `modus-icons-react.mdc` | Icon usage patterns |
|
|
71
|
+
| Borders | `border-usage-guidelines-short.mdc` | `border-usage-guidelines.mdc` | Border utilities |
|
|
72
|
+
| Opacity | `modus-opacity-utilities-react-short.mdc` | `modus-opacity-utilities-react.mdc` | Opacity utilities |
|
|
73
|
+
| Semantic HTML | `modus-semantic-html-react-short.mdc` | `modus-semantic-html-react.mdc` | HTML element usage |
|
|
74
|
+
| Tailwind | `modus-tailwind-usage-react-short.mdc` | `modus-tailwind-usage-react.mdc` | Tailwind integration |
|
|
75
|
+
| Themes | `modus-themes-react-short.mdc` | `modus-themes-react.mdc` | Theme implementation |
|
|
76
|
+
|
|
77
|
+
**Globs Pattern**: `["**/*.tsx", "**/*.ts"]` or `["**/*.tsx", "**/*.css"]`
|
|
78
|
+
|
|
79
|
+
### Integration & Best Practices
|
|
80
|
+
|
|
81
|
+
Rules for React integration and development patterns:
|
|
82
|
+
|
|
83
|
+
| Rule | Short | Full | Description |
|
|
84
|
+
|------|-------|------|-------------|
|
|
85
|
+
| Integration | `modus-react-integration-short.mdc` | `modus-react-integration.mdc` | React + Modus integration |
|
|
86
|
+
| Best Practices | `modus-react-best-practices-short.mdc` | `modus-react-best-practices.mdc` | React best practices |
|
|
87
|
+
| Key Warnings | `modus-react-key-warnings-short.mdc` | `modus-react-key-warnings.mdc` | React key prop patterns |
|
|
88
|
+
| Essentials | N/A | `modus-react-essentials.mdc` | Comprehensive essentials |
|
|
89
|
+
|
|
90
|
+
**Globs Pattern**: `["**/*.tsx", "**/*.ts"]`
|
|
91
|
+
|
|
92
|
+
### Workflow & Testing
|
|
93
|
+
|
|
94
|
+
Rules for development workflow and testing:
|
|
95
|
+
|
|
96
|
+
| Rule | Short | Full | Description |
|
|
97
|
+
|------|-------|------|-------------|
|
|
98
|
+
| Development Workflow | `development-workflow-react-short.mdc` | `development-workflow-react.mdc` | Linting and quality checks |
|
|
99
|
+
| Chrome DevTools | `chrome-devtools-testing-react-short.mdc` | `chrome-devtools-testing-react.mdc` | Browser testing patterns |
|
|
100
|
+
| Implementation Guides | `implementation-guides-react-short.mdc` | `implementation-guides-react.mdc` | Feature development guides |
|
|
101
|
+
|
|
102
|
+
**Globs Pattern**: `["**/*.tsx", "**/*.ts", "**/*.css"]` or specific patterns
|
|
103
|
+
|
|
104
|
+
### UX Rules
|
|
105
|
+
|
|
106
|
+
Rules in `ux/` subdirectory:
|
|
107
|
+
|
|
108
|
+
| Rule | Description |
|
|
109
|
+
|------|-------------|
|
|
110
|
+
| `ux-ui-foundations.mdc` | UI/UX foundations with Modus 2 + Tailwind |
|
|
111
|
+
| `gestalt-laws-detailed.mdc` | Gestalt Laws implementation guide |
|
|
112
|
+
|
|
113
|
+
**Globs Pattern**: `["**/*.tsx", "**/*.ts"]`
|
|
114
|
+
|
|
115
|
+
### Reference Files
|
|
116
|
+
|
|
117
|
+
Reference documentation (not rules, but referenced by rules):
|
|
118
|
+
|
|
119
|
+
| File | Purpose |
|
|
120
|
+
|------|---------|
|
|
121
|
+
| `modus-icon-names.mdc` | Complete list of valid Modus icon names |
|
|
122
|
+
| `modus-components-reference.mdc` | Component reference guide |
|
|
123
|
+
|
|
124
|
+
## Using Rules
|
|
125
|
+
|
|
126
|
+
### Automatic Application
|
|
127
|
+
|
|
128
|
+
- **Short rules** (`alwaysApply: true`) are always included
|
|
129
|
+
- **Full rules** apply when:
|
|
130
|
+
- File matches `globs` pattern
|
|
131
|
+
- Description matches context
|
|
132
|
+
- Agent determines relevance
|
|
133
|
+
|
|
134
|
+
### Manual Application
|
|
135
|
+
|
|
136
|
+
Reference rules in chat using `@` mentions:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
@modus-modal-implementation-react How do I implement a modal?
|
|
140
|
+
@modus-color-usage-react What colors should I use?
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Referencing Rules in Rules
|
|
144
|
+
|
|
145
|
+
Rules can reference other rules or files:
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
For detailed patterns, see: `modus-button-group-usage-react`
|
|
149
|
+
For icon names, see: `modus-icon-names`
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Rule Best Practices
|
|
153
|
+
|
|
154
|
+
Based on [Cursor documentation](https://cursor.com/docs/context/rules):
|
|
155
|
+
|
|
156
|
+
### ✅ Do
|
|
157
|
+
|
|
158
|
+
- Keep rules focused and actionable
|
|
159
|
+
- Provide concrete examples
|
|
160
|
+
- Reference files instead of copying contents
|
|
161
|
+
- Keep rules under 500 lines (split if needed)
|
|
162
|
+
- Use clear, specific descriptions
|
|
163
|
+
- Cross-reference related rules
|
|
164
|
+
|
|
165
|
+
### ❌ Don't
|
|
166
|
+
|
|
167
|
+
- Copy entire style guides (use linters)
|
|
168
|
+
- Document every possible command
|
|
169
|
+
- Add instructions for rare edge cases
|
|
170
|
+
- Duplicate what's in your codebase
|
|
171
|
+
|
|
172
|
+
## Current Rule Status
|
|
173
|
+
|
|
174
|
+
### Rule Length Compliance
|
|
175
|
+
|
|
176
|
+
⚠️ **Rules exceeding 500 lines** (recommended limit):
|
|
177
|
+
|
|
178
|
+
- `modus-modal-implementation-react.mdc`: 831 lines
|
|
179
|
+
- `modus-react-key-warnings.mdc`: 805 lines
|
|
180
|
+
- `modus-tailwind-usage-react.mdc`: 642 lines
|
|
181
|
+
- `modus-react-integration.mdc`: 509 lines
|
|
182
|
+
- `modus-react-best-practices.mdc`: 508 lines
|
|
183
|
+
- `modus-themes-react.mdc`: 506 lines
|
|
184
|
+
|
|
185
|
+
**Recommendation**: Consider splitting these into focused sub-rules.
|
|
186
|
+
|
|
187
|
+
### Rule Coverage
|
|
188
|
+
|
|
189
|
+
- ✅ All short rules have `alwaysApply: true`
|
|
190
|
+
- ✅ All full rules have `alwaysApply: false`
|
|
191
|
+
- ✅ All rules have `description:` and `globs:`
|
|
192
|
+
- ✅ Descriptions match between short and full rules
|
|
193
|
+
- ✅ References point to correct full rules
|
|
194
|
+
|
|
195
|
+
## Quick Reference
|
|
196
|
+
|
|
197
|
+
### Most Common Rules
|
|
198
|
+
|
|
199
|
+
1. **Design System Colors**: `modus-color-usage-react-short.mdc` (always applied)
|
|
200
|
+
2. **Icons**: `modus-icons-react-short.mdc` (always applied)
|
|
201
|
+
3. **Component Patterns**: Component-specific rules apply when working with those components
|
|
202
|
+
4. **React Integration**: `modus-react-integration.mdc` (applies intelligently)
|
|
203
|
+
|
|
204
|
+
### Finding Rules
|
|
205
|
+
|
|
206
|
+
- **Component issues?** → Check component-specific rules
|
|
207
|
+
- **Styling questions?** → Check design system rules
|
|
208
|
+
- **React patterns?** → Check integration/best practices rules
|
|
209
|
+
- **Workflow help?** → Check workflow/testing rules
|
|
210
|
+
|
|
211
|
+
## Maintenance
|
|
212
|
+
|
|
213
|
+
### Adding New Rules
|
|
214
|
+
|
|
215
|
+
1. Create short rule (`*-short.mdc`) with `alwaysApply: true`
|
|
216
|
+
2. Create full rule (`.mdc`) with `alwaysApply: false`
|
|
217
|
+
3. Add `description:` and `globs:` to both
|
|
218
|
+
4. Update this README with new rule entry
|
|
219
|
+
5. Ensure descriptions match between short and full
|
|
220
|
+
|
|
221
|
+
### Updating Rules
|
|
222
|
+
|
|
223
|
+
1. Update short rule summary
|
|
224
|
+
2. Update full rule details
|
|
225
|
+
3. Keep descriptions synchronized
|
|
226
|
+
4. Verify globs patterns are appropriate
|
|
227
|
+
5. Test rule application
|
|
228
|
+
|
|
229
|
+
### Rule Naming Convention
|
|
230
|
+
|
|
231
|
+
- Short rules: `[name]-react-short.mdc`
|
|
232
|
+
- Full rules: `[name]-react.mdc`
|
|
233
|
+
- Reference files: `modus-[name].mdc`
|
|
234
|
+
- UX rules: `ux/[name].mdc`
|
|
235
|
+
|
|
236
|
+
## Related Documentation
|
|
237
|
+
|
|
238
|
+
- [Cursor Rules Documentation](https://cursor.com/docs/context/rules)
|
|
239
|
+
- [Modus Design System](https://modus-web-components.trimble.com/)
|
|
240
|
+
- [Project CLAUDE.md](../CLAUDE.md) - Project-specific guidance
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Essential border usage rules for Modus Design System integration
|
|
3
|
+
globs: ["**/*.tsx", "**/*.css"]
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Border Usage Guidelines - Short
|
|
8
|
+
|
|
9
|
+
Essential border usage rules for Modus Design System integration.
|
|
10
|
+
|
|
11
|
+
## Key Rules
|
|
12
|
+
|
|
13
|
+
- **Use design system border utilities only** - `border-default`, `border-success`, `border-warning`, `border-destructive`, `border-primary`
|
|
14
|
+
- **Never use Tailwind color classes in borders** - No `border-blue-500`, `border-gray-300`, etc.
|
|
15
|
+
- **Use `border-thick` for emphasis** - For important borders and separators
|
|
16
|
+
- **Use directional borders** - `border-t`, `border-b`, `border-l`, `border-r` with design system colors
|
|
17
|
+
- **No inline styles for borders** - Use Tailwind classes exclusively
|
|
18
|
+
- **Context-specific usage** - Cards use `border-default`, alerts use semantic colors, forms use `border-input`
|
|
19
|
+
|
|
20
|
+
## Reference
|
|
21
|
+
|
|
22
|
+
For detailed border usage patterns, examples, and advanced techniques, fetch the full rule: `border-usage-guidelines`
|