@postxl/generators 0.2.2
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/LICENSE +50 -0
- package/dist/backend-actions/actions-provider.mock.d.ts +7 -0
- package/dist/backend-actions/actions-provider.mock.js +75 -0
- package/dist/backend-actions/actions-provider.mock.js.map +1 -0
- package/dist/backend-actions/actions.generator.d.ts +130 -0
- package/dist/backend-actions/actions.generator.js +204 -0
- package/dist/backend-actions/actions.generator.js.map +1 -0
- package/dist/backend-actions/generators/action-types.generator.d.ts +2 -0
- package/dist/backend-actions/generators/action-types.generator.js +47 -0
- package/dist/backend-actions/generators/action-types.generator.js.map +1 -0
- package/dist/backend-actions/generators/actions-config-class.generator.d.ts +2 -0
- package/dist/backend-actions/generators/actions-config-class.generator.js +25 -0
- package/dist/backend-actions/generators/actions-config-class.generator.js.map +1 -0
- package/dist/backend-actions/generators/actions-module.generator.d.ts +2 -0
- package/dist/backend-actions/generators/actions-module.generator.js +47 -0
- package/dist/backend-actions/generators/actions-module.generator.js.map +1 -0
- package/dist/backend-actions/generators/authorization-service.generator.d.ts +2 -0
- package/dist/backend-actions/generators/authorization-service.generator.js +35 -0
- package/dist/backend-actions/generators/authorization-service.generator.js.map +1 -0
- package/dist/backend-actions/generators/dispatcher-service.generator.d.ts +2 -0
- package/dist/backend-actions/generators/dispatcher-service.generator.js +97 -0
- package/dist/backend-actions/generators/dispatcher-service.generator.js.map +1 -0
- package/dist/backend-actions/generators/execution-class.generator.d.ts +2 -0
- package/dist/backend-actions/generators/execution-class.generator.js +561 -0
- package/dist/backend-actions/generators/execution-class.generator.js.map +1 -0
- package/dist/backend-actions/generators/execution-interface.generator.d.ts +2 -0
- package/dist/backend-actions/generators/execution-interface.generator.js +237 -0
- package/dist/backend-actions/generators/execution-interface.generator.js.map +1 -0
- package/dist/backend-actions/index.d.ts +9 -0
- package/dist/backend-actions/index.js +43 -0
- package/dist/backend-actions/index.js.map +1 -0
- package/dist/backend-actions/template/README.md +21 -0
- package/dist/backend-actions/template/src/execution/types.ts +85 -0
- package/dist/backend-authentication/authentication.generator.d.ts +29 -0
- package/dist/backend-authentication/authentication.generator.js +145 -0
- package/dist/backend-authentication/authentication.generator.js.map +1 -0
- package/dist/backend-authentication/generators/auth-guard.generator.d.ts +2 -0
- package/dist/backend-authentication/generators/auth-guard.generator.js +121 -0
- package/dist/backend-authentication/generators/auth-guard.generator.js.map +1 -0
- package/dist/backend-authentication/generators/authentication-module.generator.d.ts +2 -0
- package/dist/backend-authentication/generators/authentication-module.generator.js +79 -0
- package/dist/backend-authentication/generators/authentication-module.generator.js.map +1 -0
- package/dist/backend-authentication/generators/authentication-service.generator.d.ts +2 -0
- package/dist/backend-authentication/generators/authentication-service.generator.js +393 -0
- package/dist/backend-authentication/generators/authentication-service.generator.js.map +1 -0
- package/dist/backend-authentication/generators/authentication-types.generator.d.ts +2 -0
- package/dist/backend-authentication/generators/authentication-types.generator.js +64 -0
- package/dist/backend-authentication/generators/authentication-types.generator.js.map +1 -0
- package/dist/backend-authentication/index.d.ts +4 -0
- package/dist/backend-authentication/index.js +40 -0
- package/dist/backend-authentication/index.js.map +1 -0
- package/dist/backend-authentication/template/README.md +35 -0
- package/dist/backend-authentication/template/assets/auth.png +0 -0
- package/dist/backend-authentication/template/assets/cookie-validation.png +0 -0
- package/dist/backend-authentication/template/assets/page-request.png +0 -0
- package/dist/backend-authentication/template/docs/auth.mmd +42 -0
- package/dist/backend-authentication/template/docs/cookie-validation.mmd +0 -0
- package/dist/backend-authentication/template/docs/page-request.mmd +42 -0
- package/dist/backend-authentication/template/src/authentication.config.ts +51 -0
- package/dist/backend-authentication/template/src/authentication.controller.ts +105 -0
- package/dist/backend-authentication/template/src/authentication.mock.service.ts +108 -0
- package/dist/backend-authentication/template/src/utils.ts +13 -0
- package/dist/backend-authentication/template/src/viewer.decorator.ts +13 -0
- package/dist/backend-core/backend.generator.d.ts +3 -0
- package/dist/backend-core/backend.generator.js +154 -0
- package/dist/backend-core/backend.generator.js.map +1 -0
- package/dist/backend-core/generators/api-config.generator.d.ts +2 -0
- package/dist/backend-core/generators/api-config.generator.js +72 -0
- package/dist/backend-core/generators/api-config.generator.js.map +1 -0
- package/dist/backend-core/generators/api-module.generator.d.ts +2 -0
- package/dist/backend-core/generators/api-module.generator.js +53 -0
- package/dist/backend-core/generators/api-module.generator.js.map +1 -0
- package/dist/backend-core/generators/dotenv-example.generator.d.ts +2 -0
- package/dist/backend-core/generators/dotenv-example.generator.js +38 -0
- package/dist/backend-core/generators/dotenv-example.generator.js.map +1 -0
- package/dist/backend-core/generators/main.generator.d.ts +2 -0
- package/dist/backend-core/generators/main.generator.js +153 -0
- package/dist/backend-core/generators/main.generator.js.map +1 -0
- package/dist/backend-core/generators/tsconfig.generator.d.ts +2 -0
- package/dist/backend-core/generators/tsconfig.generator.js +59 -0
- package/dist/backend-core/generators/tsconfig.generator.js.map +1 -0
- package/dist/backend-core/index.d.ts +3 -0
- package/dist/backend-core/index.js +20 -0
- package/dist/backend-core/index.js.map +1 -0
- package/dist/backend-core/modules/backend-module-utils.generator.d.ts +3 -0
- package/dist/backend-core/modules/backend-module-utils.generator.js +65 -0
- package/dist/backend-core/modules/backend-module-utils.generator.js.map +1 -0
- package/dist/backend-core/modules/backend-module-xlport.generator.d.ts +3 -0
- package/dist/backend-core/modules/backend-module-xlport.generator.js +80 -0
- package/dist/backend-core/modules/backend-module-xlport.generator.js.map +1 -0
- package/dist/backend-core/template/README.md +97 -0
- package/dist/backend-core/template/apps/api/README.md +3 -0
- package/dist/backend-core/template/apps/api/src/api.controller.ts +14 -0
- package/dist/backend-core/template/apps/api/src/console.logger.ts +55 -0
- package/dist/backend-core/template/apps/api/src/e2e.ts +458 -0
- package/dist/backend-core/template/apps/api/test/base.test.ts +7 -0
- package/dist/backend-core/template/apps/api/tsconfig.app.json +9 -0
- package/dist/backend-core/template/jest.config.ts +39 -0
- package/dist/backend-core/template/libs/e2e/src/e2e.controller.ts +30 -0
- package/dist/backend-core/template/libs/e2e/src/e2e.module.ts +18 -0
- package/dist/backend-core/template/libs/e2e/src/test-data.service.ts +20 -0
- package/dist/backend-core/template/libs/utils/src/pagination.test.ts +58 -0
- package/dist/backend-core/template/libs/utils/src/pagination.ts +68 -0
- package/dist/backend-core/template/libs/utils/tsconfig.lib.json +9 -0
- package/dist/backend-core/template/libs/xlport/README.md +90 -0
- package/dist/backend-core/template/libs/xlport/src/xlport.config.ts +8 -0
- package/dist/backend-core/template/libs/xlport/src/xlport.module.ts +20 -0
- package/dist/backend-core/template/libs/xlport/src/xlport.service.ts +171 -0
- package/dist/backend-core/template/libs/xlport/tsconfig.lib.json +9 -0
- package/dist/backend-core/template/nest-cli.json +22 -0
- package/dist/backend-core/template/tsconfig.build.json +4 -0
- package/dist/backend-core/types.d.ts +145 -0
- package/dist/backend-core/types.js +3 -0
- package/dist/backend-core/types.js.map +1 -0
- package/dist/backend-data-management/data-management.generator.d.ts +18 -0
- package/dist/backend-data-management/data-management.generator.js +104 -0
- package/dist/backend-data-management/data-management.generator.js.map +1 -0
- package/dist/backend-data-management/generators/data-management-service.generator.d.ts +8 -0
- package/dist/backend-data-management/generators/data-management-service.generator.js +330 -0
- package/dist/backend-data-management/generators/data-management-service.generator.js.map +1 -0
- package/dist/backend-data-management/index.d.ts +2 -0
- package/dist/backend-data-management/index.js +22 -0
- package/dist/backend-data-management/index.js.map +1 -0
- package/dist/backend-data-management/template/data-management.controller.ts +242 -0
- package/dist/backend-data-management/template/data-management.module.ts +15 -0
- package/dist/backend-database-prisma/generators/database-config.generator.d.ts +2 -0
- package/dist/backend-database-prisma/generators/database-config.generator.js +18 -0
- package/dist/backend-database-prisma/generators/database-config.generator.js.map +1 -0
- package/dist/backend-database-prisma/generators/database-module.generator.d.ts +2 -0
- package/dist/backend-database-prisma/generators/database-module.generator.js +66 -0
- package/dist/backend-database-prisma/generators/database-module.generator.js.map +1 -0
- package/dist/backend-database-prisma/generators/database-service.generator.d.ts +2 -0
- package/dist/backend-database-prisma/generators/database-service.generator.js +45 -0
- package/dist/backend-database-prisma/generators/database-service.generator.js.map +1 -0
- package/dist/backend-database-prisma/generators/index.generator.d.ts +2 -0
- package/dist/backend-database-prisma/generators/index.generator.js +12 -0
- package/dist/backend-database-prisma/generators/index.generator.js.map +1 -0
- package/dist/backend-database-prisma/generators/prisma-schema.generator.d.ts +2 -0
- package/dist/backend-database-prisma/generators/prisma-schema.generator.js +224 -0
- package/dist/backend-database-prisma/generators/prisma-schema.generator.js.map +1 -0
- package/dist/backend-database-prisma/index.d.ts +5 -0
- package/dist/backend-database-prisma/index.js +41 -0
- package/dist/backend-database-prisma/index.js.map +1 -0
- package/dist/backend-database-prisma/prisma.generator.d.ts +29 -0
- package/dist/backend-database-prisma/prisma.generator.js +123 -0
- package/dist/backend-database-prisma/prisma.generator.js.map +1 -0
- package/dist/backend-database-prisma/prisma.utils.d.ts +9 -0
- package/dist/backend-database-prisma/prisma.utils.js +27 -0
- package/dist/backend-database-prisma/prisma.utils.js.map +1 -0
- package/dist/backend-database-prisma/template/prisma.config.ts +14 -0
- package/dist/backend-e2e/backend-e2e.generator.d.ts +23 -0
- package/dist/backend-e2e/backend-e2e.generator.js +139 -0
- package/dist/backend-e2e/backend-e2e.generator.js.map +1 -0
- package/dist/backend-e2e/generators/e2e-controller.generator.d.ts +2 -0
- package/dist/backend-e2e/generators/e2e-controller.generator.js +70 -0
- package/dist/backend-e2e/generators/e2e-controller.generator.js.map +1 -0
- package/dist/backend-e2e/generators/e2e-module.generator.d.ts +2 -0
- package/dist/backend-e2e/generators/e2e-module.generator.js +64 -0
- package/dist/backend-e2e/generators/e2e-module.generator.js.map +1 -0
- package/dist/backend-e2e/generators/e2e-service.generator.d.ts +2 -0
- package/dist/backend-e2e/generators/e2e-service.generator.js +99 -0
- package/dist/backend-e2e/generators/e2e-service.generator.js.map +1 -0
- package/dist/backend-e2e/index.d.ts +4 -0
- package/dist/backend-e2e/index.js +40 -0
- package/dist/backend-e2e/index.js.map +1 -0
- package/dist/backend-import/generators/convert-functions.generator.d.ts +5 -0
- package/dist/backend-import/generators/convert-functions.generator.js +600 -0
- package/dist/backend-import/generators/convert-functions.generator.js.map +1 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-all-models.generator.d.ts +2 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-all-models.generator.js +128 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-all-models.generator.js.map +1 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.d.ts +2 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.js +391 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.js.map +1 -0
- package/dist/backend-import/generators/detect-delta/model-function.generator.d.ts +2 -0
- package/dist/backend-import/generators/detect-delta/model-function.generator.js +321 -0
- package/dist/backend-import/generators/detect-delta/model-function.generator.js.map +1 -0
- package/dist/backend-import/generators/detect-delta/types.generator.d.ts +2 -0
- package/dist/backend-import/generators/detect-delta/types.generator.js +149 -0
- package/dist/backend-import/generators/detect-delta/types.generator.js.map +1 -0
- package/dist/backend-import/generators/import-module.generator.d.ts +2 -0
- package/dist/backend-import/generators/import-module.generator.js +58 -0
- package/dist/backend-import/generators/import-module.generator.js.map +1 -0
- package/dist/backend-import/generators/import-service.generator.d.ts +2 -0
- package/dist/backend-import/generators/import-service.generator.js +304 -0
- package/dist/backend-import/generators/import-service.generator.js.map +1 -0
- package/dist/backend-import/import.generator.d.ts +228 -0
- package/dist/backend-import/import.generator.js +255 -0
- package/dist/backend-import/import.generator.js.map +1 -0
- package/dist/backend-import/index.d.ts +5 -0
- package/dist/backend-import/index.js +40 -0
- package/dist/backend-import/index.js.map +1 -0
- package/dist/backend-import/template/README.md +52 -0
- package/dist/backend-repositories/generators/bulk-mutation-types.generator.d.ts +2 -0
- package/dist/backend-repositories/generators/bulk-mutation-types.generator.js +42 -0
- package/dist/backend-repositories/generators/bulk-mutation-types.generator.js.map +1 -0
- package/dist/backend-repositories/generators/data-service.generator.d.ts +2 -0
- package/dist/backend-repositories/generators/data-service.generator.js +289 -0
- package/dist/backend-repositories/generators/data-service.generator.js.map +1 -0
- package/dist/backend-repositories/generators/model-repository.generator.d.ts +14 -0
- package/dist/backend-repositories/generators/model-repository.generator.js +1936 -0
- package/dist/backend-repositories/generators/model-repository.generator.js.map +1 -0
- package/dist/backend-repositories/generators/repository-interface.generator.d.ts +2 -0
- package/dist/backend-repositories/generators/repository-interface.generator.js +55 -0
- package/dist/backend-repositories/generators/repository-interface.generator.js.map +1 -0
- package/dist/backend-repositories/generators/repository-module.generator.d.ts +2 -0
- package/dist/backend-repositories/generators/repository-module.generator.js +143 -0
- package/dist/backend-repositories/generators/repository-module.generator.js.map +1 -0
- package/dist/backend-repositories/index.d.ts +5 -0
- package/dist/backend-repositories/index.js +40 -0
- package/dist/backend-repositories/index.js.map +1 -0
- package/dist/backend-repositories/model.types.d.ts +69 -0
- package/dist/backend-repositories/model.types.js +17 -0
- package/dist/backend-repositories/model.types.js.map +1 -0
- package/dist/backend-repositories/repositories.generator.d.ts +46 -0
- package/dist/backend-repositories/repositories.generator.js +256 -0
- package/dist/backend-repositories/repositories.generator.js.map +1 -0
- package/dist/backend-rest-api/generators/model-controller.generator.d.ts +5 -0
- package/dist/backend-rest-api/generators/model-controller.generator.js +100 -0
- package/dist/backend-rest-api/generators/model-controller.generator.js.map +1 -0
- package/dist/backend-rest-api/generators/rest-api-module.generator.d.ts +2 -0
- package/dist/backend-rest-api/generators/rest-api-module.generator.js +62 -0
- package/dist/backend-rest-api/generators/rest-api-module.generator.js.map +1 -0
- package/dist/backend-rest-api/generators/zod-exception-filter.generator.d.ts +1 -0
- package/dist/backend-rest-api/generators/zod-exception-filter.generator.js +28 -0
- package/dist/backend-rest-api/generators/zod-exception-filter.generator.js.map +1 -0
- package/dist/backend-rest-api/index.d.ts +5 -0
- package/dist/backend-rest-api/index.js +40 -0
- package/dist/backend-rest-api/index.js.map +1 -0
- package/dist/backend-rest-api/rest-api.generator.d.ts +24 -0
- package/dist/backend-rest-api/rest-api.generator.js +113 -0
- package/dist/backend-rest-api/rest-api.generator.js.map +1 -0
- package/dist/backend-rest-api/template/zod-exception.filter.ts +21 -0
- package/dist/backend-router-trpc/generators/app-routes.generator.d.ts +4 -0
- package/dist/backend-router-trpc/generators/app-routes.generator.js +74 -0
- package/dist/backend-router-trpc/generators/app-routes.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/audit-log-route.generator.d.ts +7 -0
- package/dist/backend-router-trpc/generators/audit-log-route.generator.js +611 -0
- package/dist/backend-router-trpc/generators/audit-log-route.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/middleware.generator.d.ts +2 -0
- package/dist/backend-router-trpc/generators/middleware.generator.js +100 -0
- package/dist/backend-router-trpc/generators/middleware.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/model-routes.generator.d.ts +8 -0
- package/dist/backend-router-trpc/generators/model-routes.generator.js +88 -0
- package/dist/backend-router-trpc/generators/model-routes.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.d.ts +2 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js +141 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.d.ts +2 -0
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js +60 -0
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/trpc-shared.generator.d.ts +2 -0
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js +134 -0
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js.map +1 -0
- package/dist/backend-router-trpc/index.d.ts +5 -0
- package/dist/backend-router-trpc/index.js +40 -0
- package/dist/backend-router-trpc/index.js.map +1 -0
- package/dist/backend-router-trpc/router-trpc.generator.d.ts +108 -0
- package/dist/backend-router-trpc/router-trpc.generator.js +189 -0
- package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -0
- package/dist/backend-router-trpc/template/viewer.router.ts +25 -0
- package/dist/backend-s3/generators/s3.config.generator.d.ts +2 -0
- package/dist/backend-s3/generators/s3.config.generator.js +24 -0
- package/dist/backend-s3/generators/s3.config.generator.js.map +1 -0
- package/dist/backend-s3/generators/s3.module.generator.d.ts +2 -0
- package/dist/backend-s3/generators/s3.module.generator.js +33 -0
- package/dist/backend-s3/generators/s3.module.generator.js.map +1 -0
- package/dist/backend-s3/generators/s3.service.generator.d.ts +2 -0
- package/dist/backend-s3/generators/s3.service.generator.js +116 -0
- package/dist/backend-s3/generators/s3.service.generator.js.map +1 -0
- package/dist/backend-s3/index.d.ts +4 -0
- package/dist/backend-s3/index.js +40 -0
- package/dist/backend-s3/index.js.map +1 -0
- package/dist/backend-s3/s3.generator.d.ts +19 -0
- package/dist/backend-s3/s3.generator.js +125 -0
- package/dist/backend-s3/s3.generator.js.map +1 -0
- package/dist/backend-seed/generators/seed-module.generator.d.ts +2 -0
- package/dist/backend-seed/generators/seed-module.generator.js +60 -0
- package/dist/backend-seed/generators/seed-module.generator.js.map +1 -0
- package/dist/backend-seed/generators/seed-service.generator.d.ts +2 -0
- package/dist/backend-seed/generators/seed-service.generator.js +176 -0
- package/dist/backend-seed/generators/seed-service.generator.js.map +1 -0
- package/dist/backend-seed/index.d.ts +4 -0
- package/dist/backend-seed/index.js +40 -0
- package/dist/backend-seed/index.js.map +1 -0
- package/dist/backend-seed/seed.generator.d.ts +19 -0
- package/dist/backend-seed/seed.generator.js +95 -0
- package/dist/backend-seed/seed.generator.js.map +1 -0
- package/dist/backend-seed/template/src/actions.ts +90 -0
- package/dist/backend-seed/template/tsconfig.lib.json +9 -0
- package/dist/backend-update/bulk-service.generator.d.ts +2 -0
- package/dist/backend-update/bulk-service.generator.js +277 -0
- package/dist/backend-update/bulk-service.generator.js.map +1 -0
- package/dist/backend-update/index.d.ts +5 -0
- package/dist/backend-update/index.js +40 -0
- package/dist/backend-update/index.js.map +1 -0
- package/dist/backend-update/model-update-service.generator.d.ts +5 -0
- package/dist/backend-update/model-update-service.generator.js +757 -0
- package/dist/backend-update/model-update-service.generator.js.map +1 -0
- package/dist/backend-update/update-actions.decoders.d.ts +15 -0
- package/dist/backend-update/update-actions.decoders.js +37 -0
- package/dist/backend-update/update-actions.decoders.js.map +1 -0
- package/dist/backend-update/update-module.generator.d.ts +2 -0
- package/dist/backend-update/update-module.generator.js +69 -0
- package/dist/backend-update/update-module.generator.js.map +1 -0
- package/dist/backend-update/update-service.generator.d.ts +2 -0
- package/dist/backend-update/update-service.generator.js +94 -0
- package/dist/backend-update/update-service.generator.js.map +1 -0
- package/dist/backend-update/update.generator.d.ts +138 -0
- package/dist/backend-update/update.generator.js +302 -0
- package/dist/backend-update/update.generator.js.map +1 -0
- package/dist/backend-view/index.d.ts +5 -0
- package/dist/backend-view/index.js +40 -0
- package/dist/backend-view/index.js.map +1 -0
- package/dist/backend-view/model-view-service.generator.d.ts +11 -0
- package/dist/backend-view/model-view-service.generator.js +196 -0
- package/dist/backend-view/model-view-service.generator.js.map +1 -0
- package/dist/backend-view/view-module.generator.d.ts +2 -0
- package/dist/backend-view/view-module.generator.js +62 -0
- package/dist/backend-view/view-module.generator.js.map +1 -0
- package/dist/backend-view/view-service.generator.d.ts +2 -0
- package/dist/backend-view/view-service.generator.js +56 -0
- package/dist/backend-view/view-service.generator.js.map +1 -0
- package/dist/backend-view/view.generator.d.ts +32 -0
- package/dist/backend-view/view.generator.js +100 -0
- package/dist/backend-view/view.generator.js.map +1 -0
- package/dist/base/base.generator.d.ts +26 -0
- package/dist/base/base.generator.js +138 -0
- package/dist/base/base.generator.js.map +1 -0
- package/dist/base/index.d.ts +1 -0
- package/dist/base/index.js +18 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/template/.nvmrc +1 -0
- package/dist/base/template/.prettierignore +5 -0
- package/dist/base/template/.turboignore +1 -0
- package/dist/base/template/.vscode/extensions.json +16 -0
- package/dist/base/template/.vscode/launch.json +15 -0
- package/dist/base/template/.vscode/settings.json +73 -0
- package/dist/base/template/README.md +115 -0
- package/dist/base/template/eslint.config.mjs +194 -0
- package/dist/base/template/jest.config.ts +7 -0
- package/dist/base/template/prettier.config.js +10 -0
- package/dist/base/template/scripts/setup.sh +25 -0
- package/dist/base/template/sonar-project.properties +94 -0
- package/dist/base/template/tsconfig.json +12 -0
- package/dist/decoders/datamodel-decoder.generator.d.ts +7 -0
- package/dist/decoders/datamodel-decoder.generator.js +134 -0
- package/dist/decoders/datamodel-decoder.generator.js.map +1 -0
- package/dist/decoders/decoders.generator.d.ts +133 -0
- package/dist/decoders/decoders.generator.js +424 -0
- package/dist/decoders/decoders.generator.js.map +1 -0
- package/dist/decoders/discriminated-union.decoder.generator.d.ts +12 -0
- package/dist/decoders/discriminated-union.decoder.generator.js +205 -0
- package/dist/decoders/discriminated-union.decoder.generator.js.map +1 -0
- package/dist/decoders/enum-decoder.generator.d.ts +5 -0
- package/dist/decoders/enum-decoder.generator.js +71 -0
- package/dist/decoders/enum-decoder.generator.js.map +1 -0
- package/dist/decoders/excel-field-decoder.helper.d.ts +17 -0
- package/dist/decoders/excel-field-decoder.helper.js +178 -0
- package/dist/decoders/excel-field-decoder.helper.js.map +1 -0
- package/dist/decoders/field-decoder.helper.d.ts +50 -0
- package/dist/decoders/field-decoder.helper.js +113 -0
- package/dist/decoders/field-decoder.helper.js.map +1 -0
- package/dist/decoders/index.d.ts +4 -0
- package/dist/decoders/index.js +40 -0
- package/dist/decoders/index.js.map +1 -0
- package/dist/decoders/model-decoder.generator.d.ts +5 -0
- package/dist/decoders/model-decoder.generator.js +197 -0
- package/dist/decoders/model-decoder.generator.js.map +1 -0
- package/dist/decoders/shared.d.ts +51 -0
- package/dist/decoders/shared.js +140 -0
- package/dist/decoders/shared.js.map +1 -0
- package/dist/devops/devops.generator.d.ts +66 -0
- package/dist/devops/devops.generator.js +127 -0
- package/dist/devops/devops.generator.js.map +1 -0
- package/dist/devops/generators/backend-build-sh.generator.d.ts +2 -0
- package/dist/devops/generators/backend-build-sh.generator.js +49 -0
- package/dist/devops/generators/backend-build-sh.generator.js.map +1 -0
- package/dist/devops/generators/backend-dockerfile.generator.d.ts +2 -0
- package/dist/devops/generators/backend-dockerfile.generator.js +67 -0
- package/dist/devops/generators/backend-dockerfile.generator.js.map +1 -0
- package/dist/devops/generators/backend-start-api-sh.generator.d.ts +2 -0
- package/dist/devops/generators/backend-start-api-sh.generator.js +18 -0
- package/dist/devops/generators/backend-start-api-sh.generator.js.map +1 -0
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.d.ts +2 -0
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js +105 -0
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js.map +1 -0
- package/dist/devops/generators/configure-keycloak-sh.generator.d.ts +2 -0
- package/dist/devops/generators/configure-keycloak-sh.generator.js +158 -0
- package/dist/devops/generators/configure-keycloak-sh.generator.js.map +1 -0
- package/dist/devops/generators/docker-compose-yml.generator.d.ts +2 -0
- package/dist/devops/generators/docker-compose-yml.generator.js +78 -0
- package/dist/devops/generators/docker-compose-yml.generator.js.map +1 -0
- package/dist/devops/generators/e2e-yml.generator.d.ts +2 -0
- package/dist/devops/generators/e2e-yml.generator.js +195 -0
- package/dist/devops/generators/e2e-yml.generator.js.map +1 -0
- package/dist/devops/generators/frontend-build-sh.generator.d.ts +2 -0
- package/dist/devops/generators/frontend-build-sh.generator.js +45 -0
- package/dist/devops/generators/frontend-build-sh.generator.js.map +1 -0
- package/dist/devops/generators/frontend-dockerfile.generator.d.ts +2 -0
- package/dist/devops/generators/frontend-dockerfile.generator.js +75 -0
- package/dist/devops/generators/frontend-dockerfile.generator.js.map +1 -0
- package/dist/devops/generators/jenkinsfile.generator.d.ts +2 -0
- package/dist/devops/generators/jenkinsfile.generator.js +147 -0
- package/dist/devops/generators/jenkinsfile.generator.js.map +1 -0
- package/dist/devops/generators/root-dotenv-example.generator.d.ts +2 -0
- package/dist/devops/generators/root-dotenv-example.generator.js +10 -0
- package/dist/devops/generators/root-dotenv-example.generator.js.map +1 -0
- package/dist/devops/index.d.ts +4 -0
- package/dist/devops/index.js +40 -0
- package/dist/devops/index.js.map +1 -0
- package/dist/devops/template/.github/workflows/test.yml +45 -0
- package/dist/devops/template/docker/backend/migrate.sh +10 -0
- package/dist/devops/template/docker/backend/start.api.sh +8 -0
- package/dist/devops/template/docker/frontend/entrypoint.sh +18 -0
- package/dist/devops/template/docker/frontend/frontend.conf +17 -0
- package/dist/devops/template/docker/keycloak/Dockerfile +17 -0
- package/dist/devops/template/docker/keycloak/localization.en.json +5 -0
- package/dist/devops/template/docker/keycloak/protocol-mappers.json +28 -0
- package/dist/devops/template/docker/keycloak/user-attributes.json +142 -0
- package/dist/e2e/e2e.generator.d.ts +19 -0
- package/dist/e2e/e2e.generator.js +92 -0
- package/dist/e2e/e2e.generator.js.map +1 -0
- package/dist/e2e/generators/lib/test-id-collector.d.ts +48 -0
- package/dist/e2e/generators/lib/test-id-collector.js +65 -0
- package/dist/e2e/generators/lib/test-id-collector.js.map +1 -0
- package/dist/e2e/generators/lib/test-id-generator.d.ts +5 -0
- package/dist/e2e/generators/lib/test-id-generator.js +67 -0
- package/dist/e2e/generators/lib/test-id-generator.js.map +1 -0
- package/dist/e2e/generators/model-test-id.generator.d.ts +5 -0
- package/dist/e2e/generators/model-test-id.generator.js +19 -0
- package/dist/e2e/generators/model-test-id.generator.js.map +1 -0
- package/dist/e2e/generators/package-json.generator.d.ts +2 -0
- package/dist/e2e/generators/package-json.generator.js +29 -0
- package/dist/e2e/generators/package-json.generator.js.map +1 -0
- package/dist/e2e/index.d.ts +4 -0
- package/dist/e2e/index.js +40 -0
- package/dist/e2e/index.js.map +1 -0
- package/dist/e2e/template/e2e/.env.example +11 -0
- package/dist/e2e/template/e2e/Dockerfile +8 -0
- package/dist/e2e/template/e2e/README.md +87 -0
- package/dist/e2e/template/e2e/fixtures/global-setup.ts +3 -0
- package/dist/e2e/template/e2e/fixtures/global-teardown.ts +21 -0
- package/dist/e2e/template/e2e/fixtures/handle-backend.ts +35 -0
- package/dist/e2e/template/e2e/fixtures/set-date-script.js +28 -0
- package/dist/e2e/template/e2e/fixtures/set-fixed-date.ts +12 -0
- package/dist/e2e/template/e2e/fixtures/test-fixtures.ts +132 -0
- package/dist/e2e/template/e2e/package.json +22 -0
- package/dist/e2e/template/e2e/playwright.config.ts +161 -0
- package/dist/e2e/template/e2e/specs/example-backend-isolation.spec.ts +59 -0
- package/dist/e2e/template/e2e/specs/example.spec.ts +77 -0
- package/dist/e2e/template/e2e/specs/example.spec.ts-snapshots/Navigate-to-homepage-and-take-snapshot-1-chromium-linux.png +0 -0
- package/dist/e2e/template/e2e/support/checkbox-click.ts +20 -0
- package/dist/e2e/template/e2e/support/get-backend-mode.ts +10 -0
- package/dist/e2e/template/e2e/support/map.utils.ts +98 -0
- package/dist/e2e/template/e2e/support/mask-toast.ts +20 -0
- package/dist/e2e/template/e2e/support/model-test-ids.ts +4 -0
- package/dist/e2e/template/e2e/support/mouse-annotations.ts +162 -0
- package/dist/e2e/template/e2e/support/page-stability.ts +86 -0
- package/dist/e2e/template/e2e/support/reset-data.ts +38 -0
- package/dist/e2e/template/e2e/support/set-data.ts +44 -0
- package/dist/e2e/template/e2e/support/wait-for-page-loaded.ts +28 -0
- package/dist/e2e/template/e2e/tsconfig.json +51 -0
- package/dist/e2e/template/scripts/docker.sh +17 -0
- package/dist/frontend-admin/admin.generator.d.ts +75 -0
- package/dist/frontend-admin/admin.generator.js +132 -0
- package/dist/frontend-admin/admin.generator.js.map +1 -0
- package/dist/frontend-admin/generators/admin-overview-page.generator.d.ts +7 -0
- package/dist/frontend-admin/generators/admin-overview-page.generator.js +110 -0
- package/dist/frontend-admin/generators/admin-overview-page.generator.js.map +1 -0
- package/dist/frontend-admin/generators/admin-sidebar.generator.d.ts +7 -0
- package/dist/frontend-admin/generators/admin-sidebar.generator.js +196 -0
- package/dist/frontend-admin/generators/admin-sidebar.generator.js.map +1 -0
- package/dist/frontend-admin/generators/audit-log-sidebar.generator.d.ts +8 -0
- package/dist/frontend-admin/generators/audit-log-sidebar.generator.js +629 -0
- package/dist/frontend-admin/generators/audit-log-sidebar.generator.js.map +1 -0
- package/dist/frontend-admin/generators/data-management-page.generator.d.ts +7 -0
- package/dist/frontend-admin/generators/data-management-page.generator.js +778 -0
- package/dist/frontend-admin/generators/data-management-page.generator.js.map +1 -0
- package/dist/frontend-admin/generators/model-admin-page.generator.d.ts +8 -0
- package/dist/frontend-admin/generators/model-admin-page.generator.js +231 -0
- package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -0
- package/dist/frontend-admin/index.d.ts +5 -0
- package/dist/frontend-admin/index.js +40 -0
- package/dist/frontend-admin/index.js.map +1 -0
- package/dist/frontend-admin/utils.d.ts +24 -0
- package/dist/frontend-admin/utils.js +122 -0
- package/dist/frontend-admin/utils.js.map +1 -0
- package/dist/frontend-core/frontend.generator.d.ts +87 -0
- package/dist/frontend-core/frontend.generator.js +400 -0
- package/dist/frontend-core/frontend.generator.js.map +1 -0
- package/dist/frontend-core/generators/tsconfig.generator.d.ts +2 -0
- package/dist/frontend-core/generators/tsconfig.generator.js +55 -0
- package/dist/frontend-core/generators/tsconfig.generator.js.map +1 -0
- package/dist/frontend-core/index.d.ts +2 -0
- package/dist/frontend-core/index.js +19 -0
- package/dist/frontend-core/index.js.map +1 -0
- package/dist/frontend-core/scripts/generate-types.d.ts +1 -0
- package/dist/frontend-core/scripts/generate-types.js +59 -0
- package/dist/frontend-core/scripts/generate-types.js.map +1 -0
- package/dist/frontend-core/template/.env.example +44 -0
- package/dist/frontend-core/template/.prettierignore +4 -0
- package/dist/frontend-core/template/.storybook/main.ts +27 -0
- package/dist/frontend-core/template/.storybook/preview.ts +16 -0
- package/dist/frontend-core/template/.storybook/vitest.setup.ts +18 -0
- package/dist/frontend-core/template/README.md +488 -0
- package/dist/frontend-core/template/components.json +21 -0
- package/dist/frontend-core/template/index.html +11 -0
- package/dist/frontend-core/template/public/android-chrome-192x192.png +0 -0
- package/dist/frontend-core/template/public/android-chrome-512x512.png +0 -0
- package/dist/frontend-core/template/public/apple-touch-icon.png +0 -0
- package/dist/frontend-core/template/public/favicon-16x16.png +0 -0
- package/dist/frontend-core/template/public/favicon-32x32.png +0 -0
- package/dist/frontend-core/template/public/favicon.ico +0 -0
- package/dist/frontend-core/template/public/flags/AC.svg +39 -0
- package/dist/frontend-core/template/public/flags/AD.svg +32 -0
- package/dist/frontend-core/template/public/flags/AE.svg +7 -0
- package/dist/frontend-core/template/public/flags/AF.svg +9 -0
- package/dist/frontend-core/template/public/flags/AG.svg +13 -0
- package/dist/frontend-core/template/public/flags/AI.svg +31 -0
- package/dist/frontend-core/template/public/flags/AL.svg +22 -0
- package/dist/frontend-core/template/public/flags/AM.svg +6 -0
- package/dist/frontend-core/template/public/flags/AO.svg +24 -0
- package/dist/frontend-core/template/public/flags/AQ.svg +6 -0
- package/dist/frontend-core/template/public/flags/AR.svg +7 -0
- package/dist/frontend-core/template/public/flags/AS.svg +9 -0
- package/dist/frontend-core/template/public/flags/AT.svg +6 -0
- package/dist/frontend-core/template/public/flags/AU.svg +36 -0
- package/dist/frontend-core/template/public/flags/AW.svg +12 -0
- package/dist/frontend-core/template/public/flags/AX.svg +8 -0
- package/dist/frontend-core/template/public/flags/AZ.svg +13 -0
- package/dist/frontend-core/template/public/flags/BA.svg +23 -0
- package/dist/frontend-core/template/public/flags/BB.svg +11 -0
- package/dist/frontend-core/template/public/flags/BD.svg +5 -0
- package/dist/frontend-core/template/public/flags/BE.svg +7 -0
- package/dist/frontend-core/template/public/flags/BF.svg +7 -0
- package/dist/frontend-core/template/public/flags/BG.svg +7 -0
- package/dist/frontend-core/template/public/flags/BH.svg +8 -0
- package/dist/frontend-core/template/public/flags/BI.svg +21 -0
- package/dist/frontend-core/template/public/flags/BJ.svg +7 -0
- package/dist/frontend-core/template/public/flags/BL.svg +48 -0
- package/dist/frontend-core/template/public/flags/BM.svg +24 -0
- package/dist/frontend-core/template/public/flags/BN.svg +17 -0
- package/dist/frontend-core/template/public/flags/BO.svg +1 -0
- package/dist/frontend-core/template/public/flags/BQ.svg +9 -0
- package/dist/frontend-core/template/public/flags/BR.svg +10 -0
- package/dist/frontend-core/template/public/flags/BS.svg +10 -0
- package/dist/frontend-core/template/public/flags/BT.svg +7 -0
- package/dist/frontend-core/template/public/flags/BV.svg +10 -0
- package/dist/frontend-core/template/public/flags/BW.svg +10 -0
- package/dist/frontend-core/template/public/flags/BY.svg +19 -0
- package/dist/frontend-core/template/public/flags/BZ.svg +17 -0
- package/dist/frontend-core/template/public/flags/CA.svg +11 -0
- package/dist/frontend-core/template/public/flags/CC.svg +25 -0
- package/dist/frontend-core/template/public/flags/CD.svg +8 -0
- package/dist/frontend-core/template/public/flags/CF.svg +18 -0
- package/dist/frontend-core/template/public/flags/CG.svg +7 -0
- package/dist/frontend-core/template/public/flags/CH.svg +6 -0
- package/dist/frontend-core/template/public/flags/CI.svg +7 -0
- package/dist/frontend-core/template/public/flags/CK.svg +26 -0
- package/dist/frontend-core/template/public/flags/CL.svg +7 -0
- package/dist/frontend-core/template/public/flags/CM.svg +10 -0
- package/dist/frontend-core/template/public/flags/CN.svg +16 -0
- package/dist/frontend-core/template/public/flags/CO.svg +7 -0
- package/dist/frontend-core/template/public/flags/CR.svg +10 -0
- package/dist/frontend-core/template/public/flags/CU.svg +14 -0
- package/dist/frontend-core/template/public/flags/CV.svg +31 -0
- package/dist/frontend-core/template/public/flags/CW.svg +11 -0
- package/dist/frontend-core/template/public/flags/CX.svg +25 -0
- package/dist/frontend-core/template/public/flags/CY.svg +35 -0
- package/dist/frontend-core/template/public/flags/CZ.svg +7 -0
- package/dist/frontend-core/template/public/flags/DE.svg +7 -0
- package/dist/frontend-core/template/public/flags/DJ.svg +8 -0
- package/dist/frontend-core/template/public/flags/DK.svg +6 -0
- package/dist/frontend-core/template/public/flags/DM.svg +38 -0
- package/dist/frontend-core/template/public/flags/DO.svg +14 -0
- package/dist/frontend-core/template/public/flags/DZ.svg +12 -0
- package/dist/frontend-core/template/public/flags/EC.svg +12 -0
- package/dist/frontend-core/template/public/flags/EE.svg +7 -0
- package/dist/frontend-core/template/public/flags/EG.svg +10 -0
- package/dist/frontend-core/template/public/flags/EH.svg +13 -0
- package/dist/frontend-core/template/public/flags/ER.svg +17 -0
- package/dist/frontend-core/template/public/flags/ES.svg +13 -0
- package/dist/frontend-core/template/public/flags/ET.svg +24 -0
- package/dist/frontend-core/template/public/flags/EU.svg +1 -0
- package/dist/frontend-core/template/public/flags/FI.svg +6 -0
- package/dist/frontend-core/template/public/flags/FJ.svg +22 -0
- package/dist/frontend-core/template/public/flags/FK.svg +41 -0
- package/dist/frontend-core/template/public/flags/FM.svg +14 -0
- package/dist/frontend-core/template/public/flags/FO.svg +8 -0
- package/dist/frontend-core/template/public/flags/FR.svg +7 -0
- package/dist/frontend-core/template/public/flags/G.svg +4 -0
- package/dist/frontend-core/template/public/flags/GA.svg +7 -0
- package/dist/frontend-core/template/public/flags/GB.svg +30 -0
- package/dist/frontend-core/template/public/flags/GD.svg +32 -0
- package/dist/frontend-core/template/public/flags/GE-AB.svg +20 -0
- package/dist/frontend-core/template/public/flags/GE-OS.svg +6 -0
- package/dist/frontend-core/template/public/flags/GE.svg +9 -0
- package/dist/frontend-core/template/public/flags/GF.svg +6 -0
- package/dist/frontend-core/template/public/flags/GG.svg +6 -0
- package/dist/frontend-core/template/public/flags/GH.svg +8 -0
- package/dist/frontend-core/template/public/flags/GI.svg +19 -0
- package/dist/frontend-core/template/public/flags/GL.svg +7 -0
- package/dist/frontend-core/template/public/flags/GM.svg +7 -0
- package/dist/frontend-core/template/public/flags/GN.svg +6 -0
- package/dist/frontend-core/template/public/flags/GP.svg +7 -0
- package/dist/frontend-core/template/public/flags/GQ.svg +25 -0
- package/dist/frontend-core/template/public/flags/GR.svg +16 -0
- package/dist/frontend-core/template/public/flags/GS.svg +35 -0
- package/dist/frontend-core/template/public/flags/GT.svg +13 -0
- package/dist/frontend-core/template/public/flags/GU.svg +16 -0
- package/dist/frontend-core/template/public/flags/GW.svg +8 -0
- package/dist/frontend-core/template/public/flags/GY.svg +8 -0
- package/dist/frontend-core/template/public/flags/HK.svg +1 -0
- package/dist/frontend-core/template/public/flags/HM.svg +28 -0
- package/dist/frontend-core/template/public/flags/HN.svg +18 -0
- package/dist/frontend-core/template/public/flags/HR.svg +32 -0
- package/dist/frontend-core/template/public/flags/HT.svg +11 -0
- package/dist/frontend-core/template/public/flags/HU.svg +7 -0
- package/dist/frontend-core/template/public/flags/IC.svg +6 -0
- package/dist/frontend-core/template/public/flags/ID.svg +6 -0
- package/dist/frontend-core/template/public/flags/IE.svg +7 -0
- package/dist/frontend-core/template/public/flags/IL.svg +12 -0
- package/dist/frontend-core/template/public/flags/IM.svg +17 -0
- package/dist/frontend-core/template/public/flags/IN.svg +11 -0
- package/dist/frontend-core/template/public/flags/IO.svg +70 -0
- package/dist/frontend-core/template/public/flags/IQ.svg +13 -0
- package/dist/frontend-core/template/public/flags/IR.svg +37 -0
- package/dist/frontend-core/template/public/flags/IS.svg +7 -0
- package/dist/frontend-core/template/public/flags/IT.svg +7 -0
- package/dist/frontend-core/template/public/flags/JE.svg +9 -0
- package/dist/frontend-core/template/public/flags/JM.svg +9 -0
- package/dist/frontend-core/template/public/flags/JO.svg +9 -0
- package/dist/frontend-core/template/public/flags/JP.svg +6 -0
- package/dist/frontend-core/template/public/flags/KE.svg +18 -0
- package/dist/frontend-core/template/public/flags/KG.svg +21 -0
- package/dist/frontend-core/template/public/flags/KH.svg +10 -0
- package/dist/frontend-core/template/public/flags/KI.svg +24 -0
- package/dist/frontend-core/template/public/flags/KM.svg +16 -0
- package/dist/frontend-core/template/public/flags/KN.svg +13 -0
- package/dist/frontend-core/template/public/flags/KP.svg +13 -0
- package/dist/frontend-core/template/public/flags/KR.svg +21 -0
- package/dist/frontend-core/template/public/flags/KW.svg +8 -0
- package/dist/frontend-core/template/public/flags/KY.svg +24 -0
- package/dist/frontend-core/template/public/flags/KZ.svg +28 -0
- package/dist/frontend-core/template/public/flags/LA.svg +9 -0
- package/dist/frontend-core/template/public/flags/LB.svg +15 -0
- package/dist/frontend-core/template/public/flags/LC.svg +7 -0
- package/dist/frontend-core/template/public/flags/LI.svg +8 -0
- package/dist/frontend-core/template/public/flags/LICENSE +22 -0
- package/dist/frontend-core/template/public/flags/LK.svg +30 -0
- package/dist/frontend-core/template/public/flags/LR.svg +13 -0
- package/dist/frontend-core/template/public/flags/LS.svg +10 -0
- package/dist/frontend-core/template/public/flags/LT.svg +7 -0
- package/dist/frontend-core/template/public/flags/LU.svg +7 -0
- package/dist/frontend-core/template/public/flags/LV.svg +8 -0
- package/dist/frontend-core/template/public/flags/LY.svg +11 -0
- package/dist/frontend-core/template/public/flags/MA.svg +6 -0
- package/dist/frontend-core/template/public/flags/MC.svg +6 -0
- package/dist/frontend-core/template/public/flags/MD.svg +8 -0
- package/dist/frontend-core/template/public/flags/ME.svg +26 -0
- package/dist/frontend-core/template/public/flags/MF.svg +7 -0
- package/dist/frontend-core/template/public/flags/MG.svg +7 -0
- package/dist/frontend-core/template/public/flags/MH.svg +9 -0
- package/dist/frontend-core/template/public/flags/MK.svg +17 -0
- package/dist/frontend-core/template/public/flags/ML.svg +7 -0
- package/dist/frontend-core/template/public/flags/MM.svg +8 -0
- package/dist/frontend-core/template/public/flags/MN.svg +17 -0
- package/dist/frontend-core/template/public/flags/MO.svg +17 -0
- package/dist/frontend-core/template/public/flags/MP.svg +12 -0
- package/dist/frontend-core/template/public/flags/MQ.svg +44 -0
- package/dist/frontend-core/template/public/flags/MR.svg +9 -0
- package/dist/frontend-core/template/public/flags/MS.svg +21 -0
- package/dist/frontend-core/template/public/flags/MT.svg +7 -0
- package/dist/frontend-core/template/public/flags/MU.svg +8 -0
- package/dist/frontend-core/template/public/flags/MV.svg +7 -0
- package/dist/frontend-core/template/public/flags/MW.svg +8 -0
- package/dist/frontend-core/template/public/flags/MX.svg +11 -0
- package/dist/frontend-core/template/public/flags/MY.svg +19 -0
- package/dist/frontend-core/template/public/flags/MZ.svg +10 -0
- package/dist/frontend-core/template/public/flags/NA.svg +9 -0
- package/dist/frontend-core/template/public/flags/NC.svg +16 -0
- package/dist/frontend-core/template/public/flags/NE.svg +8 -0
- package/dist/frontend-core/template/public/flags/NF.svg +10 -0
- package/dist/frontend-core/template/public/flags/NG.svg +9 -0
- package/dist/frontend-core/template/public/flags/NI.svg +13 -0
- package/dist/frontend-core/template/public/flags/NL.svg +7 -0
- package/dist/frontend-core/template/public/flags/NO.svg +7 -0
- package/dist/frontend-core/template/public/flags/NP.svg +12 -0
- package/dist/frontend-core/template/public/flags/NR.svg +7 -0
- package/dist/frontend-core/template/public/flags/NU.svg +47 -0
- package/dist/frontend-core/template/public/flags/NZ.svg +25 -0
- package/dist/frontend-core/template/public/flags/OM.svg +12 -0
- package/dist/frontend-core/template/public/flags/PA.svg +9 -0
- package/dist/frontend-core/template/public/flags/PE.svg +9 -0
- package/dist/frontend-core/template/public/flags/PF.svg +16 -0
- package/dist/frontend-core/template/public/flags/PG.svg +14 -0
- package/dist/frontend-core/template/public/flags/PH.svg +15 -0
- package/dist/frontend-core/template/public/flags/PK.svg +13 -0
- package/dist/frontend-core/template/public/flags/PL.svg +9 -0
- package/dist/frontend-core/template/public/flags/PM.svg +7 -0
- package/dist/frontend-core/template/public/flags/PN.svg +23 -0
- package/dist/frontend-core/template/public/flags/PR.svg +12 -0
- package/dist/frontend-core/template/public/flags/PS.svg +8 -0
- package/dist/frontend-core/template/public/flags/PT.svg +9 -0
- package/dist/frontend-core/template/public/flags/PW.svg +6 -0
- package/dist/frontend-core/template/public/flags/PY.svg +9 -0
- package/dist/frontend-core/template/public/flags/QA.svg +7 -0
- package/dist/frontend-core/template/public/flags/RE.svg +7 -0
- package/dist/frontend-core/template/public/flags/README.md +1 -0
- package/dist/frontend-core/template/public/flags/RO.svg +7 -0
- package/dist/frontend-core/template/public/flags/RS.svg +13 -0
- package/dist/frontend-core/template/public/flags/RU.svg +8 -0
- package/dist/frontend-core/template/public/flags/RW.svg +8 -0
- package/dist/frontend-core/template/public/flags/SA.svg +12 -0
- package/dist/frontend-core/template/public/flags/SB.svg +14 -0
- package/dist/frontend-core/template/public/flags/SC.svg +9 -0
- package/dist/frontend-core/template/public/flags/SD.svg +8 -0
- package/dist/frontend-core/template/public/flags/SE.svg +6 -0
- package/dist/frontend-core/template/public/flags/SG.svg +14 -0
- package/dist/frontend-core/template/public/flags/SH.svg +32 -0
- package/dist/frontend-core/template/public/flags/SI.svg +10 -0
- package/dist/frontend-core/template/public/flags/SJ.svg +7 -0
- package/dist/frontend-core/template/public/flags/SK.svg +11 -0
- package/dist/frontend-core/template/public/flags/SL.svg +7 -0
- package/dist/frontend-core/template/public/flags/SM.svg +11 -0
- package/dist/frontend-core/template/public/flags/SN.svg +10 -0
- package/dist/frontend-core/template/public/flags/SO.svg +6 -0
- package/dist/frontend-core/template/public/flags/SR.svg +11 -0
- package/dist/frontend-core/template/public/flags/SS.svg +10 -0
- package/dist/frontend-core/template/public/flags/ST.svg +12 -0
- package/dist/frontend-core/template/public/flags/SV.svg +12 -0
- package/dist/frontend-core/template/public/flags/SX.svg +14 -0
- package/dist/frontend-core/template/public/flags/SY.svg +11 -0
- package/dist/frontend-core/template/public/flags/SZ.svg +12 -0
- package/dist/frontend-core/template/public/flags/TA.svg +38 -0
- package/dist/frontend-core/template/public/flags/TC.svg +24 -0
- package/dist/frontend-core/template/public/flags/TD.svg +7 -0
- package/dist/frontend-core/template/public/flags/TF.svg +14 -0
- package/dist/frontend-core/template/public/flags/TG.svg +12 -0
- package/dist/frontend-core/template/public/flags/TH.svg +10 -0
- package/dist/frontend-core/template/public/flags/TJ.svg +17 -0
- package/dist/frontend-core/template/public/flags/TK.svg +15 -0
- package/dist/frontend-core/template/public/flags/TL.svg +8 -0
- package/dist/frontend-core/template/public/flags/TM.svg +34 -0
- package/dist/frontend-core/template/public/flags/TN.svg +10 -0
- package/dist/frontend-core/template/public/flags/TO.svg +7 -0
- package/dist/frontend-core/template/public/flags/TR.svg +8 -0
- package/dist/frontend-core/template/public/flags/TT.svg +7 -0
- package/dist/frontend-core/template/public/flags/TV.svg +21 -0
- package/dist/frontend-core/template/public/flags/TW.svg +9 -0
- package/dist/frontend-core/template/public/flags/TZ.svg +8 -0
- package/dist/frontend-core/template/public/flags/UA.svg +6 -0
- package/dist/frontend-core/template/public/flags/UG.svg +15 -0
- package/dist/frontend-core/template/public/flags/UK.svg +30 -0
- package/dist/frontend-core/template/public/flags/UM.svg +40 -0
- package/dist/frontend-core/template/public/flags/US.svg +40 -0
- package/dist/frontend-core/template/public/flags/UY.svg +17 -0
- package/dist/frontend-core/template/public/flags/UZ.svg +26 -0
- package/dist/frontend-core/template/public/flags/VA.svg +8 -0
- package/dist/frontend-core/template/public/flags/VC.svg +12 -0
- package/dist/frontend-core/template/public/flags/VE.svg +21 -0
- package/dist/frontend-core/template/public/flags/VG.svg +33 -0
- package/dist/frontend-core/template/public/flags/VI.svg +31 -0
- package/dist/frontend-core/template/public/flags/VN.svg +6 -0
- package/dist/frontend-core/template/public/flags/VU.svg +14 -0
- package/dist/frontend-core/template/public/flags/WF.svg +9 -0
- package/dist/frontend-core/template/public/flags/WS.svg +13 -0
- package/dist/frontend-core/template/public/flags/XK.svg +20 -0
- package/dist/frontend-core/template/public/flags/YE.svg +7 -0
- package/dist/frontend-core/template/public/flags/YT.svg +22 -0
- package/dist/frontend-core/template/public/flags/ZA.svg +10 -0
- package/dist/frontend-core/template/public/flags/ZM.svg +9 -0
- package/dist/frontend-core/template/public/flags/ZW.svg +19 -0
- package/dist/frontend-core/template/public/silent-check-sso.html +12 -0
- package/dist/frontend-core/template/public/site.webmanifest +1 -0
- package/dist/frontend-core/template/src/components/ui/accordion/accordion.stories.tsx +47 -0
- package/dist/frontend-core/template/src/components/ui/accordion/accordion.tsx +52 -0
- package/dist/frontend-core/template/src/components/ui/admin-sidebar/admin-sidebar.tsx +195 -0
- package/dist/frontend-core/template/src/components/ui/alert/alert.stories.tsx +61 -0
- package/dist/frontend-core/template/src/components/ui/alert/alert.tsx +45 -0
- package/dist/frontend-core/template/src/components/ui/alert-dialog/alert-dialog.stories.tsx +52 -0
- package/dist/frontend-core/template/src/components/ui/alert-dialog/alert-dialog.tsx +105 -0
- package/dist/frontend-core/template/src/components/ui/avatar/avatar.stories.tsx +30 -0
- package/dist/frontend-core/template/src/components/ui/avatar/avatar.tsx +39 -0
- package/dist/frontend-core/template/src/components/ui/badge/badge.stories.tsx +78 -0
- package/dist/frontend-core/template/src/components/ui/badge/badge.tsx +48 -0
- package/dist/frontend-core/template/src/components/ui/breadcrumb/breadcrumb.stories.tsx +67 -0
- package/dist/frontend-core/template/src/components/ui/breadcrumb/breadcrumb.tsx +85 -0
- package/dist/frontend-core/template/src/components/ui/button/button.stories.tsx +150 -0
- package/dist/frontend-core/template/src/components/ui/button/button.tsx +68 -0
- package/dist/frontend-core/template/src/components/ui/calendar/calendar.stories.tsx +160 -0
- package/dist/frontend-core/template/src/components/ui/calendar/calendar.tsx +293 -0
- package/dist/frontend-core/template/src/components/ui/card/card.stories.tsx +77 -0
- package/dist/frontend-core/template/src/components/ui/card/card.tsx +45 -0
- package/dist/frontend-core/template/src/components/ui/card-hover/card-hover.stories.tsx +29 -0
- package/dist/frontend-core/template/src/components/ui/card-hover/card-hover.tsx +28 -0
- package/dist/frontend-core/template/src/components/ui/carousel/carousel.stories.tsx +154 -0
- package/dist/frontend-core/template/src/components/ui/carousel/carousel.tsx +227 -0
- package/dist/frontend-core/template/src/components/ui/chart/base.tsx +304 -0
- package/dist/frontend-core/template/src/components/ui/chart/index.ts +2 -0
- package/dist/frontend-core/template/src/components/ui/chart/line.stories.tsx +230 -0
- package/dist/frontend-core/template/src/components/ui/chart/line.tsx +121 -0
- package/dist/frontend-core/template/src/components/ui/chart/util.ts +3 -0
- package/dist/frontend-core/template/src/components/ui/checkbox/checkbox.stories.tsx +105 -0
- package/dist/frontend-core/template/src/components/ui/checkbox/checkbox.tsx +79 -0
- package/dist/frontend-core/template/src/components/ui/checkbox/shadcn-checkbox.stories.tsx +90 -0
- package/dist/frontend-core/template/src/components/ui/checkbox/shadcn-checkbox.tsx +54 -0
- package/dist/frontend-core/template/src/components/ui/collapse/collapse.stories.tsx +52 -0
- package/dist/frontend-core/template/src/components/ui/collapse/collapse.tsx +9 -0
- package/dist/frontend-core/template/src/components/ui/combobox/combobox.stories.tsx +207 -0
- package/dist/frontend-core/template/src/components/ui/combobox/combobox.tsx +79 -0
- package/dist/frontend-core/template/src/components/ui/command/command.stories.tsx +186 -0
- package/dist/frontend-core/template/src/components/ui/command/command.tsx +165 -0
- package/dist/frontend-core/template/src/components/ui/command-palette/command-palette.stories.tsx +160 -0
- package/dist/frontend-core/template/src/components/ui/command-palette/command-palette.tsx +134 -0
- package/dist/frontend-core/template/src/components/ui/content-frame/content-frame.stories.tsx +198 -0
- package/dist/frontend-core/template/src/components/ui/content-frame/content-frame.tsx +100 -0
- package/dist/frontend-core/template/src/components/ui/context-menu/context-menu.stories.tsx +78 -0
- package/dist/frontend-core/template/src/components/ui/context-menu/context-menu.tsx +179 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/cell-variant-types.ts +11 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/checkbox-cell.tsx +112 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/date-cell.tsx +158 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/gantt-cell.tsx +80 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/long-text-cell.tsx +179 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/multi-select-cell.tsx +284 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/number-cell.tsx +167 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/react-node-cell.tsx +32 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/select-cell.tsx +175 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/short-text-cell.tsx +137 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/utils/gantt-timeline.tsx +91 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/cell-variants/utils/gantt-timerange-picker.tsx +330 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-cell-wrapper.tsx +212 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-cell.tsx +156 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-column-header.tsx +317 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-context-menu.tsx +262 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-row.tsx +123 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-search.tsx +211 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-types.ts +151 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-utils.ts +78 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-view-menu.tsx +360 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/data-grid.tsx +217 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/hooks/use-callback-ref.ts +22 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/hooks/use-data-grid.tsx +1888 -0
- package/dist/frontend-core/template/src/components/ui/data-grid/hooks/use-debounced-callback.ts +19 -0
- package/dist/frontend-core/template/src/components/ui/data-table/context-menu-simple.tsx +141 -0
- package/dist/frontend-core/template/src/components/ui/data-table/data-table.stories.tsx +146 -0
- package/dist/frontend-core/template/src/components/ui/data-table/data-table.tsx +448 -0
- package/dist/frontend-core/template/src/components/ui/data-table/renderers/country-array-cell-renderer.tsx +77 -0
- package/dist/frontend-core/template/src/components/ui/data-table/renderers/country-cell-renderer.tsx +56 -0
- package/dist/frontend-core/template/src/components/ui/data-table/renderers/favorite-cell-renderer.tsx +68 -0
- package/dist/frontend-core/template/src/components/ui/data-table/renderers/links-cell-renderer.tsx +205 -0
- package/dist/frontend-core/template/src/components/ui/data-table/utils/columns.ts +351 -0
- package/dist/frontend-core/template/src/components/ui/data-table/utils/data-table.utils.ts +49 -0
- package/dist/frontend-core/template/src/components/ui/date-picker/date-picker.stories.tsx +149 -0
- package/dist/frontend-core/template/src/components/ui/date-picker/date-picker.tsx +30 -0
- package/dist/frontend-core/template/src/components/ui/dialog/dialog.stories.tsx +80 -0
- package/dist/frontend-core/template/src/components/ui/dialog/dialog.tsx +134 -0
- package/dist/frontend-core/template/src/components/ui/drawer/drawer.stories.tsx +104 -0
- package/dist/frontend-core/template/src/components/ui/drawer/drawer.tsx +87 -0
- package/dist/frontend-core/template/src/components/ui/dropdown-menu/dropdown-menu.stories.tsx +168 -0
- package/dist/frontend-core/template/src/components/ui/dropdown-menu/dropdown-menu.tsx +225 -0
- package/dist/frontend-core/template/src/components/ui/input/input.stories.tsx +141 -0
- package/dist/frontend-core/template/src/components/ui/input/input.tsx +47 -0
- package/dist/frontend-core/template/src/components/ui/label/label.stories.tsx +41 -0
- package/dist/frontend-core/template/src/components/ui/label/label.tsx +20 -0
- package/dist/frontend-core/template/src/components/ui/loader/loader.stories.tsx +45 -0
- package/dist/frontend-core/template/src/components/ui/loader/loader.tsx +17 -0
- package/dist/frontend-core/template/src/components/ui/mark-value-renderer/mark-value-renderer.stories.tsx +114 -0
- package/dist/frontend-core/template/src/components/ui/mark-value-renderer/mark-value-renderer.tsx +48 -0
- package/dist/frontend-core/template/src/components/ui/menubar/menu.stories.tsx +134 -0
- package/dist/frontend-core/template/src/components/ui/menubar/menubar.tsx +208 -0
- package/dist/frontend-core/template/src/components/ui/modal/modal.stories.tsx +297 -0
- package/dist/frontend-core/template/src/components/ui/modal/modal.tsx +80 -0
- package/dist/frontend-core/template/src/components/ui/navigation-menu/navigation-menu.stories.tsx +213 -0
- package/dist/frontend-core/template/src/components/ui/navigation-menu/navigation-menu.tsx +142 -0
- package/dist/frontend-core/template/src/components/ui/pagination/pagination.stories.tsx +49 -0
- package/dist/frontend-core/template/src/components/ui/pagination/pagination.tsx +84 -0
- package/dist/frontend-core/template/src/components/ui/popover/popover.stories.tsx +82 -0
- package/dist/frontend-core/template/src/components/ui/popover/popover.tsx +55 -0
- package/dist/frontend-core/template/src/components/ui/progress/progress.stories.tsx +80 -0
- package/dist/frontend-core/template/src/components/ui/progress/progress.tsx +17 -0
- package/dist/frontend-core/template/src/components/ui/radio-group/radio-group.stories.tsx +154 -0
- package/dist/frontend-core/template/src/components/ui/radio-group/radio-group.tsx +68 -0
- package/dist/frontend-core/template/src/components/ui/resizable/resizable.stories.tsx +73 -0
- package/dist/frontend-core/template/src/components/ui/resizable/resizeable.tsx +38 -0
- package/dist/frontend-core/template/src/components/ui/scroll-area/scroll-area.stories.tsx +55 -0
- package/dist/frontend-core/template/src/components/ui/scroll-area/scroll-area.tsx +39 -0
- package/dist/frontend-core/template/src/components/ui/select/select.stories.tsx +297 -0
- package/dist/frontend-core/template/src/components/ui/select/select.tsx +227 -0
- package/dist/frontend-core/template/src/components/ui/separator/separator.tsx +21 -0
- package/dist/frontend-core/template/src/components/ui/separator/seperator.stories.tsx +25 -0
- package/dist/frontend-core/template/src/components/ui/sheet/sheet.stories.tsx +45 -0
- package/dist/frontend-core/template/src/components/ui/sheet/sheet.tsx +107 -0
- package/dist/frontend-core/template/src/components/ui/skeleton/skeleton.stories.tsx +26 -0
- package/dist/frontend-core/template/src/components/ui/skeleton/skeleton.tsx +7 -0
- package/dist/frontend-core/template/src/components/ui/slider/slider.stories.tsx +101 -0
- package/dist/frontend-core/template/src/components/ui/slider/slider.tsx +98 -0
- package/dist/frontend-core/template/src/components/ui/spinner/spinner.stories.tsx +19 -0
- package/dist/frontend-core/template/src/components/ui/spinner/spinner.tsx +21 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/engine.ts +411 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/format.ts +79 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/index.tsx +201 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/model.json +2877 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/model.xlsm +0 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/parser.ts +307 -0
- package/dist/frontend-core/template/src/components/ui/spreadsheet/types.ts +69 -0
- package/dist/frontend-core/template/src/components/ui/switch/switch.stories.tsx +33 -0
- package/dist/frontend-core/template/src/components/ui/switch/switch.tsx +28 -0
- package/dist/frontend-core/template/src/components/ui/tabs/tabs.stories.tsx +215 -0
- package/dist/frontend-core/template/src/components/ui/tabs/tabs.tsx +70 -0
- package/dist/frontend-core/template/src/components/ui/textarea/textarea.stories.tsx +138 -0
- package/dist/frontend-core/template/src/components/ui/textarea/textarea.tsx +40 -0
- package/dist/frontend-core/template/src/components/ui/toast/toast.mdx +31 -0
- package/dist/frontend-core/template/src/components/ui/toast/toast.stories.tsx +89 -0
- package/dist/frontend-core/template/src/components/ui/toggle/toggle.stories.tsx +65 -0
- package/dist/frontend-core/template/src/components/ui/toggle/toggle.tsx +38 -0
- package/dist/frontend-core/template/src/components/ui/toggle-group/toggle-group.stories.tsx +85 -0
- package/dist/frontend-core/template/src/components/ui/toggle-group/toggle-group.tsx +54 -0
- package/dist/frontend-core/template/src/components/ui/tooltip/tooltip.stories.tsx +29 -0
- package/dist/frontend-core/template/src/components/ui/tooltip/tooltip.tsx +29 -0
- package/dist/frontend-core/template/src/context-providers/auth-context-provider.tsx +210 -0
- package/dist/frontend-core/template/src/context-providers/theme-context-provider.tsx +107 -0
- package/dist/frontend-core/template/src/hooks/useDelay.ts +17 -0
- package/dist/frontend-core/template/src/hooks/useFontsLoaded.ts +17 -0
- package/dist/frontend-core/template/src/hooks/useMediaQuery.ts +28 -0
- package/dist/frontend-core/template/src/hooks/useScreenSize.ts +37 -0
- package/dist/frontend-core/template/src/hooks/useScrollLock.tsx +93 -0
- package/dist/frontend-core/template/src/hooks/useWindowFocus.ts +30 -0
- package/dist/frontend-core/template/src/lib/color.ts +277 -0
- package/dist/frontend-core/template/src/lib/compose-refs.ts +62 -0
- package/dist/frontend-core/template/src/lib/config.ts +77 -0
- package/dist/frontend-core/template/src/lib/query-client.ts +25 -0
- package/dist/frontend-core/template/src/lib/react.ts +25 -0
- package/dist/frontend-core/template/src/lib/router.tsx +26 -0
- package/dist/frontend-core/template/src/lib/types.ts +9 -0
- package/dist/frontend-core/template/src/lib/utils.ts +33 -0
- package/dist/frontend-core/template/src/main.tsx +48 -0
- package/dist/frontend-core/template/src/pages/dashboard/dashboard.page.tsx +97 -0
- package/dist/frontend-core/template/src/pages/error/default-error.page.tsx +20 -0
- package/dist/frontend-core/template/src/pages/error/not-found-error.page.tsx +17 -0
- package/dist/frontend-core/template/src/pages/login/login.page.tsx +50 -0
- package/dist/frontend-core/template/src/pages/root-document.tsx +62 -0
- package/dist/frontend-core/template/src/pages/unauthorized/unauthorized.page.tsx +12 -0
- package/dist/frontend-core/template/src/routes/__root.tsx +79 -0
- package/dist/frontend-core/template/src/routes/_auth-routes/dashboard.lazy.tsx +6 -0
- package/dist/frontend-core/template/src/routes/_auth-routes.tsx +19 -0
- package/dist/frontend-core/template/src/routes/index.tsx +8 -0
- package/dist/frontend-core/template/src/routes/login.tsx +6 -0
- package/dist/frontend-core/template/src/routes/unauthorized.tsx +6 -0
- package/dist/frontend-core/template/src/stories/Configure.mdx +363 -0
- package/dist/frontend-core/template/src/stories/assets/accessibility.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/accessibility.svg +1 -0
- package/dist/frontend-core/template/src/stories/assets/addon-library.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/assets.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/avif-test-image.avif +0 -0
- package/dist/frontend-core/template/src/stories/assets/context.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/discord.svg +1 -0
- package/dist/frontend-core/template/src/stories/assets/docs.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/figma-plugin.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/github.svg +1 -0
- package/dist/frontend-core/template/src/stories/assets/share.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/styling.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/testing.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/theming.png +0 -0
- package/dist/frontend-core/template/src/stories/assets/tutorials.svg +1 -0
- package/dist/frontend-core/template/src/stories/assets/youtube.svg +1 -0
- package/dist/frontend-core/template/src/styles/styles.css +33 -0
- package/dist/frontend-core/template/src/styles/theme-default.css +183 -0
- package/dist/frontend-core/template/src/vite-env.d.ts +2 -0
- package/dist/frontend-core/template/tsconfig.json +103 -0
- package/dist/frontend-core/template/vite.config.ts +167 -0
- package/dist/frontend-core/template/vitest.shims.d.ts +1 -0
- package/dist/frontend-core/types/component.d.ts +1 -0
- package/dist/frontend-core/types/component.js +3 -0
- package/dist/frontend-core/types/component.js.map +1 -0
- package/dist/frontend-core/types/contextprovider.d.ts +1 -0
- package/dist/frontend-core/types/contextprovider.js +3 -0
- package/dist/frontend-core/types/contextprovider.js.map +1 -0
- package/dist/frontend-core/types/hook.d.ts +1 -0
- package/dist/frontend-core/types/hook.js +3 -0
- package/dist/frontend-core/types/hook.js.map +1 -0
- package/dist/frontend-core/types.d.ts +35 -0
- package/dist/frontend-core/types.js +3 -0
- package/dist/frontend-core/types.js.map +1 -0
- package/dist/frontend-forms/forms.generator.d.ts +54 -0
- package/dist/frontend-forms/forms.generator.js +190 -0
- package/dist/frontend-forms/forms.generator.js.map +1 -0
- package/dist/frontend-forms/generators/discriminated-union/fields.generator.d.ts +11 -0
- package/dist/frontend-forms/generators/discriminated-union/fields.generator.js +310 -0
- package/dist/frontend-forms/generators/discriminated-union/fields.generator.js.map +1 -0
- package/dist/frontend-forms/generators/discriminated-union/inputs.generator.d.ts +7 -0
- package/dist/frontend-forms/generators/discriminated-union/inputs.generator.js +69 -0
- package/dist/frontend-forms/generators/discriminated-union/inputs.generator.js.map +1 -0
- package/dist/frontend-forms/generators/enum/inputs.generator.d.ts +5 -0
- package/dist/frontend-forms/generators/enum/inputs.generator.js +69 -0
- package/dist/frontend-forms/generators/enum/inputs.generator.js.map +1 -0
- package/dist/frontend-forms/generators/model/forms.generator.d.ts +11 -0
- package/dist/frontend-forms/generators/model/forms.generator.js +549 -0
- package/dist/frontend-forms/generators/model/forms.generator.js.map +1 -0
- package/dist/frontend-forms/generators/model/inputs.generator.d.ts +5 -0
- package/dist/frontend-forms/generators/model/inputs.generator.js +148 -0
- package/dist/frontend-forms/generators/model/inputs.generator.js.map +1 -0
- package/dist/frontend-forms/index.d.ts +5 -0
- package/dist/frontend-forms/index.js +40 -0
- package/dist/frontend-forms/index.js.map +1 -0
- package/dist/frontend-forms/template/src/components/ui/field/field.tsx +226 -0
- package/dist/frontend-tables/generators/model-context.generator.d.ts +5 -0
- package/dist/frontend-tables/generators/model-context.generator.js +72 -0
- package/dist/frontend-tables/generators/model-context.generator.js.map +1 -0
- package/dist/frontend-tables/generators/model-table.generator.d.ts +5 -0
- package/dist/frontend-tables/generators/model-table.generator.js +339 -0
- package/dist/frontend-tables/generators/model-table.generator.js.map +1 -0
- package/dist/frontend-tables/index.d.ts +5 -0
- package/dist/frontend-tables/index.js +40 -0
- package/dist/frontend-tables/index.js.map +1 -0
- package/dist/frontend-tables/tables.generator.d.ts +49 -0
- package/dist/frontend-tables/tables.generator.js +104 -0
- package/dist/frontend-tables/tables.generator.js.map +1 -0
- package/dist/frontend-trpc-client/generators/model-hook.generator.d.ts +5 -0
- package/dist/frontend-trpc-client/generators/model-hook.generator.js +107 -0
- package/dist/frontend-trpc-client/generators/model-hook.generator.js.map +1 -0
- package/dist/frontend-trpc-client/generators/trpc-client.generator.d.ts +5 -0
- package/dist/frontend-trpc-client/generators/trpc-client.generator.js +64 -0
- package/dist/frontend-trpc-client/generators/trpc-client.generator.js.map +1 -0
- package/dist/frontend-trpc-client/index.d.ts +4 -0
- package/dist/frontend-trpc-client/index.js +40 -0
- package/dist/frontend-trpc-client/index.js.map +1 -0
- package/dist/frontend-trpc-client/trpc-client.generator.d.ts +82 -0
- package/dist/frontend-trpc-client/trpc-client.generator.js +125 -0
- package/dist/frontend-trpc-client/trpc-client.generator.js.map +1 -0
- package/dist/generators.d.ts +2 -0
- package/dist/generators.js +59 -0
- package/dist/generators.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/mock-data/generators/data-mocker.generator.d.ts +2 -0
- package/dist/mock-data/generators/data-mocker.generator.js +235 -0
- package/dist/mock-data/generators/data-mocker.generator.js.map +1 -0
- package/dist/mock-data/generators/id-tracker.generator.d.ts +2 -0
- package/dist/mock-data/generators/id-tracker.generator.js +101 -0
- package/dist/mock-data/generators/id-tracker.generator.js.map +1 -0
- package/dist/mock-data/generators/model-stub.generator.d.ts +10 -0
- package/dist/mock-data/generators/model-stub.generator.js +179 -0
- package/dist/mock-data/generators/model-stub.generator.js.map +1 -0
- package/dist/mock-data/index.d.ts +4 -0
- package/dist/mock-data/index.js +40 -0
- package/dist/mock-data/index.js.map +1 -0
- package/dist/mock-data/mock-data.generator.d.ts +34 -0
- package/dist/mock-data/mock-data.generator.js +121 -0
- package/dist/mock-data/mock-data.generator.js.map +1 -0
- package/dist/seed-data/generator/excel-template.generator.d.ts +8 -0
- package/dist/seed-data/generator/excel-template.generator.js +221 -0
- package/dist/seed-data/generator/excel-template.generator.js.map +1 -0
- package/dist/seed-data/generator/model-seed-data.generator.d.ts +15 -0
- package/dist/seed-data/generator/model-seed-data.generator.js +231 -0
- package/dist/seed-data/generator/model-seed-data.generator.js.map +1 -0
- package/dist/seed-data/generator/seed-migration-types.generator.d.ts +2 -0
- package/dist/seed-data/generator/seed-migration-types.generator.js +44 -0
- package/dist/seed-data/generator/seed-migration-types.generator.js.map +1 -0
- package/dist/seed-data/generator/seed-migrations.generator.d.ts +2 -0
- package/dist/seed-data/generator/seed-migrations.generator.js +57 -0
- package/dist/seed-data/generator/seed-migrations.generator.js.map +1 -0
- package/dist/seed-data/index.d.ts +5 -0
- package/dist/seed-data/index.js +40 -0
- package/dist/seed-data/index.js.map +1 -0
- package/dist/seed-data/seed-data.generator.d.ts +74 -0
- package/dist/seed-data/seed-data.generator.js +131 -0
- package/dist/seed-data/seed-data.generator.js.map +1 -0
- package/dist/types/generators/discriminated-union.generator.d.ts +6 -0
- package/dist/types/generators/discriminated-union.generator.js +86 -0
- package/dist/types/generators/discriminated-union.generator.js.map +1 -0
- package/dist/types/generators/dto-types.generator.d.ts +2 -0
- package/dist/types/generators/dto-types.generator.js +32 -0
- package/dist/types/generators/dto-types.generator.js.map +1 -0
- package/dist/types/generators/enum-type.generator.d.ts +2 -0
- package/dist/types/generators/enum-type.generator.js +65 -0
- package/dist/types/generators/enum-type.generator.js.map +1 -0
- package/dist/types/generators/model-type.generator.d.ts +13 -0
- package/dist/types/generators/model-type.generator.js +171 -0
- package/dist/types/generators/model-type.generator.js.map +1 -0
- package/dist/types/generators/models.generator.d.ts +2 -0
- package/dist/types/generators/models.generator.js +9 -0
- package/dist/types/generators/models.generator.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/types.generator.d.ts +179 -0
- package/dist/types/types.generator.js +220 -0
- package/dist/types/types.generator.js.map +1 -0
- package/dist/types/types.generator.mock.d.ts +2 -0
- package/dist/types/types.generator.mock.js +16 -0
- package/dist/types/types.generator.mock.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { StorybookConfig } from '@storybook/react-vite'
|
|
2
|
+
|
|
3
|
+
const config: StorybookConfig = {
|
|
4
|
+
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
|
|
5
|
+
addons: [
|
|
6
|
+
'@chromatic-com/storybook',
|
|
7
|
+
'@storybook/addon-docs',
|
|
8
|
+
'@storybook/addon-onboarding',
|
|
9
|
+
'@storybook/addon-vitest',
|
|
10
|
+
],
|
|
11
|
+
framework: {
|
|
12
|
+
name: '@storybook/react-vite',
|
|
13
|
+
options: {},
|
|
14
|
+
},
|
|
15
|
+
docs: {
|
|
16
|
+
docsMode: false,
|
|
17
|
+
},
|
|
18
|
+
typescript: {
|
|
19
|
+
reactDocgen: 'react-docgen-typescript',
|
|
20
|
+
reactDocgenTypescriptOptions: {
|
|
21
|
+
shouldExtractLiteralValuesFromEnum: true,
|
|
22
|
+
propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true),
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default config
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import '../src/styles/styles.css'
|
|
2
|
+
|
|
3
|
+
import type { Preview } from '@storybook/react-vite'
|
|
4
|
+
|
|
5
|
+
const preview: Preview = {
|
|
6
|
+
parameters: {
|
|
7
|
+
controls: {
|
|
8
|
+
matchers: {
|
|
9
|
+
color: /(background|color)$/i,
|
|
10
|
+
date: /Date$/i,
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default preview
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { setProjectAnnotations } from '@storybook/react-vite'
|
|
2
|
+
|
|
3
|
+
import { afterEach, beforeEach } from 'vitest'
|
|
4
|
+
|
|
5
|
+
import * as projectAnnotations from './preview'
|
|
6
|
+
|
|
7
|
+
// This is an important step to apply the right configuration when testing your stories.
|
|
8
|
+
// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
|
|
9
|
+
setProjectAnnotations([projectAnnotations])
|
|
10
|
+
|
|
11
|
+
beforeEach(async () => {
|
|
12
|
+
// Setup code if needed
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
afterEach(async () => {
|
|
16
|
+
// Ensure proper cleanup
|
|
17
|
+
await new Promise((resolve) => setTimeout(resolve, 100))
|
|
18
|
+
})
|
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
# Template Frontend
|
|
2
|
+
|
|
3
|
+
This folder contains the frontend application for the PostXL template project. It is a full-stack React application built with Vite + React + TypeScript and uses TanStack Router for file-based routing, TanStack Query for data fetching, tRPC for type-safe APIs, Tailwind CSS for styling, and shadcn/ui-based components (Radix primitives).
|
|
4
|
+
|
|
5
|
+
> **Note**: This is a code-generated project from PostXL. Most files are automatically generated from `postxl-schema.json` using the PostXL generator framework. See the main project [CLAUDE.md](/Users/henk/Work/Projects/PostXL/PXL/CLAUDE.md) for details on the generation workflow.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Overview](#overview)
|
|
10
|
+
- [Prerequisites](#prerequisites)
|
|
11
|
+
- [Getting Started](#getting-started)
|
|
12
|
+
- [Initial Setup](#1-initial-setup)
|
|
13
|
+
- [Environment Variables](#2-environment-variables)
|
|
14
|
+
- [Run Development Server](#3-run-development-server)
|
|
15
|
+
- [Build & Preview Production](#4-build--preview-production)
|
|
16
|
+
- [Available Scripts](#available-scripts)
|
|
17
|
+
- [Architecture & Libraries](#architecture--libraries)
|
|
18
|
+
- [Routing (TanStack Router)](#routing-tanstack-router-v1)
|
|
19
|
+
- [Data Fetching (tRPC + TanStack Query)](#data-fetching-trpc--tanstack-query)
|
|
20
|
+
- [Authentication (Keycloak)](#authentication--keycloak)
|
|
21
|
+
- [UI Components (shadcn/ui + Radix)](#ui-components-shadcnui--radix)
|
|
22
|
+
- [Styling (Tailwind CSS)](#styling-tailwind-css)
|
|
23
|
+
- [Testing (Vitest + Storybook)](#testing-vitest--storybook)
|
|
24
|
+
- [Route Guards](#route-guards)
|
|
25
|
+
- [Development Conventions](#development-conventions)
|
|
26
|
+
- [Troubleshooting](#troubleshooting)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## Overview
|
|
30
|
+
|
|
31
|
+
**Key Technologies:**
|
|
32
|
+
- **React 19** with React 19 DOM for modern React features
|
|
33
|
+
- **Vite 7** for fast dev builds, HMR, and optimized production builds
|
|
34
|
+
- **TypeScript 5.8** with strict type checking (`pnpm run test:types`)
|
|
35
|
+
- **TanStack Router v1** with file-based routing and automatic code-splitting
|
|
36
|
+
- **TanStack Query** for server state management and caching
|
|
37
|
+
- **tRPC 11** integrated with TanStack Query for end-to-end type-safe API calls
|
|
38
|
+
- **Tailwind CSS v4** with utility-first styling and the new Vite plugin
|
|
39
|
+
- **shadcn/ui** components built on Radix UI primitives, class-variance-authority, and tailwind-merge
|
|
40
|
+
- **Keycloak** for enterprise-grade authentication and authorization
|
|
41
|
+
- **Vitest** for unit and component testing with browser mode
|
|
42
|
+
- **Storybook 9** for component development and documentation
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## Prerequisites
|
|
46
|
+
|
|
47
|
+
**Required:**
|
|
48
|
+
- **Node.js 22+** (see `.nvmrc` - use `nvm use` to switch to the correct version)
|
|
49
|
+
- **pnpm 10.8.0+** (package manager - this project does not support npm or yarn)
|
|
50
|
+
|
|
51
|
+
**Optional:**
|
|
52
|
+
- Backend API running (usually at `http://localhost:3001`)
|
|
53
|
+
- Keycloak instance for authentication (usually at `http://localhost:8080`)
|
|
54
|
+
- Docker and Docker Compose for running backend services
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Getting Started
|
|
58
|
+
|
|
59
|
+
### 1. Initial Setup
|
|
60
|
+
|
|
61
|
+
**IMPORTANT:** Always use the correct Node.js version before running any commands:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Switch to the correct Node.js version (22+)
|
|
65
|
+
nvm use
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If you see warnings like `WARN Unsupported engine: wanted: {"node":">=22"}`, you MUST run `nvm use` immediately.
|
|
69
|
+
|
|
70
|
+
**Installation:**
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# From the monorepo root, install all dependencies
|
|
74
|
+
pnpm install
|
|
75
|
+
|
|
76
|
+
# Navigate to the frontend directory (if not already there)
|
|
77
|
+
cd projects/template/frontend
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2. Environment Variables
|
|
81
|
+
|
|
82
|
+
The app is configured via Vite environment variables (see `src/lib/config.ts`). Create a `.env.local` file in the frontend directory with the following variables:
|
|
83
|
+
|
|
84
|
+
**Core Configuration:**
|
|
85
|
+
- `VITE_PUBLIC_API_URL` - Base API URL (default: `http://localhost:3001`)
|
|
86
|
+
- `VITE_PUBLIC_BASE_URL` - Public base URL of the frontend (default: `http://localhost:3000`)
|
|
87
|
+
|
|
88
|
+
**Authentication (Keycloak):**
|
|
89
|
+
- `VITE_PUBLIC_KEYCLOAK_URL` - Keycloak server URL (e.g., `http://localhost:8080`)
|
|
90
|
+
- `VITE_PUBLIC_KEYCLOAK_REALM` - Keycloak realm name
|
|
91
|
+
- `VITE_PUBLIC_KEYCLOAK_CLIENT_ID` - Keycloak client ID
|
|
92
|
+
- `VITE_PUBLIC_CHECK_LOGIN_IFRAME` - Enable/disable iframe-based session checks (boolean)
|
|
93
|
+
- `VITE_AUTH` - Enable/disable authentication entirely (boolean, useful for local development)
|
|
94
|
+
|
|
95
|
+
**Development:**
|
|
96
|
+
- `VITE_ENABLE_DEV_TOOLS` - Enable TanStack Router and Query DevTools (boolean, auto-enabled with `pnpm dev`)
|
|
97
|
+
|
|
98
|
+
**Testing & E2E:**
|
|
99
|
+
- `VITE_PUBLIC_MAPBOX_DISABLE_TRANSITIONS` - Disable map transitions for E2E tests (boolean)
|
|
100
|
+
- `VITE_PUBLIC_USE_TEST_ASSETS` - Use test assets instead of production assets (boolean)
|
|
101
|
+
|
|
102
|
+
**Analytics (Optional):**
|
|
103
|
+
- `VITE_PUBLIC_ENABLE_ANALYTICS` - Enable analytics tracking (boolean)
|
|
104
|
+
- `VITE_PUBLIC_ANALYTICS_SCRIPT_URL` - Analytics script URL (string)
|
|
105
|
+
|
|
106
|
+
**Example `.env.local`** (do not commit secrets):
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# API Configuration
|
|
110
|
+
VITE_PUBLIC_API_URL=http://localhost:3001
|
|
111
|
+
VITE_PUBLIC_BASE_URL=http://localhost:3000
|
|
112
|
+
|
|
113
|
+
# Keycloak Authentication
|
|
114
|
+
VITE_PUBLIC_KEYCLOAK_URL=http://localhost:8080
|
|
115
|
+
VITE_PUBLIC_KEYCLOAK_REALM=template
|
|
116
|
+
VITE_PUBLIC_KEYCLOAK_CLIENT_ID=template-frontend
|
|
117
|
+
VITE_PUBLIC_CHECK_LOGIN_IFRAME=false
|
|
118
|
+
|
|
119
|
+
# Development
|
|
120
|
+
VITE_AUTH=true
|
|
121
|
+
VITE_ENABLE_DEV_TOOLS=true
|
|
122
|
+
|
|
123
|
+
# Analytics (optional)
|
|
124
|
+
VITE_PUBLIC_ENABLE_ANALYTICS=false
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
> **Note:** Boolean environment variables are parsed in `src/lib/config.ts` via JSON parsing and support special Docker placeholders. See the config file for implementation details.
|
|
128
|
+
|
|
129
|
+
### 3. Run Development Server
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Start dev server with DevTools enabled
|
|
133
|
+
pnpm dev
|
|
134
|
+
|
|
135
|
+
# Start dev server without authentication (useful for local development)
|
|
136
|
+
pnpm dev:noAuth
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The application will be available at `http://localhost:3000` (or the port specified in `VITE_PUBLIC_BASE_URL`).
|
|
140
|
+
|
|
141
|
+
### 4. Build & Preview Production
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Type-check and build for production
|
|
145
|
+
pnpm build
|
|
146
|
+
|
|
147
|
+
# Preview the production build locally
|
|
148
|
+
pnpm preview
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
## Available Scripts
|
|
153
|
+
|
|
154
|
+
**Development:**
|
|
155
|
+
- `pnpm dev` - Start development server with DevTools enabled
|
|
156
|
+
- `pnpm dev:noAuth` - Start development server with authentication disabled
|
|
157
|
+
|
|
158
|
+
**Building:**
|
|
159
|
+
- `pnpm build` - Type-check and build for production
|
|
160
|
+
- `pnpm build:analyze` - Build with bundle analysis (skips type-check)
|
|
161
|
+
- `pnpm debug` - Build with Vite debug logging enabled
|
|
162
|
+
- `pnpm preview` - Preview production build locally
|
|
163
|
+
|
|
164
|
+
**Testing:**
|
|
165
|
+
- `pnpm test:types` - Run TypeScript type checking
|
|
166
|
+
- `pnpm test:storybook` - Run Storybook component tests with Vitest
|
|
167
|
+
|
|
168
|
+
**Linting:**
|
|
169
|
+
- `pnpm lint` - Run ESLint on the codebase
|
|
170
|
+
|
|
171
|
+
**Storybook:**
|
|
172
|
+
- `pnpm storybook:start` - Start Storybook dev server on port 6006
|
|
173
|
+
- `pnpm storybook:build` - Build Storybook for production
|
|
174
|
+
|
|
175
|
+
**E2E Support:**
|
|
176
|
+
- `pnpm e2e:build` - Build for E2E tests with test-friendly configuration
|
|
177
|
+
- `pnpm e2e:ci` - Build for CI E2E tests
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
## Architecture & Libraries
|
|
181
|
+
|
|
182
|
+
### Routing (TanStack Router v1)
|
|
183
|
+
|
|
184
|
+
This project uses **file-based routing** powered by `@tanstack/router-plugin`. Route modules live in `src/routes/` and the plugin automatically generates `routeTree.gen.ts` used by the router configuration.
|
|
185
|
+
|
|
186
|
+
**Key Concepts:**
|
|
187
|
+
- **File-based routing**: Routes are defined by the file structure in `src/routes/`
|
|
188
|
+
- **Lazy loading**: Use `.lazy.tsx` files for route components that should be code-split and loaded on-demand
|
|
189
|
+
- **Type-safe navigation**: Full TypeScript support for route paths, params, and search params
|
|
190
|
+
- **Nested layouts**: Support for nested route layouts with `_layout` files
|
|
191
|
+
|
|
192
|
+
**Important Files:**
|
|
193
|
+
- `src/lib/router.tsx` - Router configuration, context setup (auth), error/not-found components
|
|
194
|
+
- `src/routes/__root.tsx` - Root route with typed context and `<RootDocument>` shell component
|
|
195
|
+
- `src/routes/routeTree.gen.ts` - Auto-generated route tree (do not edit manually)
|
|
196
|
+
|
|
197
|
+
**Resources:**
|
|
198
|
+
- [File-based routing docs](https://tanstack.com/router/v1/docs/framework/react/routing/file-based-routing)
|
|
199
|
+
- [File naming conventions](https://tanstack.com/router/v1/docs/framework/react/routing/file-naming-conventions)
|
|
200
|
+
- [Code-splitting guide](https://tanstack.com/router/v1/docs/framework/react/guide/code-splitting)
|
|
201
|
+
|
|
202
|
+
### Data Fetching (tRPC + TanStack Query)
|
|
203
|
+
|
|
204
|
+
This project uses **tRPC** for end-to-end type-safe API calls, integrated with **TanStack Query** for powerful data fetching, caching, and state management.
|
|
205
|
+
|
|
206
|
+
**Key Features:**
|
|
207
|
+
- **Type safety**: Full TypeScript inference from backend to frontend - no manual type definitions needed
|
|
208
|
+
- **Automatic serialization**: Uses `superjson` for handling complex types (Date, Map, Set, etc.)
|
|
209
|
+
- **Caching & optimistic updates**: Built on TanStack Query for intelligent caching and UI updates
|
|
210
|
+
- **Queries and mutations**: Colocated with components for easy data management
|
|
211
|
+
|
|
212
|
+
**Important Files:**
|
|
213
|
+
- `src/lib/trpc.ts` - tRPC client configuration and React hooks setup
|
|
214
|
+
|
|
215
|
+
**Usage Example:**
|
|
216
|
+
```typescript
|
|
217
|
+
import { trpc } from '@lib/trpc'
|
|
218
|
+
|
|
219
|
+
function MyComponent() {
|
|
220
|
+
// Type-safe query
|
|
221
|
+
const { data, isLoading } = trpc.users.list.useQuery()
|
|
222
|
+
|
|
223
|
+
// Type-safe mutation
|
|
224
|
+
const createUser = trpc.users.create.useMutation()
|
|
225
|
+
|
|
226
|
+
return (
|
|
227
|
+
<button onClick={() => createUser.mutate({ name: 'John' })}>
|
|
228
|
+
Create User
|
|
229
|
+
</button>
|
|
230
|
+
)
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Resources:**
|
|
235
|
+
- [tRPC documentation](https://trpc.io/docs)
|
|
236
|
+
- [tRPC + TanStack Query integration](https://trpc.io/docs/client/react/integration/tanstack-query)
|
|
237
|
+
- [TanStack Query documentation](https://tanstack.com/query/latest)
|
|
238
|
+
|
|
239
|
+
### Authentication (Keycloak)
|
|
240
|
+
|
|
241
|
+
Authentication is handled by **Keycloak** using the `keycloak-js` library, wrapped in a custom React context for easy access throughout the application.
|
|
242
|
+
|
|
243
|
+
**Key Features:**
|
|
244
|
+
- **SSO support**: Single sign-on across multiple applications
|
|
245
|
+
- **Role-based access control**: User roles and permissions from Keycloak
|
|
246
|
+
- **Token management**: Automatic token refresh and session management
|
|
247
|
+
- **Optional auth**: Can be disabled via `VITE_AUTH=false` for local development
|
|
248
|
+
|
|
249
|
+
**Important Files:**
|
|
250
|
+
- `src/contextProviders/authContextProvider.tsx` - Authentication context and hooks
|
|
251
|
+
- `src/contextProviders/themeContextProvider.tsx` - Theme management (light/dark mode)
|
|
252
|
+
- `src/pages/login/login.page.tsx` - Login page and redirect handling
|
|
253
|
+
|
|
254
|
+
### UI Components (shadcn/ui + Radix)
|
|
255
|
+
|
|
256
|
+
This project follows the **shadcn/ui** approach, using **Radix UI** primitives combined with **Tailwind CSS** and **class-variance-authority** for composable, accessible components.
|
|
257
|
+
|
|
258
|
+
**Key Characteristics:**
|
|
259
|
+
- **Copy-paste components**: Components are part of your codebase, not a package dependency
|
|
260
|
+
- **Radix primitives**: Built on Radix UI for accessibility and headless UI patterns
|
|
261
|
+
- **Tailwind styling**: Utility-first CSS with Tailwind v4
|
|
262
|
+
- **Variants**: Uses `class-variance-authority` (CVA) for component variants
|
|
263
|
+
|
|
264
|
+
**Component Location:**
|
|
265
|
+
- `src/components/ui/` - Base UI components (button, dialog, dropdown, etc.)
|
|
266
|
+
|
|
267
|
+
**Example Components:**
|
|
268
|
+
- `src/components/ui/button/Button.tsx` - Button component with variants
|
|
269
|
+
- `src/components/ui/dialog/Dialog.tsx` - Modal dialog
|
|
270
|
+
- `src/components/ui/checkbox/ShadcnCheckbox.tsx` - Checkbox with Radix
|
|
271
|
+
- `src/components/ui/calendar/Calendar.tsx` - Date picker calendar
|
|
272
|
+
|
|
273
|
+
**Resources:**
|
|
274
|
+
- [shadcn/ui documentation](https://ui.shadcn.com/docs)
|
|
275
|
+
- [Radix UI primitives](https://www.radix-ui.com/primitives)
|
|
276
|
+
- [class-variance-authority](https://cva.style/docs)
|
|
277
|
+
|
|
278
|
+
### Styling (Tailwind CSS)
|
|
279
|
+
|
|
280
|
+
This project uses **Tailwind CSS v4** with the new **@tailwindcss/vite** plugin for utility-first styling.
|
|
281
|
+
|
|
282
|
+
**Key Features:**
|
|
283
|
+
- **Utility-first**: Compose designs using utility classes
|
|
284
|
+
- **Custom theme**: Extended theme in `tailwind.config.js` or CSS variables
|
|
285
|
+
- **Dark mode**: Built-in dark mode support with `class` strategy
|
|
286
|
+
- **Responsive design**: Mobile-first responsive utilities
|
|
287
|
+
|
|
288
|
+
**Utility Functions:**
|
|
289
|
+
- `src/lib/utils.ts` - Contains the `cn()` utility function that combines `clsx` and `tailwind-merge` for conditional class names
|
|
290
|
+
|
|
291
|
+
**Usage Example:**
|
|
292
|
+
```typescript
|
|
293
|
+
import { cn } from '@lib/utils'
|
|
294
|
+
|
|
295
|
+
<div className={cn(
|
|
296
|
+
"px-4 py-2 rounded-lg",
|
|
297
|
+
isActive && "bg-blue-500",
|
|
298
|
+
isDisabled && "opacity-50"
|
|
299
|
+
)}>
|
|
300
|
+
Content
|
|
301
|
+
</div>
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Resources:**
|
|
305
|
+
- [Tailwind CSS documentation](https://tailwindcss.com/docs)
|
|
306
|
+
- [Utility classes reference](https://tailwindcss.com/docs/styling-with-utility-classes)
|
|
307
|
+
- [Responsive design guide](https://tailwindcss.com/docs/responsive-design)
|
|
308
|
+
|
|
309
|
+
### Testing (Vitest + Storybook)
|
|
310
|
+
|
|
311
|
+
This project uses **Vitest** for unit and component testing, and **Storybook** for component development and documentation.
|
|
312
|
+
|
|
313
|
+
**Vitest:**
|
|
314
|
+
- **Browser mode**: Tests run in a real browser environment using Playwright
|
|
315
|
+
- **Component testing**: Test React components with `vitest-browser-react`
|
|
316
|
+
- **Coverage**: V8 coverage reports with `@vitest/coverage-v8`
|
|
317
|
+
- **Fast**: Powered by Vite for instant feedback
|
|
318
|
+
|
|
319
|
+
**Storybook:**
|
|
320
|
+
- **Component development**: Develop components in isolation
|
|
321
|
+
- **Documentation**: Auto-generated docs with `@storybook/addon-docs`
|
|
322
|
+
- **Testing**: Integration with Vitest via `@storybook/addon-vitest`
|
|
323
|
+
- **Visual testing**: Ready for Chromatic integration
|
|
324
|
+
|
|
325
|
+
**Configuration Files:**
|
|
326
|
+
- `vite.config.ts` - Vitest configuration
|
|
327
|
+
- `.storybook/main.ts` - Storybook configuration
|
|
328
|
+
- `.storybook/preview.ts` - Storybook preview settings
|
|
329
|
+
|
|
330
|
+
**Resources:**
|
|
331
|
+
- [Vitest documentation](https://vitest.dev/)
|
|
332
|
+
- [Storybook documentation](https://storybook.js.org/docs)
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
## Route Guards
|
|
336
|
+
|
|
337
|
+
Route guards are implemented via the `beforeLoad` hook in route files. Guards can redirect users, throw errors, or prevent navigation based on authentication state or user permissions.
|
|
338
|
+
|
|
339
|
+
**Authentication Guards:**
|
|
340
|
+
|
|
341
|
+
The main authentication guard is implemented in `src/routes/_authRoutes.tsx` and applies to all routes nested under it:
|
|
342
|
+
- If the user is not authenticated, they are redirected to `/login` with a `redirectUrl` search parameter to restore their location after login
|
|
343
|
+
- After successful login, users are automatically redirected back to their original destination
|
|
344
|
+
|
|
345
|
+
**Route Structure:**
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
/ → Redirects to /dashboard (src/routes/index.tsx)
|
|
349
|
+
/login → Login page (src/pages/login/login.page.tsx)
|
|
350
|
+
/unauthorized → Unauthorized access page
|
|
351
|
+
/_authRoutes/* → Protected routes requiring authentication
|
|
352
|
+
/dashboard → Main dashboard (default landing page)
|
|
353
|
+
/[other-routes] → Other authenticated routes
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Implementing Custom Guards:**
|
|
357
|
+
|
|
358
|
+
To add custom guards to a route, use the `beforeLoad` hook:
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
// src/routes/admin.tsx
|
|
362
|
+
export const Route = createFileRoute('/admin')({
|
|
363
|
+
beforeLoad: async ({ context }) => {
|
|
364
|
+
if (!context.auth.isAuthenticated) {
|
|
365
|
+
throw redirect({ to: '/login' })
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
if (context.auth.user?.role !== 'admin') {
|
|
369
|
+
throw redirect({ to: '/unauthorized' })
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
})
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
## Development Conventions
|
|
377
|
+
|
|
378
|
+
### File Organization
|
|
379
|
+
|
|
380
|
+
- **Routes**: Place route files in `src/routes/` following TanStack Router file naming conventions
|
|
381
|
+
- **Components**:
|
|
382
|
+
- UI components: `src/components/ui/`
|
|
383
|
+
- Feature components: `src/components/[feature-name]/`
|
|
384
|
+
- **Pages**: Page components in `src/pages/[route-name]/` (lazy-loaded by routes)
|
|
385
|
+
- **Lib/Utils**: Shared utilities and configurations in `src/lib/`
|
|
386
|
+
- **Types**: Type definitions in `src/types/`
|
|
387
|
+
|
|
388
|
+
### Import Aliases
|
|
389
|
+
|
|
390
|
+
This project uses path aliases configured via `vite-tsconfig-paths`:
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
import { Button } from '@components/ui/button/Button'
|
|
394
|
+
import { trpc } from '@lib/trpc'
|
|
395
|
+
import { useAuth } from '@contextProviders/authContextProvider'
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Available aliases:
|
|
399
|
+
- `@` - Points to `src/`
|
|
400
|
+
|
|
401
|
+
### Code Splitting
|
|
402
|
+
|
|
403
|
+
- Use `.lazy.tsx` files for route components that should be lazy-loaded to keep initial bundle size small
|
|
404
|
+
- Heavy components or libraries should be dynamically imported where possible
|
|
405
|
+
- The build automatically code-splits routes for optimal loading performance
|
|
406
|
+
|
|
407
|
+
### State Management
|
|
408
|
+
|
|
409
|
+
- **Server state**: Use tRPC queries and mutations with TanStack Query
|
|
410
|
+
- **Client state**: Use React hooks (`useState`, `useReducer`) and context providers
|
|
411
|
+
- **Form state**: Use `react-hook-form` with Zod validation
|
|
412
|
+
- **URL state**: Use TanStack Router's search params for shareable state
|
|
413
|
+
|
|
414
|
+
### Styling Conventions
|
|
415
|
+
|
|
416
|
+
- **Prefer utility classes**: Use Tailwind utilities over custom CSS
|
|
417
|
+
- **Use the `cn()` utility**: For conditional and merged class names (from `src/lib/utils.ts`)
|
|
418
|
+
- **Component variants**: Use `class-variance-authority` for component variant systems
|
|
419
|
+
- **Consistency**: Follow existing component patterns from `src/components/ui/`
|
|
420
|
+
|
|
421
|
+
### TypeScript
|
|
422
|
+
|
|
423
|
+
- **Strict mode**: TypeScript strict mode is enabled - address all type errors
|
|
424
|
+
- **Type inference**: Let TypeScript infer types where possible, explicit types for public APIs
|
|
425
|
+
- **tRPC types**: Never manually define backend types - they're automatically inferred from tRPC
|
|
426
|
+
- **Zod schemas**: Use Zod for runtime validation and type generation
|
|
427
|
+
|
|
428
|
+
### Generated Code
|
|
429
|
+
|
|
430
|
+
**IMPORTANT:** This project uses PostXL code generation:
|
|
431
|
+
|
|
432
|
+
- Most application files are auto-generated from `postxl-schema.json`
|
|
433
|
+
- To regenerate code after schema changes: `pnpm run generate` (from project root)
|
|
434
|
+
- To force regeneration: `pnpm run generate -f`
|
|
435
|
+
- Generated files should not be manually edited unless you "eject" them (modify them to take ownership)
|
|
436
|
+
- See the main [CLAUDE.md](../../../CLAUDE.md) for generator development workflow
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
## Troubleshooting
|
|
440
|
+
|
|
441
|
+
### Common Issues
|
|
442
|
+
|
|
443
|
+
**Authentication redirect loop:**
|
|
444
|
+
- Ensure `VITE_PUBLIC_KEYCLOAK_URL`, `VITE_PUBLIC_KEYCLOAK_REALM`, and `VITE_PUBLIC_KEYCLOAK_CLIENT_ID` are correct
|
|
445
|
+
- Check that Keycloak is running and reachable at the specified URL
|
|
446
|
+
- For local development without auth, set `VITE_AUTH=false`
|
|
447
|
+
- Try clearing browser cookies and localStorage
|
|
448
|
+
|
|
449
|
+
**Type errors:**
|
|
450
|
+
- Run `pnpm test:types` to see all TypeScript errors
|
|
451
|
+
- Ensure all dependencies are installed: `pnpm install`
|
|
452
|
+
- If using tRPC, ensure the backend is built and types are generated
|
|
453
|
+
- Check that `routeTree.gen.ts` is up to date (generated automatically on dev server start)
|
|
454
|
+
|
|
455
|
+
**Build failures:**
|
|
456
|
+
- Ensure you're using Node.js 22+: Run `nvm use`
|
|
457
|
+
- Clear build cache: `rm -rf node_modules/.vite`
|
|
458
|
+
- Rebuild from monorepo root: `pnpm run build`
|
|
459
|
+
- Check for TypeScript errors: `pnpm test:types`
|
|
460
|
+
|
|
461
|
+
**HMR (Hot Module Replacement) not working:**
|
|
462
|
+
- Check that no errors are logged in the browser console
|
|
463
|
+
- Try restarting the Vite dev server
|
|
464
|
+
- Clear browser cache and reload
|
|
465
|
+
- On macOS, you may need to increase file watch limits (see main project README)
|
|
466
|
+
|
|
467
|
+
**Storybook issues:**
|
|
468
|
+
- Ensure Storybook dependencies are installed: `pnpm install`
|
|
469
|
+
- Clear Storybook cache: `rm -rf node_modules/.cache/storybook`
|
|
470
|
+
- Restart Storybook: `pnpm storybook:start`
|
|
471
|
+
|
|
472
|
+
**Port already in use:**
|
|
473
|
+
- Frontend default port is 3000
|
|
474
|
+
- Change port with: `pnpm dev -- --port 3001`
|
|
475
|
+
- Or kill the process using the port: `lsof -ti:3000 | xargs kill -9` (macOS/Linux)
|
|
476
|
+
|
|
477
|
+
**Environment variables not loading:**
|
|
478
|
+
- Ensure `.env.local` is in the frontend directory (not the project root)
|
|
479
|
+
- Restart the dev server after changing environment variables
|
|
480
|
+
- Remember: Only `VITE_*` prefixed variables are exposed to the client
|
|
481
|
+
- Check `src/lib/config.ts` for how environment variables are parsed
|
|
482
|
+
|
|
483
|
+
### Getting Help
|
|
484
|
+
|
|
485
|
+
- Check the [PostXL CLAUDE.md](../../../CLAUDE.md) for monorepo-level documentation
|
|
486
|
+
- Review TanStack Router docs: https://tanstack.com/router/latest
|
|
487
|
+
- Review tRPC docs: https://trpc.io/docs
|
|
488
|
+
- Check Vite documentation: https://vite.dev/
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"style": "new-york",
|
|
4
|
+
"rsc": false,
|
|
5
|
+
"tsx": true,
|
|
6
|
+
"tailwind": {
|
|
7
|
+
"config": "",
|
|
8
|
+
"css": "src/styles/styles.css",
|
|
9
|
+
"baseColor": "neutral",
|
|
10
|
+
"cssVariables": false,
|
|
11
|
+
"prefix": ""
|
|
12
|
+
},
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@components",
|
|
15
|
+
"utils": "@lib/utils",
|
|
16
|
+
"ui": "@components/ui",
|
|
17
|
+
"lib": "@lib",
|
|
18
|
+
"hooks": "@hooks"
|
|
19
|
+
},
|
|
20
|
+
"iconLibrary": "lucide"
|
|
21
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
|
|
3
|
+
<rect fill="#0052B4" width="513" height="342"/>
|
|
4
|
+
<g>
|
|
5
|
+
<path fill="#FFFFFF" d="M440.1,181.1c-0.1,39.2-6.4,81.4-57.4,101.5c-51.1-20.1-57.3-62.3-57.4-101.5L440.1,181.1L440.1,181.1z"/>
|
|
6
|
+
<path fill="#29DBFF" d="M439.6,197.7c-2.8,34.9-12.4,67.4-57,85c-44.4-17.6-54.5-51.2-56.9-84.9"/>
|
|
7
|
+
<path fill="#FFFFFF" d="M437.8,214.1c-3.2,24.3-16.7,53.5-55.1,68.6c-38.4-15.1-50.5-42.5-55.1-68.4"/>
|
|
8
|
+
<path fill="#29DBFF" d="M434.2,230.3c-5.7,17.7-19.3,39.4-51.3,52.8c-32-12.6-45.2-33.8-51.4-53"/>
|
|
9
|
+
<path fill="#FFFFFF" d="M426.7,246.9c-6.5,11.3-17.7,25.4-44,35.9c-27.5-11.5-37.4-25.3-44-36.1"/>
|
|
10
|
+
<path fill="#29DBFF" d="M412.4,265.1c-8.1,7.2-12,11.2-29.6,17.9c-20.1-7.9-22.6-11.6-29.2-17.5"/>
|
|
11
|
+
<path fill="#5CC85C" d="M383.3,231.6c-0.2-0.2-27.9,35.7-27.9,35.7c-1.8-1.3-10-9.5-13.3-15l41.3-50.1l40.2,49.7
|
|
12
|
+
c-3.9,6.5-11.4,13.6-13.2,15"/>
|
|
13
|
+
</g>
|
|
14
|
+
<polygon fill="#5CC85C" points="382.6,85.3 356.1,130.3 409.1,130.3 409.1,130.3 "/>
|
|
15
|
+
<ellipse transform="matrix(0.134 -0.991 0.991 0.134 28.7247 484.2523)" fill="#F7A226" cx="291.4" cy="225.7" rx="48.7" ry="15.7"/>
|
|
16
|
+
<ellipse transform="matrix(0.373 -0.9278 0.9278 0.373 37.247 384.4472)" fill="#DDC7AB" cx="303.1" cy="164.7" rx="11.7" ry="7.2"/>
|
|
17
|
+
<ellipse transform="matrix(0.1437 -0.9896 0.9896 0.1437 -19.091 521.3171)" fill="#DDC7AB" cx="291.7" cy="271.7" rx="11.4" ry="3.3"/>
|
|
18
|
+
<ellipse transform="matrix(0.9986 -5.352928e-02 5.352928e-02 0.9986 -13.9925 16.4237)" fill="#DDC7AB" cx="299.6" cy="269.4" rx="3.3" ry="11"/>
|
|
19
|
+
<ellipse transform="matrix(0.9303 -0.3668 0.3668 0.9303 -51.8254 129.3871)" fill="#DDC7AB" cx="314.5" cy="201.1" rx="4.1" ry="13.7"/>
|
|
20
|
+
<ellipse transform="matrix(0.9303 -0.3668 0.3668 0.9303 -43.1881 128.875)" fill="#DDC7AB" cx="317.5" cy="178.1" rx="13.7" ry="4.1"/>
|
|
21
|
+
<ellipse transform="matrix(0.991 -0.134 0.134 0.991 -26.0008 65.5194)" fill="#F7A226" cx="473.6" cy="225.9" rx="15.7" ry="48.7"/>
|
|
22
|
+
<ellipse transform="matrix(0.9278 -0.373 0.373 0.9278 -28.1478 184.2457)" fill="#DDC7AB" cx="462" cy="164.9" rx="7.2" ry="11.7"/>
|
|
23
|
+
<ellipse transform="matrix(0.9896 -0.1437 0.1437 0.9896 -34.1512 70.8368)" fill="#DDC7AB" cx="473.4" cy="271.9" rx="3.3" ry="11.4"/>
|
|
24
|
+
<ellipse transform="matrix(5.352928e-02 -0.9986 0.9986 5.352928e-02 171.3404 719.9983)" fill="#DDC7AB" cx="465.5" cy="269.6" rx="11" ry="3.3"/>
|
|
25
|
+
<ellipse transform="matrix(0.3668 -0.9303 0.9303 0.3668 98.0689 546.5782)" fill="#DDC7AB" cx="450.6" cy="201.2" rx="13.7" ry="4.1"/>
|
|
26
|
+
<ellipse transform="matrix(0.3668 -0.9303 0.9303 0.3668 117.5679 529.2617)" fill="#DDC7AB" cx="447.6" cy="178.3" rx="4.1" ry="13.7"/>
|
|
27
|
+
<polygon fill="#B0C6CC" points="373.3,130.3 356.1,155 373.9,181.1 396,181.1 400.7,155.7 395.3,130.3 "/>
|
|
28
|
+
<polygon fill="#FFFFFF" points="256,0 256,117.4 209.9,117.4 256,148.1 256,170.7 233.4,170.7 160,121.8 160,170.7 96,170.7 96,121.8
|
|
29
|
+
22.6,170.7 0,170.7 0,148.1 46.1,117.4 0,117.4 0,53.4 46.1,53.4 0,22.7 0,0 22.6,0 96,48.9 96,0 160,0 160,48.9 233.4,0 "/>
|
|
30
|
+
<polygon fill="#D80027" points="144,0 112,0 112,69.4 0,69.4 0,101.4 112,101.4 112,170.7 144,170.7 144,101.4 256,101.4 256,69.4
|
|
31
|
+
144,69.4 "/>
|
|
32
|
+
<polygon fill="#2E52B2" points="256,22.7 256,53.4 209.9,53.4 "/>
|
|
33
|
+
<g>
|
|
34
|
+
<polygon fill="#D80027" points="0,170.7 0,159.7 62.5,117.4 85.1,117.4 7.3,170.7 "/>
|
|
35
|
+
</g>
|
|
36
|
+
<polygon fill="#D80027" points="7.3,0.1 85.1,53.3 62.5,53.3 0,11.1 0,0.1 "/>
|
|
37
|
+
<polygon fill="#D80027" points="256,0.1 256,11.1 193.5,53.4 170.9,53.4 248.7,0.1 "/>
|
|
38
|
+
<polygon fill="#D80027" points="248.7,170.7 170.9,117.4 193.5,117.4 256,159.7 256,170.7 "/>
|
|
39
|
+
</svg>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
|
|
3
|
+
<style type="text/css">
|
|
4
|
+
.st0{fill:#FFDA44;}
|
|
5
|
+
.st1{fill:#0052B4;}
|
|
6
|
+
.st2{fill:#D80027;}
|
|
7
|
+
.st3{fill:none;stroke:#D80027;stroke-width:7;stroke-miterlimit:10;}
|
|
8
|
+
.st4{fill:none;stroke:#D80027;stroke-width:4;stroke-miterlimit:10;}
|
|
9
|
+
.st5{fill:#BC8B00;}
|
|
10
|
+
</style>
|
|
11
|
+
<rect fill="#FFDA44" width="513" height="342"/>
|
|
12
|
+
<rect fill="#0052B4" width="171" height="342"/>
|
|
13
|
+
<rect x="342" fill="#D80027" width="171" height="342"/>
|
|
14
|
+
<rect x="198.9" y="113.6" fill="#D80027" width="57.1" height="64.8"/>
|
|
15
|
+
<g stroke="#D80027" stroke-width="7">
|
|
16
|
+
<line x1="267.6" y1="113.6" x2="267.6" y2="178.3"/>
|
|
17
|
+
<line x1="284.2" y1="113.6" x2="284.2" y2="178.3"/>
|
|
18
|
+
<line x1="300.8" y1="113.6" x2="300.8" y2="178.3"/>
|
|
19
|
+
</g>
|
|
20
|
+
<g stroke="#D80027" stroke-width="5">
|
|
21
|
+
<line x1="247.4" y1="178.4" x2="247.4" y2="243.1"/>
|
|
22
|
+
<line x1="234.1" y1="178.4" x2="234.1" y2="243.1"/>
|
|
23
|
+
<line x1="220.8" y1="178.5" x2="220.8" y2="232.4"/>
|
|
24
|
+
<line x1="207.1" y1="178.5" x2="207.1" y2="225.6"/>
|
|
25
|
+
</g>
|
|
26
|
+
<polygon fill="#FFDA44" points="199.9,146 227.5,113.6 256,145.9 227.9,178.3 "/>
|
|
27
|
+
<path fill="#BC8B00" d="M182.2,95.9v92.2c0,34.3,27.3,54.2,48.6,64.5c-0.8,1.4,25.1,8.3,25.1,8.3s25.9-6.9,25.1-8.3
|
|
28
|
+
c21.4-10.3,48.6-30.1,48.6-64.5V95.9H182.2z M312.1,188.1c0,16.9-10,29.4-32.8,43.9c-8.6,5.5-17.5,9-23.3,11
|
|
29
|
+
c-5.8-2-14.7-5.5-23.3-11c-22.8-14.5-32.8-28-32.8-43.9v-74.5h112.2L312.1,188.1z"/>
|
|
30
|
+
<rect x="264.4" y="188.9" fill="#D80027" width="29.5" height="8.6"/>
|
|
31
|
+
<rect x="264.4" y="206.5" fill="#D80027" width="29.5" height="8.6"/>
|
|
32
|
+
</svg>
|