@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.
Files changed (450) hide show
  1. package/README.md +191 -0
  2. package/bin/create-trimble-app.js +9 -0
  3. package/package.json +67 -0
  4. package/src/cli.js +134 -0
  5. package/src/frameworks.js +28 -0
  6. package/src/scaffold.js +209 -0
  7. package/src/utils/file.js +47 -0
  8. package/src/utils/git.js +140 -0
  9. package/src/utils/install.js +25 -0
  10. package/src/utils/logger.js +124 -0
  11. package/templates/angular/.cursor/commands/remove-dev-content.md +394 -0
  12. package/templates/angular/.cursor/mcp.json +13 -0
  13. package/templates/angular/.cursor/rules/modus-angular-20.mdc +82 -0
  14. package/templates/angular/.cursor/rules/modus-angular-accordion-state-management-short.mdc +45 -0
  15. package/templates/angular/.cursor/rules/modus-angular-accordion-state-management.mdc +322 -0
  16. package/templates/angular/.cursor/rules/modus-angular-best-practices.mdc +472 -0
  17. package/templates/angular/.cursor/rules/modus-angular-border-usage-short.mdc +48 -0
  18. package/templates/angular/.cursor/rules/modus-angular-border-usage.mdc +286 -0
  19. package/templates/angular/.cursor/rules/modus-angular-button-group-usage-short.mdc +47 -0
  20. package/templates/angular/.cursor/rules/modus-angular-button-group-usage.mdc +263 -0
  21. package/templates/angular/.cursor/rules/modus-angular-checkbox-value-inversion-short.mdc +36 -0
  22. package/templates/angular/.cursor/rules/modus-angular-checkbox-value-inversion.mdc +92 -0
  23. package/templates/angular/.cursor/rules/modus-angular-chrome-devtools-testing-short.mdc +34 -0
  24. package/templates/angular/.cursor/rules/modus-angular-chrome-devtools-testing.mdc +185 -0
  25. package/templates/angular/.cursor/rules/modus-angular-color-usage-short.mdc +56 -0
  26. package/templates/angular/.cursor/rules/modus-angular-color-usage.mdc +208 -0
  27. package/templates/angular/.cursor/rules/modus-angular-components-reference.mdc +114 -0
  28. package/templates/angular/.cursor/rules/modus-angular-design-system.mdc +273 -0
  29. package/templates/angular/.cursor/rules/modus-angular-development-workflow-short.mdc +43 -0
  30. package/templates/angular/.cursor/rules/modus-angular-development-workflow.mdc +145 -0
  31. package/templates/angular/.cursor/rules/modus-angular-essentials.mdc +272 -0
  32. package/templates/angular/.cursor/rules/modus-angular-forms-validation-short.mdc +56 -0
  33. package/templates/angular/.cursor/rules/modus-angular-forms-validation.mdc +124 -0
  34. package/templates/angular/.cursor/rules/modus-angular-icon-names.mdc +70 -0
  35. package/templates/angular/.cursor/rules/modus-angular-icons-short.mdc +40 -0
  36. package/templates/angular/.cursor/rules/modus-angular-icons.mdc +137 -0
  37. package/templates/angular/.cursor/rules/modus-angular-implementation-guides-short.mdc +36 -0
  38. package/templates/angular/.cursor/rules/modus-angular-implementation-guides.mdc +301 -0
  39. package/templates/angular/.cursor/rules/modus-angular-integration-short.mdc +60 -0
  40. package/templates/angular/.cursor/rules/modus-angular-integration.mdc +1096 -0
  41. package/templates/angular/.cursor/rules/modus-angular-master.mdc +164 -0
  42. package/templates/angular/.cursor/rules/modus-angular-modal-usage-short.mdc +51 -0
  43. package/templates/angular/.cursor/rules/modus-angular-modal-usage.mdc +115 -0
  44. package/templates/angular/.cursor/rules/modus-angular-navbar-usage-short.mdc +49 -0
  45. package/templates/angular/.cursor/rules/modus-angular-navbar-usage.mdc +146 -0
  46. package/templates/angular/.cursor/rules/modus-angular-no-emojis.mdc +66 -0
  47. package/templates/angular/.cursor/rules/modus-angular-opacity-utilities-short.mdc +43 -0
  48. package/templates/angular/.cursor/rules/modus-angular-opacity-utilities.mdc +160 -0
  49. package/templates/angular/.cursor/rules/modus-angular-select-vs-dropdown-menu-short.mdc +51 -0
  50. package/templates/angular/.cursor/rules/modus-angular-select-vs-dropdown-menu.mdc +83 -0
  51. package/templates/angular/.cursor/rules/modus-angular-semantic-html-short.mdc +36 -0
  52. package/templates/angular/.cursor/rules/modus-angular-semantic-html.mdc +81 -0
  53. package/templates/angular/.cursor/rules/modus-angular-side-navigation-usage-short.mdc +50 -0
  54. package/templates/angular/.cursor/rules/modus-angular-side-navigation-usage.mdc +136 -0
  55. package/templates/angular/.cursor/rules/modus-angular-table-usage-short.mdc +52 -0
  56. package/templates/angular/.cursor/rules/modus-angular-table-usage.mdc +151 -0
  57. package/templates/angular/.cursor/rules/modus-angular-tailwind-usage-short.mdc +44 -0
  58. package/templates/angular/.cursor/rules/modus-angular-tailwind-usage.mdc +242 -0
  59. package/templates/angular/.cursor/rules/modus-angular-themes-short.mdc +54 -0
  60. package/templates/angular/.cursor/rules/modus-angular-themes.mdc +222 -0
  61. package/templates/angular/.cursor/rules/modus-angular-utility-panel-usage-short.mdc +52 -0
  62. package/templates/angular/.cursor/rules/modus-angular-utility-panel-usage.mdc +130 -0
  63. package/templates/angular/.cursor/rules/ux/gestalt-laws-detailed.mdc +514 -0
  64. package/templates/angular/.cursor/rules/ux/ux-ui-foundations.mdc +235 -0
  65. package/templates/angular/.cursor/skills/run-lint-checks/SKILL.md +169 -0
  66. package/templates/angular/.editorconfig +17 -0
  67. package/templates/angular/.github/dependabot.yml +19 -0
  68. package/templates/angular/.github/workflows/a11y-check.yml +135 -0
  69. package/templates/angular/.github/workflows/ci.yml +44 -0
  70. package/templates/angular/.husky/pre-commit +32 -0
  71. package/templates/angular/.postcssrc.json +5 -0
  72. package/templates/angular/.vscode/extensions.json +4 -0
  73. package/templates/angular/.vscode/launch.json +20 -0
  74. package/templates/angular/.vscode/tasks.json +42 -0
  75. package/templates/angular/CLAUDE.md +148 -0
  76. package/templates/angular/README.md +92 -0
  77. package/templates/angular/amplify.yml +25 -0
  78. package/templates/angular/angular.json +106 -0
  79. package/templates/angular/data/modusIcons.ts +861 -0
  80. package/templates/angular/package-lock.json +11030 -0
  81. package/templates/angular/package.json +66 -0
  82. package/templates/angular/public/angular-icon.svg +12 -0
  83. package/templates/angular/public/favicon.ico +0 -0
  84. package/templates/angular/public/modus-icons.css +49 -0
  85. package/templates/angular/public/vite.svg +1 -0
  86. package/templates/angular/scripts/README.md +410 -0
  87. package/templates/angular/scripts/check-border-violations.js +352 -0
  88. package/templates/angular/scripts/check-icon-names.js +402 -0
  89. package/templates/angular/scripts/check-inline-styles.js +292 -0
  90. package/templates/angular/scripts/check-modus-colors.js +282 -0
  91. package/templates/angular/scripts/check-modus-icons.js +263 -0
  92. package/templates/angular/scripts/check-opacity-utilities.js +426 -0
  93. package/templates/angular/scripts/check-semantic-html.js +452 -0
  94. package/templates/angular/scripts/check-typescript.js +109 -0
  95. package/templates/angular/src/app/app.config.ts +29 -0
  96. package/templates/angular/src/app/app.css +0 -0
  97. package/templates/angular/src/app/app.html +4 -0
  98. package/templates/angular/src/app/app.routes.ts +351 -0
  99. package/templates/angular/src/app/app.spec.ts +27 -0
  100. package/templates/angular/src/app/app.ts +47 -0
  101. package/templates/angular/src/app/components/README.md +77 -0
  102. package/templates/angular/src/app/components/index.ts +53 -0
  103. package/templates/angular/src/app/components/modus-accordion.component.ts +50 -0
  104. package/templates/angular/src/app/components/modus-alert.component.ts +133 -0
  105. package/templates/angular/src/app/components/modus-autocomplete.component.ts +262 -0
  106. package/templates/angular/src/app/components/modus-avatar.component.ts +75 -0
  107. package/templates/angular/src/app/components/modus-badge.component.ts +84 -0
  108. package/templates/angular/src/app/components/modus-breadcrumbs.component.ts +65 -0
  109. package/templates/angular/src/app/components/modus-button-group.component.ts +82 -0
  110. package/templates/angular/src/app/components/modus-button.component.ts +292 -0
  111. package/templates/angular/src/app/components/modus-card.component.ts +73 -0
  112. package/templates/angular/src/app/components/modus-checkbox.component.ts +117 -0
  113. package/templates/angular/src/app/components/modus-chip.component.ts +97 -0
  114. package/templates/angular/src/app/components/modus-collapse.component.ts +118 -0
  115. package/templates/angular/src/app/components/modus-date.component.ts +165 -0
  116. package/templates/angular/src/app/components/modus-dropdown-menu.component.ts +108 -0
  117. package/templates/angular/src/app/components/modus-file-dropzone.component.ts +121 -0
  118. package/templates/angular/src/app/components/modus-handle.component.ts +96 -0
  119. package/templates/angular/src/app/components/modus-icon.component.ts +81 -0
  120. package/templates/angular/src/app/components/modus-input-feedback.component.ts +54 -0
  121. package/templates/angular/src/app/components/modus-input-label.component.ts +62 -0
  122. package/templates/angular/src/app/components/modus-loader.component.ts +48 -0
  123. package/templates/angular/src/app/components/modus-logo.component.ts +115 -0
  124. package/templates/angular/src/app/components/modus-menu-item.component.ts +116 -0
  125. package/templates/angular/src/app/components/modus-menu.component.ts +58 -0
  126. package/templates/angular/src/app/components/modus-modal.component.ts +70 -0
  127. package/templates/angular/src/app/components/modus-navbar.component.ts +303 -0
  128. package/templates/angular/src/app/components/modus-number-input.component.ts +174 -0
  129. package/templates/angular/src/app/components/modus-pagination.component.ts +74 -0
  130. package/templates/angular/src/app/components/modus-panel.component.ts +61 -0
  131. package/templates/angular/src/app/components/modus-progress.component.ts +62 -0
  132. package/templates/angular/src/app/components/modus-radio.component.ts +102 -0
  133. package/templates/angular/src/app/components/modus-rating.component.ts +80 -0
  134. package/templates/angular/src/app/components/modus-select.component.ts +131 -0
  135. package/templates/angular/src/app/components/modus-side-navigation.component.ts +90 -0
  136. package/templates/angular/src/app/components/modus-skeleton.component.ts +54 -0
  137. package/templates/angular/src/app/components/modus-slider.component.ts +132 -0
  138. package/templates/angular/src/app/components/modus-stepper.component.ts +65 -0
  139. package/templates/angular/src/app/components/modus-switch.component.ts +118 -0
  140. package/templates/angular/src/app/components/modus-table.component.ts +204 -0
  141. package/templates/angular/src/app/components/modus-tabs.component.ts +82 -0
  142. package/templates/angular/src/app/components/modus-text-input.component.ts +221 -0
  143. package/templates/angular/src/app/components/modus-textarea.component.ts +168 -0
  144. package/templates/angular/src/app/components/modus-theme-switcher.component.ts +45 -0
  145. package/templates/angular/src/app/components/modus-time-input.component.ts +172 -0
  146. package/templates/angular/src/app/components/modus-toast.component.ts +63 -0
  147. package/templates/angular/src/app/components/modus-toolbar.component.ts +43 -0
  148. package/templates/angular/src/app/components/modus-tooltip.component.ts +83 -0
  149. package/templates/angular/src/app/components/modus-typography.component.ts +79 -0
  150. package/templates/angular/src/app/components/modus-utility-panel.component.ts +275 -0
  151. package/templates/angular/src/app/components/theme-demo.component.ts +1242 -0
  152. package/templates/angular/src/app/data/component-demos.ts +360 -0
  153. package/templates/angular/src/app/data/modus-icons.ts +806 -0
  154. package/templates/angular/src/app/demos/accordion/accordion-demo.component.ts +212 -0
  155. package/templates/angular/src/app/demos/alert/alert-demo.component.ts +108 -0
  156. package/templates/angular/src/app/demos/autocomplete/autocomplete-demo.component.ts +174 -0
  157. package/templates/angular/src/app/demos/avatar/avatar-demo.component.ts +149 -0
  158. package/templates/angular/src/app/demos/badge/badge-demo.component.ts +148 -0
  159. package/templates/angular/src/app/demos/breadcrumbs/breadcrumbs-demo.component.ts +96 -0
  160. package/templates/angular/src/app/demos/button/button-demo.component.ts +256 -0
  161. package/templates/angular/src/app/demos/button-group/button-group-demo.component.ts +215 -0
  162. package/templates/angular/src/app/demos/card/card-demo.component.ts +180 -0
  163. package/templates/angular/src/app/demos/checkbox/checkbox-demo.component.ts +71 -0
  164. package/templates/angular/src/app/demos/chip/chip-demo.component.ts +183 -0
  165. package/templates/angular/src/app/demos/date/date-demo.component.ts +193 -0
  166. package/templates/angular/src/app/demos/dropdown/dropdown-demo.component.ts +196 -0
  167. package/templates/angular/src/app/demos/file-dropzone/file-dropzone-demo.component.ts +176 -0
  168. package/templates/angular/src/app/demos/handle/handle-demo.component.ts +265 -0
  169. package/templates/angular/src/app/demos/icon/icon-demo.component.ts +65 -0
  170. package/templates/angular/src/app/demos/input-feedback/input-feedback-demo.component.ts +189 -0
  171. package/templates/angular/src/app/demos/input-label/input-label-demo.component.ts +330 -0
  172. package/templates/angular/src/app/demos/loader/loader-demo.component.ts +143 -0
  173. package/templates/angular/src/app/demos/logo/logo-demo.component.ts +191 -0
  174. package/templates/angular/src/app/demos/menu/menu-demo.component.ts +72 -0
  175. package/templates/angular/src/app/demos/modal/modal-demo.component.ts +278 -0
  176. package/templates/angular/src/app/demos/navbar/navbar-demo.component.ts +135 -0
  177. package/templates/angular/src/app/demos/number-input/number-input-demo.component.ts +175 -0
  178. package/templates/angular/src/app/demos/pagination/pagination-demo.component.ts +134 -0
  179. package/templates/angular/src/app/demos/panel/panel-demo.component.ts +235 -0
  180. package/templates/angular/src/app/demos/progress/progress-demo.component.ts +169 -0
  181. package/templates/angular/src/app/demos/radio/radio-demo.component.ts +161 -0
  182. package/templates/angular/src/app/demos/rating/rating-demo.component.ts +97 -0
  183. package/templates/angular/src/app/demos/select/select-demo.component.ts +107 -0
  184. package/templates/angular/src/app/demos/shared/demo-example-clean.component.ts +41 -0
  185. package/templates/angular/src/app/demos/shared/demo-example.component.ts +42 -0
  186. package/templates/angular/src/app/demos/shared/demo-page.component.ts +97 -0
  187. package/templates/angular/src/app/demos/shared/index.ts +3 -0
  188. package/templates/angular/src/app/demos/side-navigation/side-navigation-demo.component.ts +524 -0
  189. package/templates/angular/src/app/demos/skeleton/skeleton-demo.component.ts +112 -0
  190. package/templates/angular/src/app/demos/slider/slider-demo.component.ts +76 -0
  191. package/templates/angular/src/app/demos/stepper/stepper-demo.component.ts +79 -0
  192. package/templates/angular/src/app/demos/switch/switch-demo.component.ts +113 -0
  193. package/templates/angular/src/app/demos/table/table-demo.component.ts +405 -0
  194. package/templates/angular/src/app/demos/tabs/tabs-demo.component.ts +318 -0
  195. package/templates/angular/src/app/demos/text-input/text-input-demo.component.ts +160 -0
  196. package/templates/angular/src/app/demos/textarea/textarea-demo.component.ts +95 -0
  197. package/templates/angular/src/app/demos/theme-switcher/theme-switcher-demo.component.ts +38 -0
  198. package/templates/angular/src/app/demos/time-input/time-input-demo.component.ts +130 -0
  199. package/templates/angular/src/app/demos/toast/toast-demo.component.ts +258 -0
  200. package/templates/angular/src/app/demos/toolbar/toolbar-demo.component.ts +54 -0
  201. package/templates/angular/src/app/demos/tooltip/tooltip-demo.component.ts +163 -0
  202. package/templates/angular/src/app/demos/utility-panel/utility-panel-demo.component.ts +197 -0
  203. package/templates/angular/src/app/dev/dev-config.ts +119 -0
  204. package/templates/angular/src/app/dev/dev-panel/dev-panel.component.ts +215 -0
  205. package/templates/angular/src/app/dev/dev-panel.service.ts +63 -0
  206. package/templates/angular/src/app/dev/index.ts +8 -0
  207. package/templates/angular/src/app/dev/theme-switcher-dropdown/theme-switcher-dropdown.component.ts +134 -0
  208. package/templates/angular/src/app/dev-pages/color-palette/color-palette.component.ts +229 -0
  209. package/templates/angular/src/app/dev-pages/components-gallery/components-gallery.component.ts +486 -0
  210. package/templates/angular/src/app/dev-pages/icons/icons.component.ts +149 -0
  211. package/templates/angular/src/app/pages/home/home.component.ts +251 -0
  212. package/templates/angular/src/app/services/README.md +57 -0
  213. package/templates/angular/src/app/services/theme.service.ts +163 -0
  214. package/templates/angular/src/environments/environment.development.ts +8 -0
  215. package/templates/angular/src/environments/environment.ts +8 -0
  216. package/templates/angular/src/index.html +14 -0
  217. package/templates/angular/src/main.ts +6 -0
  218. package/templates/angular/src/styles.css +1328 -0
  219. package/templates/angular/tsconfig.app.json +15 -0
  220. package/templates/angular/tsconfig.json +35 -0
  221. package/templates/angular/tsconfig.spec.json +14 -0
  222. package/templates/config.json +23 -0
  223. package/templates/react/.cursor/commands/remove-dev-content.md +311 -0
  224. package/templates/react/.cursor/mcp.json +13 -0
  225. package/templates/react/.cursor/rules/README.md +240 -0
  226. package/templates/react/.cursor/rules/border-usage-guidelines-short.mdc +22 -0
  227. package/templates/react/.cursor/rules/border-usage-guidelines.mdc +380 -0
  228. package/templates/react/.cursor/rules/chrome-devtools-testing-react-short.mdc +23 -0
  229. package/templates/react/.cursor/rules/development-workflow-react-short.mdc +23 -0
  230. package/templates/react/.cursor/rules/development-workflow-react.mdc +292 -0
  231. package/templates/react/.cursor/rules/implementation-guides-react-short.mdc +23 -0
  232. package/templates/react/.cursor/rules/implementation-guides-react.mdc +446 -0
  233. package/templates/react/.cursor/rules/modus-accordion-state-management-react-short.mdc +23 -0
  234. package/templates/react/.cursor/rules/modus-accordion-state-management-react.mdc +445 -0
  235. package/templates/react/.cursor/rules/modus-button-group-usage-react-short.mdc +23 -0
  236. package/templates/react/.cursor/rules/modus-button-group-usage-react.mdc +117 -0
  237. package/templates/react/.cursor/rules/modus-checkbox-value-inversion-react-short.mdc +23 -0
  238. package/templates/react/.cursor/rules/modus-checkbox-value-inversion-react.mdc +492 -0
  239. package/templates/react/.cursor/rules/modus-color-usage-react-short.mdc +23 -0
  240. package/templates/react/.cursor/rules/modus-color-usage-react.mdc +420 -0
  241. package/templates/react/.cursor/rules/modus-components-reference.mdc +366 -0
  242. package/templates/react/.cursor/rules/modus-icon-names.mdc +63 -0
  243. package/templates/react/.cursor/rules/modus-icons-react-short.mdc +24 -0
  244. package/templates/react/.cursor/rules/modus-icons-react.mdc +402 -0
  245. package/templates/react/.cursor/rules/modus-modal-implementation-react-short.mdc +23 -0
  246. package/templates/react/.cursor/rules/modus-modal-implementation-react.mdc +831 -0
  247. package/templates/react/.cursor/rules/modus-navbar-side-navigation-react-short.mdc +23 -0
  248. package/templates/react/.cursor/rules/modus-navbar-side-navigation-react.mdc +247 -0
  249. package/templates/react/.cursor/rules/modus-no-emojis-react-short.mdc +23 -0
  250. package/templates/react/.cursor/rules/modus-opacity-utilities-react-short.mdc +70 -0
  251. package/templates/react/.cursor/rules/modus-opacity-utilities-react.mdc +208 -0
  252. package/templates/react/.cursor/rules/modus-react-best-practices-short.mdc +23 -0
  253. package/templates/react/.cursor/rules/modus-react-best-practices.mdc +508 -0
  254. package/templates/react/.cursor/rules/modus-react-essentials.mdc +209 -0
  255. package/templates/react/.cursor/rules/modus-react-integration-short.mdc +23 -0
  256. package/templates/react/.cursor/rules/modus-react-integration.mdc +509 -0
  257. package/templates/react/.cursor/rules/modus-react-key-warnings-short.mdc +23 -0
  258. package/templates/react/.cursor/rules/modus-react-key-warnings.mdc +805 -0
  259. package/templates/react/.cursor/rules/modus-react-master.mdc +160 -0
  260. package/templates/react/.cursor/rules/modus-select-vs-dropdown-menu-react-short.mdc +23 -0
  261. package/templates/react/.cursor/rules/modus-select-vs-dropdown-menu-react.mdc +442 -0
  262. package/templates/react/.cursor/rules/modus-semantic-html-react-short.mdc +23 -0
  263. package/templates/react/.cursor/rules/modus-semantic-html-react.mdc +427 -0
  264. package/templates/react/.cursor/rules/modus-tailwind-usage-react-short.mdc +23 -0
  265. package/templates/react/.cursor/rules/modus-tailwind-usage-react.mdc +642 -0
  266. package/templates/react/.cursor/rules/modus-themes-react-short.mdc +23 -0
  267. package/templates/react/.cursor/rules/modus-themes-react.mdc +506 -0
  268. package/templates/react/.cursor/rules/ux/gestalt-laws-detailed.mdc +456 -0
  269. package/templates/react/.cursor/rules/ux/ux-ui-foundations.mdc +211 -0
  270. package/templates/react/.cursor/skills/create-modus-form-component/SKILL.md +518 -0
  271. package/templates/react/.cursor/skills/create-modus-wrapper-component/SKILL.md +252 -0
  272. package/templates/react/.cursor/skills/fix-modus-component-event-issues/SKILL.md +345 -0
  273. package/templates/react/.cursor/skills/handle-modus-checkbox-value-bug/SKILL.md +202 -0
  274. package/templates/react/.cursor/skills/implement-modus-modal-with-refs/SKILL.md +386 -0
  275. package/templates/react/.cursor/skills/integrate-modus-icons/SKILL.md +300 -0
  276. package/templates/react/.cursor/skills/run-lint-checks/SKILL.md +235 -0
  277. package/templates/react/.cursor/skills/set-up-modus-event-listeners/SKILL.md +284 -0
  278. package/templates/react/.cursor/skills/style-modus-components-with-tailwind/SKILL.md +382 -0
  279. package/templates/react/.env.development +3 -0
  280. package/templates/react/.env.production +3 -0
  281. package/templates/react/.github/CODEOWNERS +28 -0
  282. package/templates/react/.github/ISSUE_TEMPLATE/bug_report.yml +176 -0
  283. package/templates/react/.github/ISSUE_TEMPLATE/config.yml +20 -0
  284. package/templates/react/.github/ISSUE_TEMPLATE/documentation.yml +115 -0
  285. package/templates/react/.github/ISSUE_TEMPLATE/feature_request.yml +171 -0
  286. package/templates/react/.github/ISSUE_TEMPLATE/question.yml +139 -0
  287. package/templates/react/.github/copilot-instructions.md +80 -0
  288. package/templates/react/.github/instructions/components.instructions.md +82 -0
  289. package/templates/react/.github/instructions/demos.instructions.md +82 -0
  290. package/templates/react/.github/instructions/pages.instructions.md +76 -0
  291. package/templates/react/.github/instructions/styles.instructions.md +77 -0
  292. package/templates/react/.github/instructions/typescript.instructions.md +101 -0
  293. package/templates/react/.github/pull_request_template.md +188 -0
  294. package/templates/react/.github/workflows/ci.yml +43 -0
  295. package/templates/react/.github/workflows/claude-code-review.yml +44 -0
  296. package/templates/react/.github/workflows/claude.yml +50 -0
  297. package/templates/react/.husky/pre-commit +28 -0
  298. package/templates/react/.vscode/extensions.json +8 -0
  299. package/templates/react/CLAUDE.md +119 -0
  300. package/templates/react/CODE_OF_CONDUCT.md +79 -0
  301. package/templates/react/CONTRIBUTING.md +65 -0
  302. package/templates/react/LICENSE +21 -0
  303. package/templates/react/README.md +728 -0
  304. package/templates/react/SECURITY.md +50 -0
  305. package/templates/react/eslint.config.js +23 -0
  306. package/templates/react/index.html +13 -0
  307. package/templates/react/package-lock.json +5209 -0
  308. package/templates/react/package.json +49 -0
  309. package/templates/react/postcss.config.js +6 -0
  310. package/templates/react/public/react.svg +1 -0
  311. package/templates/react/public/vite.svg +1 -0
  312. package/templates/react/readme_assets/getting_started_header.png +0 -0
  313. package/templates/react/readme_assets/hero.png +0 -0
  314. package/templates/react/readme_assets/modus_comp.png +0 -0
  315. package/templates/react/readme_assets/modus_figma_mcp.png +0 -0
  316. package/templates/react/readme_assets/teaser_comp.gif +0 -0
  317. package/templates/react/scripts/README.md +343 -0
  318. package/templates/react/scripts/check-border-violations.js +483 -0
  319. package/templates/react/scripts/check-icon-names.js +486 -0
  320. package/templates/react/scripts/check-inline-styles.js +364 -0
  321. package/templates/react/scripts/check-modus-colors.js +247 -0
  322. package/templates/react/scripts/check-modus-icons.js +256 -0
  323. package/templates/react/scripts/check-opacity-utilities.js +481 -0
  324. package/templates/react/scripts/check-semantic-html.js +476 -0
  325. package/templates/react/scripts/check-typescript.js +109 -0
  326. package/templates/react/src/App.css +42 -0
  327. package/templates/react/src/App.tsx +54 -0
  328. package/templates/react/src/assets/react.svg +1 -0
  329. package/templates/react/src/components/DemoExample.tsx +61 -0
  330. package/templates/react/src/components/DemoPage.tsx +81 -0
  331. package/templates/react/src/components/ModusAccordion.tsx +89 -0
  332. package/templates/react/src/components/ModusAlert.tsx +85 -0
  333. package/templates/react/src/components/ModusAutocomplete.tsx +207 -0
  334. package/templates/react/src/components/ModusAvatar.tsx +50 -0
  335. package/templates/react/src/components/ModusBadge.tsx +82 -0
  336. package/templates/react/src/components/ModusBreadcrumbs.tsx +75 -0
  337. package/templates/react/src/components/ModusButton.tsx +244 -0
  338. package/templates/react/src/components/ModusButtonGroup.tsx +91 -0
  339. package/templates/react/src/components/ModusCard.tsx +70 -0
  340. package/templates/react/src/components/ModusCheckbox.tsx +168 -0
  341. package/templates/react/src/components/ModusChip.tsx +93 -0
  342. package/templates/react/src/components/ModusDate.tsx +154 -0
  343. package/templates/react/src/components/ModusDropdownMenu.tsx +148 -0
  344. package/templates/react/src/components/ModusFileDropzone.tsx +140 -0
  345. package/templates/react/src/components/ModusHandle.tsx +101 -0
  346. package/templates/react/src/components/ModusIcon.tsx +49 -0
  347. package/templates/react/src/components/ModusInputFeedback.tsx +52 -0
  348. package/templates/react/src/components/ModusInputLabel.tsx +50 -0
  349. package/templates/react/src/components/ModusLoader.tsx +42 -0
  350. package/templates/react/src/components/ModusLogo.tsx +102 -0
  351. package/templates/react/src/components/ModusMenu.tsx +119 -0
  352. package/templates/react/src/components/ModusMenuItem.tsx +86 -0
  353. package/templates/react/src/components/ModusModal.tsx +145 -0
  354. package/templates/react/src/components/ModusNavbar.tsx +504 -0
  355. package/templates/react/src/components/ModusNumberInput.tsx +230 -0
  356. package/templates/react/src/components/ModusPagination.tsx +94 -0
  357. package/templates/react/src/components/ModusPanel.tsx +92 -0
  358. package/templates/react/src/components/ModusProgress.tsx +70 -0
  359. package/templates/react/src/components/ModusProvider.tsx +18 -0
  360. package/templates/react/src/components/ModusRadio.tsx +114 -0
  361. package/templates/react/src/components/ModusRating.tsx +108 -0
  362. package/templates/react/src/components/ModusSelect.tsx +171 -0
  363. package/templates/react/src/components/ModusSideNavigation.tsx +149 -0
  364. package/templates/react/src/components/ModusSkeleton.tsx +42 -0
  365. package/templates/react/src/components/ModusSlider.tsx +128 -0
  366. package/templates/react/src/components/ModusStepper.tsx +85 -0
  367. package/templates/react/src/components/ModusSwitch.tsx +130 -0
  368. package/templates/react/src/components/ModusTable.tsx +309 -0
  369. package/templates/react/src/components/ModusTabs.tsx +114 -0
  370. package/templates/react/src/components/ModusTextInput.tsx +179 -0
  371. package/templates/react/src/components/ModusTextarea.tsx +164 -0
  372. package/templates/react/src/components/ModusThemeSwitcher.tsx +58 -0
  373. package/templates/react/src/components/ModusTimeInput.tsx +176 -0
  374. package/templates/react/src/components/ModusToast.tsx +207 -0
  375. package/templates/react/src/components/ModusToolbar.tsx +70 -0
  376. package/templates/react/src/components/ModusTooltip.tsx +97 -0
  377. package/templates/react/src/components/ModusUtilityPanel.tsx +198 -0
  378. package/templates/react/src/components/ThemeSwitcherDropdown.tsx +117 -0
  379. package/templates/react/src/components/ThemeToggleSimple.tsx +157 -0
  380. package/templates/react/src/config/routes.ts +196 -0
  381. package/templates/react/src/contexts/ThemeContext.tsx +81 -0
  382. package/templates/react/src/contexts/ThemeContextData.tsx +89 -0
  383. package/templates/react/src/data/modusIcons.ts +865 -0
  384. package/templates/react/src/demos/accordion-demo/page.tsx +236 -0
  385. package/templates/react/src/demos/alert-demo/page.tsx +94 -0
  386. package/templates/react/src/demos/autocomplete-demo/page.tsx +166 -0
  387. package/templates/react/src/demos/avatar-demo/page.tsx +135 -0
  388. package/templates/react/src/demos/badge-demo/page.tsx +174 -0
  389. package/templates/react/src/demos/breadcrumbs-demo/page.tsx +88 -0
  390. package/templates/react/src/demos/button-demo/page.tsx +261 -0
  391. package/templates/react/src/demos/button-group-demo/page.tsx +231 -0
  392. package/templates/react/src/demos/card-demo/page.tsx +241 -0
  393. package/templates/react/src/demos/checkbox-demo/page.tsx +79 -0
  394. package/templates/react/src/demos/chip-demo/page.tsx +197 -0
  395. package/templates/react/src/demos/date-demo/page.tsx +179 -0
  396. package/templates/react/src/demos/dropdown-demo/page.tsx +150 -0
  397. package/templates/react/src/demos/file-dropzone-demo/page.tsx +186 -0
  398. package/templates/react/src/demos/handle-demo/page.tsx +313 -0
  399. package/templates/react/src/demos/icon-demo/page.tsx +72 -0
  400. package/templates/react/src/demos/input-feedback-demo/page.tsx +202 -0
  401. package/templates/react/src/demos/input-label-demo/page.tsx +392 -0
  402. package/templates/react/src/demos/loader-demo/page.tsx +138 -0
  403. package/templates/react/src/demos/logo-demo/page.tsx +292 -0
  404. package/templates/react/src/demos/menu-demo/page.tsx +70 -0
  405. package/templates/react/src/demos/modal-demo/page.tsx +332 -0
  406. package/templates/react/src/demos/navbar-demo/page.tsx +141 -0
  407. package/templates/react/src/demos/number-input-demo/page.tsx +180 -0
  408. package/templates/react/src/demos/pagination-demo/page.tsx +147 -0
  409. package/templates/react/src/demos/panel-demo/page.tsx +376 -0
  410. package/templates/react/src/demos/progress-demo/page.tsx +185 -0
  411. package/templates/react/src/demos/radio-demo/page.tsx +242 -0
  412. package/templates/react/src/demos/rating-demo/page.tsx +97 -0
  413. package/templates/react/src/demos/select-demo/page.tsx +111 -0
  414. package/templates/react/src/demos/side-navigation-demo/page.tsx +775 -0
  415. package/templates/react/src/demos/skeleton-demo/page.tsx +107 -0
  416. package/templates/react/src/demos/slider-demo/page.tsx +78 -0
  417. package/templates/react/src/demos/stepper-demo/page.tsx +86 -0
  418. package/templates/react/src/demos/switch-demo/page.tsx +146 -0
  419. package/templates/react/src/demos/table-demo/page.tsx +489 -0
  420. package/templates/react/src/demos/tabs-demo/page.tsx +187 -0
  421. package/templates/react/src/demos/text-input-demo/page.tsx +151 -0
  422. package/templates/react/src/demos/textarea-demo/page.tsx +73 -0
  423. package/templates/react/src/demos/theme-switcher-demo/page.tsx +26 -0
  424. package/templates/react/src/demos/time-input-demo/page.tsx +148 -0
  425. package/templates/react/src/demos/toast-demo/page.tsx +302 -0
  426. package/templates/react/src/demos/toolbar-demo/page.tsx +49 -0
  427. package/templates/react/src/demos/tooltip-demo/page.tsx +209 -0
  428. package/templates/react/src/demos/typography-test/page.tsx +28 -0
  429. package/templates/react/src/demos/utility-panel-demo/page.tsx +197 -0
  430. package/templates/react/src/dev/DevPanel.tsx +219 -0
  431. package/templates/react/src/dev/DevPanelContext.ts +14 -0
  432. package/templates/react/src/dev/DevPanelProvider.tsx +63 -0
  433. package/templates/react/src/dev/DevRoutes.tsx +98 -0
  434. package/templates/react/src/dev/config.ts +127 -0
  435. package/templates/react/src/dev/index.ts +8 -0
  436. package/templates/react/src/dev/useDevPanel.ts +17 -0
  437. package/templates/react/src/dev-pages/ColorPalettePage.tsx +347 -0
  438. package/templates/react/src/dev-pages/ComponentsGalleryPage.tsx +489 -0
  439. package/templates/react/src/dev-pages/IconsPage.tsx +137 -0
  440. package/templates/react/src/dev-pages/index.ts +3 -0
  441. package/templates/react/src/hooks/useTheme.ts +15 -0
  442. package/templates/react/src/index.css +635 -0
  443. package/templates/react/src/main.tsx +14 -0
  444. package/templates/react/src/pages/HomePage.tsx +283 -0
  445. package/templates/react/src/vite-env.d.ts +9 -0
  446. package/templates/react/tailwind.config.js +58 -0
  447. package/templates/react/tsconfig.app.json +27 -0
  448. package/templates/react/tsconfig.json +7 -0
  449. package/templates/react/tsconfig.node.json +25 -0
  450. package/templates/react/vite.config.ts +18 -0
