@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,160 @@
1
+ ---
2
+ description: Essential opacity utilities for Modus Design System colors in Angular + Vite
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Modus Opacity Utilities - Angular
8
+
9
+ Essential opacity utilities for Modus Design System colors in Angular + Vite.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use custom opacity utilities, not Tailwind /80 syntax** - `text-foreground-80` not `text-foreground/80`
14
+ - **CSS variables don't work with Tailwind opacity modifiers** - Tailwind needs actual color values
15
+ - **Use color-mix() for opacity variants** - Modern CSS function for proper opacity calculation
16
+ - **All utilities defined in styles.css** - No Tailwind config changes needed
17
+ - **Respects theme switching** - Works in all 6 Modus themes
18
+ - **Use semantic color names** - `foreground`, `primary`, `destructive`, etc.
19
+
20
+ ## Available Opacity Levels
21
+
22
+ - **80%** - `text-foreground-80`, `bg-primary-80`, `border-destructive-80`
23
+ - **60%** - `text-foreground-60`, `bg-primary-60`, `border-destructive-60`
24
+ - **40%** - `text-foreground-40`, `bg-primary-40`, `border-destructive-40`
25
+ - **20%** - `text-foreground-20`, `bg-primary-20`, `border-destructive-20`
26
+
27
+ ## Available Colors
28
+
29
+ - **foreground** - `text-foreground-80`, `bg-foreground-80`, `border-foreground-80`
30
+ - **muted-foreground** - `text-muted-foreground-80`, `bg-muted-foreground-80`
31
+ - **primary** - `text-primary-80`, `bg-primary-80`, `border-primary-80`
32
+ - **secondary** - `text-secondary-80`, `bg-secondary-80`
33
+ - **destructive** - `text-destructive-80`, `bg-destructive-80`, `border-destructive-80`
34
+ - **warning** - `text-warning-80`, `bg-warning-80`, `border-warning-80`
35
+ - **success** - `text-success-80`, `bg-success-80`, `border-success-80`
36
+
37
+ ## Usage Examples
38
+
39
+ ### Text Opacity
40
+
41
+ ```html
42
+ <!-- WRONG: Tailwind syntax doesn't work with CSS variables -->
43
+ <div class="text-foreground/80">Text with 80% opacity</div>
44
+
45
+ <!-- CORRECT: Use custom opacity utilities -->
46
+ <div class="text-foreground-80">Text with 80% opacity</div>
47
+ <div class="text-primary-60">Primary text with 60% opacity</div>
48
+ <div class="text-muted-foreground-40">Muted text with 40% opacity</div>
49
+ ```
50
+
51
+ ### Background Opacity
52
+
53
+ ```html
54
+ <!-- CORRECT: Background opacity utilities -->
55
+ <div class="bg-primary-80">Primary background with 80% opacity</div>
56
+ <div class="bg-destructive-60">Destructive background with 60% opacity</div>
57
+ <div class="bg-warning-40">Warning background with 40% opacity</div>
58
+ ```
59
+
60
+ ### Border Opacity
61
+
62
+ ```html
63
+ <!-- CORRECT: Border opacity utilities -->
64
+ <div class="border border-primary-80">Primary border with 80% opacity</div>
65
+ <div class="border border-destructive-60">Destructive border with 60% opacity</div>
66
+ <div class="border border-success-40">Success border with 40% opacity</div>
67
+ ```
68
+
69
+ ### Combined Usage
70
+
71
+ ```html
72
+ <!-- CORRECT: Mix opacity utilities with other classes -->
73
+ <div class="p-4 bg-card border border-primary-40 rounded-lg">
74
+ <div class="text-foreground-80 mb-2">Title with 80% opacity</div>
75
+ <div class="text-muted-foreground-60">Description with 60% opacity</div>
76
+ </div>
77
+ ```
78
+
79
+ ## Implementation Details
80
+
81
+ ### CSS Custom Properties
82
+
83
+ ```css
84
+ /* Opacity variants for design system colors */
85
+ --foreground-80: color-mix(in srgb, var(--foreground) 80%, transparent);
86
+ --foreground-60: color-mix(in srgb, var(--foreground) 60%, transparent);
87
+ --foreground-40: color-mix(in srgb, var(--foreground) 40%, transparent);
88
+ --foreground-20: color-mix(in srgb, var(--foreground) 20%, transparent);
89
+ ```
90
+
91
+ ### Tailwind Utilities
92
+
93
+ ```css
94
+ .text-foreground-80 {
95
+ color: var(--foreground-80);
96
+ }
97
+ .text-foreground-60 {
98
+ color: var(--foreground-60);
99
+ }
100
+ .text-foreground-40 {
101
+ color: var(--foreground-40);
102
+ }
103
+ .text-foreground-20 {
104
+ color: var(--foreground-20);
105
+ }
106
+ ```
107
+
108
+ ## Common Patterns
109
+
110
+ ### Subtle Text Hierarchy
111
+
112
+ ```html
113
+ <div class="space-y-2">
114
+ <div class="text-foreground">Main heading (100%)</div>
115
+ <div class="text-foreground-80">Subheading (80%)</div>
116
+ <div class="text-muted-foreground-60">Description (60%)</div>
117
+ <div class="text-muted-foreground-40">Caption (40%)</div>
118
+ </div>
119
+ ```
120
+
121
+ ### Interactive States
122
+
123
+ ```html
124
+ <modus-button class="bg-primary hover:bg-primary-80 transition-colors">
125
+ Hover with opacity
126
+ </modus-button>
127
+ ```
128
+
129
+ ### Overlay Effects
130
+
131
+ ```html
132
+ <div class="relative">
133
+ <div class="bg-foreground-20 absolute inset-0 rounded-lg"></div>
134
+ <div class="relative z-10 p-4">Content with overlay</div>
135
+ </div>
136
+ ```
137
+
138
+ ## Migration Guide
139
+
140
+ ### From Tailwind /80 syntax
141
+
142
+ ```html
143
+ <!-- WRONG: Old (doesn't work with CSS variables) -->
144
+ <div class="text-foreground/80">Text</div>
145
+ <div class="bg-primary/60">Background</div>
146
+ <div class="border-destructive/40">Border</div>
147
+
148
+ <!-- CORRECT: New (works with design system) -->
149
+ <div class="text-foreground-80">Text</div>
150
+ <div class="bg-primary-60">Background</div>
151
+ <div class="border-destructive-40">Border</div>
152
+ ```
153
+
154
+ ## Best Practices
155
+
156
+ - **Use semantic colors** - `foreground`, `primary`, `destructive` instead of generic colors
157
+ - **Maintain contrast ratios** - Ensure accessibility with opacity levels
158
+ - **Test in all themes** - Verify opacity works in light and dark modes
159
+ - **Use consistent opacity levels** - Stick to 80%, 60%, 40%, 20% for consistency
160
+ - **Combine with other utilities** - Mix with spacing, sizing, and layout classes
@@ -0,0 +1,51 @@
1
+ ---
2
+ description: ModusSelect vs ModusDropdownMenu reliability comparison in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Select vs Dropdown Menu - Short
8
+
9
+ Use ModusDropdownMenu instead of ModusSelect for reliable event handling.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use ModusDropdownMenu, not ModusSelect** - ModusSelect has unreliable event handling in some scenarios
14
+ - **Reliable itemSelect events** - ModusDropdownMenu provides consistent event handling
15
+ - **Proper state management** - Use Angular signals to track selected values and visibility
16
+ - **Programmatic control** - Use `menuVisible` property for control
17
+ - **Event handling patterns** - Handle `itemSelect` events for selection changes
18
+
19
+ ## Correct Pattern
20
+
21
+ ```typescript
22
+ @Component({
23
+ template: `
24
+ <modus-dropdown-menu
25
+ [menuVisible]="isOpen()"
26
+ (itemSelect)="handleItemSelect($event)"
27
+ (menuVisibleChange)="isOpen.set($event)"
28
+ >
29
+ <modus-button slot="trigger" (buttonClick)="toggleDropdown()">
30
+ {{ selectedLabel() || 'Select an option' }}
31
+ </modus-button>
32
+ @for (item of menuItems(); track item.value) {
33
+ <modus-menu-item [value]="item.value">{{ item.label }}</modus-menu-item>
34
+ }
35
+ </modus-dropdown-menu>
36
+ `,
37
+ })
38
+ export class DropdownComponent {
39
+ readonly selectedValue = signal<string>('');
40
+ readonly isOpen = signal(false);
41
+
42
+ handleItemSelect(event: CustomEvent<{ value: string }>): void {
43
+ this.selectedValue.set(event.detail.value);
44
+ this.isOpen.set(false);
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## Reference
50
+
51
+ For detailed component comparison and advanced usage, fetch the full rule: `modus-angular-select-vs-dropdown-menu`
@@ -0,0 +1,83 @@
1
+ ---
2
+ description: ModusSelect vs ModusDropdownMenu reliability comparison in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # ModusSelect vs ModusDropdownMenu in Angular
8
+
9
+ ## CRITICAL: ModusSelect Reliability Issues
10
+
11
+ **Problem**: `ModusSelect` component has unreliable event handling in some scenarios, especially with Chrome DevTools automation and testing.
12
+
13
+ **Solution**: Use `ModusDropdownMenu` with `itemSelect` events, which are more reliable and consistent.
14
+
15
+ ## Correct Pattern: Use ModusDropdownMenu
16
+
17
+ ```typescript
18
+ // CORRECT: ModusDropdownMenu with reliable events
19
+ @Component({
20
+ template: `
21
+ <modus-dropdown-menu
22
+ [menuVisible]="isOpen()"
23
+ (itemSelect)="handleItemSelect($event)"
24
+ (menuVisibleChange)="isOpen.set($event)"
25
+ >
26
+ <modus-button
27
+ slot="trigger"
28
+ variant="outlined"
29
+ (buttonClick)="toggleDropdown()"
30
+ >
31
+ {{ selectedLabel() || 'Select an option' }}
32
+ <i class="modus-icons ml-2">{{ isOpen() ? 'caret_up' : 'caret_down' }}</i>
33
+ </modus-button>
34
+
35
+ @for (item of menuItems(); track item.value) {
36
+ <modus-menu-item
37
+ [value]="item.value"
38
+ [class.bg-primary-20]="selectedValue() === item.value"
39
+ >
40
+ {{ item.label }}
41
+ </modus-menu-item>
42
+ }
43
+ </modus-dropdown-menu>
44
+ `,
45
+ changeDetection: ChangeDetectionStrategy.OnPush,
46
+ })
47
+ export class ReliableDropdownComponent {
48
+ readonly selectedValue = signal<string>('');
49
+ readonly isOpen = signal(false);
50
+
51
+ readonly menuItems = signal([
52
+ { label: 'Option 1', value: 'option1' },
53
+ { label: 'Option 2', value: 'option2' },
54
+ { label: 'Option 3', value: 'option3' },
55
+ ]);
56
+
57
+ readonly selectedLabel = computed(() => {
58
+ const item = this.menuItems().find(i => i.value === this.selectedValue());
59
+ return item?.label ?? '';
60
+ });
61
+
62
+ handleItemSelect(event: CustomEvent<{ value: string }>): void {
63
+ const value = event.detail.value;
64
+ this.selectedValue.set(value);
65
+ this.isOpen.set(false);
66
+ }
67
+
68
+ toggleDropdown(): void {
69
+ this.isOpen.update(open => !open);
70
+ }
71
+ }
72
+ ```
73
+
74
+ ## Key Takeaways
75
+
76
+ 1. **Prefer ModusDropdownMenu**: Use `ModusDropdownMenu` for reliable event handling
77
+ 2. **Reliable Events**: `itemSelect` events are more reliable than `inputChange` events
78
+ 3. **Programmatic Control**: Use `menuVisible` property for programmatic control
79
+ 4. **Event Handling**: Use proper event handling patterns with signals
80
+
81
+ ---
82
+
83
+ **Remember: ModusSelect may have unreliable event handling in some scenarios. Prefer ModusDropdownMenu with itemSelect events for reliable dropdown functionality.**
@@ -0,0 +1,36 @@
1
+ ---
2
+ description: Semantic HTML usage guidelines for Angular + Vite with Modus
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Semantic HTML - Short
8
+
9
+ Use div elements exclusively to avoid Tailwind CSS conflicts.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use div elements only** - All content must use `<div>` elements
14
+ - **No semantic HTML elements** - Never use `h1`, `p`, `section`, `header`, `footer`, `nav`, `main`, `aside`, `article`, `span`
15
+ - **Use Tailwind classes for styling** - Apply typography and layout with Tailwind classes
16
+ - **Icon exception** - Only `<i>` elements allowed for Modus icons
17
+ - **Consistent structure** - Maintain consistent div-based component structure
18
+
19
+ ## Correct Patterns
20
+
21
+ ```html
22
+ <!-- CORRECT: Div elements with Tailwind classes -->
23
+ <div class="text-4xl font-bold">Title</div>
24
+ <div class="text-base">Paragraph text</div>
25
+ <div class="bg-background">Header content</div>
26
+ <div class="bg-muted">Footer content</div>
27
+
28
+ <!-- WRONG: Semantic HTML elements -->
29
+ <h1 class="text-4xl font-bold">Title</h1>
30
+ <p class="text-base">Paragraph text</p>
31
+ <header class="bg-background">Header content</header>
32
+ ```
33
+
34
+ ## Reference
35
+
36
+ For detailed HTML patterns and accessibility guidelines, fetch the full rule: `modus-angular-semantic-html`
@@ -0,0 +1,81 @@
1
+ ---
2
+ description: Semantic HTML usage guidelines for Angular + Vite with Modus
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Semantic HTML Usage in Angular + Vite
8
+
9
+ ## CRITICAL: Use Div Elements Only
10
+
11
+ **MANDATORY**: This Angular + Vite application uses **div elements exclusively** for all content (except `<i>` for icons) to avoid conflicts with Tailwind CSS default browser styles.
12
+
13
+ **Rule**: Use `div` elements with Tailwind classes instead of semantic HTML elements.
14
+
15
+ ## FORBIDDEN: Semantic HTML Elements
16
+
17
+ ```html
18
+ <!-- WRONG: Semantic HTML elements -->
19
+ <h1 class="text-4xl font-bold">Title</h1>
20
+ <p class="text-base">Paragraph text</p>
21
+ <section class="mb-8 p-4">Content section</section>
22
+ <header class="bg-background">Header content</header>
23
+ <footer class="bg-muted">Footer content</footer>
24
+ <nav class="flex space-x-4">Navigation</nav>
25
+ <span class="text-sm">Inline text</span>
26
+ ```
27
+
28
+ ## CORRECT: Div Elements with Tailwind
29
+
30
+ ```html
31
+ <!-- CORRECT: Div elements with Tailwind classes -->
32
+ <div class="text-4xl font-bold">Title</div>
33
+ <div class="text-base">Paragraph text</div>
34
+ <div class="mb-8 p-4">Content section</div>
35
+ <div class="bg-background">Header content</div>
36
+ <div class="bg-muted">Footer content</div>
37
+ <div class="flex space-x-4">Navigation</div>
38
+ <div class="text-sm">Inline text</div>
39
+ ```
40
+
41
+ ## Component Patterns
42
+
43
+ ### Page Layout with Divs
44
+
45
+ ```typescript
46
+ @Component({
47
+ selector: 'page-layout',
48
+ template: `
49
+ <div class="min-h-screen flex flex-col">
50
+ <div class="bg-background border-b border-default">
51
+ <div class="container mx-auto px-4 py-4">
52
+ <div class="text-2xl font-bold text-foreground">App Title</div>
53
+ </div>
54
+ </div>
55
+
56
+ <div class="flex-1">
57
+ <ng-content />
58
+ </div>
59
+
60
+ <div class="bg-muted border-t border-default">
61
+ <div class="container mx-auto px-4 py-4">
62
+ <div class="text-sm text-foreground-60">Footer content</div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ `,
67
+ changeDetection: ChangeDetectionStrategy.OnPush,
68
+ })
69
+ export class PageLayoutComponent {}
70
+ ```
71
+
72
+ ## Semantic HTML Compliance Checklist
73
+
74
+ - [ ] **No Semantic Elements**: No `h1`, `h2`, `p`, `section`, `header`, `footer`, `nav`, `main`, `aside`, `article`, `span`
75
+ - [ ] **Div Elements Only**: All content uses `div` elements
76
+ - [ ] **Icon Exception**: Only `<i>` elements allowed for icons
77
+ - [ ] **Tailwind Styling**: All styling through Tailwind classes
78
+
79
+ ---
80
+
81
+ **Remember: This Angular + Vite application uses div elements exclusively for all content (except `<i>` for icons) to avoid conflicts with Tailwind CSS default browser styles.**
@@ -0,0 +1,50 @@
1
+ ---
2
+ description: Integration patterns for Modus Navbar with Side Navigation in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Side Navigation Usage - Short
8
+
9
+ Critical integration patterns for Modus Navbar with Side Navigation in Angular.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use Angular wrapper components** - Use `modus-navbar` and `modus-side-navigation`, not raw web components
14
+ - **Pass props as native objects** - Angular handles binding automatically
15
+ - **Listen for mainMenuOpenChange events** - Use DOM event listeners on container
16
+ - **Position side navigation absolutely** - Required for proper layering
17
+ - **Set explicit z-index** - Ensure side navigation renders above content
18
+ - **Account for collapsed width** - Add margin-left to panel content
19
+
20
+ ## Required CSS
21
+
22
+ ```css
23
+ .side-navigation {
24
+ position: absolute;
25
+ left: 0;
26
+ top: 0;
27
+ height: 100%;
28
+ z-index: 999;
29
+ }
30
+
31
+ .panel-content {
32
+ margin-left: 4rem;
33
+ }
34
+ ```
35
+
36
+ ## Event Integration
37
+
38
+ ```typescript
39
+ ngAfterViewInit(): void {
40
+ const container = this.elementRef.nativeElement.querySelector('.layout-with-navbar');
41
+ container.addEventListener('mainMenuOpenChange', (event: any) => {
42
+ const sideNav = container.querySelector('modus-wc-side-navigation');
43
+ if (sideNav) sideNav.expanded = event.detail;
44
+ });
45
+ }
46
+ ```
47
+
48
+ ## Reference
49
+
50
+ For detailed layout patterns and common pitfalls, fetch the full rule: `modus-angular-side-navigation-usage`
@@ -0,0 +1,136 @@
1
+ ---
2
+ description: Integration patterns for Modus Navbar with Side Navigation in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Modus Navbar + Side Navigation Integration (Angular)
8
+
9
+ Critical patterns for integrating `modus-navbar` with `modus-side-navigation` in Angular applications.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use Angular wrapper components** - Use `modus-navbar` and `modus-side-navigation`, not raw web components
14
+ - **Pass props as native objects** - Angular handles binding automatically
15
+ - **Listen for mainMenuOpenChange events** - Use DOM event listeners on container
16
+ - **Position side navigation absolutely** - Required for proper layering
17
+ - **Set explicit z-index** - Ensure side navigation renders above content
18
+
19
+ ## DO: Use Angular Wrapper Components
20
+
21
+ ```html
22
+ <!-- DO: Use Angular wrapper components -->
23
+ <modus-navbar [userCard]="userCardInfo()" [visibility]="{ mainMenu: true, user: true }" />
24
+
25
+ <modus-side-navigation
26
+ [expanded]="false"
27
+ [collapseOnClickOutside]="true"
28
+ [maxWidth]="'256px'"
29
+ mode="push"
30
+ [targetContent]="'#panel-content'"
31
+ />
32
+ ```
33
+
34
+ ## DO: Setup Event Listeners in ngAfterViewInit
35
+
36
+ ```typescript
37
+ export class SideNavigationDemoComponent implements AfterViewInit {
38
+ readonly navbarMenuExpanded = signal<boolean>(false);
39
+
40
+ constructor(private elementRef: ElementRef) {}
41
+
42
+ ngAfterViewInit(): void {
43
+ this.setupNavbarSideNavigationIntegration();
44
+ }
45
+
46
+ private setupNavbarSideNavigationIntegration(): void {
47
+ const container = this.elementRef.nativeElement.querySelector('.layout-with-navbar');
48
+
49
+ container.addEventListener('mainMenuOpenChange', (event: any) => {
50
+ const sideNav = container.querySelector('modus-wc-side-navigation');
51
+
52
+ if (sideNav) {
53
+ sideNav.expanded = event.detail;
54
+ this.navbarMenuExpanded.set(event.detail);
55
+ }
56
+ });
57
+
58
+ const sideNav = container.querySelector('modus-wc-side-navigation');
59
+ sideNav?.addEventListener('expandedChange', (event: any) => {
60
+ this.navbarMenuExpanded.set(event.detail);
61
+ });
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## DO: Position Side Navigation Absolutely with Z-Index
67
+
68
+ ```css
69
+ .layout-with-navbar {
70
+ box-shadow: rgba(36, 35, 45, 0.3) 1px 0 4px;
71
+ display: flex;
72
+ flex-direction: column;
73
+ height: 100%;
74
+ }
75
+
76
+ .layout-with-navbar .main-content-row {
77
+ display: flex;
78
+ flex: 1;
79
+ overflow: hidden;
80
+ position: relative;
81
+ min-height: 500px;
82
+ }
83
+
84
+ .layout-with-navbar .side-navigation,
85
+ .layout-with-navbar modus-side-navigation {
86
+ position: absolute;
87
+ left: 0;
88
+ top: 0;
89
+ height: 100%;
90
+ z-index: 999;
91
+ }
92
+
93
+ .layout-with-navbar .panel-content {
94
+ flex: 1;
95
+ padding: 1.5rem;
96
+ overflow: auto;
97
+ margin-left: 4rem;
98
+ }
99
+ ```
100
+
101
+ ## Required Layout Structure
102
+
103
+ ```html
104
+ <div class="layout-with-navbar h-[600px] flex flex-col" data-example="basic">
105
+ <modus-navbar [userCard]="userCardInfo()" [visibility]="{ mainMenu: true, user: true }" />
106
+
107
+ <div class="main-content-row flex flex-1 overflow-hidden">
108
+ <modus-side-navigation
109
+ [expanded]="false"
110
+ [collapseOnClickOutside]="true"
111
+ [maxWidth]="'256px'"
112
+ mode="push"
113
+ [targetContent]="'#panel-content'"
114
+ class="side-navigation h-full"
115
+ >
116
+ <modus-menu size="lg">
117
+ <modus-menu-item label="Home" value="home" [selected]="true">
118
+ <modus-icon slot="start-icon" name="home" [decorative]="true"></modus-icon>
119
+ </modus-menu-item>
120
+ </modus-menu>
121
+ </modus-side-navigation>
122
+
123
+ <div id="panel-content" class="panel-content flex-1 p-6">
124
+ <!-- Main content here -->
125
+ </div>
126
+ </div>
127
+ </div>
128
+ ```
129
+
130
+ ## Common Pitfalls
131
+
132
+ 1. **Hamburger menu not visible** - Ensure `visibility.mainMenu: true` is set on navbar
133
+ 2. **Side nav expands then immediately collapses** - Set `expanded` property directly on web component ref
134
+ 3. **Side nav hidden by content** - Use `position: absolute` and `z-index: 999` in global CSS
135
+ 4. **Events not firing** - Use `addEventListener` on container, not Angular event binding
136
+ 5. **State not updating** - Set properties directly on the `modus-wc-side-navigation` element
@@ -0,0 +1,52 @@
1
+ ---
2
+ description: Modus Table component usage patterns for Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Table Usage - Short
8
+
9
+ Essential patterns for Modus Table component in Angular.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use custom editors for editable cells** - Set `editor: 'custom'` with `customEditorRenderer`
14
+ - **Use design system CSS variables** - `--border`, `--background`, `--foreground` in editors
15
+ - **Handle keyboard events** - Enter to commit, Escape to cancel
16
+ - **Use immutable updates with signals** - For proper change detection
17
+ - **Import types from Modus** - `ITableColumn` from `@trimble-oss/moduswebcomponents`
18
+
19
+ ## Basic Usage
20
+
21
+ ```typescript
22
+ const columns: ITableColumn[] = [
23
+ { id: 'name', header: 'Name', accessor: 'name', width: '40%' },
24
+ { id: 'role', header: 'Role', accessor: 'role' },
25
+ ];
26
+ ```
27
+
28
+ ```html
29
+ <modus-table
30
+ [columns]="columns"
31
+ [data]="data"
32
+ density="comfortable"
33
+ [zebra]="true"
34
+ [hover]="true"
35
+ />
36
+ ```
37
+
38
+ ## Editable Cells
39
+
40
+ ```typescript
41
+ {
42
+ id: 'task',
43
+ header: 'Task',
44
+ accessor: 'task',
45
+ editor: 'custom',
46
+ customEditorRenderer: (value, onCommit) => createTextEditor(value, onCommit),
47
+ }
48
+ ```
49
+
50
+ ## Reference
51
+
52
+ For detailed table patterns and custom editors, fetch the full rule: `modus-angular-table-usage`