@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,265 @@
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 { ModusHandleComponent } from '../../components/modus-handle.component';
6
+
7
+ /**
8
+ * Demo page showcasing the Modus Handle component.
9
+ */
10
+ @Component({
11
+ selector: 'app-handle-demo-page',
12
+ standalone: true,
13
+ imports: [CommonModule, DemoPageComponent, DemoExampleComponent, ModusHandleComponent],
14
+ template: `
15
+ <demo-page
16
+ title="Modus Handle"
17
+ description="Handle is a draggable component for resizing adjacent elements. It supports both bar and button styles, horizontal and vertical orientations, and keyboard navigation."
18
+ >
19
+ <demo-example title="Horizontal Bar Handle" description="Drag the handle to resize panels.">
20
+ <div class="flex h-64 border-default rounded-lg overflow-hidden">
21
+ <div id="h-left-panel-1" class="bg-card p-4 min-w-24 w-[200px]">
22
+ <div class="text-sm font-medium text-foreground">Left Panel</div>
23
+ <div class="text-xs text-muted-foreground mt-2">Drag the handle to resize</div>
24
+ </div>
25
+ <modus-handle
26
+ orientation="horizontal"
27
+ leftTarget="#h-left-panel-1"
28
+ rightTarget="#h-right-panel-1"
29
+ />
30
+ <div id="h-right-panel-1" class="bg-muted p-4 flex-1 min-w-24">
31
+ <div class="text-sm font-medium text-foreground">Right Panel</div>
32
+ <div class="text-xs text-muted-foreground mt-2">This panel resizes automatically</div>
33
+ </div>
34
+ </div>
35
+ </demo-example>
36
+
37
+ <demo-example title="Vertical Bar Handle" description="Resize panels vertically by dragging up or down.">
38
+ <div class="flex flex-col h-80 border-default rounded-lg overflow-hidden">
39
+ <div id="v-top-panel-1" class="bg-card p-4 min-h-16 h-[120px]">
40
+ <div class="text-sm font-medium text-foreground">Top Panel</div>
41
+ <div class="text-xs text-muted-foreground mt-2">
42
+ Drag the handle below to resize
43
+ </div>
44
+ </div>
45
+ <modus-handle
46
+ orientation="vertical"
47
+ leftTarget="#v-top-panel-1"
48
+ rightTarget="#v-bottom-panel-1"
49
+ />
50
+ <div id="v-bottom-panel-1" class="bg-muted p-4 flex-1 min-h-16">
51
+ <div class="text-sm font-medium text-foreground">Bottom Panel</div>
52
+ <div class="text-xs text-muted-foreground mt-2">This panel resizes automatically</div>
53
+ </div>
54
+ </div>
55
+ </demo-example>
56
+
57
+ <demo-example title="Button Type Handle" description="Button-style handle with a drag icon.">
58
+ <div class="flex h-64 border-default rounded-lg overflow-hidden">
59
+ <div id="btn-left-panel" class="bg-card p-4 min-w-24 w-[200px]">
60
+ <div class="text-sm font-medium text-foreground">Panel A</div>
61
+ <div class="text-xs text-muted-foreground mt-2">Button handle style</div>
62
+ </div>
63
+ <modus-handle
64
+ type="button"
65
+ orientation="horizontal"
66
+ buttonColor="primary"
67
+ buttonVariant="outlined"
68
+ leftTarget="#btn-left-panel"
69
+ rightTarget="#btn-right-panel"
70
+ />
71
+ <div id="btn-right-panel" class="bg-muted p-4 flex-1 min-w-24">
72
+ <div class="text-sm font-medium text-foreground">Panel B</div>
73
+ <div class="text-xs text-muted-foreground mt-2">Click and drag the button</div>
74
+ </div>
75
+ </div>
76
+ </demo-example>
77
+
78
+ <demo-example title="Button Handle Variants" description="Different button colors and styles.">
79
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
80
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
81
+ <div id="btn-var-left-1" class="bg-card p-4 min-w-20 w-[120px]">
82
+ <div class="text-xs font-medium text-foreground">Primary Filled</div>
83
+ </div>
84
+ <modus-handle
85
+ type="button"
86
+ orientation="horizontal"
87
+ buttonColor="primary"
88
+ buttonVariant="filled"
89
+ leftTarget="#btn-var-left-1"
90
+ rightTarget="#btn-var-right-1"
91
+ />
92
+ <div id="btn-var-right-1" class="bg-muted p-4 flex-1 min-w-20">
93
+ <div class="text-xs text-muted-foreground">Resize me</div>
94
+ </div>
95
+ </div>
96
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
97
+ <div id="btn-var-left-2" class="bg-card p-4 min-w-20 w-[120px]">
98
+ <div class="text-xs font-medium text-foreground">Secondary Outlined</div>
99
+ </div>
100
+ <modus-handle
101
+ type="button"
102
+ orientation="horizontal"
103
+ buttonColor="secondary"
104
+ buttonVariant="outlined"
105
+ leftTarget="#btn-var-left-2"
106
+ rightTarget="#btn-var-right-2"
107
+ />
108
+ <div id="btn-var-right-2" class="bg-muted p-4 flex-1 min-w-20">
109
+ <div class="text-xs text-muted-foreground">Resize me</div>
110
+ </div>
111
+ </div>
112
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
113
+ <div id="btn-var-left-3" class="bg-card p-4 min-w-20 w-[120px]">
114
+ <div class="text-xs font-medium text-foreground">Tertiary Borderless</div>
115
+ </div>
116
+ <modus-handle
117
+ type="button"
118
+ orientation="horizontal"
119
+ buttonColor="tertiary"
120
+ buttonVariant="borderless"
121
+ leftTarget="#btn-var-left-3"
122
+ rightTarget="#btn-var-right-3"
123
+ />
124
+ <div id="btn-var-right-3" class="bg-muted p-4 flex-1 min-w-20">
125
+ <div class="text-xs text-muted-foreground">Resize me</div>
126
+ </div>
127
+ </div>
128
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
129
+ <div id="btn-var-left-4" class="bg-card p-4 min-w-20 w-[120px]">
130
+ <div class="text-xs font-medium text-foreground">Warning Filled</div>
131
+ </div>
132
+ <modus-handle
133
+ type="button"
134
+ orientation="horizontal"
135
+ buttonColor="warning"
136
+ buttonVariant="filled"
137
+ leftTarget="#btn-var-left-4"
138
+ rightTarget="#btn-var-right-4"
139
+ />
140
+ <div id="btn-var-right-4" class="bg-muted p-4 flex-1 min-w-20">
141
+ <div class="text-xs text-muted-foreground">Resize me</div>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </demo-example>
146
+
147
+ <demo-example title="Handle Sizes" description="Different bar sizes for the handle component.">
148
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
149
+ <div class="flex h-40 border-default rounded-lg overflow-hidden">
150
+ <div id="size-left-1" class="bg-card p-4 min-w-20 w-[100px]">
151
+ <div class="text-xs font-medium text-foreground">Default</div>
152
+ </div>
153
+ <modus-handle
154
+ size="default"
155
+ orientation="horizontal"
156
+ leftTarget="#size-left-1"
157
+ rightTarget="#size-right-1"
158
+ />
159
+ <div id="size-right-1" class="bg-muted p-4 flex-1 min-w-20"></div>
160
+ </div>
161
+ <div class="flex h-40 border-default rounded-lg overflow-hidden">
162
+ <div id="size-left-2" class="bg-card p-4 min-w-20 w-[100px]">
163
+ <div class="text-xs font-medium text-foreground">Large</div>
164
+ </div>
165
+ <modus-handle
166
+ size="lg"
167
+ orientation="horizontal"
168
+ leftTarget="#size-left-2"
169
+ rightTarget="#size-right-2"
170
+ />
171
+ <div id="size-right-2" class="bg-muted p-4 flex-1 min-w-20"></div>
172
+ </div>
173
+ <div class="flex h-40 border-default rounded-lg overflow-hidden">
174
+ <div id="size-left-3" class="bg-card p-4 min-w-20 w-[100px]">
175
+ <div class="text-xs font-medium text-foreground">Extra Large</div>
176
+ </div>
177
+ <modus-handle
178
+ size="xl"
179
+ orientation="horizontal"
180
+ leftTarget="#size-left-3"
181
+ rightTarget="#size-right-3"
182
+ />
183
+ <div id="size-right-3" class="bg-muted p-4 flex-1 min-w-20"></div>
184
+ </div>
185
+ <div class="flex h-40 border-default rounded-lg overflow-hidden">
186
+ <div id="size-left-4" class="bg-card p-4 min-w-20 w-[100px]">
187
+ <div class="text-xs font-medium text-foreground">2X Large</div>
188
+ </div>
189
+ <modus-handle
190
+ size="2xl"
191
+ orientation="horizontal"
192
+ leftTarget="#size-left-4"
193
+ rightTarget="#size-right-4"
194
+ />
195
+ <div id="size-right-4" class="bg-muted p-4 flex-1 min-w-20"></div>
196
+ </div>
197
+ </div>
198
+ </demo-example>
199
+
200
+ <demo-example title="Custom Default Split" description="Set the initial split percentage for panels.">
201
+ <div class="flex flex-col gap-4">
202
+ <div class="text-sm text-muted-foreground">30/70 Split</div>
203
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
204
+ <div id="split-left-1" class="bg-card p-4 min-w-20">
205
+ <div class="text-xs font-medium text-foreground">30%</div>
206
+ </div>
207
+ <modus-handle
208
+ orientation="horizontal"
209
+ [defaultSplit]="30"
210
+ leftTarget="#split-left-1"
211
+ rightTarget="#split-right-1"
212
+ />
213
+ <div id="split-right-1" class="bg-muted p-4 flex-1 min-w-20">
214
+ <div class="text-xs font-medium text-foreground">70%</div>
215
+ </div>
216
+ </div>
217
+ <div class="text-sm text-muted-foreground">70/30 Split</div>
218
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
219
+ <div id="split-left-2" class="bg-card p-4 min-w-20">
220
+ <div class="text-xs font-medium text-foreground">70%</div>
221
+ </div>
222
+ <modus-handle
223
+ orientation="horizontal"
224
+ [defaultSplit]="70"
225
+ leftTarget="#split-left-2"
226
+ rightTarget="#split-right-2"
227
+ />
228
+ <div id="split-right-2" class="bg-muted p-4 flex-1 min-w-20">
229
+ <div class="text-xs font-medium text-foreground">30%</div>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ </demo-example>
234
+
235
+ <demo-example title="Keyboard Navigation" description="Handle supports keyboard navigation.">
236
+ <div class="flex flex-col gap-4">
237
+ <div class="p-4 bg-muted rounded-lg">
238
+ <div class="text-sm font-medium text-foreground mb-2">Keyboard Controls:</div>
239
+ <div class="text-xs text-muted-foreground space-y-1">
240
+ <div>Arrow Keys: Move handle 5px per press</div>
241
+ <div>Shift + Arrow Keys: Move handle 15px per press</div>
242
+ <div>Tab: Focus the handle element</div>
243
+ </div>
244
+ </div>
245
+ <div class="flex h-48 border-default rounded-lg overflow-hidden">
246
+ <div id="kb-left" class="bg-card p-4 min-w-24 w-[200px]">
247
+ <div class="text-sm font-medium text-foreground">Focus Here</div>
248
+ <div class="text-xs text-muted-foreground mt-2">Tab to handle, use arrow keys</div>
249
+ </div>
250
+ <modus-handle
251
+ orientation="horizontal"
252
+ leftTarget="#kb-left"
253
+ rightTarget="#kb-right"
254
+ ariaLabel="Resize panels using arrow keys"
255
+ />
256
+ <div id="kb-right" class="bg-muted p-4 flex-1 min-w-24">
257
+ <div class="text-sm font-medium text-foreground">Right Panel</div>
258
+ </div>
259
+ </div>
260
+ </div>
261
+ </demo-example>
262
+ </demo-page>
263
+ `,
264
+ })
265
+ export class HandleDemoPageComponent {}
@@ -0,0 +1,65 @@
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 { ModusIconComponent } from '../../components/modus-icon.component';
6
+
7
+ /**
8
+ * Demo page showcasing the Modus Icon component.
9
+ *
10
+ * Demonstrates icon features including:
11
+ * - Icon sizes
12
+ * - Status icons
13
+ */
14
+ @Component({
15
+ selector: 'app-icon-demo-page',
16
+ standalone: true,
17
+ imports: [CommonModule, DemoPageComponent, DemoExampleComponent, ModusIconComponent],
18
+ template: `
19
+ <demo-page
20
+ title="Modus Icon"
21
+ description="Icons provide visual communication and enhance user understanding. Use icons consistently to reinforce meaning and improve usability."
22
+ >
23
+ <demo-example
24
+ title="Icon Sizes"
25
+ description="Different icon sizes using the Modus font scale."
26
+ >
27
+ <div class="flex flex-wrap items-center gap-6">
28
+ <div class="flex flex-col items-center gap-2">
29
+ <modus-icon name="star" size="sm" />
30
+ <span class="text-xs text-muted-foreground">Small (sm)</span>
31
+ </div>
32
+ <div class="flex flex-col items-center gap-2">
33
+ <modus-icon name="star" size="md" />
34
+ <span class="text-xs text-muted-foreground">Medium (md)</span>
35
+ </div>
36
+ <div class="flex flex-col items-center gap-2">
37
+ <modus-icon name="star" size="lg" />
38
+ <span class="text-xs text-muted-foreground">Large (lg)</span>
39
+ </div>
40
+ </div>
41
+ </demo-example>
42
+
43
+ <demo-example
44
+ title="Status Icons"
45
+ description="Icons commonly used to indicate status or state."
46
+ >
47
+ <div class="flex flex-wrap items-center gap-6">
48
+ <div class="flex flex-col items-center gap-2">
49
+ <modus-icon name="check_circle" variant="solid" size="lg" className="text-success" />
50
+ <span class="text-xs text-muted-foreground">Success</span>
51
+ </div>
52
+ <div class="flex flex-col items-center gap-2">
53
+ <modus-icon name="info" variant="solid" size="lg" className="text-primary" />
54
+ <span class="text-xs text-muted-foreground">Info</span>
55
+ </div>
56
+ <div class="flex flex-col items-center gap-2">
57
+ <modus-icon name="warning" variant="solid" size="lg" className="text-warning" />
58
+ <span class="text-xs text-muted-foreground">Warning</span>
59
+ </div>
60
+ </div>
61
+ </demo-example>
62
+ </demo-page>
63
+ `,
64
+ })
65
+ export class IconDemoPageComponent {}
@@ -0,0 +1,189 @@
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 { ModusInputFeedbackComponent } from '../../components/modus-input-feedback.component';
6
+ import { ModusTextInputComponent } from '../../components/modus-text-input.component';
7
+ import { ModusTextareaComponent } from '../../components/modus-textarea.component';
8
+
9
+ /**
10
+ * Demo page showcasing the Modus Input Feedback component.
11
+ *
12
+ * Demonstrates input feedback features including:
13
+ * - Feedback levels (success, error, warning, info)
14
+ * - Feedback with different form inputs
15
+ * - Feedback messages
16
+ * - Feedback sizes
17
+ * - Custom feedback icons
18
+ */
19
+ @Component({
20
+ selector: 'app-input-feedback-demo-page',
21
+ standalone: true,
22
+ imports: [
23
+ CommonModule,
24
+ DemoPageComponent,
25
+ DemoExampleComponent,
26
+ ModusInputFeedbackComponent,
27
+ ModusTextInputComponent,
28
+ ModusTextareaComponent,
29
+ ],
30
+ template: `
31
+ <demo-page
32
+ title="Modus Input Feedback"
33
+ description="Input feedback provides validation messages and guidance to users for form inputs. Use feedback to communicate validation state and helpful information."
34
+ >
35
+ <demo-example
36
+ title="Feedback Levels"
37
+ description="Different feedback levels to indicate validation state."
38
+ >
39
+ <div class="flex flex-col gap-6">
40
+ <div class="flex flex-col gap-2">
41
+ <modus-text-input
42
+ label="Email"
43
+ type="email"
44
+ placeholder="user@example.com"
45
+ value="user@example.com"
46
+ />
47
+ <modus-input-feedback level="success" message="Email address is valid." />
48
+ </div>
49
+
50
+ <div class="flex flex-col gap-2">
51
+ <modus-text-input
52
+ label="Password"
53
+ type="password"
54
+ placeholder="Enter password"
55
+ value=""
56
+ />
57
+ <modus-input-feedback level="error" message="Password is required." />
58
+ </div>
59
+
60
+ <div class="flex flex-col gap-2">
61
+ <modus-text-input
62
+ label="Username"
63
+ placeholder="Enter username"
64
+ value="test123"
65
+ />
66
+ <modus-input-feedback level="warning" message="Username should be at least 8 characters." />
67
+ </div>
68
+
69
+ <div class="flex flex-col gap-2">
70
+ <modus-text-input
71
+ label="Website"
72
+ placeholder="https://example.com"
73
+ value=""
74
+ />
75
+ <modus-input-feedback
76
+ level="info"
77
+ message="Enter the full URL including http:// or https://"
78
+ />
79
+ </div>
80
+ </div>
81
+ </demo-example>
82
+
83
+ <demo-example
84
+ title="Feedback with Textarea"
85
+ description="Input feedback can be used with textarea inputs."
86
+ >
87
+ <div class="flex flex-col gap-2">
88
+ <modus-textarea
89
+ label="Comments"
90
+ placeholder="Enter your comments..."
91
+ [rows]="4"
92
+ value="This is a comment."
93
+ />
94
+ <modus-input-feedback level="success" message="Comment saved successfully." />
95
+ </div>
96
+ </demo-example>
97
+
98
+ <demo-example
99
+ title="Feedback Sizes"
100
+ description="Input feedback in different sizes."
101
+ >
102
+ <div class="flex flex-col gap-6">
103
+ <div class="flex flex-col gap-2">
104
+ <modus-text-input label="Small Feedback" placeholder="Enter text" />
105
+ <modus-input-feedback level="info" message="Small feedback message." size="sm" />
106
+ </div>
107
+
108
+ <div class="flex flex-col gap-2">
109
+ <modus-text-input label="Medium Feedback (Default)" placeholder="Enter text" />
110
+ <modus-input-feedback level="info" message="Medium feedback message (default)." size="md" />
111
+ </div>
112
+
113
+ <div class="flex flex-col gap-2">
114
+ <modus-text-input label="Large Feedback" placeholder="Enter text" />
115
+ <modus-input-feedback level="info" message="Large feedback message." size="lg" />
116
+ </div>
117
+ </div>
118
+ </demo-example>
119
+
120
+ <demo-example
121
+ title="Custom Feedback Icons"
122
+ description="Feedback with custom icons."
123
+ >
124
+ <div class="flex flex-col gap-6">
125
+ <div class="flex flex-col gap-2">
126
+ <modus-text-input label="Custom Success Icon" placeholder="Enter text" />
127
+ <modus-input-feedback
128
+ level="success"
129
+ message="Custom success message."
130
+ icon="check_circle"
131
+ />
132
+ </div>
133
+
134
+ <div class="flex flex-col gap-2">
135
+ <modus-text-input label="Custom Error Icon" placeholder="Enter text" />
136
+ <modus-input-feedback level="error" message="Custom error message." icon="alert" />
137
+ </div>
138
+ </div>
139
+ </demo-example>
140
+
141
+ <demo-example
142
+ title="Real-World Examples"
143
+ description="Common validation scenarios in forms."
144
+ >
145
+ <div class="flex flex-col gap-6">
146
+ <div class="flex flex-col gap-2">
147
+ <modus-text-input
148
+ label="Email Address"
149
+ type="email"
150
+ placeholder="user@example.com"
151
+ [required]="true"
152
+ />
153
+ <modus-input-feedback
154
+ level="info"
155
+ message="We'll never share your email with anyone else."
156
+ />
157
+ </div>
158
+
159
+ <div class="flex flex-col gap-2">
160
+ <modus-text-input
161
+ label="Password"
162
+ type="password"
163
+ placeholder="Enter password"
164
+ [required]="true"
165
+ />
166
+ <modus-input-feedback
167
+ level="warning"
168
+ message="Password must be at least 8 characters long."
169
+ />
170
+ </div>
171
+
172
+ <div class="flex flex-col gap-2">
173
+ <modus-textarea
174
+ label="Feedback"
175
+ placeholder="Enter your feedback..."
176
+ [rows]="4"
177
+ [maxLength]="200"
178
+ />
179
+ <modus-input-feedback
180
+ level="info"
181
+ message="Maximum 200 characters allowed."
182
+ />
183
+ </div>
184
+ </div>
185
+ </demo-example>
186
+ </demo-page>
187
+ `,
188
+ })
189
+ export class InputFeedbackDemoPageComponent {}