@@ -0,0 +1,92 @@
1
+ ---
2
+ description: Critical bug fix for ModusWcCheckbox value property inversion in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # ModusWcCheckbox Value Inversion Bug in Angular
8
+
9
+ ## CRITICAL BUG: Checkbox Value Inversion
10
+
11
+ **Problem**: The `modus-wc-checkbox` component has an inverted `value` property that causes unexpected behavior in Angular applications.
12
+
13
+ **Bug Details**:
14
+
15
+ - When checkbox is **checked**: `target.value` returns `false`
16
+ - When checkbox is **unchecked**: `target.value` returns `true`
17
+ - This is the **opposite** of what developers expect
18
+ - The bug occurs in the `inputChange` event's `target.value` property
19
+
20
+ ## Solution: Invert the Value
21
+
22
+ ### Correct Pattern: Invert the Value
23
+
24
+ ```typescript
25
+ // CORRECT: Always invert the value
26
+ @Component({
27
+ template: `
28
+ <modus-checkbox
29
+ [value]="isChecked()"
30
+ (inputChange)="handleChange($event)"
31
+ >
32
+ Checkbox Label
33
+ </modus-checkbox>
34
+ `,
35
+ changeDetection: ChangeDetectionStrategy.OnPush,
36
+ })
37
+ export class CheckboxComponent {
38
+ readonly isChecked = signal(false);
39
+
40
+ handleChange(event: CustomEvent<InputEvent>): void {
41
+ const value = (event.target as HTMLModusWcCheckboxElement).value;
42
+ const actualChecked = !value; // CORRECT: Invert the value
43
+ this.isChecked.set(actualChecked);
44
+ }
45
+ }
46
+ ```
47
+
48
+ ### Wrapper Component Pattern (Recommended)
49
+
50
+ ```typescript
51
+ // CORRECT: Create a wrapper component that handles the inversion
52
+ @Component({
53
+ selector: 'app-checkbox',
54
+ template: `
55
+ <modus-checkbox
56
+ [value]="value()"
57
+ [disabled]="disabled()"
58
+ [label]="label()"
59
+ (inputChange)="handleInputChange($event)"
60
+ >
61
+ <ng-content />
62
+ </modus-checkbox>
63
+ `,
64
+ changeDetection: ChangeDetectionStrategy.OnPush,
65
+ })
66
+ export class AppCheckboxComponent {
67
+ readonly value = input<boolean>(false);
68
+ readonly disabled = input<boolean>(false);
69
+ readonly label = input<string>('');
70
+ readonly valueChange = output<boolean>();
71
+
72
+ handleInputChange(event: CustomEvent<InputEvent>): void {
73
+ // CRITICAL: Handle the value inversion bug
74
+ const rawValue = (event.target as HTMLModusWcCheckboxElement).value;
75
+ const actualValue = !rawValue; // CORRECT: Invert the value
76
+
77
+ this.valueChange.emit(actualValue);
78
+ }
79
+ }
80
+ ```
81
+
82
+ ## Key Takeaways
83
+
84
+ 1. **Always Invert the Value**: `const actualChecked = !value` where `value` comes from `event.target.value`
85
+ 2. **Use Correct Event**: Listen to `inputChange` event on the modus-checkbox
86
+ 3. **Access Target Value**: Use `(event.target as HTMLModusWcCheckboxElement).value`
87
+ 4. **Create Wrapper Components**: Best practice is to handle inversion in a wrapper component
88
+ 5. **Test the Inversion**: Always test checkbox behavior with state management
89
+
90
+ ---
91
+
92
+ **Remember: This is a critical bug in the modus-wc-checkbox component. Always invert the value property to get the correct checked state.**
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: Chrome DevTools MCP usage for comprehensive Angular + Vite testing
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Chrome DevTools Testing - Short
8
+
9
+ Mandatory Chrome DevTools MCP usage for comprehensive Angular + Vite testing.
10
+
11
+ ## Key Rules
12
+
13
+ - **Always use Chrome DevTools MCP** - Never skip browser testing
14
+ - **Test before completion** - Validate all implementations in browser
15
+ - **Check console for errors** - Look for JavaScript errors and warnings
16
+ - **Inspect DOM structure** - Verify proper HTML structure and component rendering
17
+ - **Test interactive elements** - Verify Modus Web Components work correctly
18
+ - **Performance testing** - Use DevTools for performance analysis
19
+ - **Test all 6 themes** - Verify components work in all Modus themes
20
+
21
+ ## Testing Checklist
22
+
23
+ - [ ] No console errors or warnings
24
+ - [ ] Components render correctly
25
+ - [ ] Events fire and handle properly
26
+ - [ ] Forms validate correctly
27
+ - [ ] Modals open/close with native dialog API
28
+ - [ ] All 6 themes display correctly
29
+ - [ ] Keyboard navigation works
30
+ - [ ] Accessibility attributes present
31
+
32
+ ## Reference
33
+
34
+ For detailed testing workflows and checklists, fetch the full rule: `modus-angular-chrome-devtools-testing`
@@ -0,0 +1,185 @@
1
+ ---
2
+ description: Chrome DevTools MCP usage for comprehensive Angular + Vite testing
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Chrome DevTools Testing - Angular + Vite
8
+
9
+ Comprehensive Chrome DevTools usage for Angular + Vite application testing.
10
+
11
+ ## Key Rules
12
+
13
+ - **Always use Chrome DevTools MCP** - Never skip browser testing
14
+ - **Test before completion** - Validate all implementations in browser
15
+ - **Check console for errors** - Look for JavaScript errors and warnings
16
+ - **Inspect DOM structure** - Verify proper HTML structure and component rendering
17
+ - **Test interactive elements** - Verify Modus Web Components work correctly
18
+ - **Performance testing** - Use DevTools for performance analysis
19
+ - **Cross-browser validation** - Test in Chrome, Firefox, Safari
20
+
21
+ ## Testing Workflow
22
+
23
+ ### 1. Pre-Development Check
24
+
25
+ ```bash
26
+ # Start development server
27
+ npm start
28
+
29
+ # Open browser at http://localhost:4200
30
+ ```
31
+
32
+ ### 2. Console Error Checking
33
+
34
+ Look for:
35
+ - JavaScript/TypeScript errors
36
+ - Angular warnings
37
+ - Modus Web Component initialization errors
38
+ - Network request failures
39
+ - CSP violations
40
+
41
+ ### 3. DOM Inspection
42
+
43
+ Verify:
44
+ - Modus components render correctly
45
+ - Wrapper components pass props correctly
46
+ - Event listeners are attached
47
+ - Styles are applied correctly
48
+
49
+ ### 4. Network Tab
50
+
51
+ Check:
52
+ - API requests complete successfully
53
+ - Fonts and icons load correctly
54
+ - No 404 errors for assets
55
+
56
+ ### 5. Performance Testing
57
+
58
+ Monitor:
59
+ - Component render times
60
+ - Memory usage
61
+ - Change detection cycles
62
+ - Bundle size impact
63
+
64
+ ## Testing Checklist
65
+
66
+ ### Component Testing
67
+
68
+ - [ ] Component renders without console errors
69
+ - [ ] Props/inputs are passed correctly to Modus components
70
+ - [ ] Events emit correctly
71
+ - [ ] Styles match design system
72
+ - [ ] Accessibility attributes present
73
+
74
+ ### Form Testing
75
+
76
+ - [ ] Input values update correctly
77
+ - [ ] Validation errors display
78
+ - [ ] Form submission works
79
+ - [ ] Checkbox value inversion handled
80
+
81
+ ### Navigation Testing
82
+
83
+ - [ ] Routes work correctly
84
+ - [ ] Side navigation expands/collapses
85
+ - [ ] Menu items are accessible
86
+ - [ ] Active states highlight correctly
87
+
88
+ ### Theme Testing
89
+
90
+ - [ ] All 6 themes work correctly
91
+ - [ ] Theme switching persists
92
+ - [ ] Colors update appropriately
93
+ - [ ] No flash of unstyled content
94
+
95
+ ### Modal Testing
96
+
97
+ - [ ] Modal opens with `showModal()`
98
+ - [ ] Modal closes with `close()`
99
+ - [ ] Focus trapping works
100
+ - [ ] ESC key closes modal
101
+
102
+ ## Common Issues to Check
103
+
104
+ ### Modus Component Issues
105
+
106
+ ```typescript
107
+ // Check for proper component initialization
108
+ const button = document.querySelector('modus-wc-button');
109
+ console.log('Button initialized:', button);
110
+
111
+ // Check for event binding
112
+ const checkbox = document.querySelector('modus-wc-checkbox');
113
+ console.log('Checkbox value:', checkbox?.value);
114
+ ```
115
+
116
+ ### Angular-Specific Issues
117
+
118
+ ```typescript
119
+ // Check for change detection issues
120
+ // Components should use OnPush
121
+ @Component({
122
+ changeDetection: ChangeDetectionStrategy.OnPush,
123
+ })
124
+
125
+ // Check signal updates
126
+ console.log('Signal value:', this.mySignal());
127
+ ```
128
+
129
+ ### Event Handling Issues
130
+
131
+ ```typescript
132
+ // Verify CustomEvent.detail extraction
133
+ handleEvent(event: CustomEvent<{ value: string }>): void {
134
+ console.log('Event detail:', event.detail);
135
+ console.log('Value:', event.detail.value);
136
+ }
137
+ ```
138
+
139
+ ## Performance Metrics
140
+
141
+ ### Target Metrics
142
+
143
+ - First Contentful Paint: < 1.5s
144
+ - Time to Interactive: < 3s
145
+ - Largest Contentful Paint: < 2.5s
146
+ - Cumulative Layout Shift: < 0.1
147
+
148
+ ### Monitoring Tools
149
+
150
+ - Lighthouse audit
151
+ - Performance tab profiling
152
+ - Network throttling tests
153
+ - Memory leak detection
154
+
155
+ ## Accessibility Testing
156
+
157
+ ### Screen Reader Testing
158
+
159
+ - Labels are announced correctly
160
+ - Focus order is logical
161
+ - ARIA attributes are present
162
+ - Interactive elements are accessible
163
+
164
+ ### Keyboard Navigation
165
+
166
+ - Tab order is correct
167
+ - Enter/Space activate buttons
168
+ - ESC closes modals/dropdowns
169
+ - Arrow keys navigate menus
170
+
171
+ ## Theme Testing Protocol
172
+
173
+ 1. Switch to each theme:
174
+ - `modus-classic-light`
175
+ - `modus-classic-dark`
176
+ - `modus-modern-light`
177
+ - `modus-modern-dark`
178
+ - `connect-light`
179
+ - `connect-dark`
180
+
181
+ 2. Verify for each theme:
182
+ - Colors are correct
183
+ - Contrast is adequate
184
+ - No styling issues
185
+ - Icons are visible
@@ -0,0 +1,56 @@
1
+ ---
2
+ description: Essential color usage rules for Modus Design System integration in Angular + Vite
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Color Usage - Short
8
+
9
+ Essential color usage rules for Modus Design System integration.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use design system colors only** - `bg-background`, `text-foreground`, `bg-primary`, etc.
14
+ - **Never use generic Tailwind colors** - No `bg-blue-500`, `text-gray-600`, etc.
15
+ - **Never use hardcoded values** - No hex colors, RGB values, or CSS variables directly
16
+ - **Use semantic color names** - `bg-destructive`, `text-warning`, `bg-success`
17
+ - **Follow color hierarchy** - Background > Card > Primary > Secondary > Muted
18
+ - **Test in all themes** - Ensure colors work in light and dark modes
19
+
20
+ ## 9 Core Colors
21
+
22
+ - **background** - `bg-background` (page background)
23
+ - **foreground** - `text-foreground` (primary text)
24
+ - **card** - `bg-card` (card backgrounds)
25
+ - **muted** - `bg-muted` (subtle backgrounds)
26
+ - **secondary** - `bg-secondary` (secondary UI)
27
+ - **primary** - `bg-primary` (primary actions)
28
+ - **success** - `bg-success` (success states)
29
+ - **warning** - `bg-warning` (warning states)
30
+ - **destructive** - `bg-destructive` (error states)
31
+
32
+ ## Correct Patterns
33
+
34
+ ```html
35
+ <!-- CORRECT: Design system colors -->
36
+ <div class="bg-background text-foreground"></div>
37
+ <div class="bg-card text-card-foreground border-default"></div>
38
+ <div class="bg-primary text-primary-foreground"></div>
39
+ ```
40
+
41
+ ## Forbidden Patterns
42
+
43
+ ```html
44
+ <!-- WRONG: Generic Tailwind colors -->
45
+ <div class="bg-blue-500 text-white"></div>
46
+
47
+ <!-- WRONG: Hardcoded colors -->
48
+ <div [style.background-color]="'#ffffff'"></div>
49
+
50
+ <!-- WRONG: Raw Modus variables -->
51
+ <div class="bg-[var(--modus-wc-color-base-page)]"></div>
52
+ ```
53
+
54
+ ## Reference
55
+
56
+ For detailed color system guide and patterns, fetch the full rule: `modus-angular-color-usage`
@@ -0,0 +1,208 @@
1
+ ---
2
+ description: Essential color usage rules for Modus Design System integration in Angular + Vite
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Modus Color Usage in Angular + Vite
8
+
9
+ ## Design System Color Architecture
10
+
11
+ This Angular + Vite application uses a **9-color design system** that maps Figma variables to Modus's color system, available as Tailwind classes.
12
+
13
+ **Color System**: 9 Modus colors mapped to design system variables in `src/styles.css`
14
+
15
+ ## FORBIDDEN: Raw Modus CSS Variables
16
+
17
+ ### Never Use Raw Modus Variables
18
+
19
+ ```html
20
+ <!-- WRONG: Raw Modus CSS variables -->
21
+ <div [style.background-color]="'var(--modus-wc-color-base-page)'"></div>
22
+ <div [style.color]="'var(--modus-wc-color-base-content)'"></div>
23
+
24
+ <!-- WRONG: Direct Modus variable usage in classes -->
25
+ <div class="bg-[var(--modus-wc-color-base-page)]"></div>
26
+ <div class="text-[var(--modus-wc-color-base-content)]"></div>
27
+ ```
28
+
29
+ ### Never Use Hardcoded Colors
30
+
31
+ ```html
32
+ <!-- WRONG: Hardcoded hex/RGB values -->
33
+ <div [style.background-color]="'#ffffff'"></div>
34
+ <div [style.color]="'#000000'"></div>
35
+
36
+ <!-- WRONG: Hardcoded colors in Tailwind -->
37
+ <div class="bg-[#ffffff]"></div>
38
+ <div class="text-[#000000]"></div>
39
+ ```
40
+
41
+ ### Never Use Generic Tailwind Colors
42
+
43
+ ```html
44
+ <!-- WRONG: Generic Tailwind color classes -->
45
+ <div class="bg-blue-500"></div>
46
+ <div class="text-red-400"></div>
47
+ <div class="border-green-300"></div>
48
+ <div class="bg-gray-100"></div>
49
+ ```
50
+
51
+ ## CORRECT: Design System Colors
52
+
53
+ ### Use Design System Tailwind Classes
54
+
55
+ ```html
56
+ <!-- CORRECT: Design system colors -->
57
+ <div class="bg-background text-foreground"></div>
58
+ <div class="bg-card text-card-foreground"></div>
59
+ <div class="bg-primary text-primary-foreground"></div>
60
+ <div class="bg-secondary text-secondary-foreground"></div>
61
+ <div class="bg-muted text-muted-foreground"></div>
62
+ <div class="bg-destructive text-destructive-foreground"></div>
63
+ <div class="bg-warning text-warning-foreground"></div>
64
+ <div class="bg-success text-success-foreground"></div>
65
+ ```
66
+
67
+ ### 9 Core Colors
68
+
69
+ | Semantic Name | Modus Variable | Usage |
70
+ |---------------|----------------|-------|
71
+ | `background` | `--modus-wc-color-base-page` | Page background |
72
+ | `foreground` | `--modus-wc-color-base-content` | Primary text |
73
+ | `card` | `--modus-wc-color-base-100` | Card backgrounds |
74
+ | `muted` | `--modus-wc-color-base-200` | Subtle backgrounds, borders |
75
+ | `secondary` | `--modus-wc-color-base-300` | Secondary UI elements |
76
+ | `primary` | `--modus-wc-color-info` | Primary actions, info |
77
+ | `success` | `--modus-wc-color-success` | Success states |
78
+ | `warning` | `--modus-wc-color-warning` | Warning states |
79
+ | `destructive` | `--modus-wc-color-error` | Error/destructive states |
80
+
81
+ ## Color Usage Patterns
82
+
83
+ ### Component Color Patterns
84
+
85
+ ```typescript
86
+ @Component({
87
+ template: `
88
+ <div class="bg-card text-card-foreground border-default rounded-lg p-4">
89
+ <ng-content />
90
+ </div>
91
+ `,
92
+ })
93
+ export class CardComponent {}
94
+ ```
95
+
96
+ ### Status Color Patterns
97
+
98
+ ```typescript
99
+ @Component({
100
+ template: `
101
+ <div [class]="statusClasses()">
102
+ {{ status() }}
103
+ </div>
104
+ `,
105
+ })
106
+ export class StatusIndicatorComponent {
107
+ readonly status = input<'success' | 'warning' | 'error'>('success');
108
+
109
+ readonly statusClasses = computed(() => {
110
+ const variants = {
111
+ success: 'bg-success text-success-foreground',
112
+ warning: 'bg-warning text-warning-foreground',
113
+ error: 'bg-destructive text-destructive-foreground',
114
+ };
115
+ return `px-3 py-1 rounded ${variants[this.status()]}`;
116
+ });
117
+ }
118
+ ```
119
+
120
+ ### Alert Component
121
+
122
+ ```typescript
123
+ @Component({
124
+ template: `
125
+ <div [class]="alertClasses()">
126
+ <ng-content />
127
+ </div>
128
+ `,
129
+ })
130
+ export class AlertComponent {
131
+ readonly type = input<'success' | 'warning' | 'error' | 'info'>('info');
132
+
133
+ readonly alertClasses = computed(() => {
134
+ const variants = {
135
+ success: 'bg-success text-success-foreground border-success',
136
+ warning: 'bg-warning text-warning-foreground border-warning',
137
+ error: 'bg-destructive text-destructive-foreground border-destructive',
138
+ info: 'bg-primary text-primary-foreground border-primary',
139
+ };
140
+ return `p-4 rounded border ${variants[this.type()]}`;
141
+ });
142
+ }
143
+ ```
144
+
145
+ ### Theme-Aware Color Patterns
146
+
147
+ ```typescript
148
+ @Component({
149
+ template: `
150
+ <div class="bg-background text-foreground transition-colors duration-200">
151
+ <div class="text-foreground">Title</div>
152
+ <div class="text-muted-foreground">Description</div>
153
+ </div>
154
+ `,
155
+ })
156
+ export class ThemedComponent {
157
+ private themeService = inject(ThemeService);
158
+ readonly isDark = this.themeService.isDark;
159
+ }
160
+ ```
161
+
162
+ ## Common Anti-Patterns
163
+
164
+ ### Don't Mix Color Systems
165
+
166
+ ```html
167
+ <!-- WRONG: Mixing design system and generic colors -->
168
+ <div class="bg-background text-blue-500 border-red-300">
169
+ Mixed color systems
170
+ </div>
171
+
172
+ <!-- WRONG: Using both design system and hardcoded colors -->
173
+ <div class="bg-card" [style.color]="'#ff0000'">
174
+ Mixed approaches
175
+ </div>
176
+ ```
177
+
178
+ ### Don't Override Design System Colors
179
+
180
+ ```html
181
+ <!-- WRONG: Overriding design system colors -->
182
+ <div class="bg-background" [style.background-color]="'#custom-color'">
183
+ Overriding design system
184
+ </div>
185
+ ```
186
+
187
+ ## Validation
188
+
189
+ ### Linting Commands
190
+
191
+ ```bash
192
+ # Check for color violations
193
+ npm run lint:colors
194
+
195
+ # Check for inline styles
196
+ npm run lint:styles
197
+
198
+ # Check for border violations
199
+ npm run lint:borders
200
+ ```
201
+
202
+ ## Key Takeaways
203
+
204
+ 1. **Use Design System Colors**: Always use `bg-background`, `text-foreground`, etc.
205
+ 2. **Never Use Raw Variables**: Don't use `var(--modus-wc-color-*)` directly
206
+ 3. **Never Use Hardcoded Colors**: No hex, RGB, or generic Tailwind colors
207
+ 4. **Test Color Combinations**: Ensure proper contrast and accessibility
208
+ 5. **Follow Color Patterns**: Use established patterns for consistency
@@ -0,0 +1,114 @@
1
+ ---
2
+ description: Comprehensive reference guide for Modus Web Components in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Modus Components Reference
8
+
9
+ Comprehensive reference guide for all Modus Design System components available in this Angular + Vite application.
10
+
11
+ ## Component Categories
12
+
13
+ ### Layout & Navigation Components
14
+
15
+ - **ModusAccordion** - Collapsible content sections
16
+ - **ModusBreadcrumbs** - Navigation breadcrumb trail
17
+ - **ModusNavbar** - Main application navigation bar
18
+ - **ModusSideNavigation** - Collapsible sidebar navigation
19
+ - **ModusTabs** - Tabbed interface for organizing content
20
+ - **ModusToolbar** - Toolbar container with content slots
21
+ - **ModusUtilityPanel** - Slide-out utility panel
22
+
23
+ ### Form & Input Components
24
+
25
+ - **ModusAutocomplete** - Text input with dropdown suggestions
26
+ - **ModusCheckbox** - Checkbox input with value inversion bug handling
27
+ - **ModusDate** - Date input with calendar picker
28
+ - **ModusDropdownMenu** - Dropdown menu with button trigger
29
+ - **ModusNumberInput** - Number input with validation
30
+ - **ModusRadio** - Radio button input
31
+ - **ModusSelect** - Dropdown select input
32
+ - **ModusSlider** - Range slider input
33
+ - **ModusSwitch** - Toggle switch for boolean values
34
+ - **ModusTextarea** - Multi-line text input
35
+ - **ModusTextInput** - Single-line text input
36
+ - **ModusTimeInput** - Time input with time picker
37
+
38
+ ### Display & Feedback Components
39
+
40
+ - **ModusAlert** - Alert messages with severity levels
41
+ - **ModusBadge** - Small status indicators
42
+ - **ModusCard** - Content container
43
+ - **ModusChip** - Small interactive elements for tags
44
+ - **ModusDivider** - Visual separator
45
+ - **ModusInputFeedback** - Feedback messages for form inputs
46
+ - **ModusInputLabel** - Label component for form inputs
47
+ - **ModusLoader** - Loading indicators
48
+ - **ModusProgress** - Progress bars
49
+ - **ModusSkeleton** - Placeholder content while loading
50
+ - **ModusToast** - Temporary notification messages
51
+ - **ModusTooltip** - Hover tooltips
52
+
53
+ ### Data & Table Components
54
+
55
+ - **ModusTable** - Data table with sorting, pagination, editing
56
+ - **ModusPagination** - Page navigation
57
+
58
+ ### Interactive Components
59
+
60
+ - **ModusButton** - Interactive button
61
+ - **ModusMenu** - Menu container with menu items
62
+ - **ModusMenuItem** - Individual menu item
63
+ - **ModusRating** - Star or emoji rating input
64
+ - **ModusStepper** - Step indicator for multi-step processes
65
+
66
+ ### Media & Icon Components
67
+
68
+ - **ModusAvatar** - User profile image or initials
69
+ - **ModusIcon** - Icon display using Modus icon system
70
+
71
+ ### System & Utility Components
72
+
73
+ - **ModusThemeSwitcher** - Theme switching control
74
+
75
+ ## Component Usage Patterns
76
+
77
+ ### Signal-Based API
78
+
79
+ All wrapper components use Angular's signal-based API:
80
+
81
+ ```typescript
82
+ readonly color = input<ButtonColor>('primary');
83
+ readonly disabled = input<boolean>(false);
84
+ readonly buttonClick = output<MouseEvent | KeyboardEvent>();
85
+ ```
86
+
87
+ ### Event Handling
88
+
89
+ Components properly extract `event.detail` from CustomEvents:
90
+
91
+ ```typescript
92
+ handleButtonClick(event: CustomEvent<MouseEvent | KeyboardEvent>): void {
93
+ if (!this.disabled()) {
94
+ this.buttonClick.emit(event.detail);
95
+ }
96
+ }
97
+ ```
98
+
99
+ ## Import Pattern
100
+
101
+ ```typescript
102
+ import {
103
+ ModusButtonComponent,
104
+ ModusAlertComponent,
105
+ ModusIconComponent,
106
+ } from '@/app/components';
107
+ ```
108
+
109
+ ## Notes
110
+
111
+ - All components are TypeScript-enabled with proper type definitions
112
+ - Components follow Angular 20+ best practices with signals
113
+ - Integration with Modus Web Components is handled through wrapper components
114
+ - Always use wrapper selectors (`<modus-button>`) not web component selectors (`<modus-wc-button>`)