@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,728 @@
1
+ <!-- ![Modus React + Vite Boilerplate Hero](readme_assets/hero.png) -->
2
+
3
+ [![CI](https://github.com/julianoczkowski/modus-react-app/actions/workflows/ci.yml/badge.svg)](https://github.com/julianoczkowski/modus-react-app/actions/workflows/ci.yml)
4
+ [![node](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)
5
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ # Modus React + Vite Boilerplate
8
+
9
+ A production-ready React 19 + Vite boilerplate/starter template with Modus 2 Web Components integration, featuring TypeScript support, comprehensive component examples, and modern development practices. Perfect for quickly bootstrapping new applications with the Modus Design System.
10
+
11
+ ## Built-in Development Rules
12
+
13
+ This boilerplate comes with comprehensive development rules and standards to ensure code quality and consistency:
14
+
15
+ ### Always Applied Rules
16
+
17
+ - **Color Usage** - Enforces the 9 approved Modus colors and prevents hardcoded values
18
+ - **Modus Web Components** - Guidelines for proper component implementation with MCP documentation
19
+ - **React Component Creation** - Best practices for React 19 component architecture and CSS patterns
20
+
21
+ ### Context-Specific Rules
22
+
23
+ - **Modus Icons** - Complete icon system with 500+ validated icon names
24
+ - **Chrome DevTools Testing** - Browser debugging integration via MCP for implementation testing
25
+
26
+ > **Location:** All rules are stored in `.cursor/rules/` and automatically guide your development workflow through AI assistants.
27
+
28
+ <!-- ![Modus React + Vite Boilerplate Teaser](readme_assets/teaser.gif) -->
29
+
30
+ ## AI Development Enhanced
31
+
32
+ This boilerplate comes pre-configured with powerful AI development tools to supercharge your workflow:
33
+
34
+ ### MCP Servers Included
35
+
36
+ - **Context7** - Advanced context management for AI assistants
37
+ - **Chrome DevTools** - Browser debugging integration via MCP
38
+ - **Modus Documentation** - Direct access to complete Modus Web Components documentation through AI
39
+
40
+ ### AI Skills (8 Skills)
41
+
42
+ Pre-built skills in `.cursor/skills/` for common development tasks:
43
+
44
+ - **create-modus-wrapper-component** - Scaffold new Modus component wrappers
45
+ - **handle-modus-checkbox-value-bug** - Handle the checkbox value inversion bug
46
+ - **implement-modus-modal-with-refs** - Implement modals with forwardRef pattern
47
+ - **set-up-modus-event-listeners** - Set up proper useEffect event listeners
48
+ - **integrate-modus-icons** - Integrate Modus icons correctly
49
+ - **create-modus-form-component** - Create form components with validation
50
+ - **fix-modus-component-event-issues** - Debug event handling problems
51
+ - **style-modus-components-with-tailwind** - Apply custom border/opacity utilities
52
+
53
+ ### Development Rules & Standards
54
+
55
+ - **Cursor Rules** - 40+ pre-configured development patterns and best practices
56
+ - **Code Quality** - Automated linting, formatting, and type checking
57
+ - **AI-Optimized Workflow** - Seamless integration with modern AI coding assistants
58
+
59
+ > **Note:** The `.cursor/` directory contains MCP server configurations, development rules, and AI skills that enhance your AI-assisted development experience.
60
+
61
+ ### GitHub Copilot Integration
62
+
63
+ This boilerplate includes GitHub Copilot instructions for VS Code and GitHub.com users:
64
+
65
+ - **Repository Instructions** - Located in `.github/copilot-instructions.md` with condensed development guidelines
66
+ - **Path-Specific Instructions** - Five specialized instruction files in `.github/instructions/`:
67
+ - `components.instructions.md` - Wrapper component patterns, event handling
68
+ - `demos.instructions.md` - Demo page structure and examples
69
+ - `pages.instructions.md` - Application page patterns
70
+ - `styles.instructions.md` - Custom CSS utilities and design system
71
+ - `typescript.instructions.md` - TypeScript patterns and event types
72
+ - **Auto-Applied** - GitHub Copilot automatically reads these instructions to provide context-aware suggestions
73
+
74
+ > **Location:** All GitHub Copilot instructions are in `.github/copilot-instructions.md` and `.github/instructions/*.instructions.md`
75
+
76
+ ## What's Included
77
+
78
+ This boilerplate provides a complete foundation for building React applications with Modus Web Components:
79
+
80
+ - **React 19 + Vite** - Modern framework with SWC for ultra-fast builds and full type safety
81
+ - **Modus 2 Web Components** - Complete integration with the latest Modus design system
82
+ - **49 Wrapper Components** - Pre-built React wrappers for all Modus components
83
+ - **48 Component Demos** - Built-in interactive demos for every component
84
+ - **Standard Icon Usage** - Official Modus icon implementation with CDN delivery (500+ icons)
85
+ - **Theme Switching** - Support for all 6 Modus themes (Classic/Modern, Light/Dark, Connect)
86
+ - **Accessibility** - WCAG 2.1 AA compliant with proper ARIA support
87
+ - **Performance Optimized** - Vite's lightning-fast HMR and optimized builds
88
+ - **Development Tools** - ESLint, TypeScript, comprehensive linting scripts
89
+ - **Production Ready** - Optimized build configuration and deployment setup
90
+ - **Dev Panel** - Floating development panel with theme switcher and demo navigation
91
+ - **Icon Gallery** - Complete icon showcase with click-to-copy functionality
92
+ - **Color Palette** - Visual reference for all 9 design system colors
93
+ - **AI Integration** - 40+ Cursor rules, 8 AI skills, and GitHub Copilot instructions
94
+
95
+ ## Figma to Code Integration
96
+
97
+ ![Modus Figma MCP](readme_assets/modus_figma_mcp.png)
98
+
99
+ If you're working with Figma designs and want AI-assisted coding that understands your design tokens and components, check out the official Modus Figma MCP integration. This powerful tool bridges the gap between design and development by providing direct access to your Figma designs through AI assistants.
100
+
101
+ **Learn more:** [Modus Figma MCP Integration Guide](https://trimble-oss.github.io/modus-wc-2.0/main/?path=/docs/documentation-modus-figma-mcp-integration-guide--docs)
102
+
103
+ > **Perfect for:** Design-to-code workflows, maintaining design system consistency, and accelerating development with AI-powered Figma integration.
104
+
105
+ ## Getting Started
106
+
107
+ ![Modus React + Vite Boilerplate Getting Started](readme_assets/getting_started_header.png)
108
+
109
+ ### Prerequisites
110
+
111
+ - Node.js 20+ (required for React 19 compatibility)
112
+ - npm or yarn
113
+
114
+ ### Installation
115
+
116
+ 1. **Clone or use this template:**
117
+
118
+ ```bash
119
+ # Clone the repository
120
+ git clone <your-repo-url> my-modus-app
121
+ cd my-modus-app
122
+
123
+ # Or use as a template on GitHub
124
+ # Click "Use this template" button
125
+ ```
126
+
127
+ 2. **Install dependencies:**
128
+
129
+ ```bash
130
+ npm install
131
+ ```
132
+
133
+ 3. **Start the development server:**
134
+
135
+ ```bash
136
+ npm run dev
137
+ ```
138
+
139
+ 4. **Open your browser:**
140
+ Navigate to your localhost usually it is [http://localhost:5173](http://localhost:5173)
141
+
142
+ ### Build for Production
143
+
144
+ ```bash
145
+ npm run build
146
+ npm run preview
147
+ ```
148
+
149
+ ## Project Structure
150
+
151
+ This boilerplate follows React + Vite best practices with a clean, scalable architecture:
152
+
153
+ ```text
154
+ modus-react-app/
155
+ ├── src/
156
+ │ ├── components/ # 49 Modus wrapper components
157
+ │ │ ├── ModusButton.tsx
158
+ │ │ ├── ModusModal.tsx
159
+ │ │ ├── ModusIcon.tsx
160
+ │ │ └── ...
161
+ │ ├── pages/ # Your application pages
162
+ │ │ └── HomePage.tsx # Start here for your app
163
+ │ ├── demos/ # 48 component demo pages (dev only)
164
+ │ │ ├── button-demo/
165
+ │ │ ├── modal-demo/
166
+ │ │ └── ...
167
+ │ ├── dev/ # Dev Panel infrastructure
168
+ │ │ ├── DevPanel.tsx
169
+ │ │ ├── DevPanelProvider.tsx
170
+ │ │ └── config.ts
171
+ │ ├── dev-pages/ # Reference pages (dev only)
172
+ │ │ ├── ColorPalettePage.tsx
173
+ │ │ ├── IconsPage.tsx
174
+ │ │ └── ComponentsGalleryPage.tsx
175
+ │ ├── contexts/ # React contexts
176
+ │ │ └── ThemeContext.tsx
177
+ │ ├── hooks/ # Custom React hooks
178
+ │ │ └── useTheme.ts
179
+ │ ├── config/ # Configuration files
180
+ │ │ └── routes.ts
181
+ │ ├── data/ # Static data
182
+ │ │ └── modusIcons.ts # 500+ icon definitions
183
+ │ ├── App.tsx # Main app component
184
+ │ ├── main.tsx # Application entry point
185
+ │ └── index.css # Global styles and design system
186
+ ├── scripts/ # Linting and utility scripts
187
+ ├── docs/ # Project documentation
188
+ ├── .cursor/
189
+ │ ├── rules/ # 40+ development rules
190
+ │ └── skills/ # 8 AI development skills
191
+ ├── .github/
192
+ │ ├── copilot-instructions.md # GitHub Copilot instructions
193
+ │ ├── instructions/ # Path-specific Copilot instructions
194
+ │ └── workflows/ # CI/CD workflows
195
+ └── public/ # Public assets
196
+ ```
197
+
198
+ > **Dev Panel:** Toggle with `Ctrl+Shift+D` or the floating button. Only renders in development mode.
199
+
200
+ ## Using This Boilerplate
201
+
202
+ ### Customizing for Your Project
203
+
204
+ 1. **Update project information:**
205
+
206
+ - Modify `package.json` with your project details
207
+ - Update the app title in `src/App.tsx`
208
+ - Replace demo content in `src/pages/HomePage.tsx` with your application content
209
+
210
+ 2. **Add your components:**
211
+
212
+ - Create new components in `src/components/`
213
+ - Add new pages in `src/pages/`
214
+ - Use React Router for navigation
215
+
216
+ 3. **Configure your build:**
217
+ - Modify `vite.config.ts` for your deployment needs
218
+ - Update environment variables as needed
219
+ - Configure additional build optimizations
220
+
221
+ ### Built-in Demos
222
+
223
+ ![Modus Web Components Demo](readme_assets/teaser_comp.gif)
224
+
225
+ This boilerplate includes 48 comprehensive demo pages showcasing all Modus Web Components:
226
+
227
+ - **Interactive Component Demos** - Live examples of all 49 Modus components
228
+ - **Theme Showcases** - See components across all 6 supported themes
229
+ - **Code Examples** - Each demo shows proper usage patterns
230
+
231
+ Access demos via the Dev Panel or navigate to `/dev/demos/*` routes in development mode.
232
+
233
+ ### Available Modus Components (49 Components)
234
+
235
+ ![Modus Components](readme_assets/modus_comp.png)
236
+
237
+ This boilerplate includes 49 pre-built wrapper components ready to use:
238
+
239
+ #### **Form Components (15)**
240
+
241
+ - **ModusAutocomplete** - Input with suggestions and multi-select
242
+ - **ModusButton** - All variants, colors, sizes, and shapes
243
+ - **ModusButtonGroup** - Grouped button controls with shared styling
244
+ - **ModusCheckbox** - Multiple selection controls (note: value inversion bug)
245
+ - **ModusDate** - Date input with validation
246
+ - **ModusFileDropzone** - Drag-and-drop file upload area
247
+ - **ModusNumberInput** - Numeric input with currency support
248
+ - **ModusRadio** - Exclusive choice controls
249
+ - **ModusRating** - Star, smiley, heart, and thumb ratings
250
+ - **ModusSelect** - Single-select dropdown with dynamic options
251
+ - **ModusSlider** - Interactive range inputs
252
+ - **ModusSwitch** - Binary toggle controls
253
+ - **ModusTextarea** - Multi-line text fields with helper messages
254
+ - **ModusTextInput** - Single-line text fields with validation
255
+ - **ModusTimeInput** - Time picker with min/max limits
256
+
257
+ #### **Layout Components (7)**
258
+
259
+ - **ModusAccordion** - Collapsible content sections
260
+ - **ModusCard** - Content containers with headers and actions
261
+ - **ModusHandle** - Draggable handle for resizable elements
262
+ - **ModusPanel** - Content panel containers
263
+ - **ModusSkeleton** - Animated loading placeholders
264
+ - **ModusToolbar** - Three-slot layout containers
265
+ - **ModusUtilityPanel** - Collapsible side panels
266
+
267
+ #### **Navigation Components (9)**
268
+
269
+ - **ModusBreadcrumbs** - Hierarchical navigation trails
270
+ - **ModusDropdownMenu** - Contextual menus
271
+ - **ModusMenu** - Integrated menu systems
272
+ - **ModusMenuItem** - Individual menu item component
273
+ - **ModusNavbar** - Full-width application bars
274
+ - **ModusPagination** - Page navigation controls
275
+ - **ModusSideNavigation** - Collapsible left navigation
276
+ - **ModusStepper** - Multi-step workflow indicators
277
+ - **ModusTabs** - Tab navigation with icons
278
+
279
+ #### **Display Components (7)**
280
+
281
+ - **ModusAvatar** - User profile images
282
+ - **ModusBadge** - Status indicators and counters
283
+ - **ModusChip** - Compact tags and filters
284
+ - **ModusIcon** - Icon system with 500+ validated icons
285
+ - **ModusLogo** - Trimble and product logos
286
+ - **ModusProgress** - Linear and radial progress indicators
287
+ - **ModusTable** - Data tables with sorting and selection
288
+
289
+ #### **Feedback Components (6)**
290
+
291
+ - **ModusAlert** - Success, warning, error, and info messages
292
+ - **ModusInputFeedback** - Form field feedback
293
+ - **ModusInputLabel** - Form control labels
294
+ - **ModusLoader** - Visual loading indicators
295
+ - **ModusToast** - Transient notifications
296
+ - **ModusTooltip** - Contextual helper messages
297
+
298
+ #### **Overlay Components (1)**
299
+
300
+ - **ModusModal** - Blocking dialog overlays (use forwardRef pattern)
301
+
302
+ #### **Theme Components (4)**
303
+
304
+ - **ModusProvider** - Context provider for Modus components
305
+ - **ModusThemeSwitcher** - Theme toggle controls
306
+ - **ThemeSwitcherDropdown** - Dropdown theme selector
307
+ - **ThemeToggleSimple** - Simple light/dark toggle
308
+
309
+ ## Modus Web Components Integration
310
+
311
+ ### Basic Usage
312
+
313
+ Always use the wrapper components from `src/components/` instead of the web components directly:
314
+
315
+ ```tsx
316
+ import { ModusButton, ModusIcon } from "@/components";
317
+
318
+ export default function MyComponent() {
319
+ const handleClick = () => {
320
+ console.log("Button clicked!");
321
+ };
322
+
323
+ return (
324
+ <div className="flex gap-4">
325
+ {/* Use wrapper components */}
326
+ <ModusButton color="primary" onClick={handleClick}>
327
+ <i className="modus-icons mr-2">save_disk</i>
328
+ Save Changes
329
+ </ModusButton>
330
+
331
+ {/* Icon wrapper with accessibility */}
332
+ <ModusIcon
333
+ name="settings"
334
+ size="lg"
335
+ decorative={false}
336
+ ariaLabel="Settings"
337
+ />
338
+ </div>
339
+ );
340
+ }
341
+ ```
342
+
343
+ > **Important:** Never use `ModusWc*` components directly. The wrapper components handle event listeners, TypeScript types, and common patterns correctly.
344
+
345
+ ### Component Usage Examples
346
+
347
+ This boilerplate includes comprehensive examples of:
348
+
349
+ - **Buttons** - All variants, colors, sizes, and shapes
350
+ - **Icons** - Complete icon system with standard Modus implementation
351
+ - **Alerts** - Success, warning, error, and info messages
352
+ - **Theme Switching** - Dynamic theme changes
353
+
354
+ ## Icon System
355
+
356
+ ### Standard Modus Icons
357
+
358
+ Icons are loaded from the Modus CDN and use the standard `<i class="modus-icons">icon_name</i>` pattern:
359
+
360
+ ```typescript
361
+ import "@trimble-oss/modus-icons/dist/field-systems/fonts/modus-icons.css";
362
+ ```
363
+
364
+ ### Usage Examples
365
+
366
+ ```tsx
367
+ import ModusIcon from "./components/ModusIcon";
368
+ import type { ModusIconName } from "./types/modus";
369
+
370
+ export default function IconExamples() {
371
+ const iconName: ModusIconName = "settings";
372
+
373
+ return (
374
+ <div>
375
+ {/* Basic icon usage */}
376
+ <i className="modus-icons">settings</i>
377
+
378
+ {/* Icon with styling */}
379
+ <i className="modus-icons icon-lg icon-primary">{iconName}</i>
380
+
381
+ {/* Using the ModusIcon wrapper */}
382
+ <ModusIcon
383
+ name="settings"
384
+ size="lg"
385
+ decorative={false}
386
+ ariaLabel="Settings"
387
+ />
388
+ </div>
389
+ );
390
+ }
391
+ ```
392
+
393
+ ### Available Icon Categories
394
+
395
+ The application now includes the complete list of all official Modus icons with full TypeScript support:
396
+
397
+ - **Actions**: add, edit_combination, delete, save_disk, download, upload, copy_content, refresh, sync
398
+ - **Navigation**: arrow_left, arrow_right, arrow_up, arrow_down, chevron_left, chevron_right, home, dashboard, menu, close
399
+ - **Interface**: search, filter, settings, launch, more_horizontal, more_vertical, sort, view_grid, view_list
400
+ - **Status**: check, check_circle, warning, info, alert, help, cancel_circle
401
+ - **Content**: file, folder_open, folder_closed, document, image, video, camera
402
+ - **User**: person, people_group, user_account, sign_in, sign_out, lock, lock_open
403
+ - **Communication**: email, phone, chat, comment, notifications
404
+ - **UI**: palette, brightness, visibility_on, visibility_off, toggle_on, toggle_off
405
+
406
+ **Total Icons Available**: 500+ official Modus icons with complete TypeScript definitions
407
+
408
+ ## Theme System
409
+
410
+ ### Available Themes
411
+
412
+ This boilerplate supports **6 themes** total:
413
+
414
+ #### Standard Modus Themes (4 themes)
415
+
416
+ - `modus-classic-light` (default)
417
+ - `modus-classic-dark`
418
+ - `modus-modern-light`
419
+ - `modus-modern-dark`
420
+
421
+ #### Trimble Connect Themes (2 themes)
422
+
423
+ - `connect-light` - For Trimble Connect Web Applications
424
+ - `connect-dark` - For Trimble Connect Web Applications
425
+
426
+ > **Note:** Connect themes should only be used when building Trimble Connect Web Applications. For general applications, use the standard Modus themes.
427
+
428
+ ### Theme Switching
429
+
430
+ ```typescript
431
+ // Programmatic theme switching
432
+ const changeTheme = (theme: string) => {
433
+ document.documentElement.setAttribute("data-theme", theme);
434
+ localStorage.setItem("modus-theme", theme);
435
+ };
436
+ ```
437
+
438
+ ## TypeScript Support
439
+
440
+ Full TypeScript support with:
441
+
442
+ - **Component Props** - Type-safe Modus component properties
443
+ - **Event Handlers** - Proper CustomEvent typing with type casting
444
+ - **Icon Names** - Validated icon name types
445
+ - **Theme Values** - Type-safe theme switching
446
+
447
+ ```typescript
448
+ import { ModusButton } from "@/components";
449
+ import type { HTMLModusWcButtonElement } from "@trimble-oss/moduswebcomponents-react";
450
+
451
+ // Event handling with proper types
452
+ const handleEvent = (event: Event) => {
453
+ const customEvent = event as CustomEvent<MouseEvent | KeyboardEvent>;
454
+ console.log("Button clicked!", customEvent.detail);
455
+ };
456
+
457
+ // Theme types
458
+ type ThemeName =
459
+ | "modus-classic-light"
460
+ | "modus-classic-dark"
461
+ | "modus-modern-light"
462
+ | "modus-modern-dark"
463
+ | "connect-light"
464
+ | "connect-dark";
465
+
466
+ // Usage with wrapper components
467
+ export default function MyComponent() {
468
+ return (
469
+ <ModusButton color="primary" variant="filled" onClick={handleEvent}>
470
+ Click me
471
+ </ModusButton>
472
+ );
473
+ }
474
+ ```
475
+
476
+ ## Performance Features
477
+
478
+ ### Vite Optimization
479
+
480
+ - **Lightning-fast HMR** - Instant hot module replacement
481
+ - **Code splitting** - Automatic chunking for optimal loading
482
+ - **Tree shaking** - Unused code elimination
483
+ - **Asset optimization** - Images and fonts are optimized
484
+ - **Source maps** - Available for debugging
485
+
486
+ ### Icon Optimization
487
+
488
+ - **Critical icon preloading** - Essential icons load immediately
489
+ - **Lazy loading** - Non-critical icons load on demand
490
+ - **Font display optimization** - `font-display: swap` for better performance
491
+
492
+ ### Build Optimization
493
+
494
+ - **SWC compilation** - Ultra-fast TypeScript and JSX compilation
495
+ - **ESBuild** - Lightning-fast bundling
496
+ - **Rollup** - Optimized production builds
497
+ - **Source maps** - Available for debugging
498
+
499
+ ## Browser Support
500
+
501
+ - **Modern browsers** - Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
502
+ - **Mobile support** - iOS Safari 14+, Chrome Mobile 90+
503
+ - **Accessibility** - Screen readers and assistive technologies
504
+ - **High contrast** - Windows high contrast mode support
505
+
506
+ ## Development Scripts
507
+
508
+ ```bash
509
+ # Development server with Vite
510
+ npm run dev
511
+
512
+ # Type checking
513
+ npm run type-check
514
+
515
+ # Production build
516
+ npm run build
517
+
518
+ # Preview production build
519
+ npm run preview
520
+
521
+ # Check for non-Modus color usage
522
+ npm run lint:colors
523
+
524
+ # Check for border violations
525
+ npm run lint:borders
526
+
527
+ # Run all linting checks
528
+ npm run lint:all
529
+ ```
530
+
531
+ ## Dev Panel Features
532
+
533
+ The boilerplate includes a floating Dev Panel (development mode only) with:
534
+
535
+ - **Theme Switcher** - Switch between all 6 Modus themes
536
+ - **Icon Gallery** - Browse 500+ icons with click-to-copy (5 icons per row)
537
+ - **Color Palette** - View all 9 design system colors with values
538
+ - **Component Gallery** - Browse all 49 available components
539
+ - **Component Demos** - 48 interactive demos for all components
540
+ - **Logo Showcase** - View all Trimble and Viewpoint product logos
541
+
542
+ Toggle the Dev Panel with `Ctrl+Shift+D` or the floating button in the bottom-right corner.
543
+
544
+ > **Note:** The Dev Panel only renders when `VITE_DEV_PANEL=true` (development mode). It is automatically excluded from production builds.
545
+
546
+ ## Code Quality & Linting
547
+
548
+ ### Modus Color Enforcement
549
+
550
+ This boilerplate includes comprehensive linting that automatically checks for non-Modus color usage:
551
+
552
+ - **Detects Tailwind colors** - Flags usage of `red-400`, `blue-500`, etc.
553
+ - **Detects hardcoded colors** - Catches hex codes like `#ff0000`, RGB values, and Modus hex values
554
+ - **Suggests Modus alternatives** - Provides proper Modus CSS custom properties
555
+ - **Runs on commit** - Automatically validates staged files before commit
556
+
557
+ **Example violations caught:**
558
+
559
+ ```css
560
+ /* WRONG - Will be flagged */
561
+ .button {
562
+ background-color: red-500; /* Tailwind color */
563
+ color: #f1f1f6; /* Hardcoded Modus hex */
564
+ }
565
+ .text {
566
+ color: rgb(23, 28, 30); /* RGB equivalent of Modus color */
567
+ }
568
+
569
+ /* CORRECT - Modus usage */
570
+ .button {
571
+ background-color: var(--modus-wc-color-error);
572
+ color: var(--modus-wc-color-base-100);
573
+ }
574
+ .text {
575
+ color: var(--modus-wc-color-base-content);
576
+ }
577
+ ```
578
+
579
+ **Available Modus Color Variables (9 colors total):**
580
+
581
+ **Base Colors (5 total):**
582
+
583
+ - `var(--modus-wc-color-base-page)` - Background: #fff (light) / #000 (dark)
584
+ - `var(--modus-wc-color-base-100)` - Light gray: #f1f1f6 (light) / #252a2e (dark)
585
+ - `var(--modus-wc-color-base-200)` - Medium gray: #cbcdd6 (light) / #464b52 (dark)
586
+ - `var(--modus-wc-color-base-300)` - Dark gray: #b7b9c3 (light) / #353a40 (dark)
587
+ - `var(--modus-wc-color-base-content)` - Text: #171c1e (light) / #cbcdd6 (dark)
588
+
589
+ **Semantic Colors (4 total - same in both themes):**
590
+
591
+ - `var(--modus-wc-color-info)` - Blue: #0063a3
592
+ - `var(--modus-wc-color-success)` - Green: #1e8a44
593
+ - `var(--modus-wc-color-error)` - Red: #da212c
594
+ - `var(--modus-wc-color-warning)` - Orange: #fbad26
595
+
596
+ > **Note:** Component props like `primary`, `secondary`, `tertiary`, and `danger` map to these CSS variables internally.
597
+
598
+ ## Deployment
599
+
600
+ This boilerplate is ready for deployment to various platforms:
601
+
602
+ ### Static Hosting (Netlify, Vercel, GitHub Pages)
603
+
604
+ ```bash
605
+ npm run build
606
+ # Deploy the dist/ folder
607
+ ```
608
+
609
+ ## Customization
610
+
611
+ ### Adding New Components
612
+
613
+ 1. **Install additional Modus components** if needed
614
+ 2. **Add TypeScript definitions** in `src/types/modus.d.ts`
615
+ 3. **Create wrapper components** in `src/components/`
616
+ 4. **Add examples** in the demo pages or remove demo content for production
617
+
618
+ ### Custom Styling
619
+
620
+ Use Modus CSS custom properties for consistent theming:
621
+
622
+ ```css
623
+ .custom-component {
624
+ background-color: var(--modus-wc-color-base-100);
625
+ color: var(--modus-wc-color-base-content);
626
+ border: 1px solid var(--modus-wc-color-base-200);
627
+ }
628
+
629
+ /* Status-specific styling */
630
+ .success-message {
631
+ color: var(--modus-wc-color-success);
632
+ border-left: 3px solid var(--modus-wc-color-success);
633
+ }
634
+
635
+ .error-message {
636
+ color: var(--modus-wc-color-error);
637
+ border-left: 3px solid var(--modus-wc-color-error);
638
+ }
639
+ ```
640
+
641
+ ### Tailwind CSS Integration
642
+
643
+ This boilerplate includes Tailwind CSS 3 with design system integration:
644
+
645
+ ```tsx
646
+ // Use Tailwind classes with design system colors
647
+ <div className="bg-card border-default rounded-lg p-6">
648
+ <div className="text-2xl font-semibold text-foreground">Title</div>
649
+ <div className="text-muted-foreground">Description</div>
650
+ </div>
651
+
652
+ // Use directional border utilities (not border-b border-default)
653
+ <div className="border-bottom-default">Bottom border only</div>
654
+ <div className="border-top-default">Top border only</div>
655
+
656
+ // Use custom opacity utilities (not text-foreground/80)
657
+ <div className="text-foreground-80">80% opacity text</div>
658
+ <div className="text-foreground-60">60% opacity text</div>
659
+ ```
660
+
661
+ **Important:**
662
+
663
+ - Use directional border utilities (`border-bottom-default`, `border-top-default`) instead of `border-b border-default`
664
+ - Use opacity utilities (`text-foreground-80`) instead of Tailwind's `/80` syntax (CSS variables don't work with Tailwind opacity modifiers)
665
+ - Use `<div>` elements only (no `h1`, `p`, `section`) to avoid Tailwind CSS conflicts
666
+
667
+ ## Troubleshooting
668
+
669
+ ### Icons Not Displaying
670
+
671
+ 1. **Check font loading** - Ensure Modus icons CSS is imported
672
+ 2. **Verify icon names** - Use only valid Modus icon names
673
+ 3. **Check network** - CDN may be blocked in some environments
674
+
675
+ ### Components Not Rendering
676
+
677
+ 1. **Verify imports** - Ensure Modus components are imported
678
+ 2. **Check custom elements** - Vite should recognize `modus-wc-*` tags
679
+ 3. **Browser support** - Ensure browser supports web components
680
+
681
+ ### Theme Issues
682
+
683
+ 1. **HTML attribute** - Ensure `data-theme` is set on `<html>`
684
+ 2. **CSS loading order** - Modus styles should load before custom styles
685
+ 3. **Local storage** - Theme preference should persist across sessions
686
+
687
+ ## Contributing
688
+
689
+ When contributing to this boilerplate:
690
+
691
+ 1. **Follow React 19 best practices**
692
+ 2. **Maintain TypeScript strict mode**
693
+ 3. **Use Modus design tokens**
694
+ 4. **Test across all themes**
695
+ 5. **Ensure accessibility compliance**
696
+ 6. **Update documentation as needed**
697
+
698
+ ## Support & Resources
699
+
700
+ - [Modus Web Components Documentation](https://trimble-oss.github.io/modus-wc-2.0/main/)
701
+ - [Vite Documentation](https://vitejs.dev/)
702
+ - [React 19 Documentation](https://react.dev/)
703
+ - [TypeScript Documentation](https://www.typescriptlang.org/)
704
+ - [Tailwind CSS Documentation](https://tailwindcss.com/docs)
705
+
706
+ ## License
707
+
708
+ MIT License - see LICENSE file for details.
709
+
710
+ ---
711
+
712
+ ## Ready to Build
713
+
714
+ **Ready to build amazing applications with Modus Design System and React + Vite!**
715
+
716
+ This boilerplate provides everything you need to get started quickly while following best practices and maintaining high code quality.
717
+
718
+ ---
719
+
720
+ ## Creator
721
+
722
+ ### Made by [Julian Oczkowski](https://github.com/julianoczkowski)
723
+
724
+ Lead Product Designer bridging UX & Code - Building AI-driven tools, design systems, and digital products
725
+
726
+ [YouTube](https://www.youtube.com/@julianoczkowski) | [LinkedIn](https://linkedin.com/in/julianoczkowski) | [Website](https://www.julianoczkowski.com)
727
+
728
+ Created for the Trimble community and developers worldwide