@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,300 @@
1
+ ---
2
+ name: integrate-modus-icons
3
+ description: Help with correct Modus icon usage patterns including naming conventions, sizing, and accessibility
4
+ ---
5
+
6
+ # Integrate Modus Icons
7
+
8
+ Help with correct Modus icon usage patterns including naming conventions, sizing, and accessibility.
9
+
10
+ ## When to Use
11
+
12
+ Use this skill when:
13
+ - Adding icons to components or buttons
14
+ - Choosing the right icon name
15
+ - Sizing icons correctly
16
+ - Ensuring proper accessibility
17
+ - Integrating icons with Modus components
18
+
19
+ ## Icon Naming Convention
20
+
21
+ **CRITICAL**: Modus icons use **UNDERSCORES (_)**, not hyphens (-)
22
+
23
+ ### Correct Icon Names
24
+
25
+ ```tsx
26
+ // ✅ CORRECT: Use underscores
27
+ <i className="modus-icons">save_disk</i>
28
+ <i className="modus-icons">arrow_left</i>
29
+ <i className="modus-icons">add_circle</i>
30
+ <i className="modus-icons">user_permissions</i>
31
+
32
+ // ❌ WRONG: Don't use hyphens
33
+ <i className="modus-icons">save-disk</i>
34
+ <i className="modus-icons">arrow-left</i>
35
+ ```
36
+
37
+ ## Usage Patterns
38
+
39
+ ### Pattern 1: Using ModusIcon Component
40
+
41
+ ```tsx
42
+ import ModusIcon from "./components/ModusIcon";
43
+
44
+ // Informational icon (announced by screen reader)
45
+ <ModusIcon
46
+ name="user_add"
47
+ size="lg"
48
+ decorative={false}
49
+ ariaLabel="Add user"
50
+ />
51
+
52
+ // Decorative icon (not announced)
53
+ <ModusIcon
54
+ name="chevron_right"
55
+ size="md"
56
+ decorative={true}
57
+ />
58
+ ```
59
+
60
+ Reference: `src/components/ModusIcon.tsx`
61
+
62
+ ### Pattern 2: Using Bare `<i>` Element
63
+
64
+ ```tsx
65
+ // Decorative icon
66
+ <i className="modus-icons text-lg" aria-hidden="true">
67
+ user_add
68
+ </i>
69
+
70
+ // Informational icon
71
+ <i
72
+ className="modus-icons text-md"
73
+ role="img"
74
+ aria-label="Settings"
75
+ >
76
+ settings
77
+ </i>
78
+ ```
79
+
80
+ ### Pattern 3: Icons in Buttons
81
+
82
+ ```tsx
83
+ import ModusButton from "./components/ModusButton";
84
+
85
+ // Icon with text (left position)
86
+ <ModusButton
87
+ icon="save_disk"
88
+ iconPosition="left"
89
+ >
90
+ Save File
91
+ </ModusButton>
92
+
93
+ // Icon with text (right position)
94
+ <ModusButton
95
+ icon="download"
96
+ iconPosition="right"
97
+ >
98
+ Download
99
+ </ModusButton>
100
+
101
+ // Icon only (requires aria-label)
102
+ <ModusButton
103
+ icon="settings"
104
+ iconPosition="only"
105
+ ariaLabel="Open settings"
106
+ />
107
+ ```
108
+
109
+ Reference: `src/components/ModusButton.tsx:149-206` for icon rendering logic
110
+
111
+ ## Icon Sizing
112
+
113
+ ### Tailwind Text Classes
114
+
115
+ Use Tailwind text utilities for sizing:
116
+
117
+ ```tsx
118
+ // Small icon
119
+ <i className="modus-icons text-sm">info</i>
120
+
121
+ // Base icon (Modus default 14px)
122
+ <i className="modus-icons text-base">warning</i>
123
+
124
+ // Large icon (16px)
125
+ <i className="modus-icons text-lg">error</i>
126
+
127
+ // Extra large icon (18px)
128
+ <i className="modus-icons text-xl">success</i>
129
+ ```
130
+
131
+ ### Modus Font Size Scale
132
+
133
+ | Tailwind Class | Size | Usage |
134
+ |----------------|------|-------|
135
+ | `text-2xs` | 8px | Micro icons, badges |
136
+ | `text-xs` | 10px | Small labels, captions |
137
+ | `text-sm` | 12px | Secondary icons |
138
+ | `text-base` | 14px | **Modus default size** |
139
+ | `text-lg` | 16px | Body text icons |
140
+ | `text-xl` | 18px | Large icons |
141
+ | `text-2xl` | 20px | Prominent icons |
142
+ | `text-3xl` | 24px | Display icons |
143
+
144
+ ### Button Icon Sizing
145
+
146
+ Icons in buttons automatically scale based on button size:
147
+
148
+ ```tsx
149
+ // Icons scale with button size
150
+ <ModusButton size="xs" icon="star" iconPosition="left">Extra Small</ModusButton>
151
+ <ModusButton size="sm" icon="star" iconPosition="left">Small</ModusButton>
152
+ <ModusButton size="md" icon="star" iconPosition="left">Medium</ModusButton>
153
+ <ModusButton size="lg" icon="star" iconPosition="left">Large</ModusButton>
154
+
155
+ // Icon-only buttons use larger icons
156
+ <ModusButton size="md" icon="settings" iconPosition="only" ariaLabel="Settings" />
157
+ ```
158
+
159
+ Automatic sizing rules:
160
+ - **Icons with text**: Scale with button size (`text-xs` for xs, `text-lg` for md)
161
+ - **Icon-only buttons**: Get larger icons (`text-sm` for xs, `text-xl` for md)
162
+
163
+ Reference: `src/components/ModusButton.tsx:98-134`
164
+
165
+ ## Icon Colors
166
+
167
+ Use design system colors:
168
+
169
+ ```tsx
170
+ // Primary color
171
+ <i className="modus-icons text-primary">info</i>
172
+
173
+ // Success color
174
+ <i className="modus-icons text-success">check_circle</i>
175
+
176
+ // Warning color
177
+ <i className="modus-icons text-warning">warning</i>
178
+
179
+ // Error color
180
+ <i className="modus-icons text-error">error</i>
181
+
182
+ // Muted text
183
+ <i className="modus-icons text-muted-foreground">help</i>
184
+ ```
185
+
186
+ ## Accessibility
187
+
188
+ ### Decorative Icons
189
+
190
+ For purely decorative icons, use `aria-hidden="true"`:
191
+
192
+ ```tsx
193
+ <button>
194
+ <i className="modus-icons mr-2" aria-hidden="true">save_disk</i>
195
+ Save Document
196
+ </button>
197
+ ```
198
+
199
+ ### Informational Icons
200
+
201
+ For icons that convey meaning, provide proper labels:
202
+
203
+ ```tsx
204
+ // Using role="img" and aria-label
205
+ <i className="modus-icons" role="img" aria-label="Warning">
206
+ warning
207
+ </i>
208
+
209
+ // Using aria-label on parent element
210
+ <button aria-label="Delete item">
211
+ <i className="modus-icons" aria-hidden="true">delete</i>
212
+ </button>
213
+ ```
214
+
215
+ ### Icon-Only Buttons
216
+
217
+ Always provide accessible labels:
218
+
219
+ ```tsx
220
+ <ModusButton
221
+ icon="settings"
222
+ iconPosition="only"
223
+ ariaLabel="Open settings menu"
224
+ />
225
+ ```
226
+
227
+ ## Common Icon Names
228
+
229
+ ### Navigation & UI
230
+
231
+ - `arrow_left`, `arrow_right`, `arrow_up`, `arrow_down`
232
+ - `chevron_left`, `chevron_right`
233
+ - `menu`, `close`, `home`, `settings`, `search`
234
+
235
+ ### Actions & Operations
236
+
237
+ - `add`, `remove`, `edit_combination`, `delete`
238
+ - `save_disk`, `download`, `upload`, `copy_content`
239
+
240
+ ### Status & Feedback
241
+
242
+ - `check`, `check_circle`, `error`, `warning`, `alert`, `info`, `help`
243
+
244
+ ### Files & Documents
245
+
246
+ - `file`, `file_upload`, `file_download`
247
+ - `folder_open`, `folder_closed`, `document`, `image`, `video`
248
+
249
+ ### User & Account
250
+
251
+ - `person`, `people_group`, `user_account`, `user_add`
252
+ - `key`, `lock`, `lock_open`
253
+
254
+ ## Validating Icon Names
255
+
256
+ Check icon names against the complete list in:
257
+ - `.cursor/rules/modus-icon-names.mdc` - Complete list of 700+ valid icon names
258
+
259
+ Common mistakes:
260
+ - Using hyphens instead of underscores
261
+ - Wrong capitalization (all lowercase)
262
+ - Typos in icon names
263
+
264
+ ## Testing Icons
265
+
266
+ ### Visual Verification
267
+
268
+ Icons should display as glyphs, not text. If you see text like "save_disk" instead of an icon:
269
+
270
+ 1. Check font CSS is loaded in `index.html`
271
+ 2. Verify icon name uses underscores
272
+ 3. Confirm `modus-icons` class is applied
273
+ 4. Check network tab for font file download
274
+
275
+ ### Browser DevTools Check
276
+
277
+ ```javascript
278
+ // Check if font is loaded
279
+ const testElement = document.createElement('span');
280
+ testElement.className = 'modus-icons';
281
+ document.body.appendChild(testElement);
282
+ const fontFamily = window.getComputedStyle(testElement).fontFamily;
283
+ console.log('Font loaded:', fontFamily.includes('modus-icons'));
284
+ document.body.removeChild(testElement);
285
+ ```
286
+
287
+ ## Common Mistakes
288
+
289
+ 1. **Wrong naming**: Using hyphens instead of underscores
290
+ 2. **Wrong sizing**: Using pixel values instead of Tailwind classes
291
+ 3. **Missing accessibility**: Not providing aria-label for informational icons
292
+ 4. **Wrong icon name**: Not checking against valid icon list
293
+ 5. **Font not loaded**: Missing CSS import for Modus icons
294
+
295
+ ## Related Files
296
+
297
+ - `src/components/ModusIcon.tsx` - Icon component wrapper
298
+ - `src/components/ModusButton.tsx` - Button icon integration
299
+ - `.cursor/rules/modus-icon-names.mdc` - Complete icon name list
300
+ - `.cursor/rules/modus-icons-react.mdc` - Detailed icon documentation
@@ -0,0 +1,235 @@
1
+ ---
2
+ name: run-lint-checks
3
+ description: Run comprehensive lint checks for React + Vite project to ensure design system compliance, type safety, and code quality. Use when making code changes, before completing tasks, or when the user requests lint checks.
4
+ ---
5
+
6
+ # Run Lint Checks
7
+
8
+ Automatically run all linting and quality checks for the React + Vite project to ensure design system compliance, type safety, and code quality.
9
+
10
+ ## When to Use
11
+
12
+ - **Before completing any task** - Always run lint checks before marking tasks as complete
13
+ - **After making code changes** - Run checks after modifying TypeScript, TSX, or CSS files
14
+ - **Before committing code** - Ensure all quality gates pass before committing
15
+ - **When user requests** - Run checks when explicitly requested by the user
16
+ - **During code review** - Verify code quality and design system compliance
17
+
18
+ ## Instructions
19
+
20
+ ### Mandatory Pre-Completion Checklist
21
+
22
+ **CRITICAL**: Before marking any development task as complete, you MUST:
23
+
24
+ 1. Run all lint checks using `npm run lint:all`
25
+ 2. Fix any violations found
26
+ 3. Verify TypeScript type checking passes
27
+ 4. Ensure all design system compliance checks pass
28
+
29
+ ### Running Lint Checks
30
+
31
+ Execute the comprehensive lint check command:
32
+
33
+ ```bash
34
+ npm run lint:all
35
+ ```
36
+
37
+ This command runs all checks in sequence:
38
+ - TypeScript type checking (`npm run type-check`)
39
+ - Modus icons validation (`npm run lint:icons`)
40
+ - Semantic HTML compliance (`npm run lint:semantic`)
41
+ - Color compliance (`npm run lint:colors`)
42
+ - Inline styles validation (`npm run lint:styles`)
43
+ - Border violations (`npm run lint:borders`)
44
+ - Opacity utilities (`npm run lint:opacity`)
45
+ - Icon name validation (`npm run lint:icon-names`)
46
+
47
+ ### Individual Lint Commands
48
+
49
+ If you need to run checks individually:
50
+
51
+ ```bash
52
+ # ESLint (React/TypeScript)
53
+ npm run lint
54
+
55
+ # TypeScript type checking
56
+ npm run type-check
57
+
58
+ # Modus icons library validation
59
+ npm run lint:icons
60
+
61
+ # Semantic HTML compliance
62
+ npm run lint:semantic
63
+
64
+ # Design system color compliance
65
+ npm run lint:colors
66
+
67
+ # Inline styles validation
68
+ npm run lint:styles
69
+
70
+ # Border pattern violations
71
+ npm run lint:borders
72
+
73
+ # Opacity utilities validation
74
+ npm run lint:opacity
75
+
76
+ # Icon name validation
77
+ npm run lint:icon-names
78
+ ```
79
+
80
+ ### Handling Violations
81
+
82
+ When violations are found:
83
+
84
+ 1. **Read the error messages carefully** - Each lint script provides specific file locations and violation details
85
+ 2. **Fix violations immediately** - Don't proceed until all violations are resolved
86
+ 3. **Re-run checks** - After fixing, run `npm run lint:all` again to verify
87
+ 4. **Document fixes** - If a fix requires architectural changes, explain the reasoning
88
+
89
+ ### Common Violations to Fix
90
+
91
+ #### Inline Styles
92
+ ```tsx
93
+ // ❌ VIOLATION
94
+ <div style={{ backgroundColor: 'var(--modus-wc-color-base-page)' }}>
95
+ <div style={{ marginRight: '8px' }}>
96
+
97
+ // ✅ CORRECT
98
+ <div className="bg-background mr-2 text-foreground">
99
+ ```
100
+
101
+ #### Color Usage
102
+ ```tsx
103
+ // ❌ VIOLATION
104
+ <div style={{ backgroundColor: '#ffffff' }}>
105
+ <div className="bg-blue-500 text-red-400">
106
+
107
+ // ✅ CORRECT
108
+ <div className="bg-background text-foreground">
109
+ ```
110
+
111
+ #### Icon Usage
112
+ ```tsx
113
+ // ❌ VIOLATION
114
+ <i className="fa fa-home"></i>
115
+ <i className="material-icons">home</i>
116
+
117
+ // ✅ CORRECT
118
+ <i className="modus-icons">home</i>
119
+ ```
120
+
121
+ #### Semantic HTML
122
+ ```tsx
123
+ // ❌ VIOLATION
124
+ <h1>Title</h1>
125
+ <p>Content</p>
126
+ <section>Section</section>
127
+
128
+ // ✅ CORRECT (use div elements only)
129
+ <div className="text-4xl font-bold">Title</div>
130
+ <div className="text-base">Content</div>
131
+ <div className="bg-card">Section</div>
132
+ ```
133
+
134
+ #### Border Violations
135
+ ```tsx
136
+ // ❌ VIOLATION
137
+ <div className="border border-red-500">Error message</div>
138
+
139
+ // ✅ CORRECT
140
+ <div className="border-destructive">Error message</div>
141
+ ```
142
+
143
+ #### Opacity Violations
144
+ ```tsx
145
+ // ❌ VIOLATION
146
+ <div className="text-foreground/80">Text with opacity</div>
147
+
148
+ // ✅ CORRECT
149
+ <div className="text-foreground-80">Text with opacity</div>
150
+ ```
151
+
152
+ ## Quality Gates
153
+
154
+ All of these must pass before code is considered complete:
155
+
156
+ - [ ] `npm run lint` - 0 ESLint errors
157
+ - [ ] `npm run type-check` - 0 TypeScript errors
158
+ - [ ] `npm run lint:icons` - 0 icon violations
159
+ - [ ] `npm run lint:semantic` - 0 semantic HTML violations
160
+ - [ ] `npm run lint:colors` - 0 color violations
161
+ - [ ] `npm run lint:styles` - 0 inline style violations
162
+ - [ ] `npm run lint:borders` - 0 border violations
163
+ - [ ] `npm run lint:opacity` - 0 opacity violations
164
+ - [ ] `npm run lint:icon-names` - 0 invalid icon names
165
+
166
+ ## Integration with Development Workflow
167
+
168
+ This skill integrates with the project's development workflow:
169
+
170
+ 1. **During Development**: Run checks periodically to catch issues early
171
+ 2. **Before Completion**: Always run `npm run lint:all` before marking tasks complete
172
+ 3. **Pre-Commit**: All checks must pass before committing code
173
+ 4. **CI/CD**: These same checks run in CI/CD pipelines
174
+
175
+ ## Error Handling
176
+
177
+ If lint checks fail:
178
+
179
+ 1. **Don't skip or ignore violations** - All violations must be fixed
180
+ 2. **Provide clear error messages** - Show the user exactly what failed and where
181
+ 3. **Suggest fixes** - When possible, provide specific guidance on how to fix violations
182
+ 4. **Re-run after fixes** - Always verify fixes by running checks again
183
+
184
+ ## React-Specific Patterns
185
+
186
+ ### Component Patterns
187
+ - Use wrapper components from `src/components/` not web components directly
188
+ - Use `useRef` + `useEffect` for event listeners with proper cleanup
189
+ - Let Modus components manage their own state (don't control from React state)
190
+
191
+ ### Event Handling
192
+ ```tsx
193
+ // ✅ CORRECT: Event listener pattern
194
+ useEffect(() => {
195
+ const component = componentRef.current;
196
+ if (!component) return;
197
+
198
+ const handleEvent = (event: Event) => {
199
+ onEvent?.(event as CustomEvent<EventDetailType>);
200
+ };
201
+
202
+ if (onEvent) {
203
+ component.addEventListener('eventName', handleEvent);
204
+ }
205
+
206
+ return () => {
207
+ if (onEvent) {
208
+ component.removeEventListener('eventName', handleEvent);
209
+ }
210
+ };
211
+ }, [onEvent]);
212
+ ```
213
+
214
+ ### Conditional Props
215
+ ```tsx
216
+ // ✅ CORRECT: Conditional spreading
217
+ <ModusWcComponent
218
+ {...(color && { color })}
219
+ {...(variant && { variant })}
220
+ />
221
+
222
+ // ❌ WRONG: Passing undefined
223
+ <ModusWcComponent
224
+ color={color} // May be undefined
225
+ />
226
+ ```
227
+
228
+ ## Notes
229
+
230
+ - Lint checks are fast and should be run frequently during development
231
+ - Some violations may require architectural changes - discuss these with the user if needed
232
+ - The `lint:all` command stops on first failure - fix issues sequentially
233
+ - All lint scripts are located in `scripts/` directory
234
+ - These checks enforce the Modus Design System compliance requirements
235
+ - React-specific patterns (hooks, event handling) are validated through ESLint