@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,164 @@
1
+ ---
2
+ description: Master rule providing overview and references to all Modus Angular rules
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Angular Rules - Master Reference
8
+
9
+ This master rule provides an overview of all available rules and serves as an entry point for understanding the Modus Angular development patterns.
10
+
11
+ ## Rule Structure
12
+
13
+ This project uses a **short/full rule pattern**:
14
+
15
+ - **Short Rules** (`*-short.mdc`): Always applied, concise summaries
16
+ - **Full Rules** (`*.mdc`): Apply intelligently, detailed patterns
17
+
18
+ ## Essential Rules (Always Applied)
19
+
20
+ These short rules are always included in chat context:
21
+
22
+ ### Design System
23
+
24
+ - `modus-angular-design-system.mdc` - 9-color design system with Tailwind v4
25
+ - `modus-angular-color-usage-short.mdc` - Color system usage
26
+ - `modus-angular-icons-short.mdc` - Icon usage patterns
27
+ - `modus-angular-semantic-html-short.mdc` - HTML element usage (div-only)
28
+ - `modus-angular-border-usage-short.mdc` - Border utilities
29
+ - `modus-angular-opacity-utilities-short.mdc` - Opacity utilities
30
+ - `modus-angular-tailwind-usage-short.mdc` - Tailwind v4 integration
31
+ - `modus-angular-themes-short.mdc` - Theme implementation
32
+
33
+ ### Component Patterns
34
+
35
+ - `modus-angular-button-group-usage-short.mdc` - Button group patterns
36
+ - `modus-angular-checkbox-value-inversion-short.mdc` - Checkbox bug handling
37
+ - `modus-angular-modal-usage-short.mdc` - Modal patterns
38
+ - `modus-angular-accordion-state-management-short.mdc` - Accordion state
39
+ - `modus-angular-select-vs-dropdown-menu-short.mdc` - Dropdown patterns
40
+ - `modus-angular-navbar-usage-short.mdc` - Navbar integration
41
+ - `modus-angular-side-navigation-usage-short.mdc` - Side navigation patterns
42
+ - `modus-angular-table-usage-short.mdc` - Table patterns
43
+ - `modus-angular-utility-panel-usage-short.mdc` - Utility panel patterns
44
+
45
+ ### Angular Integration
46
+
47
+ - `modus-angular-integration-short.mdc` - Angular + Modus integration
48
+ - `modus-angular-essentials.mdc` - Comprehensive essentials
49
+ - `modus-angular-best-practices.mdc` - Best practices
50
+ - `modus-angular-forms-validation-short.mdc` - Forms and validation
51
+
52
+ ### Workflow
53
+
54
+ - `modus-angular-development-workflow-short.mdc` - Linting and quality checks
55
+ - `modus-angular-chrome-devtools-testing-short.mdc` - Browser testing
56
+ - `modus-angular-implementation-guides-short.mdc` - Feature development guides
57
+
58
+ ## Detailed Rules (Apply Intelligently)
59
+
60
+ For detailed patterns, examples, and advanced techniques, reference these full rules:
61
+
62
+ ### Component-Specific Details
63
+
64
+ - `modus-angular-button-group-usage.mdc` - Complete button group patterns
65
+ - `modus-angular-checkbox-value-inversion.mdc` - Checkbox bug details
66
+ - `modus-angular-modal-usage.mdc` - Complete modal implementation
67
+ - `modus-angular-accordion-state-management.mdc` - Accordion state management
68
+ - `modus-angular-select-vs-dropdown-menu.mdc` - Dropdown comparison
69
+ - `modus-angular-navbar-usage.mdc` - Navbar integration details
70
+ - `modus-angular-side-navigation-usage.mdc` - Side navigation details
71
+ - `modus-angular-table-usage.mdc` - Table implementation
72
+ - `modus-angular-utility-panel-usage.mdc` - Utility panel details
73
+ - `modus-angular-divider-usage.mdc` - Divider patterns
74
+
75
+ ### Design System Details
76
+
77
+ - `modus-angular-color-usage.mdc` - Complete color system guide
78
+ - `modus-angular-icons.mdc` - Complete icon usage guide
79
+ - `modus-angular-semantic-html.mdc` - HTML patterns guide
80
+ - `modus-angular-border-usage.mdc` - Complete border utilities guide
81
+ - `modus-angular-opacity-utilities.mdc` - Complete opacity utilities guide
82
+ - `modus-angular-tailwind-usage.mdc` - Complete Tailwind integration guide
83
+ - `modus-angular-themes.mdc` - Complete theme implementation guide
84
+
85
+ ### Workflow & Testing
86
+
87
+ - `modus-angular-development-workflow.mdc` - Complete workflow guide
88
+ - `modus-angular-chrome-devtools-testing.mdc` - Complete testing guide
89
+ - `modus-angular-implementation-guides.mdc` - Complete implementation guide structure
90
+
91
+ ### UX Foundations
92
+
93
+ - `ux/ux-ui-foundations.mdc` - UI/UX foundations with Modus 2 + Tailwind
94
+ - `ux/gestalt-laws-detailed.mdc` - Gestalt Laws implementation guide
95
+
96
+ ## Quick Start Guide
97
+
98
+ ### Working with Components
99
+
100
+ 1. Check component-specific short rule (always applied)
101
+ 2. For details, reference full rule: `@modus-angular-[component]`
102
+ 3. Use wrapper components, not web components directly
103
+
104
+ ### Working with Design System
105
+
106
+ 1. Short rules provide essential patterns (always applied)
107
+ 2. For details, reference full rule: `@modus-angular-[topic]`
108
+ 3. For icon names: `@modus-angular-icons`
109
+
110
+ ### Common Patterns
111
+
112
+ **Colors**: Always use design system colors (`bg-background`, `text-foreground`, etc.)
113
+
114
+ **Icons**: Use Modus icons exclusively (`<i class="modus-icons">icon_name</i>`)
115
+ - Icon names use underscores: `save_disk`, `arrow_left`
116
+
117
+ **Components**: Use wrapper components (`<modus-button>` not `<modus-wc-button>`)
118
+
119
+ **State Management**: Let Modus components manage their own state where appropriate
120
+
121
+ **Angular Patterns**:
122
+ - Use `input()`, `output()`, `signal()`, `computed()`
123
+ - Use `inject()` for dependency injection
124
+ - Use `ChangeDetectionStrategy.OnPush`
125
+ - Use `@if`, `@for`, `@switch` control flow
126
+
127
+ ## Rule Application
128
+
129
+ Rules are applied automatically based on:
130
+
131
+ 1. **Always Apply**: Short rules with `alwaysApply: true`
132
+ 2. **File Patterns**: Rules activate when working with matching files (`globs`)
133
+ 3. **Context Matching**: Agent applies rules based on description relevance
134
+ 4. **Manual Reference**: Use `@rule-name` to explicitly reference a rule
135
+
136
+ ## Best Practices
137
+
138
+ When working with Modus Angular:
139
+
140
+ 1. **Follow Short Rules**: Essential patterns are always available
141
+ 2. **Reference Full Rules**: Use `@rule-name` for detailed guidance
142
+ 3. **Run Linting**: Use `npm run lint:all` before committing
143
+ 4. **Test All Themes**: Verify components work in all 6 themes
144
+ 5. **Use DevTools**: Test implementations in browser
145
+
146
+ ## Getting Help
147
+
148
+ - **Rule Documentation**: See rules in `.cursor/rules/` directory
149
+ - **Project Guide**: See `CLAUDE.md` in project root
150
+ - **Component Reference**: See `modus-angular-essentials.mdc`
151
+
152
+ ## Rule Maintenance
153
+
154
+ When adding or updating rules:
155
+
156
+ 1. Create/update short rule with `alwaysApply: true`
157
+ 2. Create/update full rule with `alwaysApply: false`
158
+ 3. Ensure descriptions match between short and full
159
+ 4. Add appropriate `globs:` patterns
160
+ 5. Use consistent naming: `modus-angular-[topic].mdc`
161
+
162
+ ---
163
+
164
+ **Note**: This master rule is always applied to provide rule overview. For specific guidance, reference the appropriate detailed rule using `@rule-name` syntax.
@@ -0,0 +1,51 @@
1
+ ---
2
+ description: Comprehensive rules for opening and closing Modus modals in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Modal Usage - Short
8
+
9
+ Critical implementation patterns for Modus modals in Angular.
10
+
11
+ ## Key Rules
12
+
13
+ - **Use document.getElementById for modal access** - Get the dialog element by ID
14
+ - **Type-safe access** - Cast to `HTMLDialogElement | null`
15
+ - **Check method existence** - `typeof dialog.showModal === 'function'`
16
+ - **Use native dialog API** - `dialog.showModal()` and `dialog.close()`
17
+ - **Never use querySelector with web component selectors**
18
+ - **Use descriptive, kebab-case modal IDs**
19
+
20
+ ## Correct Pattern
21
+
22
+ ```typescript
23
+ openModal(): void {
24
+ const dialog = document.getElementById('modal-id') as HTMLDialogElement | null;
25
+ if (dialog && typeof dialog.showModal === 'function') {
26
+ dialog.showModal();
27
+ }
28
+ }
29
+
30
+ closeModal(): void {
31
+ const dialog = document.getElementById('modal-id') as HTMLDialogElement | null;
32
+ if (dialog && typeof dialog.close === 'function') {
33
+ dialog.close();
34
+ }
35
+ }
36
+ ```
37
+
38
+ ```html
39
+ <modus-button (buttonClick)="openModal()">Open</modus-button>
40
+ <modus-modal modalId="modal-id" [showClose]="true">
41
+ <h3 slot="header">Title</h3>
42
+ <div slot="content">Content</div>
43
+ <div slot="footer">
44
+ <modus-button (buttonClick)="closeModal()">Close</modus-button>
45
+ </div>
46
+ </modus-modal>
47
+ ```
48
+
49
+ ## Reference
50
+
51
+ For detailed modal patterns and advanced usage, fetch the full rule: `modus-angular-modal-usage`
@@ -0,0 +1,115 @@
1
+ ---
2
+ description: Comprehensive rules for opening and closing Modus modals in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Modal Usage Rules
8
+
9
+ Comprehensive rules for opening and closing Modus modals in Angular applications.
10
+
11
+ ## CORRECT: How to Open/Close Modals
12
+
13
+ ### Pattern: Use `document.getElementById()` with HTMLDialogElement
14
+
15
+ **The Modus modal component creates an HTML `<dialog>` element with the `modalId` as its `id` attribute. Always use the native HTMLDialogElement API to open/close modals.**
16
+
17
+ ```typescript
18
+ openModal(): void {
19
+ const dialog = document.getElementById('modal-id') as HTMLDialogElement | null;
20
+ if (dialog && typeof dialog.showModal === 'function') {
21
+ dialog.showModal();
22
+ }
23
+ }
24
+
25
+ closeModal(): void {
26
+ const dialog = document.getElementById('modal-id') as HTMLDialogElement | null;
27
+ if (dialog && typeof dialog.close === 'function') {
28
+ dialog.close();
29
+ }
30
+ }
31
+ ```
32
+
33
+ ### Template Usage
34
+
35
+ ```html
36
+ <modus-button color="primary" (buttonClick)="openModal()">Open Modal</modus-button>
37
+ <modus-modal modalId="modal-id" [showClose]="true">
38
+ <h3 slot="header">Modal Title</h3>
39
+ <div slot="content">
40
+ <p>Modal content here</p>
41
+ </div>
42
+ <div slot="footer">
43
+ <modus-button color="secondary" (buttonClick)="closeModal()">Close</modus-button>
44
+ </div>
45
+ </modus-modal>
46
+ ```
47
+
48
+ ## WRONG: Common Mistakes
49
+
50
+ ### DON'T Use `querySelector` with Web Component Selector
51
+
52
+ ```typescript
53
+ // WRONG: This doesn't work
54
+ openModal(): void {
55
+ const modal = document.querySelector('modus-wc-modal[modal-id="modal-id"]') as any;
56
+ if (modal) {
57
+ modal.open(); // Web component doesn't have an open() method
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### DON'T Use Template References on Wrapper Component
63
+
64
+ ```typescript
65
+ // WRONG: Can't directly call methods on Angular wrapper
66
+ @ViewChild(ModusModalComponent) modal!: ModusModalComponent;
67
+
68
+ openModal(): void {
69
+ this.modal.open(); // Method doesn't exist
70
+ }
71
+ ```
72
+
73
+ ## Best Practices
74
+
75
+ ### 1. Always Use `getElementById` with ModalId
76
+
77
+ ```typescript
78
+ openModal(modalId: string): void {
79
+ const dialog = document.getElementById(modalId) as HTMLDialogElement | null;
80
+ if (dialog && typeof dialog.showModal === 'function') {
81
+ dialog.showModal();
82
+ }
83
+ }
84
+ ```
85
+
86
+ ### 2. Always Check for Method Existence
87
+
88
+ ```typescript
89
+ const dialog = document.getElementById('modal-id') as HTMLDialogElement | null;
90
+ if (dialog && typeof dialog.showModal === 'function') {
91
+ dialog.showModal();
92
+ }
93
+ ```
94
+
95
+ ### 3. Use Consistent ModalId Naming
96
+
97
+ ```typescript
98
+ <modus-modal modalId="basic-modal" />
99
+ <modus-modal modalId="confirmation-modal" />
100
+ <modus-modal modalId="fullscreen-modal" />
101
+ ```
102
+
103
+ ## Key Rules Summary
104
+
105
+ 1. **ALWAYS use `document.getElementById(modalId)`** - The modalId is used as the dialog element's id
106
+ 2. **ALWAYS cast to `HTMLDialogElement | null`** - Type-safe casting
107
+ 3. **ALWAYS check for method existence** - `typeof dialog.showModal === 'function'`
108
+ 4. **ALWAYS use `dialog.showModal()`** - Native HTMLDialogElement API
109
+ 5. **ALWAYS use `dialog.close()`** - Native HTMLDialogElement API
110
+ 6. **NEVER use `querySelector` with web component selectors**
111
+ 7. **NEVER try to call `open()` on the web component**
112
+
113
+ ---
114
+
115
+ **Remember**: Modals use the native HTML `<dialog>` element API. Always use `document.getElementById(modalId)` to find the dialog element, then call `showModal()` or `close()` on it.
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: Comprehensive guide for using the Modus Navbar component in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Navbar Usage - Short
8
+
9
+ Critical patterns for Modus Navbar component in Angular.
10
+
11
+ ## Key Rules
12
+
13
+ - **Set both `search` and `searchInput` in visibility** - Required for search expansion
14
+ - **Use signals for navbar state** - Track searchInputOpen, menuOpen states
15
+ - **Two-way bind search and menu states** - Bind property and handle event
16
+ - **Explicitly set button visibility** - Buttons default to hidden except user
17
+ - **Always provide userCard** - Required input for navbar
18
+ - **Handle correct event types** - Clicks = `MouseEvent | KeyboardEvent`, state changes = `boolean`
19
+
20
+ ## Search Expansion Pattern
21
+
22
+ ```typescript
23
+ <modus-navbar
24
+ [userCard]="userCard"
25
+ [visibility]="{ user: true, search: true, searchInput: true }"
26
+ [searchInputOpen]="searchInputOpen()"
27
+ (searchClick)="searchInputOpen.set(!searchInputOpen())"
28
+ (searchInputOpenChange)="searchInputOpen.set($event)"
29
+ />
30
+ ```
31
+
32
+ ## State Management
33
+
34
+ ```typescript
35
+ readonly searchInputOpen = signal<boolean>(false);
36
+ readonly mainMenuOpen = signal<boolean>(false);
37
+
38
+ handleSearchClick(event: MouseEvent | KeyboardEvent): void {
39
+ this.searchInputOpen.set(!this.searchInputOpen());
40
+ }
41
+
42
+ handleMainMenuOpenChange(event: boolean): void {
43
+ this.mainMenuOpen.set(event);
44
+ }
45
+ ```
46
+
47
+ ## Reference
48
+
49
+ For detailed patterns and event handling, fetch the full rule: `modus-angular-navbar-usage`
@@ -0,0 +1,146 @@
1
+ ---
2
+ description: Comprehensive guide for using the Modus Navbar component in Angular
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Navbar Usage Rules
8
+
9
+ Comprehensive guide for using the Modus Navbar component in Angular, covering search expansion, button visibility, event handling, and state management.
10
+
11
+ ## CRITICAL: Search Input Expansion
12
+
13
+ ### DO: Set Both `search` and `searchInput` in Visibility
14
+
15
+ **For search to expand, you MUST set both visibility flags:**
16
+
17
+ ```typescript
18
+ <modus-navbar
19
+ [userCard]="userCard"
20
+ [visibility]="{ user: true, search: true, searchInput: true }"
21
+ [searchInputOpen]="searchInputOpen()"
22
+ (searchClick)="handleSearchClick($event)"
23
+ (searchInputOpenChange)="handleSearchInputOpenChange($event)"
24
+ />
25
+ ```
26
+
27
+ ### DO: Two-Way Bind Search State
28
+
29
+ ```typescript
30
+ readonly searchInputOpen = signal<boolean>(false);
31
+
32
+ handleSearchClick(event: MouseEvent | KeyboardEvent): void {
33
+ this.searchInputOpen.set(!this.searchInputOpen());
34
+ }
35
+
36
+ handleSearchInputOpenChange(event: boolean): void {
37
+ if (this.searchInputOpen() !== event) {
38
+ this.searchInputOpen.set(event);
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Button Visibility Patterns
44
+
45
+ ### DO: Set Visibility for Each Button
46
+
47
+ ```typescript
48
+ <modus-navbar
49
+ [userCard]="userCard"
50
+ [visibility]="{
51
+ user: true,
52
+ search: true,
53
+ searchInput: true,
54
+ help: true,
55
+ apps: true,
56
+ notifications: true,
57
+ mainMenu: true
58
+ }"
59
+ />
60
+ ```
61
+
62
+ **Default visibility settings:**
63
+
64
+ ```typescript
65
+ readonly visibility = input<INavbarVisibility | undefined>({
66
+ ai: false,
67
+ apps: false,
68
+ help: false,
69
+ mainMenu: false,
70
+ notifications: false,
71
+ search: false,
72
+ searchInput: false,
73
+ user: true,
74
+ });
75
+ ```
76
+
77
+ ## Event Handling Patterns
78
+
79
+ ### DO: Handle Events with Correct Types
80
+
81
+ ```typescript
82
+ handleSearchClick(event: MouseEvent | KeyboardEvent): void {
83
+ this.searchInputOpen.set(!this.searchInputOpen());
84
+ }
85
+
86
+ handleMainMenuOpenChange(event: boolean): void {
87
+ this.mainMenuOpen.set(event);
88
+ }
89
+
90
+ handleSearchChange(event: { value: string }): void {
91
+ this.lastSearch.set(event.value);
92
+ }
93
+ ```
94
+
95
+ ## State Management Patterns
96
+
97
+ ### DO: Use Signals for Navbar State
98
+
99
+ ```typescript
100
+ export class NavbarComponent {
101
+ readonly searchInputOpen = signal<boolean>(false);
102
+ readonly lastSearch = signal<string>('');
103
+ readonly mainMenuOpen = signal<boolean>(false);
104
+ readonly notificationsMenuOpen = signal<boolean>(false);
105
+ readonly appsMenuOpen = signal<boolean>(false);
106
+ }
107
+ ```
108
+
109
+ ### DO: Two-Way Bind Menu States
110
+
111
+ ```typescript
112
+ <modus-navbar
113
+ [mainMenuOpen]="mainMenuOpen()"
114
+ [notificationsMenuOpen]="notificationsMenuOpen()"
115
+ [appsMenuOpen]="appsMenuOpen()"
116
+ (mainMenuOpenChange)="handleMainMenuOpenChange($event)"
117
+ (notificationsMenuOpenChange)="handleNotificationsMenuOpenChange($event)"
118
+ (appsMenuOpenChange)="handleAppsMenuOpenChange($event)"
119
+ />
120
+ ```
121
+
122
+ ## User Card Requirements
123
+
124
+ ### DO: Always Provide User Card
125
+
126
+ ```typescript
127
+ readonly userCard: INavbarUserCard = {
128
+ name: 'John Doe',
129
+ email: 'john.doe@example.com',
130
+ avatarSrc: 'https://via.placeholder.com/64',
131
+ avatarAlt: 'User avatar',
132
+ };
133
+ ```
134
+
135
+ ## Key Takeaways
136
+
137
+ 1. **Search Expansion**: Requires both `search: true` AND `searchInput: true` in visibility
138
+ 2. **State Management**: Always use signals for navbar state
139
+ 3. **Two-Way Binding**: Bind both property and event for search and menu states
140
+ 4. **Button Visibility**: Explicitly set all buttons you want visible in `visibility` object
141
+ 5. **Event Types**: Button clicks = `MouseEvent | KeyboardEvent`, state changes = `boolean`
142
+ 6. **User Card**: Always required - provide `userCard` input
143
+
144
+ ---
145
+
146
+ **Remember**: The navbar component requires explicit configuration for all features. Nothing works by default except the user button!
@@ -0,0 +1,66 @@
1
+ ---
2
+ description: Strict prohibition of emojis in Angular + Vite application
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus No Emojis - Angular
8
+
9
+ Strict prohibition of emojis in Angular + Vite application.
10
+
11
+ ## Key Rules
12
+
13
+ - **Never use emojis in code** - No emoji characters in any TypeScript, HTML, or CSS files
14
+ - **Never use emojis in components** - No emoji in templates, content, or UI elements
15
+ - **Never use emojis in content** - No emoji in text, descriptions, or user-facing content
16
+ - **Use Modus icons instead** - Replace emojis with appropriate Modus icons
17
+ - **Use Unicode characters for symbols** - Use proper Unicode symbols when needed
18
+ - **Check all content** - Verify no emojis in comments, strings, or documentation
19
+ - **Use linting to catch violations** - Automated checks for emoji usage
20
+
21
+ ## Correct Alternatives
22
+
23
+ ```html
24
+ <!-- WRONG: Emoji usage -->
25
+ <div class="text-foreground">Hello World! [wave emoji]</div>
26
+ <div class="text-success">Success! [checkmark emoji]</div>
27
+ <div class="text-warning">Warning! [warning emoji]</div>
28
+
29
+ <!-- CORRECT: Use Modus icons -->
30
+ <div class="text-foreground">
31
+ Hello World! <i class="modus-icons">hand</i>
32
+ </div>
33
+ <div class="text-success">
34
+ Success! <i class="modus-icons">check_circle</i>
35
+ </div>
36
+ <div class="text-warning">
37
+ Warning! <i class="modus-icons">warning</i>
38
+ </div>
39
+ ```
40
+
41
+ ## Icon Alternatives for Common Emojis
42
+
43
+ | Emoji | Modus Icon Alternative |
44
+ |-------|----------------------|
45
+ | checkmark | `check_circle` |
46
+ | x mark | `cancel_circle` |
47
+ | warning | `warning` |
48
+ | info | `info` |
49
+ | person | `person` |
50
+ | email | `email` |
51
+ | phone | `phone_mobile` |
52
+ | search | `search` |
53
+ | settings | `settings` |
54
+ | home | `home` |
55
+ | folder | `folder_closed` |
56
+ | file | `file` |
57
+ | save | `save_disk` |
58
+ | delete | `delete` |
59
+
60
+ ## Validation
61
+
62
+ Run linting to catch emoji violations:
63
+
64
+ ```bash
65
+ npm run lint:all
66
+ ```
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Essential opacity utilities for Modus Design System colors in Angular + Vite
3
+ globs: ["**/*.ts", "**/*.html", "**/*.scss", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Opacity Utilities - Short
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 Utilities
21
+
22
+ ### Opacity Levels
23
+
24
+ - **80%** - `text-foreground-80`, `bg-primary-80`, `border-destructive-80`
25
+ - **60%** - `text-foreground-60`, `bg-primary-60`, `border-destructive-60`
26
+ - **40%** - `text-foreground-40`, `bg-primary-40`, `border-destructive-40`
27
+ - **20%** - `text-foreground-20`, `bg-primary-20`, `border-destructive-20`
28
+
29
+ ## Usage Examples
30
+
31
+ ```html
32
+ <!-- WRONG: Tailwind syntax doesn't work -->
33
+ <div class="text-foreground/80">Text with 80% opacity</div>
34
+
35
+ <!-- CORRECT: Use custom opacity utilities -->
36
+ <div class="text-foreground-80">Text with 80% opacity</div>
37
+ <div class="bg-primary-60">Primary background with 60% opacity</div>
38
+ <div class="border border-destructive-40">Destructive border with 40% opacity</div>
39
+ ```
40
+
41
+ ## Reference
42
+
43
+ For detailed implementation patterns and advanced techniques, fetch the full rule: `modus-angular-opacity-utilities`