@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.
- package/README.md +191 -0
- package/bin/create-trimble-app.js +9 -0
- package/package.json +67 -0
- package/src/cli.js +134 -0
- package/src/frameworks.js +28 -0
- package/src/scaffold.js +209 -0
- package/src/utils/file.js +47 -0
- package/src/utils/git.js +140 -0
- package/src/utils/install.js +25 -0
- package/src/utils/logger.js +124 -0
- package/templates/angular/.cursor/commands/remove-dev-content.md +394 -0
- package/templates/angular/.cursor/mcp.json +13 -0
- package/templates/angular/.cursor/rules/modus-angular-20.mdc +82 -0
- package/templates/angular/.cursor/rules/modus-angular-accordion-state-management-short.mdc +45 -0
- package/templates/angular/.cursor/rules/modus-angular-accordion-state-management.mdc +322 -0
- package/templates/angular/.cursor/rules/modus-angular-best-practices.mdc +472 -0
- package/templates/angular/.cursor/rules/modus-angular-border-usage-short.mdc +48 -0
- package/templates/angular/.cursor/rules/modus-angular-border-usage.mdc +286 -0
- package/templates/angular/.cursor/rules/modus-angular-button-group-usage-short.mdc +47 -0
- package/templates/angular/.cursor/rules/modus-angular-button-group-usage.mdc +263 -0
- package/templates/angular/.cursor/rules/modus-angular-checkbox-value-inversion-short.mdc +36 -0
- package/templates/angular/.cursor/rules/modus-angular-checkbox-value-inversion.mdc +92 -0
- package/templates/angular/.cursor/rules/modus-angular-chrome-devtools-testing-short.mdc +34 -0
- package/templates/angular/.cursor/rules/modus-angular-chrome-devtools-testing.mdc +185 -0
- package/templates/angular/.cursor/rules/modus-angular-color-usage-short.mdc +56 -0
- package/templates/angular/.cursor/rules/modus-angular-color-usage.mdc +208 -0
- package/templates/angular/.cursor/rules/modus-angular-components-reference.mdc +114 -0
- package/templates/angular/.cursor/rules/modus-angular-design-system.mdc +273 -0
- package/templates/angular/.cursor/rules/modus-angular-development-workflow-short.mdc +43 -0
- package/templates/angular/.cursor/rules/modus-angular-development-workflow.mdc +145 -0
- package/templates/angular/.cursor/rules/modus-angular-essentials.mdc +272 -0
- package/templates/angular/.cursor/rules/modus-angular-forms-validation-short.mdc +56 -0
- package/templates/angular/.cursor/rules/modus-angular-forms-validation.mdc +124 -0
- package/templates/angular/.cursor/rules/modus-angular-icon-names.mdc +70 -0
- package/templates/angular/.cursor/rules/modus-angular-icons-short.mdc +40 -0
- package/templates/angular/.cursor/rules/modus-angular-icons.mdc +137 -0
- package/templates/angular/.cursor/rules/modus-angular-implementation-guides-short.mdc +36 -0
- package/templates/angular/.cursor/rules/modus-angular-implementation-guides.mdc +301 -0
- package/templates/angular/.cursor/rules/modus-angular-integration-short.mdc +60 -0
- package/templates/angular/.cursor/rules/modus-angular-integration.mdc +1096 -0
- package/templates/angular/.cursor/rules/modus-angular-master.mdc +164 -0
- package/templates/angular/.cursor/rules/modus-angular-modal-usage-short.mdc +51 -0
- package/templates/angular/.cursor/rules/modus-angular-modal-usage.mdc +115 -0
- package/templates/angular/.cursor/rules/modus-angular-navbar-usage-short.mdc +49 -0
- package/templates/angular/.cursor/rules/modus-angular-navbar-usage.mdc +146 -0
- package/templates/angular/.cursor/rules/modus-angular-no-emojis.mdc +66 -0
- package/templates/angular/.cursor/rules/modus-angular-opacity-utilities-short.mdc +43 -0
- package/templates/angular/.cursor/rules/modus-angular-opacity-utilities.mdc +160 -0
- package/templates/angular/.cursor/rules/modus-angular-select-vs-dropdown-menu-short.mdc +51 -0
- package/templates/angular/.cursor/rules/modus-angular-select-vs-dropdown-menu.mdc +83 -0
- package/templates/angular/.cursor/rules/modus-angular-semantic-html-short.mdc +36 -0
- package/templates/angular/.cursor/rules/modus-angular-semantic-html.mdc +81 -0
- package/templates/angular/.cursor/rules/modus-angular-side-navigation-usage-short.mdc +50 -0
- package/templates/angular/.cursor/rules/modus-angular-side-navigation-usage.mdc +136 -0
- package/templates/angular/.cursor/rules/modus-angular-table-usage-short.mdc +52 -0
- package/templates/angular/.cursor/rules/modus-angular-table-usage.mdc +151 -0
- package/templates/angular/.cursor/rules/modus-angular-tailwind-usage-short.mdc +44 -0
- package/templates/angular/.cursor/rules/modus-angular-tailwind-usage.mdc +242 -0
- package/templates/angular/.cursor/rules/modus-angular-themes-short.mdc +54 -0
- package/templates/angular/.cursor/rules/modus-angular-themes.mdc +222 -0
- package/templates/angular/.cursor/rules/modus-angular-utility-panel-usage-short.mdc +52 -0
- package/templates/angular/.cursor/rules/modus-angular-utility-panel-usage.mdc +130 -0
- package/templates/angular/.cursor/rules/ux/gestalt-laws-detailed.mdc +514 -0
- package/templates/angular/.cursor/rules/ux/ux-ui-foundations.mdc +235 -0
- package/templates/angular/.cursor/skills/run-lint-checks/SKILL.md +169 -0
- package/templates/angular/.editorconfig +17 -0
- package/templates/angular/.github/dependabot.yml +19 -0
- package/templates/angular/.github/workflows/a11y-check.yml +135 -0
- package/templates/angular/.github/workflows/ci.yml +44 -0
- package/templates/angular/.husky/pre-commit +32 -0
- package/templates/angular/.postcssrc.json +5 -0
- package/templates/angular/.vscode/extensions.json +4 -0
- package/templates/angular/.vscode/launch.json +20 -0
- package/templates/angular/.vscode/tasks.json +42 -0
- package/templates/angular/CLAUDE.md +148 -0
- package/templates/angular/README.md +92 -0
- package/templates/angular/amplify.yml +25 -0
- package/templates/angular/angular.json +106 -0
- package/templates/angular/data/modusIcons.ts +861 -0
- package/templates/angular/package-lock.json +11030 -0
- package/templates/angular/package.json +66 -0
- package/templates/angular/public/angular-icon.svg +12 -0
- package/templates/angular/public/favicon.ico +0 -0
- package/templates/angular/public/modus-icons.css +49 -0
- package/templates/angular/public/vite.svg +1 -0
- package/templates/angular/scripts/README.md +410 -0
- package/templates/angular/scripts/check-border-violations.js +352 -0
- package/templates/angular/scripts/check-icon-names.js +402 -0
- package/templates/angular/scripts/check-inline-styles.js +292 -0
- package/templates/angular/scripts/check-modus-colors.js +282 -0
- package/templates/angular/scripts/check-modus-icons.js +263 -0
- package/templates/angular/scripts/check-opacity-utilities.js +426 -0
- package/templates/angular/scripts/check-semantic-html.js +452 -0
- package/templates/angular/scripts/check-typescript.js +109 -0
- package/templates/angular/src/app/app.config.ts +29 -0
- package/templates/angular/src/app/app.css +0 -0
- package/templates/angular/src/app/app.html +4 -0
- package/templates/angular/src/app/app.routes.ts +351 -0
- package/templates/angular/src/app/app.spec.ts +27 -0
- package/templates/angular/src/app/app.ts +47 -0
- package/templates/angular/src/app/components/README.md +77 -0
- package/templates/angular/src/app/components/index.ts +53 -0
- package/templates/angular/src/app/components/modus-accordion.component.ts +50 -0
- package/templates/angular/src/app/components/modus-alert.component.ts +133 -0
- package/templates/angular/src/app/components/modus-autocomplete.component.ts +262 -0
- package/templates/angular/src/app/components/modus-avatar.component.ts +75 -0
- package/templates/angular/src/app/components/modus-badge.component.ts +84 -0
- package/templates/angular/src/app/components/modus-breadcrumbs.component.ts +65 -0
- package/templates/angular/src/app/components/modus-button-group.component.ts +82 -0
- package/templates/angular/src/app/components/modus-button.component.ts +292 -0
- package/templates/angular/src/app/components/modus-card.component.ts +73 -0
- package/templates/angular/src/app/components/modus-checkbox.component.ts +117 -0
- package/templates/angular/src/app/components/modus-chip.component.ts +97 -0
- package/templates/angular/src/app/components/modus-collapse.component.ts +118 -0
- package/templates/angular/src/app/components/modus-date.component.ts +165 -0
- package/templates/angular/src/app/components/modus-dropdown-menu.component.ts +108 -0
- package/templates/angular/src/app/components/modus-file-dropzone.component.ts +121 -0
- package/templates/angular/src/app/components/modus-handle.component.ts +96 -0
- package/templates/angular/src/app/components/modus-icon.component.ts +81 -0
- package/templates/angular/src/app/components/modus-input-feedback.component.ts +54 -0
- package/templates/angular/src/app/components/modus-input-label.component.ts +62 -0
- package/templates/angular/src/app/components/modus-loader.component.ts +48 -0
- package/templates/angular/src/app/components/modus-logo.component.ts +115 -0
- package/templates/angular/src/app/components/modus-menu-item.component.ts +116 -0
- package/templates/angular/src/app/components/modus-menu.component.ts +58 -0
- package/templates/angular/src/app/components/modus-modal.component.ts +70 -0
- package/templates/angular/src/app/components/modus-navbar.component.ts +303 -0
- package/templates/angular/src/app/components/modus-number-input.component.ts +174 -0
- package/templates/angular/src/app/components/modus-pagination.component.ts +74 -0
- package/templates/angular/src/app/components/modus-panel.component.ts +61 -0
- package/templates/angular/src/app/components/modus-progress.component.ts +62 -0
- package/templates/angular/src/app/components/modus-radio.component.ts +102 -0
- package/templates/angular/src/app/components/modus-rating.component.ts +80 -0
- package/templates/angular/src/app/components/modus-select.component.ts +131 -0
- package/templates/angular/src/app/components/modus-side-navigation.component.ts +90 -0
- package/templates/angular/src/app/components/modus-skeleton.component.ts +54 -0
- package/templates/angular/src/app/components/modus-slider.component.ts +132 -0
- package/templates/angular/src/app/components/modus-stepper.component.ts +65 -0
- package/templates/angular/src/app/components/modus-switch.component.ts +118 -0
- package/templates/angular/src/app/components/modus-table.component.ts +204 -0
- package/templates/angular/src/app/components/modus-tabs.component.ts +82 -0
- package/templates/angular/src/app/components/modus-text-input.component.ts +221 -0
- package/templates/angular/src/app/components/modus-textarea.component.ts +168 -0
- package/templates/angular/src/app/components/modus-theme-switcher.component.ts +45 -0
- package/templates/angular/src/app/components/modus-time-input.component.ts +172 -0
- package/templates/angular/src/app/components/modus-toast.component.ts +63 -0
- package/templates/angular/src/app/components/modus-toolbar.component.ts +43 -0
- package/templates/angular/src/app/components/modus-tooltip.component.ts +83 -0
- package/templates/angular/src/app/components/modus-typography.component.ts +79 -0
- package/templates/angular/src/app/components/modus-utility-panel.component.ts +275 -0
- package/templates/angular/src/app/components/theme-demo.component.ts +1242 -0
- package/templates/angular/src/app/data/component-demos.ts +360 -0
- package/templates/angular/src/app/data/modus-icons.ts +806 -0
- package/templates/angular/src/app/demos/accordion/accordion-demo.component.ts +212 -0
- package/templates/angular/src/app/demos/alert/alert-demo.component.ts +108 -0
- package/templates/angular/src/app/demos/autocomplete/autocomplete-demo.component.ts +174 -0
- package/templates/angular/src/app/demos/avatar/avatar-demo.component.ts +149 -0
- package/templates/angular/src/app/demos/badge/badge-demo.component.ts +148 -0
- package/templates/angular/src/app/demos/breadcrumbs/breadcrumbs-demo.component.ts +96 -0
- package/templates/angular/src/app/demos/button/button-demo.component.ts +256 -0
- package/templates/angular/src/app/demos/button-group/button-group-demo.component.ts +215 -0
- package/templates/angular/src/app/demos/card/card-demo.component.ts +180 -0
- package/templates/angular/src/app/demos/checkbox/checkbox-demo.component.ts +71 -0
- package/templates/angular/src/app/demos/chip/chip-demo.component.ts +183 -0
- package/templates/angular/src/app/demos/date/date-demo.component.ts +193 -0
- package/templates/angular/src/app/demos/dropdown/dropdown-demo.component.ts +196 -0
- package/templates/angular/src/app/demos/file-dropzone/file-dropzone-demo.component.ts +176 -0
- package/templates/angular/src/app/demos/handle/handle-demo.component.ts +265 -0
- package/templates/angular/src/app/demos/icon/icon-demo.component.ts +65 -0
- package/templates/angular/src/app/demos/input-feedback/input-feedback-demo.component.ts +189 -0
- package/templates/angular/src/app/demos/input-label/input-label-demo.component.ts +330 -0
- package/templates/angular/src/app/demos/loader/loader-demo.component.ts +143 -0
- package/templates/angular/src/app/demos/logo/logo-demo.component.ts +191 -0
- package/templates/angular/src/app/demos/menu/menu-demo.component.ts +72 -0
- package/templates/angular/src/app/demos/modal/modal-demo.component.ts +278 -0
- package/templates/angular/src/app/demos/navbar/navbar-demo.component.ts +135 -0
- package/templates/angular/src/app/demos/number-input/number-input-demo.component.ts +175 -0
- package/templates/angular/src/app/demos/pagination/pagination-demo.component.ts +134 -0
- package/templates/angular/src/app/demos/panel/panel-demo.component.ts +235 -0
- package/templates/angular/src/app/demos/progress/progress-demo.component.ts +169 -0
- package/templates/angular/src/app/demos/radio/radio-demo.component.ts +161 -0
- package/templates/angular/src/app/demos/rating/rating-demo.component.ts +97 -0
- package/templates/angular/src/app/demos/select/select-demo.component.ts +107 -0
- package/templates/angular/src/app/demos/shared/demo-example-clean.component.ts +41 -0
- package/templates/angular/src/app/demos/shared/demo-example.component.ts +42 -0
- package/templates/angular/src/app/demos/shared/demo-page.component.ts +97 -0
- package/templates/angular/src/app/demos/shared/index.ts +3 -0
- package/templates/angular/src/app/demos/side-navigation/side-navigation-demo.component.ts +524 -0
- package/templates/angular/src/app/demos/skeleton/skeleton-demo.component.ts +112 -0
- package/templates/angular/src/app/demos/slider/slider-demo.component.ts +76 -0
- package/templates/angular/src/app/demos/stepper/stepper-demo.component.ts +79 -0
- package/templates/angular/src/app/demos/switch/switch-demo.component.ts +113 -0
- package/templates/angular/src/app/demos/table/table-demo.component.ts +405 -0
- package/templates/angular/src/app/demos/tabs/tabs-demo.component.ts +318 -0
- package/templates/angular/src/app/demos/text-input/text-input-demo.component.ts +160 -0
- package/templates/angular/src/app/demos/textarea/textarea-demo.component.ts +95 -0
- package/templates/angular/src/app/demos/theme-switcher/theme-switcher-demo.component.ts +38 -0
- package/templates/angular/src/app/demos/time-input/time-input-demo.component.ts +130 -0
- package/templates/angular/src/app/demos/toast/toast-demo.component.ts +258 -0
- package/templates/angular/src/app/demos/toolbar/toolbar-demo.component.ts +54 -0
- package/templates/angular/src/app/demos/tooltip/tooltip-demo.component.ts +163 -0
- package/templates/angular/src/app/demos/utility-panel/utility-panel-demo.component.ts +197 -0
- package/templates/angular/src/app/dev/dev-config.ts +119 -0
- package/templates/angular/src/app/dev/dev-panel/dev-panel.component.ts +215 -0
- package/templates/angular/src/app/dev/dev-panel.service.ts +63 -0
- package/templates/angular/src/app/dev/index.ts +8 -0
- package/templates/angular/src/app/dev/theme-switcher-dropdown/theme-switcher-dropdown.component.ts +134 -0
- package/templates/angular/src/app/dev-pages/color-palette/color-palette.component.ts +229 -0
- package/templates/angular/src/app/dev-pages/components-gallery/components-gallery.component.ts +486 -0
- package/templates/angular/src/app/dev-pages/icons/icons.component.ts +149 -0
- package/templates/angular/src/app/pages/home/home.component.ts +251 -0
- package/templates/angular/src/app/services/README.md +57 -0
- package/templates/angular/src/app/services/theme.service.ts +163 -0
- package/templates/angular/src/environments/environment.development.ts +8 -0
- package/templates/angular/src/environments/environment.ts +8 -0
- package/templates/angular/src/index.html +14 -0
- package/templates/angular/src/main.ts +6 -0
- package/templates/angular/src/styles.css +1328 -0
- package/templates/angular/tsconfig.app.json +15 -0
- package/templates/angular/tsconfig.json +35 -0
- package/templates/angular/tsconfig.spec.json +14 -0
- package/templates/config.json +23 -0
- package/templates/react/.cursor/commands/remove-dev-content.md +311 -0
- package/templates/react/.cursor/mcp.json +13 -0
- package/templates/react/.cursor/rules/README.md +240 -0
- package/templates/react/.cursor/rules/border-usage-guidelines-short.mdc +22 -0
- package/templates/react/.cursor/rules/border-usage-guidelines.mdc +380 -0
- package/templates/react/.cursor/rules/chrome-devtools-testing-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/development-workflow-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/development-workflow-react.mdc +292 -0
- package/templates/react/.cursor/rules/implementation-guides-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/implementation-guides-react.mdc +446 -0
- package/templates/react/.cursor/rules/modus-accordion-state-management-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-accordion-state-management-react.mdc +445 -0
- package/templates/react/.cursor/rules/modus-button-group-usage-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-button-group-usage-react.mdc +117 -0
- package/templates/react/.cursor/rules/modus-checkbox-value-inversion-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-checkbox-value-inversion-react.mdc +492 -0
- package/templates/react/.cursor/rules/modus-color-usage-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-color-usage-react.mdc +420 -0
- package/templates/react/.cursor/rules/modus-components-reference.mdc +366 -0
- package/templates/react/.cursor/rules/modus-icon-names.mdc +63 -0
- package/templates/react/.cursor/rules/modus-icons-react-short.mdc +24 -0
- package/templates/react/.cursor/rules/modus-icons-react.mdc +402 -0
- package/templates/react/.cursor/rules/modus-modal-implementation-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-modal-implementation-react.mdc +831 -0
- package/templates/react/.cursor/rules/modus-navbar-side-navigation-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-navbar-side-navigation-react.mdc +247 -0
- package/templates/react/.cursor/rules/modus-no-emojis-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-opacity-utilities-react-short.mdc +70 -0
- package/templates/react/.cursor/rules/modus-opacity-utilities-react.mdc +208 -0
- package/templates/react/.cursor/rules/modus-react-best-practices-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-react-best-practices.mdc +508 -0
- package/templates/react/.cursor/rules/modus-react-essentials.mdc +209 -0
- package/templates/react/.cursor/rules/modus-react-integration-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-react-integration.mdc +509 -0
- package/templates/react/.cursor/rules/modus-react-key-warnings-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-react-key-warnings.mdc +805 -0
- package/templates/react/.cursor/rules/modus-react-master.mdc +160 -0
- package/templates/react/.cursor/rules/modus-select-vs-dropdown-menu-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-select-vs-dropdown-menu-react.mdc +442 -0
- package/templates/react/.cursor/rules/modus-semantic-html-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-semantic-html-react.mdc +427 -0
- package/templates/react/.cursor/rules/modus-tailwind-usage-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-tailwind-usage-react.mdc +642 -0
- package/templates/react/.cursor/rules/modus-themes-react-short.mdc +23 -0
- package/templates/react/.cursor/rules/modus-themes-react.mdc +506 -0
- package/templates/react/.cursor/rules/ux/gestalt-laws-detailed.mdc +456 -0
- package/templates/react/.cursor/rules/ux/ux-ui-foundations.mdc +211 -0
- package/templates/react/.cursor/skills/create-modus-form-component/SKILL.md +518 -0
- package/templates/react/.cursor/skills/create-modus-wrapper-component/SKILL.md +252 -0
- package/templates/react/.cursor/skills/fix-modus-component-event-issues/SKILL.md +345 -0
- package/templates/react/.cursor/skills/handle-modus-checkbox-value-bug/SKILL.md +202 -0
- package/templates/react/.cursor/skills/implement-modus-modal-with-refs/SKILL.md +386 -0
- package/templates/react/.cursor/skills/integrate-modus-icons/SKILL.md +300 -0
- package/templates/react/.cursor/skills/run-lint-checks/SKILL.md +235 -0
- package/templates/react/.cursor/skills/set-up-modus-event-listeners/SKILL.md +284 -0
- package/templates/react/.cursor/skills/style-modus-components-with-tailwind/SKILL.md +382 -0
- package/templates/react/.env.development +3 -0
- package/templates/react/.env.production +3 -0
- package/templates/react/.github/CODEOWNERS +28 -0
- package/templates/react/.github/ISSUE_TEMPLATE/bug_report.yml +176 -0
- package/templates/react/.github/ISSUE_TEMPLATE/config.yml +20 -0
- package/templates/react/.github/ISSUE_TEMPLATE/documentation.yml +115 -0
- package/templates/react/.github/ISSUE_TEMPLATE/feature_request.yml +171 -0
- package/templates/react/.github/ISSUE_TEMPLATE/question.yml +139 -0
- package/templates/react/.github/copilot-instructions.md +80 -0
- package/templates/react/.github/instructions/components.instructions.md +82 -0
- package/templates/react/.github/instructions/demos.instructions.md +82 -0
- package/templates/react/.github/instructions/pages.instructions.md +76 -0
- package/templates/react/.github/instructions/styles.instructions.md +77 -0
- package/templates/react/.github/instructions/typescript.instructions.md +101 -0
- package/templates/react/.github/pull_request_template.md +188 -0
- package/templates/react/.github/workflows/ci.yml +43 -0
- package/templates/react/.github/workflows/claude-code-review.yml +44 -0
- package/templates/react/.github/workflows/claude.yml +50 -0
- package/templates/react/.husky/pre-commit +28 -0
- package/templates/react/.vscode/extensions.json +8 -0
- package/templates/react/CLAUDE.md +119 -0
- package/templates/react/CODE_OF_CONDUCT.md +79 -0
- package/templates/react/CONTRIBUTING.md +65 -0
- package/templates/react/LICENSE +21 -0
- package/templates/react/README.md +728 -0
- package/templates/react/SECURITY.md +50 -0
- package/templates/react/eslint.config.js +23 -0
- package/templates/react/index.html +13 -0
- package/templates/react/package-lock.json +5209 -0
- package/templates/react/package.json +49 -0
- package/templates/react/postcss.config.js +6 -0
- package/templates/react/public/react.svg +1 -0
- package/templates/react/public/vite.svg +1 -0
- package/templates/react/readme_assets/getting_started_header.png +0 -0
- package/templates/react/readme_assets/hero.png +0 -0
- package/templates/react/readme_assets/modus_comp.png +0 -0
- package/templates/react/readme_assets/modus_figma_mcp.png +0 -0
- package/templates/react/readme_assets/teaser_comp.gif +0 -0
- package/templates/react/scripts/README.md +343 -0
- package/templates/react/scripts/check-border-violations.js +483 -0
- package/templates/react/scripts/check-icon-names.js +486 -0
- package/templates/react/scripts/check-inline-styles.js +364 -0
- package/templates/react/scripts/check-modus-colors.js +247 -0
- package/templates/react/scripts/check-modus-icons.js +256 -0
- package/templates/react/scripts/check-opacity-utilities.js +481 -0
- package/templates/react/scripts/check-semantic-html.js +476 -0
- package/templates/react/scripts/check-typescript.js +109 -0
- package/templates/react/src/App.css +42 -0
- package/templates/react/src/App.tsx +54 -0
- package/templates/react/src/assets/react.svg +1 -0
- package/templates/react/src/components/DemoExample.tsx +61 -0
- package/templates/react/src/components/DemoPage.tsx +81 -0
- package/templates/react/src/components/ModusAccordion.tsx +89 -0
- package/templates/react/src/components/ModusAlert.tsx +85 -0
- package/templates/react/src/components/ModusAutocomplete.tsx +207 -0
- package/templates/react/src/components/ModusAvatar.tsx +50 -0
- package/templates/react/src/components/ModusBadge.tsx +82 -0
- package/templates/react/src/components/ModusBreadcrumbs.tsx +75 -0
- package/templates/react/src/components/ModusButton.tsx +244 -0
- package/templates/react/src/components/ModusButtonGroup.tsx +91 -0
- package/templates/react/src/components/ModusCard.tsx +70 -0
- package/templates/react/src/components/ModusCheckbox.tsx +168 -0
- package/templates/react/src/components/ModusChip.tsx +93 -0
- package/templates/react/src/components/ModusDate.tsx +154 -0
- package/templates/react/src/components/ModusDropdownMenu.tsx +148 -0
- package/templates/react/src/components/ModusFileDropzone.tsx +140 -0
- package/templates/react/src/components/ModusHandle.tsx +101 -0
- package/templates/react/src/components/ModusIcon.tsx +49 -0
- package/templates/react/src/components/ModusInputFeedback.tsx +52 -0
- package/templates/react/src/components/ModusInputLabel.tsx +50 -0
- package/templates/react/src/components/ModusLoader.tsx +42 -0
- package/templates/react/src/components/ModusLogo.tsx +102 -0
- package/templates/react/src/components/ModusMenu.tsx +119 -0
- package/templates/react/src/components/ModusMenuItem.tsx +86 -0
- package/templates/react/src/components/ModusModal.tsx +145 -0
- package/templates/react/src/components/ModusNavbar.tsx +504 -0
- package/templates/react/src/components/ModusNumberInput.tsx +230 -0
- package/templates/react/src/components/ModusPagination.tsx +94 -0
- package/templates/react/src/components/ModusPanel.tsx +92 -0
- package/templates/react/src/components/ModusProgress.tsx +70 -0
- package/templates/react/src/components/ModusProvider.tsx +18 -0
- package/templates/react/src/components/ModusRadio.tsx +114 -0
- package/templates/react/src/components/ModusRating.tsx +108 -0
- package/templates/react/src/components/ModusSelect.tsx +171 -0
- package/templates/react/src/components/ModusSideNavigation.tsx +149 -0
- package/templates/react/src/components/ModusSkeleton.tsx +42 -0
- package/templates/react/src/components/ModusSlider.tsx +128 -0
- package/templates/react/src/components/ModusStepper.tsx +85 -0
- package/templates/react/src/components/ModusSwitch.tsx +130 -0
- package/templates/react/src/components/ModusTable.tsx +309 -0
- package/templates/react/src/components/ModusTabs.tsx +114 -0
- package/templates/react/src/components/ModusTextInput.tsx +179 -0
- package/templates/react/src/components/ModusTextarea.tsx +164 -0
- package/templates/react/src/components/ModusThemeSwitcher.tsx +58 -0
- package/templates/react/src/components/ModusTimeInput.tsx +176 -0
- package/templates/react/src/components/ModusToast.tsx +207 -0
- package/templates/react/src/components/ModusToolbar.tsx +70 -0
- package/templates/react/src/components/ModusTooltip.tsx +97 -0
- package/templates/react/src/components/ModusUtilityPanel.tsx +198 -0
- package/templates/react/src/components/ThemeSwitcherDropdown.tsx +117 -0
- package/templates/react/src/components/ThemeToggleSimple.tsx +157 -0
- package/templates/react/src/config/routes.ts +196 -0
- package/templates/react/src/contexts/ThemeContext.tsx +81 -0
- package/templates/react/src/contexts/ThemeContextData.tsx +89 -0
- package/templates/react/src/data/modusIcons.ts +865 -0
- package/templates/react/src/demos/accordion-demo/page.tsx +236 -0
- package/templates/react/src/demos/alert-demo/page.tsx +94 -0
- package/templates/react/src/demos/autocomplete-demo/page.tsx +166 -0
- package/templates/react/src/demos/avatar-demo/page.tsx +135 -0
- package/templates/react/src/demos/badge-demo/page.tsx +174 -0
- package/templates/react/src/demos/breadcrumbs-demo/page.tsx +88 -0
- package/templates/react/src/demos/button-demo/page.tsx +261 -0
- package/templates/react/src/demos/button-group-demo/page.tsx +231 -0
- package/templates/react/src/demos/card-demo/page.tsx +241 -0
- package/templates/react/src/demos/checkbox-demo/page.tsx +79 -0
- package/templates/react/src/demos/chip-demo/page.tsx +197 -0
- package/templates/react/src/demos/date-demo/page.tsx +179 -0
- package/templates/react/src/demos/dropdown-demo/page.tsx +150 -0
- package/templates/react/src/demos/file-dropzone-demo/page.tsx +186 -0
- package/templates/react/src/demos/handle-demo/page.tsx +313 -0
- package/templates/react/src/demos/icon-demo/page.tsx +72 -0
- package/templates/react/src/demos/input-feedback-demo/page.tsx +202 -0
- package/templates/react/src/demos/input-label-demo/page.tsx +392 -0
- package/templates/react/src/demos/loader-demo/page.tsx +138 -0
- package/templates/react/src/demos/logo-demo/page.tsx +292 -0
- package/templates/react/src/demos/menu-demo/page.tsx +70 -0
- package/templates/react/src/demos/modal-demo/page.tsx +332 -0
- package/templates/react/src/demos/navbar-demo/page.tsx +141 -0
- package/templates/react/src/demos/number-input-demo/page.tsx +180 -0
- package/templates/react/src/demos/pagination-demo/page.tsx +147 -0
- package/templates/react/src/demos/panel-demo/page.tsx +376 -0
- package/templates/react/src/demos/progress-demo/page.tsx +185 -0
- package/templates/react/src/demos/radio-demo/page.tsx +242 -0
- package/templates/react/src/demos/rating-demo/page.tsx +97 -0
- package/templates/react/src/demos/select-demo/page.tsx +111 -0
- package/templates/react/src/demos/side-navigation-demo/page.tsx +775 -0
- package/templates/react/src/demos/skeleton-demo/page.tsx +107 -0
- package/templates/react/src/demos/slider-demo/page.tsx +78 -0
- package/templates/react/src/demos/stepper-demo/page.tsx +86 -0
- package/templates/react/src/demos/switch-demo/page.tsx +146 -0
- package/templates/react/src/demos/table-demo/page.tsx +489 -0
- package/templates/react/src/demos/tabs-demo/page.tsx +187 -0
- package/templates/react/src/demos/text-input-demo/page.tsx +151 -0
- package/templates/react/src/demos/textarea-demo/page.tsx +73 -0
- package/templates/react/src/demos/theme-switcher-demo/page.tsx +26 -0
- package/templates/react/src/demos/time-input-demo/page.tsx +148 -0
- package/templates/react/src/demos/toast-demo/page.tsx +302 -0
- package/templates/react/src/demos/toolbar-demo/page.tsx +49 -0
- package/templates/react/src/demos/tooltip-demo/page.tsx +209 -0
- package/templates/react/src/demos/typography-test/page.tsx +28 -0
- package/templates/react/src/demos/utility-panel-demo/page.tsx +197 -0
- package/templates/react/src/dev/DevPanel.tsx +219 -0
- package/templates/react/src/dev/DevPanelContext.ts +14 -0
- package/templates/react/src/dev/DevPanelProvider.tsx +63 -0
- package/templates/react/src/dev/DevRoutes.tsx +98 -0
- package/templates/react/src/dev/config.ts +127 -0
- package/templates/react/src/dev/index.ts +8 -0
- package/templates/react/src/dev/useDevPanel.ts +17 -0
- package/templates/react/src/dev-pages/ColorPalettePage.tsx +347 -0
- package/templates/react/src/dev-pages/ComponentsGalleryPage.tsx +489 -0
- package/templates/react/src/dev-pages/IconsPage.tsx +137 -0
- package/templates/react/src/dev-pages/index.ts +3 -0
- package/templates/react/src/hooks/useTheme.ts +15 -0
- package/templates/react/src/index.css +635 -0
- package/templates/react/src/main.tsx +14 -0
- package/templates/react/src/pages/HomePage.tsx +283 -0
- package/templates/react/src/vite-env.d.ts +9 -0
- package/templates/react/tailwind.config.js +58 -0
- package/templates/react/tsconfig.app.json +27 -0
- package/templates/react/tsconfig.json +7 -0
- package/templates/react/tsconfig.node.json +25 -0
- 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 {}
|