@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,147 @@
1
+ "use client";
2
+
3
+ import { useState } from "react";
4
+ import DemoExample from "../../components/DemoExample";
5
+ import DemoPage from "../../components/DemoPage";
6
+ import ModusPagination from "../../components/ModusPagination";
7
+
8
+ export default function PaginationDemoPage() {
9
+ const [paginationState, setPaginationState] = useState({
10
+ page: 2,
11
+ count: 8,
12
+ });
13
+
14
+ const handlePageChange = (
15
+ event: CustomEvent<{ newPage: number; prevPage: number }>,
16
+ ) => {
17
+ setPaginationState((state) => ({
18
+ ...state,
19
+ page: event.detail.newPage,
20
+ }));
21
+ };
22
+
23
+ return (
24
+ <DemoPage
25
+ title="Modus Pagination"
26
+ description="Pagination components enable users to navigate through multiple pages of content. Use pagination for tables, lists, or any paginated content."
27
+ >
28
+ <DemoExample
29
+ title="Basic Pagination"
30
+ description="Simple pagination with page count and current page."
31
+ >
32
+ <div className="flex flex-col gap-6">
33
+ <ModusPagination count={8} page={1} ariaLabel="Basic pagination 1" />
34
+ <ModusPagination count={5} page={3} ariaLabel="Basic pagination 2" />
35
+ <ModusPagination count={10} page={5} ariaLabel="Basic pagination 3" />
36
+ </div>
37
+ </DemoExample>
38
+
39
+ <DemoExample
40
+ title="Pagination Sizes"
41
+ description="Pagination in different sizes."
42
+ >
43
+ <div className="flex flex-col gap-6">
44
+ <div className="flex flex-col gap-2">
45
+ <div className="text-sm text-muted-foreground">Small</div>
46
+ <ModusPagination
47
+ count={5}
48
+ page={2}
49
+ size="sm"
50
+ ariaLabel="Small pagination"
51
+ />
52
+ </div>
53
+
54
+ <div className="flex flex-col gap-2">
55
+ <div className="text-sm text-muted-foreground">
56
+ Medium (Default)
57
+ </div>
58
+ <ModusPagination
59
+ count={5}
60
+ page={2}
61
+ size="md"
62
+ ariaLabel="Medium pagination"
63
+ />
64
+ </div>
65
+
66
+ <div className="flex flex-col gap-2">
67
+ <div className="text-sm text-muted-foreground">Large</div>
68
+ <ModusPagination
69
+ count={5}
70
+ page={2}
71
+ size="lg"
72
+ ariaLabel="Large pagination"
73
+ />
74
+ </div>
75
+ </div>
76
+ </DemoExample>
77
+
78
+ <DemoExample
79
+ title="Custom Button Text"
80
+ description="Pagination with custom previous and next button text."
81
+ >
82
+ <div className="flex flex-col gap-6">
83
+ <ModusPagination
84
+ count={5}
85
+ page={2}
86
+ prevButtonText="Previous"
87
+ nextButtonText="Next"
88
+ ariaLabel="Pagination with text labels"
89
+ />
90
+ <ModusPagination
91
+ count={5}
92
+ page={3}
93
+ prevButtonText="←"
94
+ nextButtonText="→"
95
+ ariaLabel="Pagination with arrow labels"
96
+ />
97
+ </div>
98
+ </DemoExample>
99
+
100
+ <DemoExample
101
+ title="Interactive Pagination"
102
+ description="Pagination with state management and event handling."
103
+ >
104
+ <div className="flex flex-col gap-6">
105
+ <ModusPagination
106
+ count={paginationState.count}
107
+ page={paginationState.page}
108
+ onPageChange={handlePageChange}
109
+ ariaLabel="Interactive pagination"
110
+ />
111
+ <div className="p-4 rounded-lg bg-card border border-default">
112
+ <div className="text-sm text-foreground">
113
+ <strong>Current Page:</strong> {paginationState.page} /{" "}
114
+ {paginationState.count}
115
+ </div>
116
+ <div className="text-sm text-muted-foreground mt-2">
117
+ Click the pagination controls above to navigate between pages.
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </DemoExample>
122
+
123
+ <DemoExample
124
+ title="Real-World Example"
125
+ description="Pagination integrated with content display."
126
+ >
127
+ <div className="flex flex-col gap-6">
128
+ <div className="p-4 rounded-lg bg-card border border-default">
129
+ <div className="text-sm text-foreground mb-2">
130
+ Showing page {paginationState.page} of {paginationState.count}
131
+ </div>
132
+ <div className="text-sm text-muted-foreground">
133
+ Items {(paginationState.page - 1) * 10 + 1}-
134
+ {paginationState.page * 10} of {paginationState.count * 10}
135
+ </div>
136
+ </div>
137
+ <ModusPagination
138
+ count={paginationState.count}
139
+ page={paginationState.page}
140
+ onPageChange={handlePageChange}
141
+ ariaLabel="Real-world pagination example"
142
+ />
143
+ </div>
144
+ </DemoExample>
145
+ </DemoPage>
146
+ );
147
+ }
@@ -0,0 +1,376 @@
1
+ import DemoExample from "../../components/DemoExample";
2
+ import DemoPage from "../../components/DemoPage";
3
+ import ModusPanel from "../../components/ModusPanel";
4
+ import ModusButton from "../../components/ModusButton";
5
+ import ModusMenu from "../../components/ModusMenu";
6
+ import ModusLogo from "../../components/ModusLogo";
7
+
8
+ export default function PanelDemoPage() {
9
+ return (
10
+ <DemoPage
11
+ title="Modus Panel"
12
+ description="Panel is a layout component for organizing content with header, body, and footer sections. Ideal for side navigation, structured forms, and sectioned content areas."
13
+ >
14
+ <DemoExample
15
+ title="Basic Panel"
16
+ description="A panel with header, body, and footer slots."
17
+ >
18
+ <ModusPanel
19
+ width="280px"
20
+ height="400px"
21
+ header={
22
+ <div className="p-4 border-b border-border">
23
+ <div className="text-lg font-medium text-foreground">
24
+ Panel Header
25
+ </div>
26
+ </div>
27
+ }
28
+ body={
29
+ <div className="p-4">
30
+ <div className="text-sm text-foreground">
31
+ This is the body content of the panel. You can add any content
32
+ here.
33
+ </div>
34
+ <div className="mt-4 text-sm text-muted-foreground">
35
+ Panels are great for organizing related content into distinct
36
+ sections.
37
+ </div>
38
+ </div>
39
+ }
40
+ footer={
41
+ <div className="p-4 border-t border-border flex gap-2">
42
+ <ModusButton variant="outlined" color="secondary" size="sm">
43
+ Cancel
44
+ </ModusButton>
45
+ <ModusButton variant="filled" color="primary" size="sm">
46
+ Save
47
+ </ModusButton>
48
+ </div>
49
+ }
50
+ />
51
+ </DemoExample>
52
+
53
+ <DemoExample
54
+ title="Floating Panel"
55
+ description="A floating panel with elevated shadow for overlay appearance."
56
+ >
57
+ <div className="p-8 bg-background rounded-lg">
58
+ <ModusPanel
59
+ width="300px"
60
+ height="auto"
61
+ floating
62
+ header={
63
+ <div className="p-4 border-b border-border">
64
+ <div className="text-lg font-medium text-foreground">
65
+ Quick Actions
66
+ </div>
67
+ </div>
68
+ }
69
+ body={
70
+ <div className="p-4 flex flex-col gap-2">
71
+ <ModusButton
72
+ variant="outlined"
73
+ color="primary"
74
+ fullWidth
75
+ icon="add"
76
+ iconPosition="left"
77
+ >
78
+ New Document
79
+ </ModusButton>
80
+ <ModusButton
81
+ variant="outlined"
82
+ color="primary"
83
+ fullWidth
84
+ icon="upload"
85
+ iconPosition="left"
86
+ >
87
+ Upload File
88
+ </ModusButton>
89
+ <ModusButton
90
+ variant="outlined"
91
+ color="primary"
92
+ fullWidth
93
+ icon="folder_new"
94
+ iconPosition="left"
95
+ >
96
+ Create Folder
97
+ </ModusButton>
98
+ </div>
99
+ }
100
+ />
101
+ </div>
102
+ </DemoExample>
103
+
104
+ <DemoExample
105
+ title="Navigation Panel"
106
+ description="A panel configured as a side navigation with menu items."
107
+ >
108
+ <ModusPanel
109
+ width="260px"
110
+ height="450px"
111
+ header={
112
+ <div className="flex items-center gap-2 p-2">
113
+ <ModusLogo name="trimble" emblem customClass="w-6 h-6" />
114
+ <div className="text-sm font-medium">Application</div>
115
+ </div>
116
+ }
117
+ body={
118
+ <ModusMenu
119
+ size="lg"
120
+ items={[
121
+ {
122
+ label: "Dashboard",
123
+ value: "dashboard",
124
+ startIcon: "dashboard",
125
+ },
126
+ {
127
+ label: "Projects",
128
+ value: "projects",
129
+ startIcon: "folder_open",
130
+ },
131
+ { label: "Team", value: "team", startIcon: "people_group" },
132
+ { label: "Calendar", value: "calendar", startIcon: "calendar" },
133
+ {
134
+ label: "Documents",
135
+ value: "documents",
136
+ startIcon: "description",
137
+ },
138
+ { label: "Reports", value: "reports", startIcon: "bar_graph" },
139
+ ]}
140
+ />
141
+ }
142
+ footer={
143
+ <ModusMenu
144
+ items={[
145
+ { label: "Settings", value: "settings", startIcon: "settings" },
146
+ { label: "Help", value: "help", startIcon: "help" },
147
+ ]}
148
+ />
149
+ }
150
+ />
151
+ </DemoExample>
152
+
153
+ <DemoExample
154
+ title="Body-Only Panel"
155
+ description="A panel with only body content, no header or footer."
156
+ >
157
+ <ModusPanel width="250px" height="auto">
158
+ <ModusMenu
159
+ size="lg"
160
+ items={[
161
+ { label: "Dashboard", value: "dashboard" },
162
+ { label: "Projects", value: "projects" },
163
+ { label: "Team", value: "team" },
164
+ { label: "Calendar", value: "calendar" },
165
+ ]}
166
+ />
167
+ </ModusPanel>
168
+ </DemoExample>
169
+
170
+ <DemoExample
171
+ title="Panel Dimensions"
172
+ description="Panels can have custom width and height values."
173
+ >
174
+ <div className="flex flex-wrap gap-4">
175
+ <ModusPanel
176
+ width="200px"
177
+ height="200px"
178
+ header={
179
+ <div className="p-3 border-b border-border text-sm font-medium text-foreground">
180
+ 200x200
181
+ </div>
182
+ }
183
+ body={
184
+ <div className="p-3 text-xs text-muted-foreground">
185
+ Small square panel
186
+ </div>
187
+ }
188
+ />
189
+ <ModusPanel
190
+ width="300px"
191
+ height="200px"
192
+ header={
193
+ <div className="p-3 border-b border-border text-sm font-medium text-foreground">
194
+ 300x200
195
+ </div>
196
+ }
197
+ body={
198
+ <div className="p-3 text-xs text-muted-foreground">
199
+ Wide panel
200
+ </div>
201
+ }
202
+ />
203
+ <ModusPanel
204
+ width="200px"
205
+ height="300px"
206
+ header={
207
+ <div className="p-3 border-b border-border text-sm font-medium text-foreground">
208
+ 200x300
209
+ </div>
210
+ }
211
+ body={
212
+ <div className="p-3 text-xs text-muted-foreground">
213
+ Tall panel
214
+ </div>
215
+ }
216
+ />
217
+ </div>
218
+ </DemoExample>
219
+
220
+ <DemoExample
221
+ title="Auto Height Panel"
222
+ description="Panel with automatic height based on content."
223
+ >
224
+ <ModusPanel
225
+ width="300px"
226
+ height="auto"
227
+ header={
228
+ <div className="p-4 border-b border-border">
229
+ <div className="text-lg font-medium text-foreground">
230
+ Auto Height
231
+ </div>
232
+ </div>
233
+ }
234
+ body={
235
+ <div className="p-4">
236
+ <div className="text-sm text-foreground mb-4">
237
+ This panel grows to fit its content.
238
+ </div>
239
+ <div className="text-sm text-muted-foreground space-y-2">
240
+ <div>Item 1 - First item in the list</div>
241
+ <div>Item 2 - Second item in the list</div>
242
+ <div>Item 3 - Third item in the list</div>
243
+ </div>
244
+ </div>
245
+ }
246
+ footer={
247
+ <div className="p-4 border-t border-border">
248
+ <ModusButton variant="filled" color="primary" fullWidth>
249
+ Submit
250
+ </ModusButton>
251
+ </div>
252
+ }
253
+ />
254
+ </DemoExample>
255
+
256
+ <DemoExample
257
+ title="Custom Content Panel"
258
+ description="Panel with rich custom content in all slots."
259
+ >
260
+ <ModusPanel
261
+ width="320px"
262
+ height="auto"
263
+ header={
264
+ <div className="p-4 bg-primary">
265
+ <div className="text-lg font-semibold text-primary-foreground">
266
+ Featured Content
267
+ </div>
268
+ <div className="text-sm text-primary-foreground opacity-80">
269
+ Latest updates
270
+ </div>
271
+ </div>
272
+ }
273
+ body={
274
+ <div className="p-4">
275
+ <div className="aspect-video bg-muted rounded-lg mb-4 flex items-center justify-center">
276
+ <i className="modus-icons text-4xl text-muted-foreground">
277
+ image
278
+ </i>
279
+ </div>
280
+ <div className="text-base font-medium text-foreground mb-2">
281
+ Article Title
282
+ </div>
283
+ <div className="text-sm text-muted-foreground mb-4">
284
+ This is a brief description of the article content that gives
285
+ readers an idea of what to expect.
286
+ </div>
287
+ <div className="flex gap-2">
288
+ <div className="px-2 py-1 bg-muted rounded text-xs text-muted-foreground">
289
+ Tag 1
290
+ </div>
291
+ <div className="px-2 py-1 bg-muted rounded text-xs text-muted-foreground">
292
+ Tag 2
293
+ </div>
294
+ </div>
295
+ </div>
296
+ }
297
+ footer={
298
+ <div className="p-4 border-t border-border flex justify-between items-center">
299
+ <div className="text-xs text-muted-foreground">5 min read</div>
300
+ <ModusButton variant="borderless" color="primary" size="sm">
301
+ Read More
302
+ </ModusButton>
303
+ </div>
304
+ }
305
+ />
306
+ </DemoExample>
307
+
308
+ <DemoExample
309
+ title="Full Width Panel"
310
+ description="Panel that spans the full width of its container."
311
+ >
312
+ <ModusPanel
313
+ width="100%"
314
+ height="auto"
315
+ header={
316
+ <div className="p-4 border-b border-border flex justify-between items-center">
317
+ <div className="text-lg font-medium text-foreground">
318
+ Full Width Panel
319
+ </div>
320
+ <ModusButton
321
+ variant="outlined"
322
+ color="secondary"
323
+ size="sm"
324
+ icon="close"
325
+ iconPosition="only"
326
+ ariaLabel="Close"
327
+ />
328
+ </div>
329
+ }
330
+ body={
331
+ <div className="p-4">
332
+ <div className="text-sm text-foreground">
333
+ This panel uses 100% width to span its container. Useful for
334
+ responsive layouts where the panel should adapt to its parent
335
+ element.
336
+ </div>
337
+ </div>
338
+ }
339
+ />
340
+ </DemoExample>
341
+
342
+ <DemoExample
343
+ title="Floating vs Non-Floating"
344
+ description="Comparison of floating and non-floating panel styles."
345
+ >
346
+ <div className="flex flex-wrap gap-6 p-6 bg-background rounded-lg">
347
+ <div className="flex flex-col gap-2">
348
+ <div className="text-sm text-muted-foreground">Non-Floating</div>
349
+ <ModusPanel
350
+ width="200px"
351
+ height="150px"
352
+ body={
353
+ <div className="p-4 text-sm text-foreground">
354
+ Standard panel without shadow
355
+ </div>
356
+ }
357
+ />
358
+ </div>
359
+ <div className="flex flex-col gap-2">
360
+ <div className="text-sm text-muted-foreground">Floating</div>
361
+ <ModusPanel
362
+ width="200px"
363
+ height="150px"
364
+ floating
365
+ body={
366
+ <div className="p-4 text-sm text-foreground">
367
+ Elevated panel with shadow
368
+ </div>
369
+ }
370
+ />
371
+ </div>
372
+ </div>
373
+ </DemoExample>
374
+ </DemoPage>
375
+ );
376
+ }