@team-codeme/crud-forge 0.0.0-stage → 1.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/.cursor/agents/generator-engineer.md +31 -0
- package/.cursor/agents/keycloak-engineer.md +33 -0
- package/.cursor/agents/qa-engineer.md +32 -0
- package/.cursor/agents/security-reviewer.md +30 -0
- package/.cursor/mcp.json +13 -0
- package/.cursor/rules/crudforge-precautions.mdc +16 -0
- package/.cursor/rules/playwright-browser.mdc +30 -0
- package/.cursor/rules/readme-todo-sync.mdc +13 -0
- package/.env.qa.example +19 -0
- package/.github/workflows/qa-live.yml +32 -0
- package/.github/workflows/qa.yml +27 -0
- package/.vscode/settings.json +32 -0
- package/QA/IAM-PLAN.md +25 -0
- package/QA/IAM-RESULTS.md +39 -0
- package/QA/IAM-TESTCASES.md +36 -0
- package/QA/IAM-TODO.md +7 -0
- package/QA/KEYCLOAK-BOOTSTRAP.md +105 -0
- package/QA/PLAN.md +43 -0
- package/QA/RESULTS.md +59 -0
- package/QA/TESTCASES.md +65 -0
- package/QA/TODO.md +14 -0
- package/QA/pmb-dev/README.md +49 -0
- package/QA/pmb-dev/config/config.yml +152 -0
- package/QA/pmb-dev/gdl/i.gdl +17 -0
- package/README.md +851 -2
- package/Todo.md +207 -0
- package/assets/branding/crudforge-logo.png +0 -0
- package/assets/branding/crudforge-mark.png +0 -0
- package/branding/poster-crudforge.jpg +0 -0
- package/chat/last-chat/Investigating Mock Data Configuration.md +428 -0
- package/cli.js +167 -0
- package/config/default-config.yml +245 -0
- package/docs/performance/README.md +217 -0
- package/docs/performance/after.json +111 -0
- package/docs/performance/before.json +111 -0
- package/docs/quality/README.md +276 -0
- package/e2e/crudforge.e2e.yml +47 -0
- package/e2e/crudforge.field-profile.yml +33 -0
- package/e2e/crudforge.iam-live.yml +124 -0
- package/e2e/crudforge.iam.yml +62 -0
- package/e2e/tests/field-profile.spec.js +152 -0
- package/e2e/tests/generated-crud.spec.js +251 -0
- package/e2e/tests/iam-live.spec.js +149 -0
- package/e2e/tests/iam-pack.spec.js +151 -0
- package/e2e/tests/list-state.spec.js +73 -0
- package/features.csv +27 -0
- package/fuse-starter-pack/branding/crudforge-mark-source.jpg +0 -0
- package/fuse-starter-pack/branding/crudforge-mark-source.png +0 -0
- package/fuse-starter-pack/branding/crudforge-mark.png +0 -0
- package/fuse-starter-pack/branding/crudforge-wordmark-source.jpg +0 -0
- package/fuse-starter-pack/branding/crudforge-wordmark-source.png +0 -0
- package/fuse-starter-pack/branding/crudforge-wordmark.png +0 -0
- package/fuse-starter-pack/fuse-v21.1/Dockerfile +14 -0
- package/fuse-starter-pack/fuse-v21.1/LICENSE.md +6 -0
- package/fuse-starter-pack/fuse-v21.1/README.md +59 -0
- package/fuse-starter-pack/fuse-v21.1/angular.json +113 -0
- package/fuse-starter-pack/fuse-v21.1/eslint.config.ts +150 -0
- package/fuse-starter-pack/fuse-v21.1/nginx.conf +23 -0
- package/fuse-starter-pack/fuse-v21.1/nginx.dev.conf +18 -0
- package/fuse-starter-pack/fuse-v21.1/package-lock.json +11513 -0
- package/fuse-starter-pack/fuse-v21.1/package.json +69 -0
- package/fuse-starter-pack/fuse-v21.1/postcss.config.json +5 -0
- package/fuse-starter-pack/fuse-v21.1/prettier.config.ts +15 -0
- package/fuse-starter-pack/fuse-v21.1/proxy.conf.json +8 -0
- package/fuse-starter-pack/fuse-v21.1/proxy.dev.conf.json +8 -0
- package/fuse-starter-pack/fuse-v21.1/public/favicon.png +0 -0
- package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/Geist-Italic.woff2 +0 -0
- package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/Geist.woff2 +0 -0
- package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/GeistMono-Italic.woff2 +0 -0
- package/fuse-starter-pack/fuse-v21.1/public/fonts/geist/GeistMono.woff2 +0 -0
- package/fuse-starter-pack/fuse-v21.1/public/i18n/en.json +8 -0
- package/fuse-starter-pack/fuse-v21.1/public/i18n/es.json +8 -0
- package/fuse-starter-pack/fuse-v21.1/public/images/flags/ES.svg +79 -0
- package/fuse-starter-pack/fuse-v21.1/public/images/flags/US.svg +14 -0
- package/fuse-starter-pack/fuse-v21.1/public/images/flags/where-to-find-other-flags.txt +5 -0
- package/fuse-starter-pack/fuse-v21.1/public/images/logo/logo-mark.png +0 -0
- package/fuse-starter-pack/fuse-v21.1/public/images/logo/logo.png +0 -0
- package/fuse-starter-pack/fuse-v21.1/push.sh +27 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/app.config.server.ts +10 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/app.config.ts +64 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/app.routes.server.ts +8 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/app.routes.ts +39 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/app.ts +22 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/icons/index.ts +1 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/icons/lucide.ts +1 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/icons/provider.ts +23 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/local-storage/index.ts +2 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/local-storage/local-storage.ts +109 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/local-storage/provider.ts +15 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/media/index.ts +2 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/media/media.ts +64 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/media/provider.ts +15 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/index.ts +3 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/models/theming.ts +13 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/palette.ts +209 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/provider.ts +24 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/theming/theming.ts +129 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/core/transloco/transloco-http-loader.ts +12 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/data/navigation.ts +176 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/layout.ts +77 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/language-switcher.ts +91 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/navigation.ts +238 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/notifications.ts +252 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/scheme-switcher.ts +58 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/sidebar.ts +31 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/layout/ui/user.ts +132 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/data/academy.ts +753 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/data/model.ts +27 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/features/course.ts +318 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/features/courses.ts +228 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/academy/routes.ts +14 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/data/contacts.ts +4372 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/data/model.ts +34 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/features/contact.ts +239 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/features/contacts.ts +185 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/contacts/routes.ts +16 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/data/file-manager.ts +261 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/data/model.ts +12 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/features/file-manager.ts +131 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/routes.ts +15 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/file-manager/ui/list.ts +164 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/faq.ts +288 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/guide.ts +134 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/home.ts +219 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/features/support.ts +161 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/help-center/routes.ts +33 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/data/model.ts +18 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/data/notes.ts +324 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/features/note.ts +152 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/features/notes.ts +118 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/notes/routes.ts +16 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/data/model.ts +17 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/data/tasks.ts +562 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/features/task.ts +195 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/features/tasks.ts +271 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/apps/tasks/routes.ts +16 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/data/analytics.ts +1620 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/data/finance.ts +1065 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/data/project.ts +376 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/analytics/analytics.ts +1096 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/finance/finance.ts +658 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/project/budget-table.ts +188 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/features/project/project.ts +565 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/dashboards/routes.ts +23 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/changelog/changelog.ts +932 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/getting-started/building.ts +33 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/getting-started/development.ts +42 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/features/getting-started/installation.ts +47 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/layout.ts +9 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/documentation/routes.ts +45 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/error/features/error-page.ts +70 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/error/routes.ts +21 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/notifications/features/notifications.ts +262 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/notifications/routes.ts +10 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/account.ts +238 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/notifications.ts +134 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/plan-and-billing.ts +238 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/security.ts +211 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/features/team.ts +188 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/layout.ts +109 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/settings/routes.ts +37 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/modules/extras/welcome/welcome.component.ts +22 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/admin/routes.ts +95 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/forgot-password/forgot-password.html +54 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/forgot-password/forgot-password.ts +51 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/reset-password/reset-password.html +82 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/reset-password/reset-password.ts +69 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-in/sign-in.html +132 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-in/sign-in.ts +54 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-up/sign-up.html +183 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/features/sign-up/sign-up.ts +56 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/layout.ts +9 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/auth/routes.ts +34 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/coming-soon/features/coming-soon.ts +156 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/coming-soon/layout.ts +9 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/coming-soon/routes.ts +16 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/layout/layout.ts +9 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/modules/home/features/home.ts +23 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/modules/home/routes.ts +10 -0
- package/fuse-starter-pack/fuse-v21.1/src/app/domains/website/routes.ts +30 -0
- package/fuse-starter-pack/fuse-v21.1/src/environments/environment.mock.ts +5 -0
- package/fuse-starter-pack/fuse-v21.1/src/environments/environment.prod.ts +5 -0
- package/fuse-starter-pack/fuse-v21.1/src/environments/environment.ts +5 -0
- package/fuse-starter-pack/fuse-v21.1/src/index.html +66 -0
- package/fuse-starter-pack/fuse-v21.1/src/main.server.ts +11 -0
- package/fuse-starter-pack/fuse-v21.1/src/main.ts +5 -0
- package/fuse-starter-pack/fuse-v21.1/src/server.ts +70 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/base/base.css +63 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/base/typography.css +54 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/components/a.css +18 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/components/input.css +22 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/components/kbd.css +55 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/components/material.css +1149 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/styles.css +31 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/tailwind/theme.css +147 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/tailwind/utilities.css +563 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/tailwind/variants.css +4 -0
- package/fuse-starter-pack/fuse-v21.1/src/styles/third-party/lucide-icons.css +12 -0
- package/fuse-starter-pack/fuse-v21.1/tsconfig.app.json +16 -0
- package/fuse-starter-pack/fuse-v21.1/tsconfig.json +37 -0
- package/fuse-starter-pack/fuse-v21.1/tsconfig.spec.json +10 -0
- package/generator/README.md +12 -0
- package/generator/issues/.gitkeep +0 -0
- package/package.json +56 -4
- package/playwright.config.js +29 -0
- package/playwright.field-profile.config.js +6 -0
- package/playwright.iam-live.config.js +31 -0
- package/playwright.iam.config.js +29 -0
- package/playwright.list-state.config.js +6 -0
- package/playwright.performance.config.js +1 -0
- package/run-config-tests.sh +5 -0
- package/scripts/e2e-paths.js +89 -0
- package/scripts/e2e-prepare-field-profile.js +17 -0
- package/scripts/e2e-prepare-iam-live.js +135 -0
- package/scripts/e2e-prepare-iam.js +65 -0
- package/scripts/e2e-prepare.js +72 -0
- package/scripts/e2e-serve-iam-live.js +28 -0
- package/scripts/e2e-serve-iam.js +28 -0
- package/scripts/e2e-serve.js +28 -0
- package/scripts/performance/generate.js +17 -0
- package/scripts/performance/measure.js +55 -0
- package/scripts/postinstall.js +9 -0
- package/scripts/prepare-quality-apps.js +34 -0
- package/scripts/run-config-tests.js +63 -0
- package/src/assets/logo-with-lable.jpeg +0 -0
- package/src/assets/logo.jpeg +0 -0
- package/src/commands/bootstrap.js +92 -0
- package/src/commands/doctor.js +403 -0
- package/src/commands/generate.js +301 -0
- package/src/commands/init-config.js +310 -0
- package/src/commands/keycloak-options.js +182 -0
- package/src/commands/validate.js +52 -0
- package/src/config/auth-config.js +183 -0
- package/src/config/default-values.js +235 -0
- package/src/config/env-refs.js +71 -0
- package/src/config/field-preferences.js +99 -0
- package/src/config/input-sources.js +104 -0
- package/src/config/load-config.js +166 -0
- package/src/config/proxy-routes.js +44 -0
- package/src/generator/access-control-tools.js +334 -0
- package/src/generator/ai-docs.js +691 -0
- package/src/generator/application-tests.js +252 -0
- package/src/generator/auth-pack.js +965 -0
- package/src/generator/embed-config.js +431 -0
- package/src/generator/entity-layout.js +30 -0
- package/src/generator/fuse-build.js +57 -0
- package/src/generator/fuse-runtime.js +344 -0
- package/src/generator/generated-banner.js +137 -0
- package/src/generator/index.js +874 -0
- package/src/generator/project-output.js +126 -0
- package/src/generator/team-pack.js +220 -0
- package/src/index.js +68 -0
- package/src/parser/gdl-parser.js +169 -0
- package/src/parser/jdl-parser.js +171 -0
- package/src/presets/pmb-test.js +139 -0
- package/src/presets/static-source.js +73 -0
- package/src/presets/store.js +96 -0
- package/src/provision/admin-service.js +148 -0
- package/src/provision/bootstrap.js +147 -0
- package/src/provision/http.js +123 -0
- package/src/provision/keycloak-admin-rest.js +335 -0
- package/src/provision/state.js +51 -0
- package/src/provision/token.js +52 -0
- package/src/templates/angular/auth/access-control.service.ts.ejs +179 -0
- package/src/templates/angular/auth/access-ctrl.pipe.ts.ejs +20 -0
- package/src/templates/angular/auth/auth.guard.ts.ejs +27 -0
- package/src/templates/angular/auth/auth.interceptor.ts.ejs +53 -0
- package/src/templates/angular/auth/auth.service.ts.ejs +594 -0
- package/src/templates/angular/auth/auth.utils.ts.ejs +28 -0
- package/src/templates/angular/auth/current-user.ts.ejs +24 -0
- package/src/templates/angular/auth/disabled-account-overlay.component.css.ejs +95 -0
- package/src/templates/angular/auth/disabled-account-overlay.component.html.ejs +33 -0
- package/src/templates/angular/auth/disabled-account-overlay.component.ts.ejs +23 -0
- package/src/templates/angular/auth/fuse-account.ts.ejs +234 -0
- package/src/templates/angular/auth/fuse-user.ts.ejs +264 -0
- package/src/templates/angular/auth/has-permission.directive.ts.ejs +51 -0
- package/src/templates/angular/auth/index.ts.ejs +24 -0
- package/src/templates/angular/auth/keycloak-admin.service.ts.ejs +670 -0
- package/src/templates/angular/auth/landing.guard.ts.ejs +61 -0
- package/src/templates/angular/auth/no-auth.guard.ts.ejs +19 -0
- package/src/templates/angular/auth/permission-attribute.util.ts.ejs +182 -0
- package/src/templates/angular/auth/sign-in.ts.ejs +60 -0
- package/src/templates/angular/entity/_entity_.model.ts.ejs +64 -0
- package/src/templates/angular/entity/_entity_.routes.ts.ejs +9 -0
- package/src/templates/angular/entity/components/forms/form/_entity_-form.component.html.ejs +168 -0
- package/src/templates/angular/entity/components/forms/form/_entity_-form.component.ts.ejs +175 -0
- package/src/templates/angular/entity/components/forms/form-page/_entity_-form-page.component.html.ejs +10 -0
- package/src/templates/angular/entity/components/forms/form-page/_entity_-form-page.component.ts.ejs +86 -0
- package/src/templates/angular/entity/components/forms/update/_entity_-form.service.ts.ejs +136 -0
- package/src/templates/angular/entity/components/interaction/actions/_entity_-actions.component.html.ejs +68 -0
- package/src/templates/angular/entity/components/interaction/actions/_entity_-actions.component.ts.ejs +69 -0
- package/src/templates/angular/entity/components/interaction/filter/_entity_-filter.component.html.ejs +111 -0
- package/src/templates/angular/entity/components/interaction/filter/_entity_-filter.component.ts.ejs +102 -0
- package/src/templates/angular/entity/components/presentation/card/_entity_-card.component.css.ejs +33 -0
- package/src/templates/angular/entity/components/presentation/card/_entity_-card.component.html.ejs +29 -0
- package/src/templates/angular/entity/components/presentation/card/_entity_-card.component.ts.ejs +93 -0
- package/src/templates/angular/entity/components/presentation/detail/_entity_-detail.component.css.ejs +54 -0
- package/src/templates/angular/entity/components/presentation/detail/_entity_-detail.component.html.ejs +58 -0
- package/src/templates/angular/entity/components/presentation/detail/_entity_-detail.component.ts.ejs +47 -0
- package/src/templates/angular/entity/components/presentation/list/_entity_-list.component.html.ejs +419 -0
- package/src/templates/angular/entity/components/presentation/list/_entity_-list.component.scss.ejs +48 -0
- package/src/templates/angular/entity/components/presentation/list/_entity_-list.component.ts.ejs +592 -0
- package/src/templates/angular/entity/service/_entity_.service.ts.ejs +153 -0
- package/src/templates/angular/entity/settings/_entity_.settings.ts.ejs +49 -0
- package/src/templates/angular/enums/_enum_.model.ts.ejs +11 -0
- package/src/templates/angular/iam/change-password.component.html.ejs +39 -0
- package/src/templates/angular/iam/change-password.component.ts.ejs +44 -0
- package/src/templates/angular/iam/no-access.component.ts.ejs +17 -0
- package/src/templates/angular/iam/role-list.component.html.ejs +331 -0
- package/src/templates/angular/iam/role-list.component.scss.ejs +107 -0
- package/src/templates/angular/iam/role-list.component.ts.ejs +597 -0
- package/src/templates/angular/iam/role-management/role-header.component.html.ejs +51 -0
- package/src/templates/angular/iam/role-management/role-header.component.ts.ejs +45 -0
- package/src/templates/angular/iam/role-management/role-inheritance.component.html.ejs +15 -0
- package/src/templates/angular/iam/role-management/role-inheritance.component.ts.ejs +19 -0
- package/src/templates/angular/iam/role-management/role-permissions-panel.component.css.ejs +24 -0
- package/src/templates/angular/iam/role-management/role-permissions-panel.component.html.ejs +108 -0
- package/src/templates/angular/iam/role-management/role-permissions-panel.component.ts.ejs +122 -0
- package/src/templates/angular/iam/role-management/role-users.component.html.ejs +104 -0
- package/src/templates/angular/iam/role-management/role-users.component.ts.ejs +53 -0
- package/src/templates/angular/iam/role-management/user-select-dialog.component.html.ejs +113 -0
- package/src/templates/angular/iam/role-management/user-select-dialog.component.ts.ejs +157 -0
- package/src/templates/angular/iam/role-permission-matrix.component.html.ejs +355 -0
- package/src/templates/angular/iam/role-permission-matrix.component.scss.ejs +217 -0
- package/src/templates/angular/iam/role-permission-matrix.component.ts.ejs +800 -0
- package/src/templates/angular/iam/screen-catalog.ts.ejs +147 -0
- package/src/templates/angular/iam/shared/confirm-dialog.component.ts.ejs +83 -0
- package/src/templates/angular/iam/shared/matrix-hierarchy.util.ts.ejs +196 -0
- package/src/templates/angular/iam/shared/permission-matrix-sound.ts.ejs +59 -0
- package/src/templates/angular/iam/shared/role-display.util.ts.ejs +43 -0
- package/src/templates/angular/iam/shared/role-permission-skeleton.component.ts.ejs +54 -0
- package/src/templates/angular/iam/shared/screen-matrix.util.ts.ejs +554 -0
- package/src/templates/angular/iam/shared/screen-navigation-map.ts.ejs +187 -0
- package/src/templates/angular/iam/shared/screen-navigation.registry.ts.ejs +64 -0
- package/src/templates/angular/iam/shared/text-highlight.pipe.ts.ejs +39 -0
- package/src/templates/angular/iam/user-access-matrix.component.html.ejs +212 -0
- package/src/templates/angular/iam/user-access-matrix.component.scss.ejs +34 -0
- package/src/templates/angular/iam/user-access-matrix.component.ts.ejs +239 -0
- package/src/templates/angular/iam/user-detail.component.html.ejs +143 -0
- package/src/templates/angular/iam/user-detail.component.ts.ejs +108 -0
- package/src/templates/angular/iam/user-form.component.html.ejs +63 -0
- package/src/templates/angular/iam/user-form.component.ts.ejs +100 -0
- package/src/templates/angular/iam/user-list.component.html.ejs +369 -0
- package/src/templates/angular/iam/user-list.component.scss.ejs +242 -0
- package/src/templates/angular/iam/user-list.component.ts.ejs +446 -0
- package/src/templates/angular/iam/user-management.routes.ts.ejs +47 -0
- package/src/templates/angular/iam/user-permission-matrix.component.html.ejs +231 -0
- package/src/templates/angular/iam/user-permission-matrix.component.scss.ejs +216 -0
- package/src/templates/angular/iam/user-permission-matrix.component.ts.ejs +516 -0
- package/src/templates/angular/shared/base/audit-user-name.pipe.ts.ejs +69 -0
- package/src/templates/angular/shared/base/base-filter.component.ts.ejs +245 -0
- package/src/templates/angular/shared/base/base-form.component.ts.ejs +109 -0
- package/src/templates/angular/shared/base/base-list.component.ts.ejs +507 -0
- package/src/templates/angular/shared/base/filter-types.ts.ejs +55 -0
- package/src/templates/angular/shared/base/input-format.directive.ts.ejs +47 -0
- package/src/templates/angular/shared/base/input-format.ts.ejs +15 -0
- package/src/templates/angular/shared/confirm-with-input-dialog.component.ts.ejs +91 -0
- package/src/templates/angular/shared/confirmation-dialog.component.ts.ejs +80 -0
- package/src/templates/angular/shared/list-styles.css.ejs +103 -0
- package/src/templates/angular/shared/loading-overlay.component.ts.ejs +24 -0
- package/src/templates/angular/shared/resizable.directive.ts.ejs +115 -0
- package/src/templates/angular/shared/snackbar-styles.css.ejs +11 -0
- package/src/templates/fuse-packs/access-control-tools/access-control-sync.js +819 -0
- package/src/templates/fuse-packs/access-control-tools/build-rename-map.js +67 -0
- package/src/templates/fuse-packs/access-control-tools/inject-qa-ids.js +14 -0
- package/src/templates/fuse-packs/access-control-tools/lib/hierarchy-scanner.js +628 -0
- package/src/templates/fuse-packs/access-control-tools/lib/hierarchy-scanner.test.js +323 -0
- package/src/templates/fuse-packs/access-control-tools/lib/html-scanner.js +362 -0
- package/src/templates/fuse-packs/access-control-tools/lib/id-rules.duplicate.test.js +136 -0
- package/src/templates/fuse-packs/access-control-tools/lib/id-rules.js +1095 -0
- package/src/templates/fuse-packs/access-control-tools/lib/ts-component-index.js +482 -0
- package/src/templates/fuse-packs/access-control-tools/output/.gitkeep +0 -0
- package/src/templates/fuse-packs/access-control-tools/run.sh +223 -0
- package/src/templates/fuse-packs/access-control-tools/scan-access-control.js +14 -0
- package/src/templates/fuse-packs/iam-assets/sound/apple-play.mp3 +0 -0
- package/src/templates/fuse-packs/iam-assets/sound/remove.mp3 +0 -0
- package/src/templates/generator/README.md +12 -0
- package/src/templates/testing/ci.cjs +45 -0
- package/src/templates/testing/mock.cjs +149 -0
- package/src/templates/testing/playwright.config.cjs +25 -0
- package/src/templates/testing/serve.cjs +22 -0
- package/src/templates/testing/smoke.spec.cjs +180 -0
- package/src/utils/branding.js +39 -0
- package/src/utils/colors.js +18 -0
- package/src/utils/diff.js +109 -0
- package/src/utils/merger.js +115 -0
- package/src/validator/backend-diagnostics.js +30 -0
- package/src/validator/blueprint-validator.js +276 -0
- package/src/validator/diagnostics.js +608 -0
- package/src/validator/pattern.js +28 -0
- package/test/auth-interceptor.js +84 -0
- package/test/auth-provision-checks.js +297 -0
- package/test/field-preferences.js +145 -0
- package/test/fixtures/field-profile.gdl +7 -0
- package/test/fixtures/mock.jdl +17 -0
- package/test/fixtures/mock.png +0 -0
- package/test/fixtures/performance/config.yml +33 -0
- package/test/fixtures/performance/large.gdl +199 -0
- package/test/fixtures/performance/small.gdl +7 -0
- package/test/fixtures/quality/custom.yml +22 -0
- package/test/fixtures/quality/go-duck.yml +22 -0
- package/test/fixtures/quality/jhipster.yml +30 -0
- package/test/fixtures/quality/representative.gdl +14 -0
- package/test/list-state.js +138 -0
- package/test/micro-functions-layout.js +95 -0
- package/test/performance-generation.js +32 -0
- package/test/pmb-preset.js +127 -0
- package/test/project-workflow.js +111 -0
- package/test/quality-features.js +250 -0
- package/test/verify-commands.js +83 -0
- package/test/verify.js +959 -0
- package/test-files/GDL/example.gdl +15 -0
- package/test-files/JDL/example.jdl +15 -0
- package/test-files/config/crudforge.config.yml +127 -0
- package/test-run.sh +272 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'docs-building',
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [MatIconModule, MatButtonModule],
|
|
9
|
+
template: `
|
|
10
|
+
<div
|
|
11
|
+
class="@container mx-auto flex w-full max-w-7xl flex-auto flex-col overflow-hidden"
|
|
12
|
+
>
|
|
13
|
+
<!-- Header -->
|
|
14
|
+
<div class="flex items-center gap-x-4 px-6 py-4 lg:px-10 lg:py-8">
|
|
15
|
+
<div class="text-xl font-medium tracking-tighter sm:text-2xl">
|
|
16
|
+
Building
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<!-- Content -->
|
|
21
|
+
<div class="prose max-w-3xl flex-auto px-6 pb-4 lg:px-10 lg:pb-8">
|
|
22
|
+
<p>
|
|
23
|
+
To build and serve the application locally, run the following command:
|
|
24
|
+
</p>
|
|
25
|
+
<pre><code>ng build</code></pre>
|
|
26
|
+
<p>
|
|
27
|
+
This command compiles the application and prepares it for deployment.
|
|
28
|
+
</p>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
`,
|
|
32
|
+
})
|
|
33
|
+
export default class DocsBuilding {}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'docs-development',
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [MatIconModule, MatButtonModule],
|
|
9
|
+
template: `
|
|
10
|
+
<div
|
|
11
|
+
class="@container mx-auto flex w-full max-w-7xl flex-auto flex-col overflow-hidden"
|
|
12
|
+
>
|
|
13
|
+
<!-- Header -->
|
|
14
|
+
<div class="flex items-center gap-x-4 px-6 py-4 lg:px-10 lg:py-8">
|
|
15
|
+
<div class="text-xl font-medium tracking-tighter sm:text-2xl">
|
|
16
|
+
Installation
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<!-- Content -->
|
|
21
|
+
<div class="prose max-w-3xl flex-auto px-6 pb-4 lg:px-10 lg:pb-8">
|
|
22
|
+
<p>
|
|
23
|
+
After the installation process finishes, run the following command
|
|
24
|
+
while still in your workspace directory:
|
|
25
|
+
</p>
|
|
26
|
+
<pre><code>ng serve</code></pre>
|
|
27
|
+
<p>
|
|
28
|
+
The <code>ng serve</code> command launches the server, watches your
|
|
29
|
+
files, and rebuilds the app as you make changes to those files.
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<h2>Alternate command</h2>
|
|
33
|
+
<pre><code>npm start</code></pre>
|
|
34
|
+
<p class="mb-12">
|
|
35
|
+
Alias for <code>ng serve</code> with a predefined port to avoid
|
|
36
|
+
conflicts with other Angular applications running on the same machine.
|
|
37
|
+
</p>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
`,
|
|
41
|
+
})
|
|
42
|
+
export default class DocsDevelopment {}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'docs-installation',
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [MatIconModule, MatButtonModule],
|
|
9
|
+
template: `
|
|
10
|
+
<div
|
|
11
|
+
class="@container mx-auto flex w-full max-w-7xl flex-auto flex-col overflow-hidden"
|
|
12
|
+
>
|
|
13
|
+
<!-- Header -->
|
|
14
|
+
<div class="flex items-center gap-x-4 px-6 py-4 lg:px-10 lg:py-8">
|
|
15
|
+
<div class="text-xl font-medium tracking-tighter sm:text-2xl">
|
|
16
|
+
Installation
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<!-- Content -->
|
|
21
|
+
<div class="prose max-w-3xl flex-auto px-6 pb-4 lg:px-10 lg:pb-8">
|
|
22
|
+
<h4>1. Unzip</h4>
|
|
23
|
+
<p>
|
|
24
|
+
Unzip the file you have downloaded from Themeforest and then unzip the
|
|
25
|
+
fuse-vX.X.X.zip file inside it.
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
<h4>2. Run the installation command</h4>
|
|
29
|
+
<p>
|
|
30
|
+
After you unzip the file, open a terminal and navigate to the folder
|
|
31
|
+
where you unzipped the file. Make sure you are in the same folder with
|
|
32
|
+
the <strong>package.json</strong> file before you run the installation
|
|
33
|
+
command.
|
|
34
|
+
</p>
|
|
35
|
+
<p>To complete the installation, enter the following command:</p>
|
|
36
|
+
<pre><code>npm install</code></pre>
|
|
37
|
+
<p>
|
|
38
|
+
This command will take some time and install all the required
|
|
39
|
+
libraries into the
|
|
40
|
+
<strong>node_modules</strong> directory in order for you to start
|
|
41
|
+
developing.
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
`,
|
|
46
|
+
})
|
|
47
|
+
export default class DocsInstallation {}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Routes } from '@angular/router';
|
|
2
|
+
|
|
3
|
+
const routes: Routes = [
|
|
4
|
+
{
|
|
5
|
+
path: '',
|
|
6
|
+
loadComponent: () => import('./layout'),
|
|
7
|
+
children: [
|
|
8
|
+
{
|
|
9
|
+
path: '',
|
|
10
|
+
pathMatch: 'full',
|
|
11
|
+
redirectTo: 'getting-started/introduction',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
path: 'getting-started',
|
|
15
|
+
children: [
|
|
16
|
+
{
|
|
17
|
+
path: '',
|
|
18
|
+
pathMatch: 'full',
|
|
19
|
+
redirectTo: 'introduction',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
path: 'installation',
|
|
23
|
+
loadComponent: () =>
|
|
24
|
+
import('./features/getting-started/installation'),
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
path: 'development',
|
|
28
|
+
loadComponent: () =>
|
|
29
|
+
import('./features/getting-started/development'),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
path: 'building',
|
|
33
|
+
loadComponent: () => import('./features/getting-started/building'),
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
path: 'changelog',
|
|
39
|
+
loadComponent: () => import('./features/changelog/changelog'),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export default routes;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, Input, isDevMode, OnInit } from '@angular/core';
|
|
2
|
+
import { MatButton } from '@angular/material/button';
|
|
3
|
+
import { RouterLink } from '@angular/router';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'error-page',
|
|
7
|
+
imports: [MatButton, RouterLink],
|
|
8
|
+
template: `
|
|
9
|
+
<div
|
|
10
|
+
class="flex flex-auto flex-col items-center justify-center p-6 text-center sm:p-10"
|
|
11
|
+
>
|
|
12
|
+
@if (errorCode) {
|
|
13
|
+
<div class="text-lg font-semibold text-primary-600">{{ errorCode }}</div>
|
|
14
|
+
}
|
|
15
|
+
<div class="mt-2 text-4xl font-bold md:text-[64px]/24">
|
|
16
|
+
{{ title }}
|
|
17
|
+
</div>
|
|
18
|
+
<div class="mt-2 font-medium text-neutral-500 md:mt-0 md:text-lg">
|
|
19
|
+
{{ message }}
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
@if (errorDetails && isDevMode) {
|
|
23
|
+
<div class="mt-4 p-4 text-left font-mono text-sm text-red-500 bg-red-50 border border-red-200 rounded-md max-w-3xl overflow-auto dark:bg-red-900/10 dark:border-red-500/20">
|
|
24
|
+
<strong>Debug Details:</strong><br/>
|
|
25
|
+
{{ errorDetails }}
|
|
26
|
+
</div>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
<div class="mt-8 flex flex-col items-center gap-3 sm:flex-row">
|
|
30
|
+
@if (showRetryAction) {
|
|
31
|
+
<button
|
|
32
|
+
matButton
|
|
33
|
+
(click)="retry()"
|
|
34
|
+
>
|
|
35
|
+
Retry
|
|
36
|
+
</button>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@if (showHomeAction) {
|
|
40
|
+
<a
|
|
41
|
+
matButton="filled"
|
|
42
|
+
[routerLink]="homeRoute"
|
|
43
|
+
>
|
|
44
|
+
{{ homeActionLabel }}
|
|
45
|
+
</a>
|
|
46
|
+
}
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
`,
|
|
50
|
+
})
|
|
51
|
+
export default class ErrorPage implements OnInit {
|
|
52
|
+
@Input() errorCode?: string | number = '404';
|
|
53
|
+
@Input() title: string = 'Page not found';
|
|
54
|
+
@Input() message: string = 'Sorry, we couldn’t find the page you’re looking for.';
|
|
55
|
+
@Input() errorDetails?: string;
|
|
56
|
+
@Input() showHomeAction: boolean = true;
|
|
57
|
+
@Input() homeActionLabel: string = 'Back to Dashboard';
|
|
58
|
+
@Input() homeRoute: string = '/admin';
|
|
59
|
+
@Input() showRetryAction: boolean = false;
|
|
60
|
+
|
|
61
|
+
public isDevMode: boolean = false;
|
|
62
|
+
|
|
63
|
+
ngOnInit(): void {
|
|
64
|
+
this.isDevMode = isDevMode();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
retry(): void {
|
|
68
|
+
window.location.reload();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Routes } from '@angular/router';
|
|
2
|
+
|
|
3
|
+
const routes: Routes = [
|
|
4
|
+
{
|
|
5
|
+
path: '404',
|
|
6
|
+
loadComponent: () => import('./features/error-page'),
|
|
7
|
+
data: { errorCode: 404, title: 'Page not found' }
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
path: '500',
|
|
11
|
+
loadComponent: () => import('./features/error-page'),
|
|
12
|
+
data: { errorCode: 500, title: 'Internal server error', message: 'Something went wrong on our end.' }
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
path: '403',
|
|
16
|
+
loadComponent: () => import('./features/error-page'),
|
|
17
|
+
data: { errorCode: 403, title: 'Access denied', message: 'You do not have permission to view this page.' }
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
export default routes;
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { MatButton } from '@angular/material/button';
|
|
3
|
+
import { MatIcon } from '@angular/material/icon';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'notifications',
|
|
7
|
+
imports: [MatButton, MatIcon],
|
|
8
|
+
template: `
|
|
9
|
+
<div
|
|
10
|
+
class="@container mx-auto flex w-full max-w-5xl flex-auto flex-col gap-4 p-6 sm:gap-8 lg:p-10"
|
|
11
|
+
>
|
|
12
|
+
<!-- Header -->
|
|
13
|
+
<div class="flex flex-col justify-between gap-y-0.5">
|
|
14
|
+
<div class="text-xl font-semibold tracking-tighter sm:text-2xl">
|
|
15
|
+
Notifications
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="font-medium text-neutral-500">
|
|
19
|
+
Application wide activities are listed here as individual items,
|
|
20
|
+
starting with the most recent.
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<!-- Timeline -->
|
|
25
|
+
<div class="flex flex-col gap-y-16">
|
|
26
|
+
<!-- Section -->
|
|
27
|
+
<div class="flex flex-col items-start">
|
|
28
|
+
<div
|
|
29
|
+
class="mb-8 rounded-md bg-primary-600 px-3 py-1.5 text-md font-medium text-white"
|
|
30
|
+
>
|
|
31
|
+
Yesterday
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- Item -->
|
|
35
|
+
<div class="relative flex gap-x-4 pb-12">
|
|
36
|
+
<div
|
|
37
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
38
|
+
></div>
|
|
39
|
+
<div
|
|
40
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
41
|
+
>
|
|
42
|
+
<mat-icon
|
|
43
|
+
class="text-white"
|
|
44
|
+
svgIcon="star"
|
|
45
|
+
/>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="flex flex-col">
|
|
48
|
+
<div class="text-md font-medium">
|
|
49
|
+
Your submission has been accepted
|
|
50
|
+
</div>
|
|
51
|
+
<div class="text-neutral-500">Mar 31, 7:30 PM</div>
|
|
52
|
+
<div
|
|
53
|
+
class="mt-4 flex flex-col gap-y-2 rounded-md bg-neutral-100 px-4 py-3"
|
|
54
|
+
>
|
|
55
|
+
<p class="font-medium">
|
|
56
|
+
Congratulations! Your submission has been accepted.
|
|
57
|
+
</p>
|
|
58
|
+
<p>
|
|
59
|
+
Hello Brian, we are pleased to inform you that your submission
|
|
60
|
+
has been accepted. Let us know if you have any questions or
|
|
61
|
+
need further assistance.
|
|
62
|
+
</p>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<!-- Item -->
|
|
68
|
+
<div class="relative flex gap-x-4 pb-12">
|
|
69
|
+
<div
|
|
70
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
71
|
+
></div>
|
|
72
|
+
<div
|
|
73
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
74
|
+
>
|
|
75
|
+
<mat-icon
|
|
76
|
+
class="text-white"
|
|
77
|
+
svgIcon="star"
|
|
78
|
+
/>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="flex flex-col">
|
|
81
|
+
<div class="text-md font-medium">
|
|
82
|
+
Leo Gill added you to Top Secret Project group and assigned you
|
|
83
|
+
as a Project Manager
|
|
84
|
+
</div>
|
|
85
|
+
<div class="text-neutral-500">Mar 31, 7:05 PM</div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<!-- Item -->
|
|
90
|
+
<div class="relative flex gap-x-4 pb-12">
|
|
91
|
+
<div
|
|
92
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
93
|
+
></div>
|
|
94
|
+
<div
|
|
95
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
96
|
+
>
|
|
97
|
+
<mat-icon
|
|
98
|
+
class="text-white"
|
|
99
|
+
svgIcon="mail"
|
|
100
|
+
/>
|
|
101
|
+
</div>
|
|
102
|
+
<div class="flex flex-col">
|
|
103
|
+
<div class="text-md font-medium">
|
|
104
|
+
You have 15 unread mails across 3 mailboxes
|
|
105
|
+
</div>
|
|
106
|
+
<div class="text-neutral-500">Mar 31, 4:55 PM</div>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<!-- Item -->
|
|
111
|
+
<div class="relative flex gap-x-4">
|
|
112
|
+
<div
|
|
113
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
114
|
+
></div>
|
|
115
|
+
<div
|
|
116
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
117
|
+
>
|
|
118
|
+
<mat-icon
|
|
119
|
+
class="text-white"
|
|
120
|
+
svgIcon="box"
|
|
121
|
+
/>
|
|
122
|
+
</div>
|
|
123
|
+
<div class="flex flex-col">
|
|
124
|
+
<div class="text-md font-medium">
|
|
125
|
+
Your container is ready to publish
|
|
126
|
+
</div>
|
|
127
|
+
<div class="text-neutral-500">Mar 31, 2:55 PM</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<!-- Section -->
|
|
133
|
+
<div class="flex flex-col items-start">
|
|
134
|
+
<div
|
|
135
|
+
class="mb-8 rounded-md bg-primary-600 px-3 py-1.5 text-md font-medium text-white"
|
|
136
|
+
>
|
|
137
|
+
2 days ago
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<!-- Item -->
|
|
141
|
+
<div class="relative flex gap-x-4 pb-12">
|
|
142
|
+
<div
|
|
143
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
144
|
+
></div>
|
|
145
|
+
<div
|
|
146
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
147
|
+
>
|
|
148
|
+
<mat-icon
|
|
149
|
+
class="text-white"
|
|
150
|
+
svgIcon="message-circle"
|
|
151
|
+
/>
|
|
152
|
+
</div>
|
|
153
|
+
<div class="flex flex-col">
|
|
154
|
+
<div class="text-md font-medium">
|
|
155
|
+
Tina Harris started a chat with you
|
|
156
|
+
</div>
|
|
157
|
+
<div class="text-neutral-500">Mar 30, 7:30 PM</div>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
<!-- Item -->
|
|
162
|
+
<div class="relative flex gap-x-4">
|
|
163
|
+
<div
|
|
164
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
165
|
+
></div>
|
|
166
|
+
<div
|
|
167
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
168
|
+
>
|
|
169
|
+
<mat-icon
|
|
170
|
+
class="text-white"
|
|
171
|
+
svgIcon="message-circle-dashed"
|
|
172
|
+
/>
|
|
173
|
+
</div>
|
|
174
|
+
<div class="flex flex-col">
|
|
175
|
+
<div class="text-md font-medium">
|
|
176
|
+
Sophie Stone sent you a direct message
|
|
177
|
+
</div>
|
|
178
|
+
<div class="text-neutral-500">Mar 30, 7:05 PM</div>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
<!-- Section -->
|
|
184
|
+
<div class="flex flex-col items-start">
|
|
185
|
+
<div
|
|
186
|
+
class="mb-8 rounded-md bg-primary-600 px-3 py-1.5 text-md font-medium text-white"
|
|
187
|
+
>
|
|
188
|
+
3 days ago
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
<!-- Item -->
|
|
192
|
+
<div class="relative flex gap-x-4 pb-12">
|
|
193
|
+
<div
|
|
194
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
195
|
+
></div>
|
|
196
|
+
<div
|
|
197
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
198
|
+
>
|
|
199
|
+
<mat-icon
|
|
200
|
+
class="text-white"
|
|
201
|
+
svgIcon="user-round-check"
|
|
202
|
+
/>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="flex flex-col">
|
|
205
|
+
<div class="text-md font-medium">
|
|
206
|
+
Roger Murray accepted your friend request
|
|
207
|
+
</div>
|
|
208
|
+
<div class="text-neutral-500">Mar 29, 7:05 PM</div>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
<!-- Item -->
|
|
213
|
+
<div class="relative flex gap-x-4 pb-12">
|
|
214
|
+
<div
|
|
215
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
216
|
+
></div>
|
|
217
|
+
<div
|
|
218
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
219
|
+
>
|
|
220
|
+
<mat-icon
|
|
221
|
+
class="text-white"
|
|
222
|
+
svgIcon="mail"
|
|
223
|
+
/>
|
|
224
|
+
</div>
|
|
225
|
+
<div class="flex flex-col">
|
|
226
|
+
<div class="text-md font-medium">
|
|
227
|
+
You have 4 unread mails across 2 mailboxes
|
|
228
|
+
</div>
|
|
229
|
+
<div class="text-neutral-500">Mar 29, 4:55 PM</div>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
<!-- Item -->
|
|
234
|
+
<div class="relative flex gap-x-4">
|
|
235
|
+
<div
|
|
236
|
+
class="absolute inset-y-0 left-5 -z-10 w-0.5 -translate-x-px bg-neutral-200"
|
|
237
|
+
></div>
|
|
238
|
+
<div
|
|
239
|
+
class="flex size-10 shrink-0 items-center justify-center rounded-full bg-neutral-500"
|
|
240
|
+
>
|
|
241
|
+
<mat-icon
|
|
242
|
+
class="text-white"
|
|
243
|
+
svgIcon="star"
|
|
244
|
+
/>
|
|
245
|
+
</div>
|
|
246
|
+
<div class="flex flex-col">
|
|
247
|
+
<div class="text-md font-medium">
|
|
248
|
+
Your submission has been accepted! Sign-up for the final
|
|
249
|
+
assigment will be ready in 2 days
|
|
250
|
+
</div>
|
|
251
|
+
<div class="text-neutral-500">Mar 29, 2:55 PM</div>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
|
|
256
|
+
<!-- Load more -->
|
|
257
|
+
<button matButton="outlined">Load more</button>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
`,
|
|
261
|
+
})
|
|
262
|
+
export default class Notifications {}
|