@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,130 @@
|
|
|
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 { ModusTimeInputComponent } from '../../components/modus-time-input.component';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Demo page showcasing the Modus Time Input component.
|
|
9
|
+
*
|
|
10
|
+
* Demonstrates time input features including:
|
|
11
|
+
* - Basic time input
|
|
12
|
+
* - Sizes
|
|
13
|
+
* - With seconds
|
|
14
|
+
* - Min/max constraints
|
|
15
|
+
* - Interactive examples
|
|
16
|
+
*/
|
|
17
|
+
@Component({
|
|
18
|
+
selector: 'app-time-input-demo-page',
|
|
19
|
+
standalone: true,
|
|
20
|
+
imports: [CommonModule, DemoPageComponent, DemoExampleComponent, ModusTimeInputComponent],
|
|
21
|
+
template: `
|
|
22
|
+
<demo-page
|
|
23
|
+
title="Modus Time Input"
|
|
24
|
+
description="Time input components allow users to enter or select a time value. Use time inputs for scheduling, appointments, or any scenario requiring time selection."
|
|
25
|
+
>
|
|
26
|
+
<demo-example title="Basic Time Input" description="Simple time input with label.">
|
|
27
|
+
<div class="flex flex-col gap-6">
|
|
28
|
+
<div class="flex flex-col gap-2">
|
|
29
|
+
<modus-time-input inputId="start-time-input" label="Start time" value="09:00" />
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="flex flex-col gap-2">
|
|
33
|
+
<modus-time-input inputId="end-time-input" label="End time" value="17:00" />
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</demo-example>
|
|
37
|
+
|
|
38
|
+
<demo-example title="Time Input Sizes" description="Time inputs in different sizes.">
|
|
39
|
+
<div class="flex flex-col gap-6">
|
|
40
|
+
<div class="flex flex-col gap-2">
|
|
41
|
+
<modus-time-input inputId="small-time-input" label="Small" value="09:00" size="sm" />
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div class="flex flex-col gap-2">
|
|
45
|
+
<modus-time-input inputId="medium-time-input" label="Medium" value="09:00" size="md" />
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="flex flex-col gap-2">
|
|
49
|
+
<modus-time-input inputId="large-time-input" label="Large" value="09:00" size="lg" />
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</demo-example>
|
|
53
|
+
|
|
54
|
+
<demo-example title="Time Input with Seconds" description="Time inputs displaying seconds.">
|
|
55
|
+
<div class="flex flex-col gap-6">
|
|
56
|
+
<div class="flex flex-col gap-2">
|
|
57
|
+
<modus-time-input
|
|
58
|
+
inputId="seconds-time-input"
|
|
59
|
+
label="Time with Seconds"
|
|
60
|
+
value="09:30:45"
|
|
61
|
+
[showSeconds]="true"
|
|
62
|
+
/>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div class="flex flex-col gap-2">
|
|
66
|
+
<modus-time-input
|
|
67
|
+
inputId="seconds-default-time-input"
|
|
68
|
+
label="Default Format"
|
|
69
|
+
value="09:30"
|
|
70
|
+
[showSeconds]="false"
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</demo-example>
|
|
75
|
+
|
|
76
|
+
<demo-example
|
|
77
|
+
title="Time Input with Constraints"
|
|
78
|
+
description="Time inputs with min and max values."
|
|
79
|
+
>
|
|
80
|
+
<div class="flex flex-col gap-6">
|
|
81
|
+
<div class="flex flex-col gap-2">
|
|
82
|
+
<modus-time-input
|
|
83
|
+
inputId="min-max-time-input"
|
|
84
|
+
label="Business Hours"
|
|
85
|
+
value="09:00"
|
|
86
|
+
min="09:00"
|
|
87
|
+
max="17:00"
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<div class="flex flex-col gap-2">
|
|
92
|
+
<modus-time-input
|
|
93
|
+
inputId="afternoon-time-input"
|
|
94
|
+
label="Afternoon Hours"
|
|
95
|
+
value="14:00"
|
|
96
|
+
min="12:00"
|
|
97
|
+
max="18:00"
|
|
98
|
+
/>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</demo-example>
|
|
102
|
+
|
|
103
|
+
<demo-example
|
|
104
|
+
title="Required and Disabled States"
|
|
105
|
+
description="Time inputs in required and disabled states."
|
|
106
|
+
>
|
|
107
|
+
<div class="flex flex-col gap-6">
|
|
108
|
+
<div class="flex flex-col gap-2">
|
|
109
|
+
<modus-time-input
|
|
110
|
+
inputId="required-time-input"
|
|
111
|
+
label="Required"
|
|
112
|
+
value="09:00"
|
|
113
|
+
[required]="true"
|
|
114
|
+
/>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div class="flex flex-col gap-2">
|
|
118
|
+
<modus-time-input
|
|
119
|
+
inputId="disabled-time-input"
|
|
120
|
+
label="Disabled"
|
|
121
|
+
value="09:00"
|
|
122
|
+
[disabled]="true"
|
|
123
|
+
/>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</demo-example>
|
|
127
|
+
</demo-page>
|
|
128
|
+
`,
|
|
129
|
+
})
|
|
130
|
+
export class TimeInputDemoPageComponent {}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { Component, signal } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DemoPageComponent } from '../shared/demo-page.component';
|
|
4
|
+
import { DemoExampleComponent } from '../shared/demo-example.component';
|
|
5
|
+
import { ModusToastComponent, type ToastPosition } from '../../components/modus-toast.component';
|
|
6
|
+
import { ModusButtonComponent } from '../../components/modus-button.component';
|
|
7
|
+
import { ModusAlertComponent } from '../../components/modus-alert.component';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Toast variant types for styling.
|
|
11
|
+
*/
|
|
12
|
+
export type ToastVariant = 'success' | 'warning' | 'error' | 'info';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Interface for a toast item in the toasts array.
|
|
16
|
+
*/
|
|
17
|
+
export interface ToastItem {
|
|
18
|
+
id: string;
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
variant: ToastVariant;
|
|
22
|
+
dismissible: boolean;
|
|
23
|
+
position: ToastPosition;
|
|
24
|
+
delay: number | null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Demo page showcasing the Modus Toast component.
|
|
29
|
+
*
|
|
30
|
+
* Demonstrates toast features including:
|
|
31
|
+
* - Toast variants (success, warning, error, info)
|
|
32
|
+
* - Toast positions (9 positions grouped by vertical position)
|
|
33
|
+
* - Special features (clear all)
|
|
34
|
+
* - Interactive examples
|
|
35
|
+
*/
|
|
36
|
+
@Component({
|
|
37
|
+
selector: 'app-toast-demo-page',
|
|
38
|
+
standalone: true,
|
|
39
|
+
imports: [
|
|
40
|
+
CommonModule,
|
|
41
|
+
DemoPageComponent,
|
|
42
|
+
DemoExampleComponent,
|
|
43
|
+
ModusToastComponent,
|
|
44
|
+
ModusButtonComponent,
|
|
45
|
+
ModusAlertComponent,
|
|
46
|
+
],
|
|
47
|
+
template: `
|
|
48
|
+
<demo-page
|
|
49
|
+
title="Modus Toast"
|
|
50
|
+
description="Toasts deliver lightweight confirmations or alerts without disrupting workflow. Keep the message brief and allow dismissal."
|
|
51
|
+
>
|
|
52
|
+
<demo-example
|
|
53
|
+
title="Interactive Toast Triggers"
|
|
54
|
+
description="Click the buttons below to trigger different toasts in various positions and variants."
|
|
55
|
+
>
|
|
56
|
+
<div class="space-y-6">
|
|
57
|
+
<!-- Toast Variants -->
|
|
58
|
+
<div>
|
|
59
|
+
<div class="text-lg font-semibold text-foreground mb-4">Toast Variants</div>
|
|
60
|
+
<div class="flex flex-wrap gap-3">
|
|
61
|
+
<modus-button
|
|
62
|
+
color="primary"
|
|
63
|
+
variant="filled"
|
|
64
|
+
(buttonClick)="
|
|
65
|
+
addToast('success', 'top-end', 'Success!', 'Your action completed successfully.')
|
|
66
|
+
"
|
|
67
|
+
>
|
|
68
|
+
Success Toast
|
|
69
|
+
</modus-button>
|
|
70
|
+
<modus-button
|
|
71
|
+
color="warning"
|
|
72
|
+
variant="filled"
|
|
73
|
+
(buttonClick)="
|
|
74
|
+
addToast('warning', 'top-end', 'Warning!', 'Please review your input.')
|
|
75
|
+
"
|
|
76
|
+
>
|
|
77
|
+
Warning Toast
|
|
78
|
+
</modus-button>
|
|
79
|
+
<modus-button
|
|
80
|
+
color="danger"
|
|
81
|
+
variant="filled"
|
|
82
|
+
(buttonClick)="addToast('error', 'top-end', 'Error!', 'Something went wrong.')"
|
|
83
|
+
>
|
|
84
|
+
Error Toast
|
|
85
|
+
</modus-button>
|
|
86
|
+
<modus-button
|
|
87
|
+
color="secondary"
|
|
88
|
+
variant="filled"
|
|
89
|
+
(buttonClick)="
|
|
90
|
+
addToast('info', 'top-end', 'Info', 'Here\\'s some helpful information.')
|
|
91
|
+
"
|
|
92
|
+
>
|
|
93
|
+
Info Toast
|
|
94
|
+
</modus-button>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
<!-- Toast Positions -->
|
|
99
|
+
<div>
|
|
100
|
+
<div class="text-lg font-semibold text-foreground mb-4">Toast Positions</div>
|
|
101
|
+
<div class="space-y-4">
|
|
102
|
+
<!-- Top Positions -->
|
|
103
|
+
<div class="bg-card border-default rounded-lg p-4">
|
|
104
|
+
<div class="text-sm font-medium text-muted-foreground mb-3">Top</div>
|
|
105
|
+
<div class="flex flex-wrap gap-3">
|
|
106
|
+
<modus-button
|
|
107
|
+
color="secondary"
|
|
108
|
+
variant="outlined"
|
|
109
|
+
(buttonClick)="
|
|
110
|
+
addToast('info', 'top-start', 'Top Start', 'Toast in top-left corner')
|
|
111
|
+
"
|
|
112
|
+
>
|
|
113
|
+
Top Start
|
|
114
|
+
</modus-button>
|
|
115
|
+
<modus-button
|
|
116
|
+
color="secondary"
|
|
117
|
+
variant="outlined"
|
|
118
|
+
(buttonClick)="addToast('info', 'top-center', 'Top Center', 'Toast in top-center')"
|
|
119
|
+
>
|
|
120
|
+
Top Center
|
|
121
|
+
</modus-button>
|
|
122
|
+
<modus-button
|
|
123
|
+
color="secondary"
|
|
124
|
+
variant="outlined"
|
|
125
|
+
(buttonClick)="addToast('info', 'top-end', 'Top End', 'Toast in top-right corner')"
|
|
126
|
+
>
|
|
127
|
+
Top End
|
|
128
|
+
</modus-button>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<!-- Middle Positions -->
|
|
133
|
+
<div class="bg-card border-default rounded-lg p-4">
|
|
134
|
+
<div class="text-sm font-medium text-muted-foreground mb-3">Middle</div>
|
|
135
|
+
<div class="flex flex-wrap gap-3">
|
|
136
|
+
<modus-button
|
|
137
|
+
color="secondary"
|
|
138
|
+
variant="outlined"
|
|
139
|
+
(buttonClick)="
|
|
140
|
+
addToast('success', 'middle-start', 'Middle Start', 'Toast in middle-left')
|
|
141
|
+
"
|
|
142
|
+
>
|
|
143
|
+
Middle Start
|
|
144
|
+
</modus-button>
|
|
145
|
+
<modus-button
|
|
146
|
+
color="secondary"
|
|
147
|
+
variant="outlined"
|
|
148
|
+
(buttonClick)="
|
|
149
|
+
addToast('success', 'middle-center', 'Middle Center', 'Toast in center')
|
|
150
|
+
"
|
|
151
|
+
>
|
|
152
|
+
Middle Center
|
|
153
|
+
</modus-button>
|
|
154
|
+
<modus-button
|
|
155
|
+
color="secondary"
|
|
156
|
+
variant="outlined"
|
|
157
|
+
(buttonClick)="
|
|
158
|
+
addToast('success', 'middle-end', 'Middle End', 'Toast in middle-right')
|
|
159
|
+
"
|
|
160
|
+
>
|
|
161
|
+
Middle End
|
|
162
|
+
</modus-button>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
<!-- Bottom Positions -->
|
|
167
|
+
<div class="bg-card border-default rounded-lg p-4">
|
|
168
|
+
<div class="text-sm font-medium text-muted-foreground mb-3">Bottom</div>
|
|
169
|
+
<div class="flex flex-wrap gap-3">
|
|
170
|
+
<modus-button
|
|
171
|
+
color="secondary"
|
|
172
|
+
variant="outlined"
|
|
173
|
+
(buttonClick)="
|
|
174
|
+
addToast('warning', 'bottom-start', 'Bottom Start', 'Toast in bottom-left')
|
|
175
|
+
"
|
|
176
|
+
>
|
|
177
|
+
Bottom Start
|
|
178
|
+
</modus-button>
|
|
179
|
+
<modus-button
|
|
180
|
+
color="secondary"
|
|
181
|
+
variant="outlined"
|
|
182
|
+
(buttonClick)="
|
|
183
|
+
addToast('warning', 'bottom-center', 'Bottom Center', 'Toast in bottom-center')
|
|
184
|
+
"
|
|
185
|
+
>
|
|
186
|
+
Bottom Center
|
|
187
|
+
</modus-button>
|
|
188
|
+
<modus-button
|
|
189
|
+
color="secondary"
|
|
190
|
+
variant="outlined"
|
|
191
|
+
(buttonClick)="
|
|
192
|
+
addToast('warning', 'bottom-end', 'Bottom End', 'Toast in bottom-right')
|
|
193
|
+
"
|
|
194
|
+
>
|
|
195
|
+
Bottom End
|
|
196
|
+
</modus-button>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
|
|
202
|
+
<!-- Special Features -->
|
|
203
|
+
<div>
|
|
204
|
+
<div class="text-lg font-semibold text-foreground mb-4">Special Features</div>
|
|
205
|
+
<div class="flex flex-wrap gap-3">
|
|
206
|
+
<modus-button color="danger" variant="outlined" (buttonClick)="clearAllToasts()">
|
|
207
|
+
Clear All Toasts
|
|
208
|
+
</modus-button>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
<!-- Toast Display -->
|
|
213
|
+
@for (toast of toasts(); track toast.id) {
|
|
214
|
+
<modus-toast [position]="toast.position" [delay]="toast.delay ?? undefined">
|
|
215
|
+
<modus-alert
|
|
216
|
+
[alertTitle]="toast.title"
|
|
217
|
+
[alertDescription]="toast.description"
|
|
218
|
+
[variant]="toast.variant"
|
|
219
|
+
[dismissible]="toast.dismissible"
|
|
220
|
+
(dismiss)="removeToast(toast.id)"
|
|
221
|
+
/>
|
|
222
|
+
</modus-toast>
|
|
223
|
+
}
|
|
224
|
+
</div>
|
|
225
|
+
</demo-example>
|
|
226
|
+
</demo-page>
|
|
227
|
+
`,
|
|
228
|
+
})
|
|
229
|
+
export class ToastDemoPageComponent {
|
|
230
|
+
readonly toasts = signal<ToastItem[]>([]);
|
|
231
|
+
|
|
232
|
+
addToast(
|
|
233
|
+
variant: ToastVariant,
|
|
234
|
+
position: ToastPosition = 'top-end',
|
|
235
|
+
title: string,
|
|
236
|
+
description: string,
|
|
237
|
+
): void {
|
|
238
|
+
const id = `toast-${variant}-${Date.now()}`;
|
|
239
|
+
const newToast: ToastItem = {
|
|
240
|
+
id,
|
|
241
|
+
title,
|
|
242
|
+
description,
|
|
243
|
+
variant,
|
|
244
|
+
dismissible: true,
|
|
245
|
+
position,
|
|
246
|
+
delay: variant === 'warning' ? null : 4000,
|
|
247
|
+
};
|
|
248
|
+
this.toasts.update((prev) => [...prev, newToast]);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
removeToast(toastId: string): void {
|
|
252
|
+
this.toasts.update((prev) => prev.filter((toast) => toast.id !== toastId));
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
clearAllToasts(): void {
|
|
256
|
+
this.toasts.set([]);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, 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 { ModusToolbarComponent } from '../../components/modus-toolbar.component';
|
|
6
|
+
import { ModusButtonComponent } from '../../components/modus-button.component';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Demo page showcasing the Modus Toolbar component.
|
|
10
|
+
*
|
|
11
|
+
* Demonstrates toolbar features including:
|
|
12
|
+
* - Document toolbar with start, center, and end slots
|
|
13
|
+
* - Icon buttons with text labels
|
|
14
|
+
* - Different button variants and sizes
|
|
15
|
+
*/
|
|
16
|
+
@Component({
|
|
17
|
+
selector: 'app-toolbar-demo-page',
|
|
18
|
+
standalone: true,
|
|
19
|
+
imports: [
|
|
20
|
+
CommonModule,
|
|
21
|
+
DemoPageComponent,
|
|
22
|
+
DemoExampleComponent,
|
|
23
|
+
ModusToolbarComponent,
|
|
24
|
+
ModusButtonComponent,
|
|
25
|
+
],
|
|
26
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27
|
+
template: `
|
|
28
|
+
<demo-page
|
|
29
|
+
title="Modus Toolbar"
|
|
30
|
+
description="Toolbars organize actions for a focused context. Keep primary commands on the left, secondary options on the right, and maintain consistent spacing."
|
|
31
|
+
>
|
|
32
|
+
<demo-example
|
|
33
|
+
title="Document Toolbar"
|
|
34
|
+
description="Pair icon buttons with text labels when space allows."
|
|
35
|
+
>
|
|
36
|
+
<modus-toolbar>
|
|
37
|
+
<div slot="start" class="flex items-center gap-3 text-sm text-foreground">
|
|
38
|
+
<i class="modus-icons text-primary">pencil</i>
|
|
39
|
+
<div class="font-medium">Proposal draft</div>
|
|
40
|
+
</div>
|
|
41
|
+
<div slot="center" class="flex gap-2">
|
|
42
|
+
<modus-button size="sm" icon="undo" iconPosition="left">Undo</modus-button>
|
|
43
|
+
<modus-button size="sm" icon="redo" iconPosition="left">Redo</modus-button>
|
|
44
|
+
</div>
|
|
45
|
+
<div slot="end" class="flex gap-2">
|
|
46
|
+
<modus-button size="sm" variant="borderless">Share</modus-button>
|
|
47
|
+
<modus-button size="sm" color="primary">Publish</modus-button>
|
|
48
|
+
</div>
|
|
49
|
+
</modus-toolbar>
|
|
50
|
+
</demo-example>
|
|
51
|
+
</demo-page>
|
|
52
|
+
`,
|
|
53
|
+
})
|
|
54
|
+
export class ToolbarDemoPageComponent {}
|
|
@@ -0,0 +1,163 @@
|
|
|
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 { ModusTooltipComponent } from '../../components/modus-tooltip.component';
|
|
6
|
+
import { ModusButtonComponent } from '../../components/modus-button.component';
|
|
7
|
+
import { ModusIconComponent } from '../../components/modus-icon.component';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Demo page showcasing the Modus Tooltip component.
|
|
11
|
+
*
|
|
12
|
+
* Demonstrates tooltip features including:
|
|
13
|
+
* - Basic tooltip
|
|
14
|
+
* - Different positions
|
|
15
|
+
* - With buttons
|
|
16
|
+
* - With icons
|
|
17
|
+
* - Force open state
|
|
18
|
+
*/
|
|
19
|
+
@Component({
|
|
20
|
+
selector: 'app-tooltip-demo-page',
|
|
21
|
+
standalone: true,
|
|
22
|
+
imports: [
|
|
23
|
+
CommonModule,
|
|
24
|
+
DemoPageComponent,
|
|
25
|
+
DemoExampleComponent,
|
|
26
|
+
ModusTooltipComponent,
|
|
27
|
+
ModusButtonComponent,
|
|
28
|
+
ModusIconComponent,
|
|
29
|
+
],
|
|
30
|
+
template: `
|
|
31
|
+
<demo-page
|
|
32
|
+
title="Modus Tooltip"
|
|
33
|
+
description="Tooltip components provide contextual information when users hover over or focus on elements. Use tooltips to provide helpful hints, additional context, or brief explanations."
|
|
34
|
+
>
|
|
35
|
+
<demo-example
|
|
36
|
+
title="Basic Tooltip"
|
|
37
|
+
description="Simple tooltip with text content."
|
|
38
|
+
>
|
|
39
|
+
<div class="flex flex-wrap gap-4">
|
|
40
|
+
<modus-tooltip content="This is a helpful tooltip">
|
|
41
|
+
<modus-button color="primary">Hover me</modus-button>
|
|
42
|
+
</modus-tooltip>
|
|
43
|
+
|
|
44
|
+
<modus-tooltip content="Click to save your changes">
|
|
45
|
+
<modus-button color="secondary" icon="save_disk" iconPosition="left">Save</modus-button>
|
|
46
|
+
</modus-tooltip>
|
|
47
|
+
</div>
|
|
48
|
+
</demo-example>
|
|
49
|
+
|
|
50
|
+
<demo-example
|
|
51
|
+
title="Tooltip Positions"
|
|
52
|
+
description="Tooltips in different positions relative to the element."
|
|
53
|
+
>
|
|
54
|
+
<div class="flex flex-wrap gap-4">
|
|
55
|
+
<modus-tooltip content="Tooltip on top" position="top">
|
|
56
|
+
<modus-button color="primary">Top</modus-button>
|
|
57
|
+
</modus-tooltip>
|
|
58
|
+
|
|
59
|
+
<modus-tooltip content="Tooltip on right" position="right">
|
|
60
|
+
<modus-button color="primary">Right</modus-button>
|
|
61
|
+
</modus-tooltip>
|
|
62
|
+
|
|
63
|
+
<modus-tooltip content="Tooltip on bottom" position="bottom">
|
|
64
|
+
<modus-button color="primary">Bottom</modus-button>
|
|
65
|
+
</modus-tooltip>
|
|
66
|
+
|
|
67
|
+
<modus-tooltip content="Tooltip on left" position="left">
|
|
68
|
+
<modus-button color="primary">Left</modus-button>
|
|
69
|
+
</modus-tooltip>
|
|
70
|
+
</div>
|
|
71
|
+
</demo-example>
|
|
72
|
+
|
|
73
|
+
<demo-example
|
|
74
|
+
title="Tooltip with Icons"
|
|
75
|
+
description="Tooltips on icon buttons and icon-only elements."
|
|
76
|
+
>
|
|
77
|
+
<div class="flex flex-wrap gap-4">
|
|
78
|
+
<modus-tooltip content="Settings menu">
|
|
79
|
+
<modus-button color="tertiary" icon="settings" iconPosition="only" ariaLabel="Settings" />
|
|
80
|
+
</modus-tooltip>
|
|
81
|
+
|
|
82
|
+
<modus-tooltip content="Edit item">
|
|
83
|
+
<modus-button color="tertiary" icon="file_edit" iconPosition="only" ariaLabel="Edit" />
|
|
84
|
+
</modus-tooltip>
|
|
85
|
+
|
|
86
|
+
<modus-tooltip content="Delete item">
|
|
87
|
+
<modus-button color="danger" icon="delete" iconPosition="only" ariaLabel="Delete" />
|
|
88
|
+
</modus-tooltip>
|
|
89
|
+
|
|
90
|
+
<modus-tooltip content="Information icon">
|
|
91
|
+
<modus-icon name="info" variant="outlined" size="lg" [decorative]="false" ariaLabel="Information" />
|
|
92
|
+
</modus-tooltip>
|
|
93
|
+
|
|
94
|
+
<modus-tooltip content="Help and support">
|
|
95
|
+
<modus-icon name="help" variant="outlined" size="lg" [decorative]="false" ariaLabel="Help" />
|
|
96
|
+
</modus-tooltip>
|
|
97
|
+
</div>
|
|
98
|
+
</demo-example>
|
|
99
|
+
|
|
100
|
+
<demo-example
|
|
101
|
+
title="Tooltip with Text Content"
|
|
102
|
+
description="Tooltips on text and other content elements."
|
|
103
|
+
>
|
|
104
|
+
<div class="flex flex-col gap-4">
|
|
105
|
+
<div class="flex items-center gap-2">
|
|
106
|
+
<span class="text-sm text-foreground">Hover over the</span>
|
|
107
|
+
<modus-tooltip content="This term provides additional context when hovered">
|
|
108
|
+
<span class="text-sm text-primary underline cursor-help">highlighted term</span>
|
|
109
|
+
</modus-tooltip>
|
|
110
|
+
<span class="text-sm text-foreground">for more information.</span>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<div class="flex items-center gap-2">
|
|
114
|
+
<modus-tooltip content="This is a required field that must be completed">
|
|
115
|
+
<span class="text-sm text-foreground flex items-center gap-1">
|
|
116
|
+
Required Field
|
|
117
|
+
<i class="modus-icons text-xs text-destructive" aria-hidden="true">alert</i>
|
|
118
|
+
</span>
|
|
119
|
+
</modus-tooltip>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</demo-example>
|
|
123
|
+
|
|
124
|
+
<demo-example
|
|
125
|
+
title="Auto Position Tooltip"
|
|
126
|
+
description="Tooltip with automatic position detection."
|
|
127
|
+
>
|
|
128
|
+
<div class="flex flex-wrap gap-4">
|
|
129
|
+
<modus-tooltip content="Auto position adjusts based on available space" position="auto">
|
|
130
|
+
<modus-button color="primary">Auto Position</modus-button>
|
|
131
|
+
</modus-tooltip>
|
|
132
|
+
</div>
|
|
133
|
+
</demo-example>
|
|
134
|
+
|
|
135
|
+
<demo-example
|
|
136
|
+
title="Real-World Example"
|
|
137
|
+
description="Tooltips in a typical UI context."
|
|
138
|
+
>
|
|
139
|
+
<div class="flex flex-col gap-6 p-6 rounded-lg bg-card border-default">
|
|
140
|
+
<div class="flex items-center justify-between">
|
|
141
|
+
<div class="flex items-center gap-2">
|
|
142
|
+
<span class="text-base font-medium text-foreground">Document Editor</span>
|
|
143
|
+
<modus-tooltip content="Save your document (Ctrl+S)">
|
|
144
|
+
<modus-button color="tertiary" icon="save_disk" iconPosition="only" ariaLabel="Save" size="sm" />
|
|
145
|
+
</modus-tooltip>
|
|
146
|
+
<modus-tooltip content="Print document (Ctrl+P)">
|
|
147
|
+
<modus-button color="tertiary" icon="printer" iconPosition="only" ariaLabel="Print" size="sm" />
|
|
148
|
+
</modus-tooltip>
|
|
149
|
+
<modus-tooltip content="Share document">
|
|
150
|
+
<modus-button color="tertiary" icon="share" iconPosition="only" ariaLabel="Share" size="sm" />
|
|
151
|
+
</modus-tooltip>
|
|
152
|
+
</div>
|
|
153
|
+
<modus-tooltip content="Open settings menu">
|
|
154
|
+
<modus-button color="tertiary" icon="settings" iconPosition="only" ariaLabel="Settings" size="sm" />
|
|
155
|
+
</modus-tooltip>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</demo-example>
|
|
159
|
+
</demo-page>
|
|
160
|
+
`,
|
|
161
|
+
})
|
|
162
|
+
export class TooltipDemoPageComponent {}
|
|
163
|
+
|