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