@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,427 @@
1
+ ---
2
+ description: Use div elements exclusively to avoid Tailwind CSS conflicts
3
+ globs: ["**/*.tsx"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Semantic HTML Usage in React + Vite
8
+
9
+ ## 🚨 **CRITICAL: Use Div Elements Only**
10
+
11
+ **MANDATORY**: This React + Vite application uses **div elements exclusively** for all content (except `<i>` for icons) to avoid conflicts with Tailwind CSS default browser styles.
12
+
13
+ **Rule**: Use `div` elements with Tailwind classes instead of semantic HTML elements.
14
+
15
+ ## ❌ **FORBIDDEN: Semantic HTML Elements**
16
+
17
+ ### ❌ **Never Use Semantic HTML Elements**
18
+
19
+ ```tsx
20
+ // ❌ WRONG: Semantic HTML elements
21
+ <h1 className="text-4xl font-bold">Title</h1>
22
+ <h2 className="text-3xl font-semibold">Subtitle</h2>
23
+ <h3 className="text-2xl font-medium">Heading</h3>
24
+ <p className="text-base">Paragraph text</p>
25
+ <section className="mb-8 p-4">Content section</section>
26
+ <header className="bg-background">Header content</header>
27
+ <footer className="bg-muted">Footer content</footer>
28
+ <nav className="flex space-x-4">Navigation</nav>
29
+ <main className="flex-1">Main content</main>
30
+ <aside className="w-64">Sidebar</aside>
31
+ <article className="prose">Article content</article>
32
+ <span className="text-sm">Inline text</span>
33
+ ```
34
+
35
+ ### ❌ **Never Use Form Elements**
36
+
37
+ ```tsx
38
+ // ❌ WRONG: Form elements
39
+ <form className="space-y-4">
40
+ <label className="block">Label</label>
41
+ <input type="text" className="w-full" />
42
+ <button type="submit">Submit</button>
43
+ </form>
44
+
45
+ // ❌ WRONG: List elements
46
+ <ul className="space-y-2">
47
+ <li>List item 1</li>
48
+ <li>List item 2</li>
49
+ </ul>
50
+
51
+ <ol className="space-y-2">
52
+ <li>Ordered item 1</li>
53
+ <li>Ordered item 2</li>
54
+ </ol>
55
+ ```
56
+
57
+ ## ✅ **CORRECT: Div Elements with Tailwind**
58
+
59
+ ### ✅ **Use Div Elements for All Content**
60
+
61
+ ```tsx
62
+ // ✅ CORRECT: Div elements with Tailwind classes
63
+ <div className="text-4xl font-bold">Title</div>
64
+ <div className="text-3xl font-semibold">Subtitle</div>
65
+ <div className="text-2xl font-medium">Heading</div>
66
+ <div className="text-base">Paragraph text</div>
67
+ <div className="mb-8 p-4">Content section</div>
68
+ <div className="bg-background">Header content</div>
69
+ <div className="bg-muted">Footer content</div>
70
+ <div className="flex space-x-4">Navigation</div>
71
+ <div className="flex-1">Main content</div>
72
+ <div className="w-64">Sidebar</div>
73
+ <div className="prose">Article content</div>
74
+ <div className="text-sm">Inline text</div>
75
+ ```
76
+
77
+ ### ✅ **Form Elements as Divs**
78
+
79
+ ```tsx
80
+ // ✅ CORRECT: Form elements as divs
81
+ <div className="space-y-4">
82
+ <div className="block">Label</div>
83
+ <input type="text" className="w-full" />
84
+ <button type="submit">Submit</button>
85
+ </div>
86
+
87
+ // ✅ CORRECT: List elements as divs
88
+ <div className="space-y-2">
89
+ <div>List item 1</div>
90
+ <div>List item 2</div>
91
+ </div>
92
+
93
+ <div className="space-y-2">
94
+ <div>Ordered item 1</div>
95
+ <div>Ordered item 2</div>
96
+ </div>
97
+ ```
98
+
99
+ ## 🎯 **Component Patterns**
100
+
101
+ ### ✅ **Page Layout with Divs**
102
+
103
+ ```tsx
104
+ // ✅ CORRECT: Page layout using divs
105
+ function PageLayout({ children }: { children: ReactNode }) {
106
+ return (
107
+ <div className="min-h-screen flex flex-col">
108
+ <div className="bg-background border-b border-border">
109
+ <div className="container mx-auto px-4 py-4">
110
+ <div className="text-2xl font-bold text-foreground">App Title</div>
111
+ </div>
112
+ </div>
113
+
114
+ <div className="flex-1">{children}</div>
115
+
116
+ <div className="bg-muted border-t border-border">
117
+ <div className="container mx-auto px-4 py-4">
118
+ <div className="text-sm text-muted-foreground">Footer content</div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ );
123
+ }
124
+ ```
125
+
126
+ ### ✅ **Card Component with Divs**
127
+
128
+ ```tsx
129
+ // ✅ CORRECT: Card component using divs
130
+ function Card({ title, content, children }: CardProps) {
131
+ return (
132
+ <div className="bg-card text-card-foreground border border-border rounded-lg p-6">
133
+ <div className="text-xl font-semibold mb-4">{title}</div>
134
+ <div className="text-base mb-4">{content}</div>
135
+ {children}
136
+ </div>
137
+ );
138
+ }
139
+
140
+ // Usage
141
+ <Card title="Card Title" content="Card content">
142
+ <div className="text-sm text-muted-foreground">Additional content</div>
143
+ </Card>;
144
+ ```
145
+
146
+ ### ✅ **Navigation with Divs**
147
+
148
+ ```tsx
149
+ // ✅ CORRECT: Navigation using divs
150
+ function Navigation() {
151
+ const navItems = [
152
+ { label: "Home", path: "/" },
153
+ { label: "About", path: "/about" },
154
+ { label: "Contact", path: "/contact" },
155
+ ];
156
+
157
+ return (
158
+ <div className="bg-background border-b border-border">
159
+ <div className="container mx-auto px-4 py-4">
160
+ <div className="flex space-x-6">
161
+ {navItems.map((item) => (
162
+ <a
163
+ key={item.path}
164
+ href={item.path}
165
+ className="text-foreground hover:text-primary transition-colors"
166
+ >
167
+ {item.label}
168
+ </a>
169
+ ))}
170
+ </div>
171
+ </div>
172
+ </div>
173
+ );
174
+ }
175
+ ```
176
+
177
+ ### ✅ **Form with Divs**
178
+
179
+ ```tsx
180
+ // ✅ CORRECT: Form using divs
181
+ function ContactForm() {
182
+ const [formData, setFormData] = useState({
183
+ name: "",
184
+ email: "",
185
+ message: "",
186
+ });
187
+
188
+ const handleSubmit = (e: React.FormEvent) => {
189
+ e.preventDefault();
190
+ console.log("Form data:", formData);
191
+ };
192
+
193
+ return (
194
+ <div className="max-w-md mx-auto p-6 bg-card border border-border rounded-lg">
195
+ <div className="text-2xl font-bold mb-6 text-card-foreground">
196
+ Contact Us
197
+ </div>
198
+
199
+ <div onSubmit={handleSubmit}>
200
+ <div className="mb-4">
201
+ <div className="block text-sm font-medium text-card-foreground mb-2">
202
+ Name
203
+ </div>
204
+ <input
205
+ type="text"
206
+ value={formData.name}
207
+ onChange={(e) =>
208
+ setFormData((prev) => ({ ...prev, name: e.target.value }))
209
+ }
210
+ className="w-full px-3 py-2 border border-input rounded bg-input text-foreground"
211
+ required
212
+ />
213
+ </div>
214
+
215
+ <div className="mb-4">
216
+ <div className="block text-sm font-medium text-card-foreground mb-2">
217
+ Email
218
+ </div>
219
+ <input
220
+ type="email"
221
+ value={formData.email}
222
+ onChange={(e) =>
223
+ setFormData((prev) => ({ ...prev, email: e.target.value }))
224
+ }
225
+ className="w-full px-3 py-2 border border-input rounded bg-input text-foreground"
226
+ required
227
+ />
228
+ </div>
229
+
230
+ <div className="mb-6">
231
+ <div className="block text-sm font-medium text-card-foreground mb-2">
232
+ Message
233
+ </div>
234
+ <textarea
235
+ value={formData.message}
236
+ onChange={(e) =>
237
+ setFormData((prev) => ({ ...prev, message: e.target.value }))
238
+ }
239
+ className="w-full px-3 py-2 border border-input rounded bg-input text-foreground h-32"
240
+ required
241
+ />
242
+ </div>
243
+
244
+ <button
245
+ type="submit"
246
+ className="w-full bg-primary text-primary-foreground py-2 px-4 rounded hover:bg-primary/90"
247
+ >
248
+ Send Message
249
+ </button>
250
+ </div>
251
+ </div>
252
+ );
253
+ }
254
+ ```
255
+
256
+ ## 🎨 **Advanced Patterns**
257
+
258
+ ### ✅ **Typography with Divs**
259
+
260
+ ```tsx
261
+ // ✅ CORRECT: Typography using divs
262
+ function Typography() {
263
+ return (
264
+ <div className="space-y-4">
265
+ <div className="text-4xl font-bold text-foreground">Heading 1</div>
266
+ <div className="text-3xl font-semibold text-foreground">Heading 2</div>
267
+ <div className="text-2xl font-medium text-foreground">Heading 3</div>
268
+ <div className="text-xl font-medium text-foreground">Heading 4</div>
269
+ <div className="text-lg font-medium text-foreground">Heading 5</div>
270
+ <div className="text-base font-medium text-foreground">Heading 6</div>
271
+
272
+ <div className="text-base text-foreground">Regular paragraph text</div>
273
+ <div className="text-sm text-muted-foreground">Small text</div>
274
+ <div className="text-xs text-muted-foreground">Extra small text</div>
275
+ </div>
276
+ );
277
+ }
278
+ ```
279
+
280
+ ### ✅ **List with Divs**
281
+
282
+ ```tsx
283
+ // ✅ CORRECT: List using divs
284
+ function ListComponent() {
285
+ const items = ["First item", "Second item", "Third item"];
286
+
287
+ return (
288
+ <div className="space-y-2">
289
+ {items.map((item, index) => (
290
+ <div key={index} className="flex items-center space-x-2">
291
+ <div className="w-2 h-2 bg-primary rounded-full"></div>
292
+ <div className="text-foreground">{item}</div>
293
+ </div>
294
+ ))}
295
+ </div>
296
+ );
297
+ }
298
+ ```
299
+
300
+ ### ✅ **Table with Divs**
301
+
302
+ ```tsx
303
+ // ✅ CORRECT: Table using divs
304
+ function TableComponent() {
305
+ const data = [
306
+ { name: "John", age: 30, city: "New York" },
307
+ { name: "Jane", age: 25, city: "Los Angeles" },
308
+ { name: "Bob", age: 35, city: "Chicago" },
309
+ ];
310
+
311
+ return (
312
+ <div className="bg-card border border-border rounded-lg overflow-hidden">
313
+ <div className="bg-muted px-4 py-2 border-b border-border">
314
+ <div className="grid grid-cols-3 gap-4 font-medium text-foreground">
315
+ <div>Name</div>
316
+ <div>Age</div>
317
+ <div>City</div>
318
+ </div>
319
+ </div>
320
+
321
+ <div className="divide-y divide-border">
322
+ {data.map((row, index) => (
323
+ <div key={index} className="px-4 py-2">
324
+ <div className="grid grid-cols-3 gap-4 text-foreground">
325
+ <div>{row.name}</div>
326
+ <div>{row.age}</div>
327
+ <div>{row.city}</div>
328
+ </div>
329
+ </div>
330
+ ))}
331
+ </div>
332
+ </div>
333
+ );
334
+ }
335
+ ```
336
+
337
+ ## 🚫 **Common Anti-Patterns**
338
+
339
+ ### ❌ **Don't Mix Semantic and Div Elements**
340
+
341
+ ```tsx
342
+ // ❌ WRONG: Mixing semantic and div elements
343
+ <div className="container">
344
+ <h1 className="text-2xl">Title</h1> {/* ❌ Semantic element */}
345
+ <div className="text-base">Content</div> {/* ✅ Div element */}
346
+ <p className="text-sm">Description</p> {/* ❌ Semantic element */}
347
+ </div>
348
+ ```
349
+
350
+ ### ❌ **Don't Use Semantic Elements for Styling**
351
+
352
+ ```tsx
353
+ // ❌ WRONG: Using semantic elements for styling
354
+ <h1 className="text-sm text-muted-foreground">Small text</h1> {/* ❌ Wrong element */}
355
+ <p className="text-4xl font-bold">Large title</p> {/* ❌ Wrong element */}
356
+ ```
357
+
358
+ ### ❌ **Don't Use Form Elements**
359
+
360
+ ```tsx
361
+ // ❌ WRONG: Using form elements
362
+ <form className="space-y-4">
363
+ <label className="block">Label</label> {/* ❌ Form element */}
364
+ <input type="text" /> {/* ❌ Form element */}
365
+ <button type="submit">Submit</button> {/* ❌ Form element */}
366
+ </form>
367
+ ```
368
+
369
+ ## 🔧 **Validation**
370
+
371
+ ### ✅ **Linting Commands**
372
+
373
+ ```bash
374
+ # Check for semantic HTML violations
375
+ npm run lint:semantic
376
+
377
+ # Check for inline styles
378
+ npm run lint:styles
379
+ ```
380
+
381
+ ### ✅ **Semantic HTML Test**
382
+
383
+ ```tsx
384
+ // ✅ CORRECT: Test semantic HTML compliance
385
+ function SemanticHTMLTest() {
386
+ return (
387
+ <div className="space-y-4">
388
+ <div className="text-2xl font-bold text-foreground">Test Page</div>
389
+
390
+ <div className="bg-card p-4 border border-border rounded">
391
+ <div className="text-lg font-medium text-card-foreground mb-2">
392
+ Card Title
393
+ </div>
394
+ <div className="text-base text-card-foreground">Card content</div>
395
+ </div>
396
+
397
+ <div className="space-y-2">
398
+ <div className="text-sm font-medium text-foreground">List Items:</div>
399
+ <div className="text-base text-foreground">• Item 1</div>
400
+ <div className="text-base text-foreground">• Item 2</div>
401
+ <div className="text-base text-foreground">• Item 3</div>
402
+ </div>
403
+ </div>
404
+ );
405
+ }
406
+ ```
407
+
408
+ ## 🎯 **Key Takeaways**
409
+
410
+ 1. **Use Div Elements Only**: Never use semantic HTML elements
411
+ 2. **Tailwind for Styling**: Use Tailwind classes for all styling
412
+ 3. **Consistent Structure**: Maintain consistent div-based structure
413
+ 4. **Accessibility**: Ensure proper accessibility with div elements
414
+ 5. **Form Handling**: Use div elements for form structure
415
+
416
+ ## 🔍 **Semantic HTML Compliance Checklist**
417
+
418
+ - [ ] ✅ **No Semantic Elements**: No `h1`, `h2`, `p`, `section`, `header`, `footer`, `nav`, `main`, `aside`, `article`, `span`
419
+ - [ ] ✅ **Div Elements Only**: All content uses `div` elements
420
+ - [ ] ✅ **Icon Exception**: Only `<i>` elements allowed for icons
421
+ - [ ] ✅ **Tailwind Styling**: All styling through Tailwind classes
422
+ - [ ] ✅ **Consistent Structure**: Consistent div-based component structure
423
+ - [ ] ✅ **Accessibility**: Proper accessibility with div elements
424
+
425
+ ---
426
+
427
+ **Remember: This React + Vite application uses div elements exclusively for all content (except `<i>` for icons) to avoid conflicts with Tailwind CSS default browser styles. Never use semantic HTML elements like `h1`, `p`, `section`, `header`, `footer`, `nav`, `main`, `aside`, `article`, or `span`.**
@@ -0,0 +1,23 @@
1
+ ---
2
+ description: Tailwind CSS v3 with Modus Design System integration
3
+ globs: ["**/*.tsx", "**/*.css"]
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Modus Tailwind Usage - Short
8
+
9
+ Tailwind CSS v3 with Modus Design System integration.
10
+
11
+ ## Key Rules
12
+
13
+ - **Tailwind v3 with design system** - Use Tailwind v3 with Modus Design System integration
14
+ - **No generic Tailwind colors** - Never use `bg-blue-500`, `text-gray-600`, etc.
15
+ - **Use design system colors** - `bg-background`, `text-foreground`, `bg-primary`, etc.
16
+ - **Custom utilities for borders** - Use `border-default`, `border-success`, `border-warning`, etc.
17
+ - **Elevation utilities** - Use `elevation-1`, `elevation-2`, `elevation-3` for shadows
18
+ - **Proper CSS import order** - Modus CSS before Tailwind CSS
19
+ - **Test in all themes** - Ensure Tailwind classes work in all 6 themes
20
+
21
+ ## Reference
22
+
23
+ For detailed Tailwind integration, custom utilities, and advanced styling patterns, fetch the full rule: `modus-tailwind-usage-react`