@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,635 @@
1
+ @import url("https://cdn.jsdelivr.net/npm/@trimble-oss/modus-icons@1.17.0/dist/field-systems/fonts/modus-icons.css");
2
+ @import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap");
3
+
4
+ /* Modus Icons Solid - for modus-wc-icon variant="solid" */
5
+ @font-face {
6
+ font-family: "modus-icons-solid";
7
+ font-display: block;
8
+ src:
9
+ url("https://cdn.jsdelivr.net/npm/@trimble-oss/modus-icons@1.17.0/dist/modus-solid/fonts/modus-icons.woff2")
10
+ format("woff2"),
11
+ url("https://cdn.jsdelivr.net/npm/@trimble-oss/modus-icons@1.17.0/dist/modus-solid/fonts/modus-icons.woff")
12
+ format("woff");
13
+ }
14
+
15
+ .modus-icons-solid {
16
+ font-family: "modus-icons-solid";
17
+ font-weight: normal;
18
+ font-style: normal;
19
+ font-size: 24px;
20
+ display: inline-block;
21
+ line-height: 1;
22
+ text-transform: none;
23
+ letter-spacing: normal;
24
+ word-wrap: normal;
25
+ white-space: nowrap;
26
+ direction: ltr;
27
+ -webkit-font-smoothing: antialiased;
28
+ text-rendering: optimizeLegibility;
29
+ -moz-osx-font-smoothing: grayscale;
30
+ font-feature-settings: "liga";
31
+ }
32
+
33
+ /* Modus Icons Outlined - for modus-wc-icon variant="outlined" */
34
+ @font-face {
35
+ font-family: "modus-icons-outlined";
36
+ font-display: block;
37
+ src:
38
+ url("https://cdn.jsdelivr.net/npm/@trimble-oss/modus-icons@1.17.0/dist/modus-outlined/fonts/modus-icons.woff2")
39
+ format("woff2"),
40
+ url("https://cdn.jsdelivr.net/npm/@trimble-oss/modus-icons@1.17.0/dist/modus-outlined/fonts/modus-icons.woff")
41
+ format("woff");
42
+ }
43
+
44
+ .modus-icons-outlined {
45
+ font-family: "modus-icons-outlined";
46
+ font-weight: normal;
47
+ font-style: normal;
48
+ font-size: 24px;
49
+ display: inline-block;
50
+ line-height: 1;
51
+ text-transform: none;
52
+ letter-spacing: normal;
53
+ word-wrap: normal;
54
+ white-space: nowrap;
55
+ direction: ltr;
56
+ -webkit-font-smoothing: antialiased;
57
+ text-rendering: optimizeLegibility;
58
+ -moz-osx-font-smoothing: grayscale;
59
+ font-feature-settings: "liga";
60
+ }
61
+ @tailwind base;
62
+ @tailwind components;
63
+ @tailwind utilities;
64
+
65
+ :root {
66
+ /* Font weights */
67
+ --font-weight-normal: 400;
68
+ --font-weight-medium: 500;
69
+
70
+ /* Map Figma colors to Modus 9-color system */
71
+ --background: var(--modus-wc-color-base-page);
72
+ --foreground: var(--modus-wc-color-base-content);
73
+ --card: var(--modus-wc-color-base-100);
74
+ --card-foreground: var(--modus-wc-color-base-content);
75
+ --popover: var(--modus-wc-color-base-page);
76
+ --popover-foreground: var(--modus-wc-color-base-content);
77
+ --primary: var(--modus-wc-color-info);
78
+ --primary-foreground: var(--modus-wc-color-base-page);
79
+ --secondary: var(--modus-wc-color-base-300);
80
+ --secondary-foreground: var(--modus-wc-color-base-content);
81
+ --muted: var(--modus-wc-color-base-200);
82
+ --muted-foreground: var(--modus-wc-color-base-content);
83
+ --accent: var(--modus-wc-color-info);
84
+ --accent-foreground: var(--modus-wc-color-base-page);
85
+ --destructive: var(--destructive);
86
+ --destructive-foreground: var(--modus-wc-color-base-page);
87
+ --warning: var(--modus-wc-color-warning);
88
+ --warning-foreground: var(--modus-wc-color-base-content);
89
+ --success: var(--modus-wc-color-success);
90
+ --success-foreground: var(--modus-wc-color-base-page);
91
+ --border: var(--modus-wc-color-base-200);
92
+ --input: var(--modus-wc-color-base-page);
93
+ --input-background: var(--modus-wc-color-base-page);
94
+ --ring: var(--modus-wc-color-info);
95
+ --elevation-sm: 0px 1px 1px 0px rgba(0, 0, 0, 0.05);
96
+ --chart-1: var(--modus-wc-color-info);
97
+ --chart-2: var(--modus-wc-color-warning);
98
+ --chart-3: var(--modus-wc-color-success);
99
+ --chart-4: var(--modus-wc-color-error);
100
+ --chart-5: var(--modus-wc-color-info);
101
+ --radius: 8px;
102
+ --radius-card: 16px;
103
+ --radius-badge: 4px;
104
+ --sidebar: var(--modus-wc-color-base-page);
105
+ --sidebar-foreground: var(--modus-wc-color-base-content);
106
+ --sidebar-primary: var(--modus-wc-color-info);
107
+ --sidebar-primary-foreground: var(--modus-wc-color-base-page);
108
+ --sidebar-accent: var(--modus-wc-color-info);
109
+ --sidebar-accent-foreground: var(--modus-wc-color-base-page);
110
+ --sidebar-border: var(--modus-wc-color-base-200);
111
+ --sidebar-ring: var(--modus-wc-color-info);
112
+
113
+ /* Opacity variants for design system colors */
114
+ --foreground-80: color-mix(in srgb, var(--foreground) 80%, transparent);
115
+ --foreground-60: color-mix(in srgb, var(--foreground) 60%, transparent);
116
+ --foreground-40: color-mix(in srgb, var(--foreground) 40%, transparent);
117
+ --foreground-20: color-mix(in srgb, var(--foreground) 20%, transparent);
118
+
119
+ --muted-foreground-80: color-mix(
120
+ in srgb,
121
+ var(--muted-foreground) 80%,
122
+ transparent
123
+ );
124
+ --muted-foreground-60: color-mix(
125
+ in srgb,
126
+ var(--muted-foreground) 60%,
127
+ transparent
128
+ );
129
+ --muted-foreground-40: color-mix(
130
+ in srgb,
131
+ var(--muted-foreground) 40%,
132
+ transparent
133
+ );
134
+ --muted-foreground-20: color-mix(
135
+ in srgb,
136
+ var(--muted-foreground) 20%,
137
+ transparent
138
+ );
139
+
140
+ --primary-80: color-mix(in srgb, var(--primary) 80%, transparent);
141
+ --primary-60: color-mix(in srgb, var(--primary) 60%, transparent);
142
+ --primary-40: color-mix(in srgb, var(--primary) 40%, transparent);
143
+ --primary-20: color-mix(in srgb, var(--primary) 20%, transparent);
144
+
145
+ --secondary-80: color-mix(in srgb, var(--secondary) 80%, transparent);
146
+ --secondary-60: color-mix(in srgb, var(--secondary) 60%, transparent);
147
+ --secondary-40: color-mix(in srgb, var(--secondary) 40%, transparent);
148
+ --secondary-20: color-mix(in srgb, var(--secondary) 20%, transparent);
149
+
150
+ --destructive-80: color-mix(in srgb, var(--destructive) 80%, transparent);
151
+ --destructive-60: color-mix(in srgb, var(--destructive) 60%, transparent);
152
+ --destructive-40: color-mix(in srgb, var(--destructive) 40%, transparent);
153
+ --destructive-20: color-mix(in srgb, var(--destructive) 20%, transparent);
154
+
155
+ --warning-80: color-mix(in srgb, var(--warning) 80%, transparent);
156
+ --warning-60: color-mix(in srgb, var(--warning) 60%, transparent);
157
+ --warning-40: color-mix(in srgb, var(--warning) 40%, transparent);
158
+ --warning-20: color-mix(in srgb, var(--warning) 20%, transparent);
159
+
160
+ --success-80: color-mix(in srgb, var(--success) 80%, transparent);
161
+ --success-60: color-mix(in srgb, var(--success) 60%, transparent);
162
+ --success-40: color-mix(in srgb, var(--success) 40%, transparent);
163
+ --success-20: color-mix(in srgb, var(--success) 20%, transparent);
164
+
165
+ --border-80: color-mix(in srgb, var(--border) 80%, transparent);
166
+ --border-60: color-mix(in srgb, var(--border) 60%, transparent);
167
+ --border-40: color-mix(in srgb, var(--border) 40%, transparent);
168
+ --border-20: color-mix(in srgb, var(--border) 20%, transparent);
169
+ }
170
+
171
+ @layer base {
172
+ * {
173
+ @apply box-border;
174
+ }
175
+
176
+ body {
177
+ @apply bg-background text-foreground;
178
+ font-family: "Open Sans", sans-serif;
179
+ font-size: 14px;
180
+ }
181
+
182
+ html {
183
+ font-size: 14px;
184
+ font-family: "Open Sans", sans-serif;
185
+ }
186
+ }
187
+
188
+ /* Smart Border Utilities - Tailwind v4 Compatible */
189
+ .border-default {
190
+ border: 1px solid var(--border);
191
+ }
192
+
193
+ .border-thick {
194
+ border: 2px solid var(--border);
195
+ }
196
+
197
+ .border-dashed {
198
+ border: 1px dashed var(--border);
199
+ }
200
+
201
+ .border-thick-dashed {
202
+ border: 2px dashed var(--border);
203
+ }
204
+
205
+ .border-bottom-default {
206
+ border-bottom: 1px solid var(--border);
207
+ }
208
+
209
+ .border-top-default {
210
+ border-top: 1px solid var(--border);
211
+ }
212
+
213
+ .border-left-default {
214
+ border-left: 1px solid var(--border);
215
+ }
216
+
217
+ .border-right-default {
218
+ border-right: 1px solid var(--border);
219
+ }
220
+
221
+ /* Thick Border Utilities with Design System Colors */
222
+ .border-thick-success {
223
+ border: 2px solid var(--modus-wc-color-success);
224
+ }
225
+
226
+ .border-thick-warning {
227
+ border: 2px solid var(--modus-wc-color-warning);
228
+ }
229
+
230
+ .border-thick-destructive {
231
+ border: 2px solid var(--modus-wc-color-error);
232
+ }
233
+
234
+ .border-thick-primary {
235
+ border: 2px solid var(--modus-wc-color-info);
236
+ }
237
+
238
+ .border-thick-border {
239
+ border: 2px solid var(--border);
240
+ }
241
+
242
+ /* Context-Specific Border Utilities */
243
+ /* Success borders */
244
+ .border-success {
245
+ border: 1px solid var(--modus-wc-color-success);
246
+ }
247
+ .border-thick-success {
248
+ border: 2px solid var(--modus-wc-color-success);
249
+ }
250
+ .border-dashed-success {
251
+ border: 1px dashed var(--modus-wc-color-success);
252
+ }
253
+ .border-top-success {
254
+ border-top: 1px solid var(--modus-wc-color-success);
255
+ }
256
+ .border-bottom-success {
257
+ border-bottom: 1px solid var(--modus-wc-color-success);
258
+ }
259
+ .border-left-success {
260
+ border-left: 1px solid var(--modus-wc-color-success);
261
+ }
262
+ .border-right-success {
263
+ border-right: 1px solid var(--modus-wc-color-success);
264
+ }
265
+
266
+ /* Warning borders */
267
+ .border-warning {
268
+ border: 1px solid var(--modus-wc-color-warning);
269
+ }
270
+ .border-thick-warning {
271
+ border: 2px solid var(--modus-wc-color-warning);
272
+ }
273
+ .border-dashed-warning {
274
+ border: 1px dashed var(--modus-wc-color-warning);
275
+ }
276
+ .border-top-warning {
277
+ border-top: 1px solid var(--modus-wc-color-warning);
278
+ }
279
+ .border-bottom-warning {
280
+ border-bottom: 1px solid var(--modus-wc-color-warning);
281
+ }
282
+ .border-left-warning {
283
+ border-left: 1px solid var(--modus-wc-color-warning);
284
+ }
285
+ .border-right-warning {
286
+ border-right: 1px solid var(--modus-wc-color-warning);
287
+ }
288
+
289
+ /* Error/Destructive borders */
290
+ .border-destructive {
291
+ border: 1px solid var(--modus-wc-color-error);
292
+ }
293
+ .border-thick-destructive {
294
+ border: 2px solid var(--modus-wc-color-error);
295
+ }
296
+ .border-dashed-destructive {
297
+ border: 1px dashed var(--modus-wc-color-error);
298
+ }
299
+ .border-top-destructive {
300
+ border-top: 1px solid var(--modus-wc-color-error);
301
+ }
302
+ .border-bottom-destructive {
303
+ border-bottom: 1px solid var(--modus-wc-color-error);
304
+ }
305
+ .border-left-destructive {
306
+ border-left: 1px solid var(--modus-wc-color-error);
307
+ }
308
+ .border-right-destructive {
309
+ border-right: 1px solid var(--modus-wc-color-error);
310
+ }
311
+
312
+ /* Primary/Info borders */
313
+ .border-primary {
314
+ border: 1px solid var(--modus-wc-color-info);
315
+ }
316
+ .border-thick-primary {
317
+ border: 2px solid var(--modus-wc-color-info);
318
+ }
319
+ .border-dashed-primary {
320
+ border: 1px dashed var(--modus-wc-color-info);
321
+ }
322
+ .border-top-primary {
323
+ border-top: 1px solid var(--modus-wc-color-info);
324
+ }
325
+ .border-bottom-primary {
326
+ border-bottom: 1px solid var(--modus-wc-color-info);
327
+ }
328
+ .border-left-primary {
329
+ border-left: 1px solid var(--modus-wc-color-info);
330
+ }
331
+ .border-right-primary {
332
+ border-right: 1px solid var(--modus-wc-color-info);
333
+ }
334
+
335
+ /* Theme-specific icon visibility */
336
+ .github-icon-light {
337
+ display: block;
338
+ }
339
+
340
+ .github-icon-dark {
341
+ display: none;
342
+ }
343
+
344
+ .dark .github-icon-light {
345
+ display: none;
346
+ }
347
+
348
+ .dark .github-icon-dark {
349
+ display: block;
350
+ }
351
+
352
+ /*Opacity utilities for design system colors */
353
+ .text-foreground-80 {
354
+ color: var(--foreground-80);
355
+ }
356
+ .text-foreground-60 {
357
+ color: var(--foreground-60);
358
+ }
359
+ .text-foreground-40 {
360
+ color: var(--foreground-40);
361
+ }
362
+ .text-foreground-20 {
363
+ color: var(--foreground-20);
364
+ }
365
+
366
+ .text-muted-foreground-80 {
367
+ color: var(--muted-foreground-80);
368
+ }
369
+ .text-muted-foreground-60 {
370
+ color: var(--muted-foreground-60);
371
+ }
372
+ .text-muted-foreground-40 {
373
+ color: var(--muted-foreground-40);
374
+ }
375
+ .text-muted-foreground-20 {
376
+ color: var(--muted-foreground-20);
377
+ }
378
+
379
+ .text-primary-80 {
380
+ color: var(--primary-80);
381
+ }
382
+ .text-primary-60 {
383
+ color: var(--primary-60);
384
+ }
385
+ .text-primary-40 {
386
+ color: var(--primary-40);
387
+ }
388
+ .text-primary-20 {
389
+ color: var(--primary-20);
390
+ }
391
+
392
+ .text-secondary-80 {
393
+ color: var(--secondary-80);
394
+ }
395
+ .text-secondary-60 {
396
+ color: var(--secondary-60);
397
+ }
398
+ .text-secondary-40 {
399
+ color: var(--secondary-40);
400
+ }
401
+ .text-secondary-20 {
402
+ color: var(--secondary-20);
403
+ }
404
+
405
+ .text-destructive-80 {
406
+ color: var(--destructive-80);
407
+ }
408
+ .text-destructive-60 {
409
+ color: var(--destructive-60);
410
+ }
411
+ .text-destructive-40 {
412
+ color: var(--destructive-40);
413
+ }
414
+ .text-destructive-20 {
415
+ color: var(--destructive-20);
416
+ }
417
+
418
+ .text-warning-80 {
419
+ color: var(--warning-80);
420
+ }
421
+ .text-warning-60 {
422
+ color: var(--warning-60);
423
+ }
424
+ .text-warning-40 {
425
+ color: var(--warning-40);
426
+ }
427
+ .text-warning-20 {
428
+ color: var(--warning-20);
429
+ }
430
+
431
+ .text-success-80 {
432
+ color: var(--success-80);
433
+ }
434
+ .text-success-60 {
435
+ color: var(--success-60);
436
+ }
437
+ .text-success-40 {
438
+ color: var(--success-40);
439
+ }
440
+ .text-success-20 {
441
+ color: var(--success-20);
442
+ }
443
+
444
+ .bg-foreground-80 {
445
+ background-color: var(--foreground-80);
446
+ }
447
+ .bg-foreground-60 {
448
+ background-color: var(--foreground-60);
449
+ }
450
+ .bg-foreground-40 {
451
+ background-color: var(--foreground-40);
452
+ }
453
+ .bg-foreground-20 {
454
+ background-color: var(--foreground-20);
455
+ }
456
+
457
+ .bg-primary-80 {
458
+ background-color: var(--primary-80);
459
+ }
460
+ .bg-primary-60 {
461
+ background-color: var(--primary-60);
462
+ }
463
+ .bg-primary-40 {
464
+ background-color: var(--primary-40);
465
+ }
466
+ .bg-primary-20 {
467
+ background-color: var(--primary-20);
468
+ }
469
+
470
+ .bg-secondary-80 {
471
+ background-color: var(--secondary-80);
472
+ }
473
+ .bg-secondary-60 {
474
+ background-color: var(--secondary-60);
475
+ }
476
+ .bg-secondary-40 {
477
+ background-color: var(--secondary-40);
478
+ }
479
+ .bg-secondary-20 {
480
+ background-color: var(--secondary-20);
481
+ }
482
+
483
+ .bg-destructive-80 {
484
+ background-color: var(--destructive-80);
485
+ }
486
+ .bg-destructive-60 {
487
+ background-color: var(--destructive-60);
488
+ }
489
+ .bg-destructive-40 {
490
+ background-color: var(--destructive-40);
491
+ }
492
+ .bg-destructive-20 {
493
+ background-color: var(--destructive-20);
494
+ }
495
+
496
+ .bg-warning-80 {
497
+ background-color: var(--warning-80);
498
+ }
499
+ .bg-warning-60 {
500
+ background-color: var(--warning-60);
501
+ }
502
+ .bg-warning-40 {
503
+ background-color: var(--warning-40);
504
+ }
505
+ .bg-warning-20 {
506
+ background-color: var(--warning-20);
507
+ }
508
+
509
+ .bg-success-80 {
510
+ background-color: var(--success-80);
511
+ }
512
+ .bg-success-60 {
513
+ background-color: var(--success-60);
514
+ }
515
+ .bg-success-40 {
516
+ background-color: var(--success-40);
517
+ }
518
+ .bg-success-20 {
519
+ background-color: var(--success-20);
520
+ }
521
+
522
+ .border-foreground-80 {
523
+ border-color: var(--foreground-80);
524
+ }
525
+ .border-foreground-60 {
526
+ border-color: var(--foreground-60);
527
+ }
528
+ .border-foreground-40 {
529
+ border-color: var(--foreground-40);
530
+ }
531
+ .border-foreground-20 {
532
+ border-color: var(--foreground-20);
533
+ }
534
+
535
+ .border-primary-80 {
536
+ border-color: var(--primary-80);
537
+ }
538
+ .border-primary-60 {
539
+ border-color: var(--primary-60);
540
+ }
541
+ .border-primary-40 {
542
+ border-color: var(--primary-40);
543
+ }
544
+ .border-primary-20 {
545
+ border-color: var(--primary-20);
546
+ }
547
+
548
+ .border-destructive-80 {
549
+ border-color: var(--destructive-80);
550
+ }
551
+ .border-destructive-60 {
552
+ border-color: var(--destructive-60);
553
+ }
554
+ .border-destructive-40 {
555
+ border-color: var(--destructive-40);
556
+ }
557
+ .border-destructive-20 {
558
+ border-color: var(--destructive-20);
559
+ }
560
+
561
+ .border-warning-80 {
562
+ border-color: var(--warning-80);
563
+ }
564
+ .border-warning-60 {
565
+ border-color: var(--warning-60);
566
+ }
567
+ .border-warning-40 {
568
+ border-color: var(--warning-40);
569
+ }
570
+ .border-warning-20 {
571
+ border-color: var(--warning-20);
572
+ }
573
+
574
+ .border-success-80 {
575
+ border-color: var(--success-80);
576
+ }
577
+ .border-success-60 {
578
+ border-color: var(--success-60);
579
+ }
580
+ .border-success-40 {
581
+ border-color: var(--success-40);
582
+ }
583
+ .border-success-20 {
584
+ border-color: var(--success-20);
585
+ }
586
+
587
+ /* Side Navigation Demo Utilities */
588
+ .side-nav-layout {
589
+ height: 500px;
590
+ }
591
+
592
+ .side-nav-navbar {
593
+ z-index: 2;
594
+ box-shadow: none;
595
+ }
596
+
597
+ .side-nav-panel-content {
598
+ flex: 1;
599
+ }
600
+
601
+ .side-nav-clickable {
602
+ cursor: pointer;
603
+ }
604
+
605
+ .side-nav-nested-indent {
606
+ padding-left: 4rem !important;
607
+ }
608
+
609
+ /* Dev Panel Animations */
610
+ @keyframes fade-in {
611
+ from {
612
+ opacity: 0;
613
+ }
614
+ to {
615
+ opacity: 1;
616
+ }
617
+ }
618
+
619
+ @keyframes slide-in-right {
620
+ from {
621
+ transform: translateX(100%);
622
+ }
623
+ to {
624
+ transform: translateX(0);
625
+ }
626
+ }
627
+
628
+ .animate-fade-in {
629
+ animation: fade-in 0.2s ease-out;
630
+ }
631
+
632
+ .animate-slide-in-right {
633
+ animation: slide-in-right 0.3s ease-out;
634
+ }
635
+
@@ -0,0 +1,14 @@
1
+ // Set asset path BEFORE any component imports
2
+ import { setAssetPath } from "@trimble-oss/moduswebcomponents/components";
3
+ setAssetPath(window.location.origin + "/modus-wc/");
4
+
5
+ import { StrictMode } from "react";
6
+ import { createRoot } from "react-dom/client";
7
+ import "./index.css";
8
+ import App from "./App.tsx";
9
+
10
+ createRoot(document.getElementById("root")!).render(
11
+ <StrictMode>
12
+ <App />
13
+ </StrictMode>,
14
+ );