@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,273 @@
1
+ ---
2
+ description: Angular Design System with Tailwind v4 and Modus 9-color system
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Angular Design System - Tailwind v4 with Modus
8
+
9
+ ## Design System Overview
10
+
11
+ This Angular application uses a **9-color design system** that enforces semantic color usage through Tailwind classes. **Direct usage of `--modus-wc-color-*` variables is prohibited** - only use the 9 semantic colors through Tailwind utilities.
12
+
13
+ ## Color System
14
+
15
+ ### 9 Core Colors
16
+
17
+ The design system consists of 9 core colors, each with semantic names that map to Modus CDN variables:
18
+
19
+ | Semantic Name | Modus Variable | Usage |
20
+ | ------------- | ------------------------------- | --------------------------- |
21
+ | `background` | `--modus-wc-color-base-page` | Page background |
22
+ | `foreground` | `--modus-wc-color-base-content` | Primary text |
23
+ | `card` | `--modus-wc-color-base-100` | Card backgrounds |
24
+ | `muted` | `--modus-wc-color-base-200` | Subtle backgrounds, borders |
25
+ | `secondary` | `--modus-wc-color-base-300` | Secondary UI elements |
26
+ | `primary` | `--modus-wc-color-info` | Primary actions, info |
27
+ | `success` | `--modus-wc-color-success` | Success states |
28
+ | `warning` | `--modus-wc-color-warning` | Warning states |
29
+ | `destructive` | `--modus-wc-color-error` | Error/destructive states |
30
+
31
+ ### Color Variables in `src/styles.css`
32
+
33
+ The 9 semantic colors are mapped to Modus variables in the `@theme` block:
34
+
35
+ ```css
36
+ @theme {
37
+ /* 9-Color Design System */
38
+ --color-background: var(--modus-wc-color-base-page);
39
+ --color-foreground: var(--modus-wc-color-base-content);
40
+ --color-card: var(--modus-wc-color-base-100);
41
+ --color-card-foreground: var(--modus-wc-color-base-content);
42
+ --color-muted: var(--modus-wc-color-base-200);
43
+ --color-muted-foreground: var(--modus-wc-color-base-content);
44
+ --color-secondary: var(--modus-wc-color-base-300);
45
+ --color-secondary-foreground: var(--modus-wc-color-base-content);
46
+ --color-primary: var(--modus-wc-color-info);
47
+ --color-primary-foreground: var(--modus-wc-color-base-page);
48
+ --color-success: var(--modus-wc-color-success);
49
+ --color-success-foreground: var(--modus-wc-color-base-page);
50
+ --color-warning: var(--modus-wc-color-warning);
51
+ --color-warning-foreground: var(--modus-wc-color-base-content);
52
+ --color-destructive: var(--modus-wc-color-error);
53
+ --color-destructive-foreground: var(--modus-wc-color-base-page);
54
+ --color-border: var(--modus-wc-color-base-200);
55
+ --color-ring: var(--modus-wc-color-info);
56
+ }
57
+ ```
58
+
59
+ ## Tailwind v4 Integration
60
+
61
+ ### Modus Font Size Scale
62
+
63
+ Tailwind text utilities are mapped to Modus font sizes for consistency:
64
+
65
+ | Tailwind Class | Modus Variable | Size | Usage |
66
+ | -------------- | -------------------------- | ---- | ----------------------------- |
67
+ | `text-2xs` | `--modus-wc-font-size-2xs` | 8px | Micro text, badges |
68
+ | `text-xs` | `--modus-wc-font-size-xs` | 10px | Small labels, captions |
69
+ | `text-sm` | `--modus-wc-font-size-sm` | 12px | Secondary text, icons |
70
+ | `text-base` | `--modus-wc-font-size-md` | 14px | **Modus base size** |
71
+ | `text-lg` | `--modus-wc-font-size-lg` | 16px | Body text, icons |
72
+ | `text-xl` | `--modus-wc-font-size-xl` | 18px | Large text, icon-only buttons |
73
+ | `text-2xl` | `--modus-wc-font-size-2xl` | 20px | Headings |
74
+ | `text-3xl` | `--modus-wc-font-size-3xl` | 24px | Large headings |
75
+ | `text-4xl` | `--modus-wc-font-size-4xl` | 30px | Display text |
76
+
77
+ **Note**: Modus uses 14px (`text-base`) as the default body text size, not 16px like standard Tailwind.
78
+
79
+ **Implementation**: Tailwind text utilities are overridden with custom CSS classes that use Modus font size variables:
80
+
81
+ ```css
82
+ .text-base {
83
+ font-size: var(--modus-wc-font-size-md) !important; /* 14px - Modus base */
84
+ }
85
+ .text-lg {
86
+ font-size: var(--modus-wc-font-size-lg) !important; /* 16px */
87
+ }
88
+ /* ... other sizes ... */
89
+ ```
90
+
91
+ ### Available Tailwind Classes
92
+
93
+ Use these Tailwind classes (they work with Tailwind v4 via CSS variables):
94
+
95
+ #### Background Colors
96
+
97
+ - `bg-background` - Page background
98
+ - `bg-card` - Card background
99
+ - `bg-muted` - Subtle background
100
+ - `bg-secondary` - Secondary background
101
+ - `bg-primary` - Primary/info background
102
+ - `bg-success` - Success background
103
+ - `bg-warning` - Warning background
104
+ - `bg-destructive` - Destructive/error background
105
+
106
+ #### Text Colors
107
+
108
+ - `text-foreground` - Primary text
109
+ - `text-card-foreground` - Text on cards
110
+ - `text-muted-foreground` - Muted text
111
+ - `text-secondary-foreground` - Secondary text
112
+ - `text-primary-foreground` - Text on primary
113
+ - `text-success-foreground` - Text on success
114
+ - `text-warning-foreground` - Text on warning
115
+ - `text-destructive-foreground` - Text on destructive
116
+
117
+ #### Border Colors
118
+
119
+ - `border-border` - Default border
120
+ - `border-primary` - Primary border
121
+ - `border-success` - Success border
122
+ - `border-warning` - Warning border
123
+ - `border-destructive` - Destructive border
124
+
125
+ ## Custom Utilities
126
+
127
+ ### Border Utilities (Tailwind v4 Workarounds)
128
+
129
+ Due to Tailwind v4 limitations with borders, use these custom utilities:
130
+
131
+ #### Default Borders
132
+
133
+ - `.border-default` - 1px solid border
134
+ - `.border-thick` - 2px solid border
135
+ - `.border-dashed` - 1px dashed border
136
+ - `.border-bottom-default` - Bottom border only
137
+ - `.border-top-default` - Top border only
138
+ - `.border-left-default` - Left border only
139
+ - `.border-right-default` - Right border only
140
+
141
+ #### Color-Specific Borders
142
+
143
+ - `.border-primary` - Primary color border
144
+ - `.border-thick-primary` - 2px primary border
145
+ - `.border-success` - Success color border
146
+ - `.border-warning` - Warning color border
147
+ - `.border-destructive` - Destructive color border
148
+ - Plus directional variants: `.border-top-primary`, `.border-bottom-success`, etc.
149
+
150
+ ### Opacity Utilities
151
+
152
+ All colors support opacity variants (20%, 40%, 60%, 80%):
153
+
154
+ #### Text Opacity
155
+
156
+ - `.text-foreground-80`, `.text-foreground-60`, `.text-foreground-40`, `.text-foreground-20`
157
+ - `.text-primary-80`, `.text-primary-60`, `.text-primary-40`, `.text-primary-20`
158
+ - `.text-success-80`, `.text-success-60`, etc.
159
+ - Same pattern for: `card`, `muted`, `secondary`, `warning`, `destructive`
160
+
161
+ #### Background Opacity
162
+
163
+ - `.bg-foreground-80`, `.bg-foreground-60`, `.bg-foreground-40`, `.bg-foreground-20`
164
+ - `.bg-primary-80`, `.bg-primary-60`, etc.
165
+ - Same pattern for all colors
166
+
167
+ #### Border Opacity
168
+
169
+ - `.border-foreground-80`, `.border-foreground-60`, etc.
170
+ - Same pattern for all colors
171
+
172
+ ## Usage Patterns
173
+
174
+ ### Component Styling
175
+
176
+ ```html
177
+ <!-- ✅ CORRECT: Use Tailwind classes with design system colors -->
178
+ <div class="bg-card text-card-foreground border border-border rounded-lg p-4">
179
+ <h2 class="text-foreground text-xl font-semibold">Card Title</h2>
180
+ <p class="text-muted-foreground">Card content</p>
181
+ </div>
182
+
183
+ <!-- ✅ CORRECT: Use custom border utilities -->
184
+ <div class="border-default border-primary rounded-lg p-4">Primary bordered card</div>
185
+
186
+ <!-- ✅ CORRECT: Use opacity utilities -->
187
+ <p class="text-foreground-60">Muted text</p>
188
+ <div class="bg-primary-20 border-primary rounded p-2">Subtle primary background</div>
189
+ ```
190
+
191
+ ### Status Colors
192
+
193
+ ```html
194
+ <!-- ✅ CORRECT: Status indicators -->
195
+ <div class="bg-success text-success-foreground border-success p-3 rounded">Success message</div>
196
+
197
+ <div class="bg-warning text-warning-foreground border-warning p-3 rounded">Warning message</div>
198
+
199
+ <div class="bg-destructive text-destructive-foreground border-destructive p-3 rounded">Error message</div>
200
+ ```
201
+
202
+ ## Forbidden Patterns
203
+
204
+ ### ❌ Never Use Raw Modus Variables
205
+
206
+ ```html
207
+ <!-- ❌ WRONG: Raw Modus variables are PROHIBITED -->
208
+ <div style="background: var(--modus-wc-color-base-page);">
209
+ <div class="bg-[var(--modus-wc-color-info)]"></div>
210
+ <p style="color: var(--modus-wc-color-gray-4);">Don't do this!</p>
211
+ </div>
212
+ ```
213
+
214
+ ### ❌ Never Use Hardcoded Colors
215
+
216
+ ```html
217
+ <!-- ❌ WRONG: Hardcoded colors -->
218
+ <div style="background: #ffffff; color: #000000;">
219
+ <div class="bg-[#ffffff] text-[#000000]"></div>
220
+ </div>
221
+ ```
222
+
223
+ ### ❌ Never Use Generic Tailwind Colors
224
+
225
+ ```html
226
+ <!-- ❌ WRONG: Generic Tailwind colors -->
227
+ <div class="bg-blue-500 text-white border-gray-300"></div>
228
+ ```
229
+
230
+ ### ❌ Never Use Inline Styles (except dynamic values)
231
+
232
+ ```html
233
+ <!-- ❌ WRONG: Static inline styles -->
234
+ <div style="margin-right: 8px;">Use mr-2 instead</div>
235
+
236
+ <!-- ✅ CORRECT: Tailwind classes -->
237
+ <div class="mr-2">Content</div>
238
+ ```
239
+
240
+ ## File Location
241
+
242
+ All design system colors and utilities are defined in:
243
+
244
+ - **`src/styles.css`** - Complete color system, opacity variants, and custom utilities
245
+
246
+ This file ensures LLMs can access all available colors and utilities when generating code.
247
+
248
+ ## Tailwind v4 Configuration
249
+
250
+ Tailwind v4 uses CSS imports and reads CSS variables directly from `src/styles.css`. No separate `tailwind.config.js` is required for basic color mapping.
251
+
252
+ PostCSS configuration is in `.postcssrc.json`:
253
+
254
+ ```json
255
+ {
256
+ "plugins": {
257
+ "@tailwindcss/postcss": {}
258
+ }
259
+ }
260
+ ```
261
+
262
+ ## Key Takeaways
263
+
264
+ 1. **Always use semantic design system colors**: `bg-background`, `text-foreground`, `bg-card`, etc.
265
+ 2. **Never use raw Modus variables**: Don't use `var(--modus-wc-color-*)` directly
266
+ 3. **Never use hardcoded colors**: No hex, RGB, or generic Tailwind colors
267
+ 4. **Use custom border utilities**: For borders in Tailwind v4, use `.border-default`, `.border-primary`, etc.
268
+ 5. **Use opacity utilities**: For opacity, use `.text-foreground-80`, `.bg-primary-20`, etc.
269
+ 6. **All colors are local**: Defined in `src/styles.css` for LLM context awareness
270
+
271
+ ---
272
+
273
+ **Remember**: This Angular application uses a **strict 9-color design system**. **Direct usage of `--modus-wc-color-*` variables is PROHIBITED**. Always use only the 9 semantic colors through Tailwind classes. Use custom border and opacity utilities to work around Tailwind v4 limitations.
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Development workflow and quality assurance for Angular + Vite with Modus
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Development Workflow - Short
8
+
9
+ Essential linting and quality checks for Angular + Vite development.
10
+
11
+ ## Key Rules
12
+
13
+ - **Run linting commands during development** - `npm run lint:all` before commits
14
+ - **Fix violations before committing** - No violations in committed code
15
+ - **Check inline styles** - `npm run lint:styles` to catch inline style violations
16
+ - **Verify design system colors** - `npm run lint:colors` for color compliance
17
+ - **Validate Modus icons** - `npm run lint:icons` for icon usage
18
+ - **Check border usage** - `npm run lint:borders` for border compliance
19
+ - **Check opacity utilities** - `npm run lint:opacity` for opacity compliance
20
+
21
+ ## Linting Commands
22
+
23
+ ```bash
24
+ npm run lint:styles # Check inline styles
25
+ npm run lint:colors # Check color usage
26
+ npm run lint:icons # Check icon usage
27
+ npm run lint:borders # Check border violations
28
+ npm run lint:opacity # Check opacity utilities
29
+ npm run type-check # TypeScript validation
30
+ npm run lint:all # Run all checks
31
+ ```
32
+
33
+ ## Angular Best Practices
34
+
35
+ - **Use standalone components** with signal-based APIs
36
+ - **Use `input()` and `output()`** functions, not decorators
37
+ - **Use `ChangeDetectionStrategy.OnPush`** for performance
38
+ - **Use `inject()`** for dependency injection
39
+ - **Use modern control flow** (`@if`, `@for`, `@switch`)
40
+
41
+ ## Reference
42
+
43
+ For detailed workflow guide and quality gates, fetch the full rule: `modus-angular-development-workflow`
@@ -0,0 +1,145 @@
1
+ ---
2
+ description: Development workflow and quality assurance for Angular + Vite with Modus
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Development Workflow & Quality Assurance for Angular + Vite
8
+
9
+ ## MANDATORY: Always Run Linting Commands During Development
10
+
11
+ **CRITICAL**: Before making any code changes, always run these linting commands to ensure design system compliance:
12
+
13
+ ```bash
14
+ # Check for inline styles that should use Tailwind classes
15
+ npm run lint:styles
16
+
17
+ # Check for non-Modus colors (hex, RGB, Tailwind colors)
18
+ npm run lint:colors
19
+
20
+ # Check for non-Modus icons (Font Awesome, Material Icons, etc.)
21
+ npm run lint:icons
22
+
23
+ # Check for border violations (Tailwind color classes in borders)
24
+ npm run lint:borders
25
+
26
+ # Check for opacity violations (using /80 syntax instead of custom utilities)
27
+ npm run lint:opacity
28
+
29
+ # Validate Modus icon names
30
+ npm run lint:icon-names
31
+
32
+ # Run TypeScript type checking
33
+ npm run type-check
34
+
35
+ # Run all linting checks at once
36
+ npm run lint:all
37
+ ```
38
+
39
+ ## Pre-Development Checklist
40
+
41
+ Before starting any new feature or component:
42
+
43
+ 1. **Run Design System Lints**:
44
+
45
+ ```bash
46
+ npm run lint:styles # Check inline styles
47
+ npm run lint:colors # Check color usage
48
+ npm run lint:icons # Check icon usage
49
+ npm run lint:borders # Check border violations
50
+ npm run lint:opacity # Check opacity utilities
51
+ npm run type-check # TypeScript validation
52
+ ```
53
+
54
+ 2. **Verify Theme Compatibility**:
55
+
56
+ - Test with all 6 Modus themes (classic/modern, light/dark, connect themes)
57
+ - Ensure components work in both light and dark modes
58
+
59
+ 3. **Check Component Architecture**:
60
+ - Use single configurable components (not multiple specific ones)
61
+ - Follow Modus Web Components wrapper patterns
62
+ - Use signals for state management
63
+
64
+ ## Common Violations to Watch For
65
+
66
+ ### Inline Styles (lint:styles):
67
+
68
+ ```typescript
69
+ // VIOLATION: Inline styles
70
+ template: `<div style="background-color: var(--modus-wc-color-base-page)">`;
71
+ template: `<div [style.margin-right.px]="8">`;
72
+
73
+ // CORRECT: Tailwind classes
74
+ template: `<div class="bg-background mr-2 text-foreground">`;
75
+ ```
76
+
77
+ ### Color Usage (lint:colors):
78
+
79
+ ```typescript
80
+ // VIOLATION: Non-Modus colors
81
+ template: `<div style="background-color: #ffffff">`;
82
+ template: `<div class="bg-blue-500 text-red-400">`;
83
+
84
+ // CORRECT: Modus design system colors
85
+ template: `<div class="bg-background text-foreground">`;
86
+ ```
87
+
88
+ ### Icon Usage (lint:icons):
89
+
90
+ ```typescript
91
+ // VIOLATION: Non-Modus icons
92
+ template: `<i class="fa fa-home"></i>`;
93
+ template: `<mat-icon>home</mat-icon>`;
94
+
95
+ // CORRECT: Modus icons
96
+ template: `<i class="modus-icons">home</i>`;
97
+ template: `<modus-icon name="home" />`;
98
+ ```
99
+
100
+ ### Border Violations (lint:borders):
101
+
102
+ ```html
103
+ <!-- VIOLATION: Tailwind color classes in borders -->
104
+ <div class="border border-red-500">Error message</div>
105
+
106
+ <!-- CORRECT: Design system border utilities -->
107
+ <div class="border-destructive">Error message</div>
108
+ ```
109
+
110
+ ### Opacity Violations (lint:opacity):
111
+
112
+ ```html
113
+ <!-- VIOLATION: Tailwind opacity syntax -->
114
+ <div class="text-foreground/80">Text with opacity</div>
115
+
116
+ <!-- CORRECT: Custom opacity utilities -->
117
+ <div class="text-foreground-80">Text with opacity</div>
118
+ ```
119
+
120
+ ## Quality Gates
121
+
122
+ **Pre-commit Requirements:**
123
+
124
+ - [ ] `npm run lint:styles` passes (0 violations)
125
+ - [ ] `npm run lint:colors` passes (0 violations)
126
+ - [ ] `npm run lint:icons` passes (0 violations)
127
+ - [ ] `npm run lint:borders` passes (0 violations)
128
+ - [ ] `npm run lint:opacity` passes (0 violations)
129
+ - [ ] `npm run type-check` passes (0 TypeScript errors)
130
+ - [ ] All 6 themes tested (classic/modern, light/dark, connect themes)
131
+ - [ ] No console errors or warnings
132
+
133
+ ## Angular + Vite Best Practices
134
+
135
+ ### Component Development:
136
+
137
+ 1. **Use standalone components** with signal-based APIs
138
+ 2. **Use `input()` and `output()`** functions, not decorators
139
+ 3. **Use `ChangeDetectionStrategy.OnPush`** for performance
140
+ 4. **Use `inject()`** for dependency injection
141
+ 5. **Use modern control flow** (`@if`, `@for`, `@switch`)
142
+
143
+ ---
144
+
145
+ **Remember**: Quality gates are non-negotiable. All linting commands must pass before any code is considered complete.