@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,148 @@
1
+ import { Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DemoPageComponent } from '../shared/demo-page.component';
4
+ import { DemoExampleComponent } from '../shared/demo-example.component';
5
+ import { ModusBadgeComponent } from '../../components/modus-badge.component';
6
+ import { ModusButtonComponent } from '../../components/modus-button.component';
7
+ import { ModusAvatarComponent } from '../../components/modus-avatar.component';
8
+
9
+ /**
10
+ * Demo page showcasing the Modus Badge component.
11
+ *
12
+ * Demonstrates badge features including:
13
+ * - Color variants (primary, secondary, tertiary, success, warning, danger, high-contrast)
14
+ * - Badge variants (filled, text, counter)
15
+ * - Different sizes (sm, md, lg)
16
+ * - Usage with other components (buttons, avatars)
17
+ */
18
+ @Component({
19
+ selector: 'app-badge-demo-page',
20
+ standalone: true,
21
+ imports: [
22
+ CommonModule,
23
+ DemoPageComponent,
24
+ DemoExampleComponent,
25
+ ModusBadgeComponent,
26
+ ModusButtonComponent,
27
+ ModusAvatarComponent,
28
+ ],
29
+ template: `
30
+ <demo-page
31
+ title="Modus Badge"
32
+ description="Badges are small status indicators that display counts, labels, or states. Use badges to highlight important information or indicate status."
33
+ >
34
+ <demo-example
35
+ title="Badge Colors"
36
+ description="Different color variants for various semantic meanings."
37
+ >
38
+ <div class="flex flex-wrap items-center gap-4">
39
+ <modus-badge color="primary">Primary</modus-badge>
40
+ <modus-badge color="secondary">Secondary</modus-badge>
41
+ <modus-badge color="tertiary">Tertiary</modus-badge>
42
+ <modus-badge color="success">Success</modus-badge>
43
+ <modus-badge color="warning">Warning</modus-badge>
44
+ <modus-badge color="danger">Danger</modus-badge>
45
+ <modus-badge color="high-contrast">High Contrast</modus-badge>
46
+ </div>
47
+ </demo-example>
48
+
49
+ <demo-example
50
+ title="Badge Variants"
51
+ description="Different visual styles for badges."
52
+ >
53
+ <div class="flex flex-col gap-4">
54
+ <div class="flex flex-wrap items-center gap-4">
55
+ <modus-badge variant="filled" color="primary">Filled</modus-badge>
56
+ <modus-badge variant="outlined" color="primary">Outlined</modus-badge>
57
+ <modus-badge variant="text" color="primary">Text</modus-badge>
58
+ <modus-badge variant="counter" color="primary">Counter</modus-badge>
59
+ </div>
60
+ </div>
61
+ </demo-example>
62
+
63
+ <demo-example
64
+ title="Badge Sizes"
65
+ description="Different sizes for various contexts and visual hierarchy."
66
+ >
67
+ <div class="flex flex-wrap items-center gap-4">
68
+ <modus-badge size="sm" color="primary">Small</modus-badge>
69
+ <modus-badge size="md" color="primary">Medium</modus-badge>
70
+ <modus-badge size="lg" color="primary">Large</modus-badge>
71
+ </div>
72
+ </demo-example>
73
+
74
+ <demo-example
75
+ title="Badges with Numbers"
76
+ description="Use badges to display counts and numeric values."
77
+ >
78
+ <div class="flex flex-wrap items-center gap-4">
79
+ <modus-badge color="primary">5</modus-badge>
80
+ <modus-badge color="success">12</modus-badge>
81
+ <modus-badge color="warning">99+</modus-badge>
82
+ <modus-badge color="danger">1,234</modus-badge>
83
+ </div>
84
+ </demo-example>
85
+
86
+ <demo-example
87
+ title="Badges on Buttons"
88
+ description="Combine badges with buttons to show counts or status."
89
+ >
90
+ <div class="flex flex-wrap items-center gap-4">
91
+ <modus-button color="primary">
92
+ Notifications
93
+ <modus-badge color="danger" size="sm" variant="counter">3</modus-badge>
94
+ </modus-button>
95
+ <modus-button color="secondary">
96
+ Messages
97
+ <modus-badge color="primary" size="sm" variant="counter">12</modus-badge>
98
+ </modus-button>
99
+ <modus-button color="tertiary">
100
+ Updates
101
+ <modus-badge color="success" size="sm" variant="counter">5</modus-badge>
102
+ </modus-button>
103
+ </div>
104
+ </demo-example>
105
+
106
+ <demo-example
107
+ title="Badges on Avatars"
108
+ description="Use badges to indicate status or notifications on avatars."
109
+ >
110
+ <div class="flex flex-wrap items-center gap-6">
111
+ <div class="relative">
112
+ <modus-avatar alt="User" initials="JD" size="md" shape="circle" />
113
+ <div class="absolute -top-1 -right-1">
114
+ <modus-badge color="success" size="sm" variant="counter">●</modus-badge>
115
+ </div>
116
+ </div>
117
+ <div class="relative">
118
+ <modus-avatar alt="User" initials="JS" size="md" shape="circle" />
119
+ <div class="absolute -top-1 -right-1">
120
+ <modus-badge color="danger" size="sm" variant="counter">3</modus-badge>
121
+ </div>
122
+ </div>
123
+ <div class="relative">
124
+ <modus-avatar alt="User" initials="BJ" size="md" shape="circle" />
125
+ <div class="absolute -top-1 -right-1">
126
+ <modus-badge color="warning" size="sm" variant="counter">!</modus-badge>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </demo-example>
131
+
132
+ <demo-example
133
+ title="Status Indicators"
134
+ description="Use badges as status indicators for different states."
135
+ >
136
+ <div class="flex flex-wrap items-center gap-4">
137
+ <modus-badge color="success" variant="filled">Active</modus-badge>
138
+ <modus-badge color="warning" variant="filled">Pending</modus-badge>
139
+ <modus-badge color="danger" variant="filled">Inactive</modus-badge>
140
+ <modus-badge color="primary" variant="filled">New</modus-badge>
141
+ <modus-badge color="secondary" variant="filled">Draft</modus-badge>
142
+ </div>
143
+ </demo-example>
144
+ </demo-page>
145
+ `,
146
+ })
147
+ export class BadgeDemoPageComponent {}
148
+
@@ -0,0 +1,96 @@
1
+ import { Component, signal } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DemoPageComponent } from '../shared/demo-page.component';
4
+ import { DemoExampleComponent } from '../shared/demo-example.component';
5
+ import { ModusBreadcrumbsComponent } from '../../components/modus-breadcrumbs.component';
6
+ import type { IBreadcrumb } from '@trimble-oss/moduswebcomponents';
7
+
8
+ /**
9
+ * Demo page showcasing the Modus Breadcrumbs component.
10
+ *
11
+ * Demonstrates breadcrumb features including:
12
+ * - Basic breadcrumb navigation
13
+ * - Different sizes (sm, md, lg)
14
+ * - Interactive navigation examples
15
+ * - Long path truncation examples
16
+ * - Accessibility features demonstration
17
+ */
18
+ @Component({
19
+ selector: 'app-breadcrumbs-demo-page',
20
+ standalone: true,
21
+ imports: [CommonModule, DemoPageComponent, DemoExampleComponent, ModusBreadcrumbsComponent],
22
+ template: `
23
+ <demo-page
24
+ title="Modus Breadcrumbs"
25
+ description="Breadcrumbs show the hierarchical path to the current page. Use breadcrumbs to help users understand their location and navigate back through the application structure."
26
+ >
27
+ <demo-example
28
+ title="Basic Breadcrumbs"
29
+ description="Simple breadcrumb navigation showing the current path."
30
+ >
31
+ <modus-breadcrumbs [items]="basicItems()" />
32
+ </demo-example>
33
+
34
+ <demo-example
35
+ title="Breadcrumb Sizes"
36
+ description="Different sizes for various contexts and visual hierarchy."
37
+ >
38
+ <div class="flex flex-col gap-4">
39
+ <div>
40
+ <h4 class="text-base font-semibold mb-2 text-foreground">Small (sm)</h4>
41
+ <modus-breadcrumbs [items]="sizeItems()" size="sm" />
42
+ </div>
43
+ <div>
44
+ <h4 class="text-base font-semibold mb-2 text-foreground">Medium (md)</h4>
45
+ <modus-breadcrumbs [items]="sizeItems()" size="md" />
46
+ </div>
47
+ <div>
48
+ <h4 class="text-base font-semibold mb-2 text-foreground">Large (lg)</h4>
49
+ <modus-breadcrumbs [items]="sizeItems()" size="lg" />
50
+ </div>
51
+ </div>
52
+ </demo-example>
53
+
54
+ <demo-example
55
+ title="Deep Navigation Path"
56
+ description="Breadcrumbs showing a deep navigation hierarchy."
57
+ >
58
+ <modus-breadcrumbs [items]="deepPathItems()" />
59
+ </demo-example>
60
+
61
+ <demo-example
62
+ title="Breadcrumbs with Long Labels"
63
+ description="Breadcrumbs handle long labels gracefully with truncation."
64
+ >
65
+ <modus-breadcrumbs [items]="longLabelItems()" />
66
+ </demo-example>
67
+ </demo-page>
68
+ `,
69
+ })
70
+ export class BreadcrumbsDemoPageComponent {
71
+ readonly basicItems = signal<IBreadcrumb[]>([
72
+ { label: 'Home', url: '/' },
73
+ { label: 'Components', url: '/components' },
74
+ { label: 'Breadcrumbs' },
75
+ ]);
76
+
77
+ readonly sizeItems = signal<IBreadcrumb[]>([
78
+ { label: 'Home', url: '/' },
79
+ { label: 'Library', url: '/library' },
80
+ { label: 'Data' },
81
+ ]);
82
+
83
+ readonly deepPathItems = signal<IBreadcrumb[]>([
84
+ { label: 'Home', url: '/' },
85
+ { label: 'Projects', url: '/projects' },
86
+ { label: 'Project Alpha', url: '/projects/alpha' },
87
+ { label: 'Settings', url: '/projects/alpha/settings' },
88
+ { label: 'Team' },
89
+ ]);
90
+
91
+ readonly longLabelItems = signal<IBreadcrumb[]>([
92
+ { label: 'Home', url: '/' },
93
+ { label: 'This is a very long breadcrumb label', url: '/long' },
94
+ { label: 'Another extremely long breadcrumb item name here' },
95
+ ]);
96
+ }
@@ -0,0 +1,256 @@
1
+ import { Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DemoPageComponent } from '../shared/demo-page.component';
4
+ import { DemoExampleComponent } from '../shared/demo-example.component';
5
+ import { ModusButtonComponent } from '../../components/modus-button.component';
6
+
7
+ /**
8
+ * Demo page showcasing the Modus Button component.
9
+ *
10
+ * Demonstrates all button features including:
11
+ * - Variants (primary, secondary, tertiary, warning, danger)
12
+ * - Styles (filled, outlined, borderless)
13
+ * - Sizes (xs, sm, md, lg)
14
+ * - Icons (left, right, only positions)
15
+ * - Icon sizes and colored icons
16
+ */
17
+ @Component({
18
+ selector: 'app-button-demo-page',
19
+ standalone: true,
20
+ imports: [CommonModule, DemoPageComponent, DemoExampleComponent, ModusButtonComponent],
21
+ template: `
22
+ <demo-page
23
+ title="Modus Button"
24
+ description="Buttons trigger actions and provide clear call-to-action elements. Use primary buttons for the main action, secondary for supporting actions, and tertiary for subtle actions."
25
+ >
26
+ <demo-example
27
+ title="Button Variants"
28
+ description="Different button styles for various use cases and visual hierarchy."
29
+ >
30
+ <div class="flex flex-wrap gap-4">
31
+ <modus-button color="primary">Primary</modus-button>
32
+ <modus-button color="secondary">Secondary</modus-button>
33
+ <modus-button color="tertiary">Tertiary</modus-button>
34
+ <modus-button color="warning">Warning</modus-button>
35
+ <modus-button color="danger">Danger</modus-button>
36
+ </div>
37
+ </demo-example>
38
+
39
+ <demo-example
40
+ title="Button Styles"
41
+ description="Different visual styles to match your design needs."
42
+ >
43
+ <div class="flex flex-wrap gap-4">
44
+ <modus-button variant="filled">Filled</modus-button>
45
+ <modus-button variant="outlined">Outlined</modus-button>
46
+ <modus-button variant="borderless">Borderless</modus-button>
47
+ </div>
48
+ </demo-example>
49
+
50
+ <demo-example
51
+ title="Button Sizes"
52
+ description="Various sizes for different contexts and touch targets."
53
+ >
54
+ <div class="flex flex-wrap items-center gap-4">
55
+ <modus-button size="xs">Extra Small</modus-button>
56
+ <modus-button size="sm">Small</modus-button>
57
+ <modus-button size="md">Medium</modus-button>
58
+ <modus-button size="lg">Large</modus-button>
59
+ </div>
60
+ </demo-example>
61
+
62
+ <demo-example
63
+ title="Buttons with Icons"
64
+ description="Enhance buttons with icons for better visual communication."
65
+ >
66
+ <div class="flex flex-wrap gap-4">
67
+ <modus-button icon="save_disk" iconPosition="left">Save File</modus-button>
68
+ <modus-button icon="download" iconPosition="right">Download</modus-button>
69
+ <modus-button icon="settings" iconPosition="only" ariaLabel="Settings" />
70
+ </div>
71
+ </demo-example>
72
+
73
+ <demo-example
74
+ title="Button Icon Sizes"
75
+ description="Icon sizes automatically adapt to button size, or can be explicitly controlled."
76
+ >
77
+ <div class="space-y-6">
78
+ <!-- Automatic sizing based on button size -->
79
+ <div>
80
+ <h4 class="text-base font-semibold mb-3">Automatic Icon Sizing (by Button Size)</h4>
81
+ <div class="flex flex-wrap items-center gap-4">
82
+ <modus-button size="xs" icon="star" iconPosition="left">Extra Small</modus-button>
83
+ <modus-button size="sm" icon="star" iconPosition="left">Small</modus-button>
84
+ <modus-button size="md" icon="star" iconPosition="left">Medium</modus-button>
85
+ <modus-button size="lg" icon="star" iconPosition="left">Large</modus-button>
86
+ </div>
87
+ </div>
88
+
89
+ <!-- Icon-only buttons with automatic sizing -->
90
+ <div>
91
+ <h4 class="text-base font-semibold mb-3">Icon-Only Buttons (Automatic Sizing)</h4>
92
+ <div class="flex flex-wrap items-center gap-4">
93
+ <modus-button
94
+ size="xs"
95
+ icon="settings"
96
+ iconPosition="only"
97
+ ariaLabel="Settings (XS)"
98
+ />
99
+ <modus-button
100
+ size="sm"
101
+ icon="settings"
102
+ iconPosition="only"
103
+ ariaLabel="Settings (SM)"
104
+ />
105
+ <modus-button
106
+ size="md"
107
+ icon="settings"
108
+ iconPosition="only"
109
+ ariaLabel="Settings (MD)"
110
+ />
111
+ <modus-button
112
+ size="lg"
113
+ icon="settings"
114
+ iconPosition="only"
115
+ ariaLabel="Settings (LG)"
116
+ />
117
+ </div>
118
+ </div>
119
+
120
+ <!-- Custom icon sizes -->
121
+ <div>
122
+ <h4 class="text-base font-semibold mb-3">Custom Icon Sizes (Explicit Control)</h4>
123
+ <div class="flex flex-wrap items-center gap-4">
124
+ <modus-button icon="star" iconSize="text-xs" iconPosition="left"
125
+ >Tiny Icon</modus-button
126
+ >
127
+ <modus-button icon="star" iconSize="text-sm" iconPosition="left"
128
+ >Small Icon</modus-button
129
+ >
130
+ <modus-button icon="star" iconSize="text-lg" iconPosition="left"
131
+ >Large Icon</modus-button
132
+ >
133
+ <modus-button icon="star" iconSize="text-2xl" iconPosition="left"
134
+ >XL Icon</modus-button
135
+ >
136
+ </div>
137
+ </div>
138
+
139
+ <!-- Mixed sizes for comparison -->
140
+ <div>
141
+ <h4 class="text-base font-semibold mb-3">Size Comparison</h4>
142
+ <div class="flex flex-wrap items-center gap-4">
143
+ <modus-button size="lg" icon="download" iconSize="text-sm" iconPosition="left"
144
+ >Large Button, Small Icon</modus-button
145
+ >
146
+ <modus-button size="sm" icon="download" iconSize="text-xl" iconPosition="left"
147
+ >Small Button, Large Icon</modus-button
148
+ >
149
+ <modus-button
150
+ size="md"
151
+ icon="check_circle"
152
+ iconSize="text-3xl"
153
+ iconPosition="only"
154
+ ariaLabel="Success (Huge Icon)"
155
+ />
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </demo-example>
160
+
161
+ <demo-example
162
+ title="Icon Sizes"
163
+ description="Different icon sizes using Modus font scale for various contexts."
164
+ >
165
+ <div class="flex flex-wrap items-center gap-6">
166
+ <!-- Micro icons -->
167
+ <div class="flex flex-col items-center gap-2">
168
+ <i class="modus-icons text-2xs">star</i>
169
+ <span class="text-xs text-muted-foreground">2xs (8px)</span>
170
+ </div>
171
+
172
+ <!-- Small icons -->
173
+ <div class="flex flex-col items-center gap-2">
174
+ <i class="modus-icons text-xs">star</i>
175
+ <span class="text-xs text-muted-foreground">xs (10px)</span>
176
+ </div>
177
+
178
+ <!-- Secondary icons -->
179
+ <div class="flex flex-col items-center gap-2">
180
+ <i class="modus-icons text-sm">star</i>
181
+ <span class="text-xs text-muted-foreground">sm (12px)</span>
182
+ </div>
183
+
184
+ <!-- Base icons (Modus default) -->
185
+ <div class="flex flex-col items-center gap-2">
186
+ <i class="modus-icons text-base">star</i>
187
+ <span class="text-xs text-muted-foreground">base (14px)</span>
188
+ </div>
189
+
190
+ <!-- Standard icons -->
191
+ <div class="flex flex-col items-center gap-2">
192
+ <i class="modus-icons text-lg">star</i>
193
+ <span class="text-xs text-muted-foreground">lg (16px)</span>
194
+ </div>
195
+
196
+ <!-- Large icons -->
197
+ <div class="flex flex-col items-center gap-2">
198
+ <i class="modus-icons text-xl">star</i>
199
+ <span class="text-xs text-muted-foreground">xl (18px)</span>
200
+ </div>
201
+
202
+ <!-- Prominent icons -->
203
+ <div class="flex flex-col items-center gap-2">
204
+ <i class="modus-icons text-2xl">star</i>
205
+ <span class="text-xs text-muted-foreground">2xl (20px)</span>
206
+ </div>
207
+
208
+ <!-- Display icons -->
209
+ <div class="flex flex-col items-center gap-2">
210
+ <i class="modus-icons text-3xl">star</i>
211
+ <span class="text-xs text-muted-foreground">3xl (24px)</span>
212
+ </div>
213
+
214
+ <!-- Hero icons -->
215
+ <div class="flex flex-col items-center gap-2">
216
+ <i class="modus-icons text-4xl">star</i>
217
+ <span class="text-xs text-muted-foreground">4xl (30px)</span>
218
+ </div>
219
+ </div>
220
+ </demo-example>
221
+
222
+ <demo-example
223
+ title="Colored Icons"
224
+ description="Icons with different semantic colors from the 9-color design system."
225
+ >
226
+ <div class="flex flex-wrap items-center gap-6">
227
+ <div class="flex flex-col items-center gap-2">
228
+ <i class="modus-icons text-2xl text-primary">info</i>
229
+ <span class="text-xs text-muted-foreground">Primary</span>
230
+ </div>
231
+
232
+ <div class="flex flex-col items-center gap-2">
233
+ <i class="modus-icons text-2xl text-success">check_circle</i>
234
+ <span class="text-xs text-muted-foreground">Success</span>
235
+ </div>
236
+
237
+ <div class="flex flex-col items-center gap-2">
238
+ <i class="modus-icons text-2xl text-warning">warning</i>
239
+ <span class="text-xs text-muted-foreground">Warning</span>
240
+ </div>
241
+
242
+ <div class="flex flex-col items-center gap-2">
243
+ <i class="modus-icons text-2xl text-destructive">alert</i>
244
+ <span class="text-xs text-muted-foreground">Error</span>
245
+ </div>
246
+
247
+ <div class="flex flex-col items-center gap-2">
248
+ <i class="modus-icons text-2xl text-muted-foreground">help</i>
249
+ <span class="text-xs text-muted-foreground">Muted</span>
250
+ </div>
251
+ </div>
252
+ </demo-example>
253
+ </demo-page>
254
+ `,
255
+ })
256
+ export class ButtonDemoPageComponent {}