@shanyucoder/flowgrid 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +194 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/IntegrationContext.cs +56 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/IntegrationGen.csproj +16 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/NameUtil.cs +18 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Program.cs +265 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/application_service.cs.scriban +27 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/handoff.md.scriban +15 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/infrastructure_mock.cs.scriban +20 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/presenter.cs.scriban +41 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/service_test.cs.scriban +17 -0
- package/adapters/dotnet-integration/codegen/runners/IntegrationGen/YamlMap.cs +49 -0
- package/adapters/dotnet-integration/registries/dotnet-integration.codegen.registry.json +8 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/LineContext.cs +43 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/LineGen.csproj +16 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/NameUtil.cs +12 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Program.cs +201 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/TemplateRenderer.cs +22 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/handoff.md.scriban +15 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/service.cs.scriban +21 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/service_interface.cs.scriban +20 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/view_model.cs.scriban +28 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/Templates/view_model_test.cs.scriban +22 -0
- package/adapters/dotnet-line/codegen/runners/LineGen/YamlMap.cs +49 -0
- package/adapters/dotnet-line/registries/dotnet-line.codegen.registry.json +8 -0
- package/adapters/fastapi/codegen/runners/fast_gen/__init__.py +1 -0
- package/adapters/fastapi/codegen/runners/fast_gen/__main__.py +3 -0
- package/adapters/fastapi/codegen/runners/fast_gen/cli.py +175 -0
- package/adapters/fastapi/codegen/runners/fast_gen/plan.py +285 -0
- package/adapters/fastapi/codegen/runners/fast_gen/read_spec.py +34 -0
- package/adapters/fastapi/codegen/runners/fast_gen/registry.py +9 -0
- package/adapters/fastapi/codegen/runners/fast_gen/wire.py +28 -0
- package/adapters/fastapi/codegen/runners/fast_gen/write_files.py +232 -0
- package/adapters/fastapi/codegen/runners/generate +5 -0
- package/adapters/fastapi/codegen/runners/validate-registry.mjs +54 -0
- package/adapters/fastapi/codegen/templates/presenter.py.j2 +11 -0
- package/adapters/fastapi/codegen/templates/router.py.j2 +69 -0
- package/adapters/fastapi/codegen/templates/schemas_request.py.j2 +26 -0
- package/adapters/fastapi/codegen/templates/schemas_response.py.j2 +7 -0
- package/adapters/fastapi/codegen/templates/service_create.py.j2 +10 -0
- package/adapters/fastapi/codegen/templates/service_delete.py.j2 +10 -0
- package/adapters/fastapi/codegen/templates/service_search.py.j2 +9 -0
- package/adapters/fastapi/codegen/templates/service_update.py.j2 +11 -0
- package/adapters/fastapi/codegen/templates/store.py.j2 +1 -0
- package/adapters/fastapi/codegen/templates/test_router.py.j2 +13 -0
- package/adapters/fastapi/registries/codegen.registry.json +47 -0
- package/adapters/fastapi/registries/common.registry.json +23 -0
- package/adapters/fastapi/registries/unit-test.registry.json +12 -0
- package/adapters/fastapi/unitgen/runners/fast_unit_gen/__init__.py +1 -0
- package/adapters/fastapi/unitgen/runners/fast_unit_gen/cli.py +188 -0
- package/adapters/fastapi/unitgen/runners/generate +5 -0
- package/adapters/fastapi/unitgen/runners/validate-registry.mjs +48 -0
- package/adapters/fastapi/unitgen/templates/test_service.py.j2 +12 -0
- package/adapters/laravel/codegen/runners/README.md +45 -0
- package/adapters/laravel/codegen/runners/generate.mjs +296 -0
- package/adapters/laravel/codegen/runners/lib/codegen-registry.mjs +60 -0
- package/adapters/laravel/codegen/runners/lib/detect-existing.mjs +84 -0
- package/adapters/laravel/codegen/runners/lib/exec-artisan.mjs +86 -0
- package/adapters/laravel/codegen/runners/lib/parse-tags.mjs +49 -0
- package/adapters/laravel/codegen/runners/lib/plan.mjs +122 -0
- package/adapters/laravel/codegen/runners/lib/read-spec.mjs +30 -0
- package/adapters/laravel/codegen/runners/lib/resolve-commands.mjs +234 -0
- package/adapters/laravel/codegen/runners/lib/stub-services.mjs +91 -0
- package/adapters/laravel/codegen/runners/lib/tag-plan.mjs +155 -0
- package/adapters/laravel/codegen/runners/lib/validate.mjs +77 -0
- package/adapters/laravel/codegen/runners/lib/workspace-analysis.mjs +202 -0
- package/adapters/laravel/codegen/runners/lib/write-handoff.mjs +149 -0
- package/adapters/laravel/codegen/runners/lib/write-manifest.mjs +81 -0
- package/adapters/laravel/codegen/runners/validate-registry.mjs +52 -0
- package/adapters/laravel/php/README.md +26 -0
- package/adapters/laravel/php/bin/unit-gen.php +307 -0
- package/adapters/laravel/php/bin/validate-registry.php +61 -0
- package/adapters/laravel/php/composer.json +16 -0
- package/adapters/laravel/php/src/ArtisanRunner.php +56 -0
- package/adapters/laravel/php/src/Autoload.php +15 -0
- package/adapters/laravel/php/src/CodegenManifest.php +28 -0
- package/adapters/laravel/php/src/ParseTags.php +62 -0
- package/adapters/laravel/php/src/ProjectResolver.php +100 -0
- package/adapters/laravel/php/src/SpecExtract.php +193 -0
- package/adapters/laravel/php/src/SpecReader.php +57 -0
- package/adapters/laravel/php/src/TemplateRenderer.php +134 -0
- package/adapters/laravel/php/src/UnitPlanner.php +396 -0
- package/adapters/laravel/php/src/UnitRegistry.php +100 -0
- package/adapters/laravel/php/src/WhenEval.php +111 -0
- package/adapters/laravel/php/src/WorkspaceInspector.php +240 -0
- package/adapters/laravel/php/src/WriteFiles.php +194 -0
- package/adapters/laravel/php/templates/actions/relationship-sync.behavior.test.php.stub +50 -0
- package/adapters/laravel/php/templates/controllers/controller-invoke.test.php.stub +34 -0
- package/adapters/laravel/php/templates/queries/chain-scope.behavior.test.php.stub +34 -0
- package/adapters/laravel/php/templates/requests/default-per-page.behavior.test.php.stub +19 -0
- package/adapters/laravel/php/templates/requests/request-enriched.test.php.stub +66 -0
- package/adapters/laravel/php/templates/requests/rules-keys.behavior.test.php.stub +19 -0
- package/adapters/laravel/php/templates/resources/nested-relations.behavior.test.php.stub +25 -0
- package/adapters/laravel/php/templates/resources/openapi-shape.behavior.test.php.stub +28 -0
- package/adapters/laravel/php/templates/support/ModuleTestSupport.php.stub +32 -0
- package/adapters/laravel/registries/codegen.registry.json +190 -0
- package/adapters/laravel/registries/unit-test.registry.json +179 -0
- package/adapters/laravel/shared/project.mjs +62 -0
- package/adapters/nestjs/README.md +16 -0
- package/adapters/nestjs/nest-unitgen/runners/README.md +17 -0
- package/adapters/nestjs/nest-unitgen/runners/generate.mjs +113 -0
- package/adapters/nestjs/nest-unitgen/runners/lib/render.mjs +14 -0
- package/adapters/nestjs/nest-unitgen/runners/lib/write-files.mjs +40 -0
- package/adapters/nestjs/nest-unitgen/runners/validate-registry.mjs +35 -0
- package/adapters/nestjs/nest-unitgen/templates/commands/create.handler.spec.ts.hbs +32 -0
- package/adapters/nestjs/nest-unitgen/templates/commands/delete.handler.spec.ts.hbs +32 -0
- package/adapters/nestjs/nest-unitgen/templates/commands/update.handler.spec.ts.hbs +32 -0
- package/adapters/nestjs/nest-unitgen/templates/handlers/search.handler.spec.ts.hbs +33 -0
- package/adapters/nestjs/nest-unitgen/templates/resource/entity.resource.spec.ts.hbs +22 -0
- package/adapters/nestjs/nestgen/runners/README.md +30 -0
- package/adapters/nestjs/nestgen/runners/generate.mjs +87 -0
- package/adapters/nestjs/nestgen/runners/lib/orm-fields.mjs +253 -0
- package/adapters/nestjs/nestgen/runners/lib/plan.mjs +124 -0
- package/adapters/nestjs/nestgen/runners/lib/read-spec.mjs +52 -0
- package/adapters/nestjs/nestgen/runners/lib/render.mjs +52 -0
- package/adapters/nestjs/nestgen/runners/lib/workspace-analysis.mjs +80 -0
- package/adapters/nestjs/nestgen/runners/lib/write-files.mjs +49 -0
- package/adapters/nestjs/nestgen/runners/validate-registry.mjs +36 -0
- package/adapters/nestjs/nestgen/templates/commands/create.command.ts.hbs +3 -0
- package/adapters/nestjs/nestgen/templates/commands/create.handler.ts.hbs +34 -0
- package/adapters/nestjs/nestgen/templates/commands/delete.command.ts.hbs +3 -0
- package/adapters/nestjs/nestgen/templates/commands/delete.handler.ts.hbs +33 -0
- package/adapters/nestjs/nestgen/templates/commands/update.command.ts.hbs +6 -0
- package/adapters/nestjs/nestgen/templates/commands/update.handler.ts.hbs +34 -0
- package/adapters/nestjs/nestgen/templates/entity.controller.ts.hbs +51 -0
- package/adapters/nestjs/nestgen/templates/entity.resource.ts.hbs +45 -0
- package/adapters/nestjs/nestgen/templates/module.module.ts.hbs +38 -0
- package/adapters/nestjs/nestgen/templates/orm/prisma.entity.ts.hbs +10 -0
- package/adapters/nestjs/nestgen/templates/orm/prisma.model.prisma.hbs +9 -0
- package/adapters/nestjs/nestgen/templates/orm/typeorm.entity.ts.hbs +20 -0
- package/adapters/nestjs/nestgen/templates/queries/search.handler.ts.hbs +36 -0
- package/adapters/nestjs/nestgen/templates/queries/search.query.ts.hbs +3 -0
- package/adapters/nestjs/registries/nest-codegen.registry.json +41 -0
- package/adapters/nestjs/registries/nest-unit-test.registry.json +31 -0
- package/adapters/nextjs/codegen/runners/README.md +68 -0
- package/adapters/nextjs/codegen/runners/generate.mjs +236 -0
- package/adapters/nextjs/codegen/runners/lib/component-resolve.mjs +79 -0
- package/adapters/nextjs/codegen/runners/lib/design-registry.mjs +333 -0
- package/adapters/nextjs/codegen/runners/lib/naming.mjs +236 -0
- package/adapters/nextjs/codegen/runners/lib/page-lifecycle.mjs +258 -0
- package/adapters/nextjs/codegen/runners/lib/plan.mjs +399 -0
- package/adapters/nextjs/codegen/runners/lib/read-spec.mjs +7 -0
- package/adapters/nextjs/codegen/runners/lib/render.mjs +47 -0
- package/adapters/nextjs/codegen/runners/lib/resolve-hub-id.mjs +288 -0
- package/adapters/nextjs/codegen/runners/lib/slots.mjs +121 -0
- package/adapters/nextjs/codegen/runners/lib/web-paths.mjs +64 -0
- package/adapters/nextjs/codegen/runners/lib/write-files.mjs +106 -0
- package/adapters/nextjs/codegen/runners/validate-registry.mjs +99 -0
- package/adapters/nextjs/codegen/templates/common/confirm-dialog.hbs +81 -0
- package/adapters/nextjs/codegen/templates/common/delete-flow.hbs +106 -0
- package/adapters/nextjs/codegen/templates/create/form.tsx.hbs +45 -0
- package/adapters/nextjs/codegen/templates/create/mock.ts.hbs +15 -0
- package/adapters/nextjs/codegen/templates/create/page.tsx.hbs +12 -0
- package/adapters/nextjs/codegen/templates/create/service.ts.hbs +25 -0
- package/adapters/nextjs/codegen/templates/create/useForm.ts.hbs +59 -0
- package/adapters/nextjs/codegen/templates/create/validation.ts.hbs +16 -0
- package/adapters/nextjs/codegen/templates/list/mock.ts.hbs +25 -0
- package/adapters/nextjs/codegen/templates/list/page.custom.tsx.hbs +65 -0
- package/adapters/nextjs/codegen/templates/list/page.tsx.hbs +37 -0
- package/adapters/nextjs/codegen/templates/list/service.ts.hbs +37 -0
- package/adapters/nextjs/codegen/templates/list/useList.ts.hbs +93 -0
- package/adapters/nextjs/codegen/templates/list/useListColumns.ts.hbs +27 -0
- package/adapters/nextjs/codegen/templates/list/useListExport.ts.hbs +31 -0
- package/adapters/nextjs/codegen/templates/list/useListFilters.ts.hbs +50 -0
- package/adapters/nextjs/codegen/templates/store/store.ts.hbs +28 -0
- package/adapters/nextjs/contractgen/runners/README.md +47 -0
- package/adapters/nextjs/contractgen/runners/generate.mjs +108 -0
- package/adapters/nextjs/contractgen/runners/lib/field-zod.mjs +83 -0
- package/adapters/nextjs/contractgen/runners/lib/naming.mjs +46 -0
- package/adapters/nextjs/contractgen/runners/lib/plan.mjs +147 -0
- package/adapters/nextjs/contractgen/runners/lib/render.mjs +57 -0
- package/adapters/nextjs/contractgen/runners/lib/write-files.mjs +54 -0
- package/adapters/nextjs/contractgen/runners/validate-registry.mjs +54 -0
- package/adapters/nextjs/contractgen/templates/index.ts.hbs +8 -0
- package/adapters/nextjs/contractgen/templates/read.schema.ts.hbs +22 -0
- package/adapters/nextjs/contractgen/templates/relationships.meta.ts.hbs +23 -0
- package/adapters/nextjs/contractgen/templates/types.ts.hbs +15 -0
- package/adapters/nextjs/contractgen/templates/write.schema.ts.hbs +11 -0
- package/adapters/nextjs/registries/contract-field.registry.json +22 -0
- package/adapters/nextjs/unitgen/runners/README.md +12 -0
- package/adapters/nextjs/unitgen/runners/generate.mjs +201 -0
- package/adapters/nextjs/unitgen/runners/lib/parse-tags.mjs +67 -0
- package/adapters/nextjs/unitgen/runners/lib/plan.mjs +563 -0
- package/adapters/nextjs/unitgen/runners/lib/read-codegen.mjs +42 -0
- package/adapters/nextjs/unitgen/runners/lib/render.mjs +32 -0
- package/adapters/nextjs/unitgen/runners/lib/resolve-model.mjs +28 -0
- package/adapters/nextjs/unitgen/runners/lib/unit-registry.mjs +52 -0
- package/adapters/nextjs/unitgen/runners/lib/write-files.mjs +103 -0
- package/adapters/nextjs/unitgen/runners/lib/write-spec-tags.mjs +37 -0
- package/adapters/nextjs/unitgen/runners/validate-registry.mjs +74 -0
- package/adapters/nextjs/unitgen/templates/hooks/use-form.test.ts.hbs +51 -0
- package/adapters/nextjs/unitgen/templates/hooks/use-list.test.ts.hbs +63 -0
- package/adapters/nextjs/unitgen/templates/models/schema.test.ts.hbs +24 -0
- package/adapters/nextjs/unitgen/templates/services/service.create.test.ts.hbs +28 -0
- package/adapters/nextjs/unitgen/templates/services/service.export.test.ts.hbs +20 -0
- package/adapters/nextjs/unitgen/templates/services/service.search.test.ts.hbs +25 -0
- package/adapters/nextjs/unitgen/templates/services/service.wire.test.ts.hbs +37 -0
- package/adapters/nextjs/unitgen/templates/validations/schemas.test.ts.hbs +19 -0
- package/adapters/nuxt4/codegen/runners/README.md +83 -0
- package/adapters/nuxt4/codegen/runners/generate.mjs +236 -0
- package/adapters/nuxt4/codegen/runners/lib/component-resolve.mjs +66 -0
- package/adapters/nuxt4/codegen/runners/lib/design-registry.mjs +332 -0
- package/adapters/nuxt4/codegen/runners/lib/naming.mjs +246 -0
- package/adapters/nuxt4/codegen/runners/lib/page-lifecycle.mjs +254 -0
- package/adapters/nuxt4/codegen/runners/lib/plan.mjs +370 -0
- package/adapters/nuxt4/codegen/runners/lib/read-spec.mjs +7 -0
- package/adapters/nuxt4/codegen/runners/lib/render.mjs +47 -0
- package/adapters/nuxt4/codegen/runners/lib/resolve-hub-id.mjs +288 -0
- package/adapters/nuxt4/codegen/runners/lib/slots.mjs +121 -0
- package/adapters/nuxt4/codegen/runners/lib/write-files.mjs +106 -0
- package/adapters/nuxt4/codegen/runners/validate-registry.mjs +121 -0
- package/adapters/nuxt4/codegen/templates/create/form.vue.hbs +26 -0
- package/adapters/nuxt4/codegen/templates/create/mock.ts.hbs +11 -0
- package/adapters/nuxt4/codegen/templates/create/model.schema.ts.hbs +14 -0
- package/adapters/nuxt4/codegen/templates/create/model.types.ts.hbs +9 -0
- package/adapters/nuxt4/codegen/templates/create/page.vue.hbs +11 -0
- package/adapters/nuxt4/codegen/templates/create/service.ts.hbs +25 -0
- package/adapters/nuxt4/codegen/templates/create/useForm.ts.hbs +29 -0
- package/adapters/nuxt4/codegen/templates/create/validation.ts.hbs +12 -0
- package/adapters/nuxt4/codegen/templates/list/mock.ts.hbs +27 -0
- package/adapters/nuxt4/codegen/templates/list/model.index.ts.hbs +2 -0
- package/adapters/nuxt4/codegen/templates/list/model.schema.ts.hbs +16 -0
- package/adapters/nuxt4/codegen/templates/list/model.types.ts.hbs +9 -0
- package/adapters/nuxt4/codegen/templates/list/page.custom.vue.hbs +105 -0
- package/adapters/nuxt4/codegen/templates/list/page.vue.hbs +55 -0
- package/adapters/nuxt4/codegen/templates/list/service.ts.hbs +37 -0
- package/adapters/nuxt4/codegen/templates/list/useList.ts.hbs +82 -0
- package/adapters/nuxt4/codegen/templates/list/useListColumns.ts.hbs +21 -0
- package/adapters/nuxt4/codegen/templates/list/useListExport.ts.hbs +26 -0
- package/adapters/nuxt4/codegen/templates/list/useListFilters.ts.hbs +45 -0
- package/adapters/nuxt4/codegen/templates/partials/component-stub.vue.hbs +44 -0
- package/adapters/nuxt4/codegen/templates/store/store.ts.hbs +30 -0
- package/adapters/nuxt4/unitgen/runners/README.md +12 -0
- package/adapters/nuxt4/unitgen/runners/generate.mjs +201 -0
- package/adapters/nuxt4/unitgen/runners/lib/parse-tags.mjs +49 -0
- package/adapters/nuxt4/unitgen/runners/lib/plan.mjs +567 -0
- package/adapters/nuxt4/unitgen/runners/lib/read-codegen.mjs +42 -0
- package/adapters/nuxt4/unitgen/runners/lib/render.mjs +32 -0
- package/adapters/nuxt4/unitgen/runners/lib/unit-registry.mjs +52 -0
- package/adapters/nuxt4/unitgen/runners/lib/write-files.mjs +103 -0
- package/adapters/nuxt4/unitgen/runners/lib/write-spec-tags.mjs +37 -0
- package/adapters/nuxt4/unitgen/runners/validate-registry.mjs +74 -0
- package/adapters/nuxt4/unitgen/templates/composables/use-form.test.ts.hbs +56 -0
- package/adapters/nuxt4/unitgen/templates/composables/use-list.test.ts.hbs +59 -0
- package/adapters/nuxt4/unitgen/templates/models/schema.test.ts.hbs +24 -0
- package/adapters/nuxt4/unitgen/templates/services/service.create.test.ts.hbs +28 -0
- package/adapters/nuxt4/unitgen/templates/services/service.export.test.ts.hbs +20 -0
- package/adapters/nuxt4/unitgen/templates/services/service.search.test.ts.hbs +25 -0
- package/adapters/nuxt4/unitgen/templates/services/service.wire.test.ts.hbs +37 -0
- package/adapters/nuxt4/unitgen/templates/validations/schemas.test.ts.hbs +19 -0
- package/adapters/shared/common-gen.mjs +599 -0
- package/adapters/shared/common-ui.catalog.json +224 -0
- package/adapters/shared/css-adapters/shadcn.mjs +56 -0
- package/adapters/shared/css-adapters/winforms.mjs +46 -0
- package/adapters/shared/css-gen.mjs +87 -0
- package/adapters/shared/fe-layout-profiles.mjs +74 -0
- package/adapters/shared/fe-ui-inventory.mjs +62 -0
- package/adapters/shared/i18n-merge.mjs +56 -0
- package/adapters/shared/read-fe-ir.mjs +64 -0
- package/adapters/shared/resolve-cli.mjs +16 -0
- package/adapters/shared/resolve-hub-id.mjs +381 -0
- package/adapters/shared/surface-common.mjs +41 -0
- package/bin/flowgrid-mcp.mjs +29 -0
- package/bin/flowgrid.mjs +915 -0
- package/bin/lib/agent-mcp.mjs +70 -0
- package/bin/lib/agent-profiles.mjs +127 -0
- package/bin/lib/audit-run.mjs +96 -0
- package/bin/lib/cli-update.mjs +254 -0
- package/bin/lib/doctor.mjs +163 -0
- package/bin/lib/harness-overlay.mjs +80 -0
- package/bin/lib/harness-sync.mjs +427 -0
- package/bin/lib/init-scaffold.mjs +158 -0
- package/bin/lib/npm-registry.mjs +45 -0
- package/bin/lib/project-gitignore.mjs +39 -0
- package/dist/codegen/adapters/run-be.d.ts +13 -0
- package/dist/codegen/adapters/run-be.js +190 -0
- package/dist/codegen/adapters/run-be.js.map +1 -0
- package/dist/codegen/adapters/run.d.ts +44 -0
- package/dist/codegen/adapters/run.js +146 -0
- package/dist/codegen/adapters/run.js.map +1 -0
- package/dist/codegen/config/project-root.d.ts +13 -0
- package/dist/codegen/config/project-root.js +64 -0
- package/dist/codegen/config/project-root.js.map +1 -0
- package/dist/codegen/mcp/tools.d.ts +2 -0
- package/dist/codegen/mcp/tools.js +138 -0
- package/dist/codegen/mcp/tools.js.map +1 -0
- package/dist/codegen/registries/common.d.ts +28 -0
- package/dist/codegen/registries/common.js +54 -0
- package/dist/codegen/registries/common.js.map +1 -0
- package/dist/dna/config/project-root.d.ts +12 -0
- package/dist/dna/config/project-root.js +41 -0
- package/dist/dna/config/project-root.js.map +1 -0
- package/dist/dna/profile/detect.d.ts +14 -0
- package/dist/dna/profile/detect.js +159 -0
- package/dist/dna/profile/detect.js.map +1 -0
- package/dist/dna/profile/manifest.d.ts +17 -0
- package/dist/dna/profile/manifest.js +10 -0
- package/dist/dna/profile/manifest.js.map +1 -0
- package/dist/docs/cli/engines.d.ts +13 -0
- package/dist/docs/cli/engines.js +53 -0
- package/dist/docs/cli/engines.js.map +1 -0
- package/dist/docs/config/docs-root.d.ts +8 -0
- package/dist/docs/config/docs-root.js +66 -0
- package/dist/docs/config/docs-root.js.map +1 -0
- package/dist/docs/mcp/tools.d.ts +2 -0
- package/dist/docs/mcp/tools.js +351 -0
- package/dist/docs/mcp/tools.js.map +1 -0
- package/dist/docs/scan/ids.d.ts +29 -0
- package/dist/docs/scan/ids.js +237 -0
- package/dist/docs/scan/ids.js.map +1 -0
- package/dist/docs/scan/links.d.ts +10 -0
- package/dist/docs/scan/links.js +98 -0
- package/dist/docs/scan/links.js.map +1 -0
- package/dist/docs/scan/route.d.ts +8 -0
- package/dist/docs/scan/route.js +114 -0
- package/dist/docs/scan/route.js.map +1 -0
- package/dist/graph/analyze/analyze-bullets.d.ts +17 -0
- package/dist/graph/analyze/analyze-bullets.js +137 -0
- package/dist/graph/analyze/analyze-bullets.js.map +1 -0
- package/dist/graph/analyze/analyze-spec.d.ts +12 -0
- package/dist/graph/analyze/analyze-spec.js +249 -0
- package/dist/graph/analyze/analyze-spec.js.map +1 -0
- package/dist/graph/analyze/api-routes.d.ts +66 -0
- package/dist/graph/analyze/api-routes.js +370 -0
- package/dist/graph/analyze/api-routes.js.map +1 -0
- package/dist/graph/analyze/context-orphan.d.ts +12 -0
- package/dist/graph/analyze/context-orphan.js +229 -0
- package/dist/graph/analyze/context-orphan.js.map +1 -0
- package/dist/graph/analyze/grill-check.d.ts +31 -0
- package/dist/graph/analyze/grill-check.js +92 -0
- package/dist/graph/analyze/grill-check.js.map +1 -0
- package/dist/graph/analyze/parity-check.d.ts +25 -0
- package/dist/graph/analyze/parity-check.js +406 -0
- package/dist/graph/analyze/parity-check.js.map +1 -0
- package/dist/graph/analyze/product-paths.d.ts +13 -0
- package/dist/graph/analyze/product-paths.js +29 -0
- package/dist/graph/analyze/product-paths.js.map +1 -0
- package/dist/graph/analyze/surface-paths.d.ts +13 -0
- package/dist/graph/analyze/surface-paths.js +29 -0
- package/dist/graph/analyze/surface-paths.js.map +1 -0
- package/dist/graph/config/load-config.d.ts +30 -0
- package/dist/graph/config/load-config.js +112 -0
- package/dist/graph/config/load-config.js.map +1 -0
- package/dist/graph/config/platform-repos.d.ts +36 -0
- package/dist/graph/config/platform-repos.js +124 -0
- package/dist/graph/config/platform-repos.js.map +1 -0
- package/dist/graph/config/resolve-paths.d.ts +45 -0
- package/dist/graph/config/resolve-paths.js +121 -0
- package/dist/graph/config/resolve-paths.js.map +1 -0
- package/dist/graph/db/index-store.d.ts +67 -0
- package/dist/graph/db/index-store.js +179 -0
- package/dist/graph/db/index-store.js.map +1 -0
- package/dist/graph/gen/run-command.d.ts +40 -0
- package/dist/graph/gen/run-command.js +110 -0
- package/dist/graph/gen/run-command.js.map +1 -0
- package/dist/graph/lexicon/infer-lane.d.ts +11 -0
- package/dist/graph/lexicon/infer-lane.js +28 -0
- package/dist/graph/lexicon/infer-lane.js.map +1 -0
- package/dist/graph/lexicon/load-lexicon.d.ts +60 -0
- package/dist/graph/lexicon/load-lexicon.js +492 -0
- package/dist/graph/lexicon/load-lexicon.js.map +1 -0
- package/dist/graph/mcp/tools.d.ts +9 -0
- package/dist/graph/mcp/tools.js +326 -0
- package/dist/graph/mcp/tools.js.map +1 -0
- package/dist/graph/registry/load-registries.d.ts +27 -0
- package/dist/graph/registry/load-registries.js +111 -0
- package/dist/graph/registry/load-registries.js.map +1 -0
- package/dist/graph/types.d.ts +208 -0
- package/dist/graph/types.js +11 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/test/config/project-root.d.ts +5 -0
- package/dist/test/config/project-root.js +29 -0
- package/dist/test/config/project-root.js.map +1 -0
- package/dist/test/engines/run.d.ts +10 -0
- package/dist/test/engines/run.js +16 -0
- package/dist/test/engines/run.js.map +1 -0
- package/dist/test/mcp/tools.d.ts +2 -0
- package/dist/test/mcp/tools.js +43 -0
- package/dist/test/mcp/tools.js.map +1 -0
- package/dist/test/optional/fallback-evidence.d.ts +34 -0
- package/dist/test/optional/fallback-evidence.js +103 -0
- package/dist/test/optional/fallback-evidence.js.map +1 -0
- package/engines/cases/README.md +12 -0
- package/engines/cases/check-coverage.mjs +103 -0
- package/engines/cases/check-plans.mjs +31 -0
- package/engines/cases/gate.mjs +215 -0
- package/engines/cases/lib/audit-tc-traceability.mjs +139 -0
- package/engines/cases/lib/list-case-yaml.mjs +27 -0
- package/engines/cases/lib/parse-bundle-traceability.mjs +77 -0
- package/engines/cases/lib/render-github-catalog.mjs +141 -0
- package/engines/cases/lib/resolve-bundle-from-screen.mjs +73 -0
- package/engines/cases/lib/screen-facet-coverage.mjs +42 -0
- package/engines/cases/lib/validate-tc-schema.mjs +61 -0
- package/engines/cases/publish.mjs +4 -0
- package/engines/cases/render-cases.mjs +182 -0
- package/engines/cases/vitepress/config.ts +171 -0
- package/engines/cases/vitepress/theme/custom.css +418 -0
- package/engines/cases/vitepress/theme/index.ts +46 -0
- package/engines/codegen/adapters/shadcn.mjs +58 -0
- package/engines/codegen/adapters/winforms.mjs +46 -0
- package/engines/codegen/tokens.mjs +64 -0
- package/engines/docs/lib/load-dev-base-url.mjs +38 -0
- package/engines/docs/lib/markdown-table.mjs +65 -0
- package/engines/docs/lib/render-bundle-markdown.mjs +95 -0
- package/engines/docs/lib/render-design-tables.mjs +695 -0
- package/engines/docs/lib/render-github-catalog.mjs +194 -0
- package/engines/docs/lib/render-qa-list.mjs +57 -0
- package/engines/docs/lib/render-spec-markdown.mjs +19 -0
- package/engines/docs/lib/render-template.mjs +76 -0
- package/engines/docs/lib/route-page-probe.mjs +54 -0
- package/engines/docs/publish.mjs +4 -0
- package/engines/docs/render-docs.mjs +195 -0
- package/engines/docs/vitepress/config.ts +442 -0
- package/engines/docs/vitepress/surfaces-nav.mjs +171 -0
- package/engines/docs/vitepress/theme/custom.css +418 -0
- package/engines/docs/vitepress/theme/index.ts +46 -0
- package/engines/openapi/build-openapi-ui.mjs +72 -0
- package/engines/openapi/build-swagger-ui.mjs +72 -0
- package/engines/openapi/check-backend-spec.mjs +66 -0
- package/engines/openapi/gen-openapi.mjs +337 -0
- package/engines/openapi/render-backend-spec.mjs +170 -0
- package/engines/openapi/render-openapi.mjs +155 -0
- package/engines/shared/flowgrid-tests-docs.mjs +32 -0
- package/engines/spec/extract-i18n.mjs +74 -0
- package/engines/spec/legacy-dynamics-validate.mjs +67 -0
- package/engines/spec/lib/audit-api-gaps.mjs +198 -0
- package/engines/spec/lib/audit-bundle-gaps.mjs +582 -0
- package/engines/spec/lib/audit-e2e-coverage.mjs +381 -0
- package/engines/spec/lib/audit-fe-be-alignment.mjs +183 -0
- package/engines/spec/lib/audit-flow-gaps.mjs +151 -0
- package/engines/spec/lib/audit-legacy-gaps.mjs +73 -0
- package/engines/spec/lib/audit-scenario-coverage.mjs +175 -0
- package/engines/spec/lib/audit-testcase-bundle-cross.mjs +145 -0
- package/engines/spec/lib/audit-testcase-gaps.mjs +79 -0
- package/engines/spec/lib/audit-testcase-plan-gaps.mjs +131 -0
- package/engines/spec/lib/audit-testcase-tc.mjs +182 -0
- package/engines/spec/lib/audit-ux-affordance.mjs +269 -0
- package/engines/spec/lib/bundle-ir.mjs +360 -0
- package/engines/spec/lib/bundle-schema.mjs +199 -0
- package/engines/spec/lib/collect-screen-api-intents.mjs +69 -0
- package/engines/spec/lib/hydrate-design-api.mjs +58 -0
- package/engines/spec/lib/open-qa.mjs +66 -0
- package/engines/spec/lib/project-business-layout.mjs +214 -0
- package/engines/spec/lib/testcase-matrix-facets.mjs +9 -0
- package/engines/spec/merge-bundle.mjs +27 -0
- package/engines/spec/normalize-bundle-gen.mjs +69 -0
- package/engines/spec/split-all.mjs +78 -0
- package/engines/spec/split-bundle.mjs +45 -0
- package/engines/template-builder/runner.mjs +96 -0
- package/engines/template-builder/scanner.mjs +138 -0
- package/engines/testcase/_staging-from-portal/README-STAGING.md +13 -0
- package/engines/testcase/_staging-from-portal/runners/README.md +15 -0
- package/engines/testcase/_staging-from-portal/runners/generate.mjs +123 -0
- package/engines/testcase/_staging-from-portal/runners/lib/e2e-registry.mjs +77 -0
- package/engines/testcase/_staging-from-portal/runners/lib/plan.mjs +97 -0
- package/engines/testcase/_staging-from-portal/runners/lib/read-testcase.mjs +166 -0
- package/engines/testcase/_staging-from-portal/runners/lib/render.mjs +18 -0
- package/engines/testcase/_staging-from-portal/runners/lib/semantic-plan.mjs +178 -0
- package/engines/testcase/_staging-from-portal/runners/lib/write-files.mjs +42 -0
- package/engines/testcase/_staging-from-portal/runners/validate-registry.mjs +75 -0
- package/engines/testcase/_staging-from-portal/templates/page.ts.hbs +52 -0
- package/engines/testcase/_staging-from-portal/templates/partials/README.md +5 -0
- package/engines/testcase/_staging-from-portal/templates/spec.ts.hbs +214 -0
- package/engines/testcase/runners/README.md +27 -0
- package/engines/testcase/runners/generate-api.mjs +121 -0
- package/engines/testcase/runners/generate.mjs +161 -0
- package/engines/testcase/runners/lib/api-plan.mjs +64 -0
- package/engines/testcase/runners/lib/e2e-registry.mjs +77 -0
- package/engines/testcase/runners/lib/plan.mjs +123 -0
- package/engines/testcase/runners/lib/read-spec.mjs +37 -0
- package/engines/testcase/runners/lib/read-testcase.mjs +179 -0
- package/engines/testcase/runners/lib/render.mjs +18 -0
- package/engines/testcase/runners/lib/resolve-hub-id.mjs +324 -0
- package/engines/testcase/runners/lib/semantic-plan.mjs +178 -0
- package/engines/testcase/runners/lib/write-files.mjs +145 -0
- package/engines/testcase/runners/validate-registry.mjs +75 -0
- package/engines/testcase/templates/api.spec.ts.hbs +40 -0
- package/engines/testcase/templates/page.ts.hbs +69 -0
- package/engines/testcase/templates/partials/README.md +5 -0
- package/engines/testcase/templates/spec.ts.hbs +231 -0
- package/harness/agents/claude/rules/claude-flowgrid.mdc +9 -0
- package/harness/agents/cursor/rules/cursor-flowgrid.mdc +9 -0
- package/harness/agents/gemini_antigravity/rules/antigravity-mcp.mdc +10 -0
- package/harness/agents/kiro/rules/kiro-flowgrid.mdc +9 -0
- package/harness/be/adapters/dotnet-integration/skills/framework-rules-be/SKILL.md +21 -0
- package/harness/be/adapters/fastapi/skills/framework-rules-be/SKILL.md +27 -0
- package/harness/be/adapters/laravel/skills/framework-rules-be/SKILL.md +27 -0
- package/harness/be/extracts/artifactgraph-hooks-be.md +21 -0
- package/harness/be/extracts/risk-classes.md +69 -0
- package/harness/be/skills/api/SKILL.md +116 -0
- package/harness/be/skills/api-unit/SKILL.md +76 -0
- package/harness/be/skills/grill-api/SKILL.md +69 -0
- package/harness/be/skills/grill-api-unit/SKILL.md +57 -0
- package/harness/common/extracts/artifact-graph.md +23 -0
- package/harness/common/extracts/artifactgraph-hooks-core.md +17 -0
- package/harness/common/extracts/artifactgraph-phase-hooks.md +106 -0
- package/harness/common/extracts/core/agent-discipline.md +8 -0
- package/harness/common/extracts/docs-mark-detect.md +48 -0
- package/harness/common/extracts/docs-mark.md +62 -0
- package/harness/common/extracts/extract-registry.json +29 -0
- package/harness/common/extracts/ux-common-patterns.md +172 -0
- package/harness/common/rules/artifactgraph.mdc +26 -0
- package/harness/common/rules/cross-repo-index.mdc +47 -0
- package/harness/common/rules/flowgrid-ux-common.mdc +39 -0
- package/harness/common/rules/platform-code-size.mdc +24 -0
- package/harness/common/rules/team-flow-harness-state.mdc +12 -0
- package/harness/common/skills/business-impact-review/SKILL.md +106 -0
- package/harness/common/skills/configure-repo-maps/SKILL.md +58 -0
- package/harness/common/skills/docs-mark/SKILL.md +67 -0
- package/harness/common/skills/legacy/SKILL.md +29 -0
- package/harness/common/skills/ui-proposal/SKILL.md +28 -0
- package/harness/docs/extracts/agent-execution-protocol.md +31 -0
- package/harness/docs/extracts/architecture-core.md +71 -0
- package/harness/docs/extracts/artifactgraph-hooks-docs.md +15 -0
- package/harness/docs/extracts/artifactgraph-parity.md +10 -0
- package/harness/docs/extracts/business-process-trace.md +66 -0
- package/harness/docs/extracts/codegen/readiness.md +8 -0
- package/harness/docs/extracts/common-scope.md +65 -0
- package/harness/docs/extracts/docs-phase-hooks.md +22 -0
- package/harness/docs/extracts/extract-registry.docs.json +45 -0
- package/harness/docs/extracts/extract-registry.flowgrid-process.json +12 -0
- package/harness/docs/extracts/grill/validation.md +9 -0
- package/harness/docs/extracts/grill-docs-reconcile.md +5 -0
- package/harness/docs/extracts/qa-inbox.md +36 -0
- package/harness/docs/extracts/risk-classes.md +69 -0
- package/harness/docs/extracts/spec-core.md +5 -0
- package/harness/docs/extracts/spec-requirement.md +5 -0
- package/harness/docs/extracts/tpl-adr.md +23 -0
- package/harness/docs/extracts/tpl-arc42-chapter.md +29 -0
- package/harness/docs/extracts/tpl-cross-cutting.md +24 -0
- package/harness/docs/extracts/tpl-deployment.md +23 -0
- package/harness/docs/extracts/tpl-module.md +33 -0
- package/harness/docs/extracts/update-spec-delta.md +5 -0
- package/harness/docs/rules/agent-compliance.mdc +26 -0
- package/harness/docs/rules/docs-hub.mdc +54 -0
- package/harness/docs/rules/flowgrid-process.mdc +25 -0
- package/harness/docs/rules/team-flow-grill.mdc +31 -0
- package/harness/docs/rules/team-flow-harness-state.mdc +16 -0
- package/harness/docs/rules/team-flow-spec.mdc +36 -0
- package/harness/docs/schemas/flowgrid-docs/backend-api.schema.json +175 -0
- package/harness/docs/schemas/flowgrid-docs/missing-optional-event.schema.json +39 -0
- package/harness/docs/schemas/flowgrid-docs/spec.schema.json +643 -0
- package/harness/docs/schemas/flowgrid-docs/testcase.schema.json +29 -0
- package/harness/docs/schemas/flowgrid-process/missing-optional-event.schema.json +39 -0
- package/harness/docs/skills/adopt/SKILL.md +140 -0
- package/harness/docs/skills/api/SKILL.md +40 -0
- package/harness/docs/skills/api-integration/SKILL.md +110 -0
- package/harness/docs/skills/api-spec/SKILL.md +136 -0
- package/harness/docs/skills/api-update/SKILL.md +82 -0
- package/harness/docs/skills/architecture/SKILL.md +57 -0
- package/harness/docs/skills/architecture-grill/SKILL.md +29 -0
- package/harness/docs/skills/background-logic/SKILL.md +100 -0
- package/harness/docs/skills/build-templates/SKILL.md +47 -0
- package/harness/docs/skills/business-process/SKILL.md +109 -0
- package/harness/docs/skills/call-external/SKILL.md +32 -0
- package/harness/docs/skills/common/SKILL.md +46 -0
- package/harness/docs/skills/common-spec/SKILL.md +55 -0
- package/harness/docs/skills/cross-cutting/SKILL.md +33 -0
- package/harness/docs/skills/cross-entity-service/SKILL.md +32 -0
- package/harness/docs/skills/cross-service/SKILL.md +37 -0
- package/harness/docs/skills/db-erd/SKILL.md +29 -0
- package/harness/docs/skills/decision/SKILL.md +30 -0
- package/harness/docs/skills/deployment/SKILL.md +34 -0
- package/harness/docs/skills/docs-hub/SKILL.md +65 -0
- package/harness/docs/skills/grill/SKILL.md +46 -0
- package/harness/docs/skills/grill-api/SKILL.md +26 -0
- package/harness/docs/skills/grill-api-spec/SKILL.md +57 -0
- package/harness/docs/skills/grill-bqa/SKILL.md +119 -0
- package/harness/docs/skills/grill-common-spec/SKILL.md +43 -0
- package/harness/docs/skills/grill-dev/SKILL.md +172 -0
- package/harness/docs/skills/grill-docs/SKILL.md +79 -0
- package/harness/docs/skills/grill-integration-spec/SKILL.md +51 -0
- package/harness/docs/skills/module/SKILL.md +58 -0
- package/harness/docs/skills/openapi/SKILL.md +37 -0
- package/harness/docs/skills/overview/SKILL.md +42 -0
- package/harness/docs/skills/qa-resolve/SKILL.md +91 -0
- package/harness/docs/skills/spec/SKILL.md +240 -0
- package/harness/docs/skills/surfaces/SKILL.md +52 -0
- package/harness/docs/skills/update-spec/SKILL.md +83 -0
- package/harness/fe/adapters/dotnet-line/skills/framework-rules/SKILL.md +27 -0
- package/harness/fe/adapters/nextjs/skills/framework-rules/SKILL.md +29 -0
- package/harness/fe/adapters/nuxt4/skills/framework-rules/SKILL.md +33 -0
- package/harness/fe/extracts/artifactgraph-hooks-fe.md +15 -0
- package/harness/fe/extracts/risk-classes.md +69 -0
- package/harness/fe/rules/cross-repo-index-routing.mdc +24 -0
- package/harness/fe/rules/flowgrid-test-optional-accelerators.mdc +21 -0
- package/harness/fe/rules/platform-code-size.mdc +43 -0
- package/harness/fe/rules/platform-design-vocabulary.mdc +33 -0
- package/harness/fe/rules/team-flow-prototype.mdc +32 -0
- package/harness/fe/rules/team-flow-unit.mdc +27 -0
- package/harness/fe/skills/build-template-code/SKILL.md +42 -0
- package/harness/fe/skills/gen-common/SKILL.md +93 -0
- package/harness/fe/skills/grill-prototype/SKILL.md +41 -0
- package/harness/fe/skills/grill-test/SKILL.md +32 -0
- package/harness/fe/skills/grill-unit/SKILL.md +31 -0
- package/harness/fe/skills/model/SKILL.md +48 -0
- package/harness/fe/skills/prototype/SKILL.md +100 -0
- package/harness/fe/skills/test/SKILL.md +37 -0
- package/harness/fe/skills/unit/SKILL.md +55 -0
- package/harness/fe/skills/wire/SKILL.md +60 -0
- package/harness/shared/AGENTS.md +169 -0
- package/harness/shared/SSOT_AGENT_PROTOCOL.md +167 -0
- package/harness/shared/rules/flowgrid-code-optional-integrations.mdc +53 -0
- package/harness/shared/schemas/flowgrid-code/missing-optional-event.schema.json +62 -0
- package/harness/tests/extracts/artifactgraph-hooks-test.md +13 -0
- package/harness/tests/extracts/plans/readiness.md +14 -0
- package/harness/tests/rules/cross-repo-index-routing.mdc +24 -0
- package/harness/tests/rules/flowgrid-test-optional-accelerators.mdc +21 -0
- package/harness/tests/rules/plans-docs-first.mdc +13 -0
- package/harness/tests/skills/grill-testcase/SKILL.md +55 -0
- package/harness/tests/skills/scenario/SKILL.md +64 -0
- package/harness/tests/skills/test-api/SKILL.md +65 -0
- package/harness/tests/skills/testcase/SKILL.md +98 -0
- package/harness/tests/templates/SC.example.md +86 -0
- package/harness/tests/templates/TC.example-api.yaml +45 -0
- package/harness/tests/templates/TC.example.yaml +127 -0
- package/lexicon/registry-tags.en.txt +173 -0
- package/lexicon/testcase-taxonomy.en.txt +117 -0
- package/package.json +98 -0
- package/schemas/missing-optional-event.schema.json +37 -0
- package/schemas/testcase.schema.json +239 -0
- package/scripts/prepare-install.mjs +25 -0
- package/stacks/docs.json +21 -0
- package/stacks/dotnet-integration.json +66 -0
- package/stacks/dotnet-line.json +64 -0
- package/stacks/fastapi.json +98 -0
- package/stacks/generic.json +11 -0
- package/stacks/laravel.json +92 -0
- package/stacks/nextjs-nest.json +93 -0
- package/stacks/nextjs.json +132 -0
- package/stacks/nuxt4-nest.json +123 -0
- package/stacks/nuxt4.json +148 -0
- package/templates/project-skeleton/architecture/01-introduction/index.md +33 -0
- package/templates/project-skeleton/architecture/02-constraints/index.md +34 -0
- package/templates/project-skeleton/architecture/03-business-process/FLOW-login.md +101 -0
- package/templates/project-skeleton/architecture/03-business-process/FLOW-template.md +149 -0
- package/templates/project-skeleton/architecture/04-solution-strategy/index.md +26 -0
- package/templates/project-skeleton/architecture/07-deployment/index.md +26 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/configuration.md +18 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/index.md +27 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/observability.md +18 -0
- package/templates/project-skeleton/architecture/08-cross-cutting/security.md +18 -0
- package/templates/project-skeleton/architecture/09-decisions/ADR-001-arc42-toc.md +31 -0
- package/templates/project-skeleton/architecture/09-decisions/index.md +13 -0
- package/templates/project-skeleton/architecture/10-quality/index.md +27 -0
- package/templates/project-skeleton/architecture/11-risks/index.md +25 -0
- package/templates/project-skeleton/architecture/12-glossary/index.md +31 -0
- package/templates/project-skeleton/architecture/index.md +1 -0
- package/templates/project-skeleton/architecture/model/workspace.dsl +71 -0
- package/templates/project-skeleton/index.md +2 -0
- package/templates/project-skeleton/overview/.gitkeep +1 -0
- package/templates/project-skeleton/overview/index.md +2 -0
- package/templates/project-skeleton/qa/README.md +11 -0
- package/templates/project-skeleton/qa/open/.gitkeep +0 -0
- package/templates/project-skeleton/surfaces/common/code/API-CMN-HEALTH-001/health.api.yaml +12 -0
- package/templates/project-skeleton/surfaces/common/code/API-CMN-HEALTH-001/index.md +12 -0
- package/templates/project-skeleton/surfaces/common/code/UI-CMN-EMPTY-001/empty.ui.yaml +14 -0
- package/templates/project-skeleton/surfaces/common/code/UI-CMN-EMPTY-001/index.md +11 -0
- package/templates/project-skeleton/surfaces/common/data-model/derived-data.md +26 -0
- package/templates/project-skeleton/surfaces/common/data-model/index.md +16 -0
- package/templates/project-skeleton/surfaces/common/index.md +32 -0
- package/templates/project-skeleton/surfaces/common/md/breadcrumb-flow/common-breadcrumb-flow.md +72 -0
- package/templates/project-skeleton/surfaces/common/md/buttons/common-buttons.md +160 -0
- package/templates/project-skeleton/surfaces/common/md/confirm-dialog/common-confirm-dialog.md +98 -0
- package/templates/project-skeleton/surfaces/common/md/data-table/common-data-table.md +91 -0
- package/templates/project-skeleton/surfaces/common/md/delete-flow/common-delete-flow.md +68 -0
- package/templates/project-skeleton/surfaces/common/md/feedback/common-feedback.md +140 -0
- package/templates/project-skeleton/surfaces/common/md/flat-design/common-flat-design.md +78 -0
- package/templates/project-skeleton/surfaces/common/md/form-validation/common-form-validation.md +74 -0
- package/templates/project-skeleton/surfaces/common/md/import-csv/common-import-csv.md +89 -0
- package/templates/project-skeleton/surfaces/common/md/list-page/common-list-page.md +102 -0
- package/templates/project-skeleton/surfaces/common/md/list-toolbar/common-list-toolbar.md +81 -0
- package/templates/project-skeleton/surfaces/common/md/navigation/common-navigation.md +70 -0
- package/templates/project-skeleton/surfaces/common/md/pagination/common-pagination.md +86 -0
- package/templates/project-skeleton/surfaces/common/md/search-filter/common-search-filter.md +96 -0
- package/templates/project-skeleton/surfaces/common/md/status-chip/common-status-chip.md +93 -0
- package/templates/project-skeleton/surfaces/common/md/table-action-column/common-table-action-column.md +90 -0
- package/templates/project-skeleton/surfaces/common/patterns/breadcrumb-flow.md +83 -0
- package/templates/project-skeleton/surfaces/common/patterns/delete-flow.md +30 -0
- package/templates/project-skeleton/surfaces/common/patterns/ui-spec.md +15 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/common-breadcrumb-flow.bundle.yaml +60 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/spec.yaml +31 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/common-buttons.bundle.yaml +147 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/spec.yaml +118 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/common-confirm-dialog.bundle.yaml +89 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/spec.yaml +60 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/common-data-table.bundle.yaml +85 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/spec.yaml +56 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/common-delete-flow.bundle.yaml +59 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/spec.yaml +30 -0
- package/templates/project-skeleton/surfaces/common/yaml/design-system.bundle.yaml +29 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/common-feedback.bundle.yaml +126 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/spec.yaml +97 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/common-flat-design.bundle.yaml +77 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/spec.yaml +48 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/common-form-validation.bundle.yaml +66 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/spec.yaml +37 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/common-import-csv.bundle.yaml +74 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/spec.yaml +45 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/common-list-page.bundle.yaml +90 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/legacy.yaml +14 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/spec.yaml +58 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/common-list-toolbar.bundle.yaml +86 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/legacy.yaml +12 -0
- package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/spec.yaml +56 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/common-navigation.bundle.yaml +68 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/spec.yaml +39 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/common-pagination.bundle.yaml +84 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/legacy.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/spec.yaml +53 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/common-search-filter.bundle.yaml +88 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/spec.yaml +59 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/common-status-chip.bundle.yaml +89 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/spec.yaml +60 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/common-table-action-column.bundle.yaml +81 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/design.yaml +13 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/legacy.yaml +11 -0
- package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/spec.yaml +52 -0
- package/templates/project-skeleton/surfaces/index.md +1 -0
- package/templates/schemas/backend-api.schema.json +174 -0
- package/templates/schemas/legacy-repos.schema.json +24 -0
- package/templates/schemas/platform-repos.schema.json +29 -0
- package/templates/schemas/spec.schema.json +718 -0
- package/templates/schemas/testcase.schema.json +28 -0
- package/templates/shared/AUTHORING-COMMON.md +109 -0
- package/templates/shared/api-contract-test.yaml +33 -0
- package/templates/shared/backend-api-integration.yaml +152 -0
- package/templates/shared/backend-api.bundle.yaml +177 -0
- package/templates/shared/backend-api.yaml +188 -0
- package/templates/shared/breadcrumb-flow.ejs +45 -0
- package/templates/shared/bundle-authoring.md +288 -0
- package/templates/shared/clients-line.yaml +18 -0
- package/templates/shared/default-layout.ejs +234 -0
- package/templates/shared/design-spec.yaml +85 -0
- package/templates/shared/entity-delta.example.yaml +45 -0
- package/templates/shared/feature.bundle.yaml +575 -0
- package/templates/shared/integration-adapter.bundle.yaml +77 -0
- package/templates/shared/integration-spec.yaml +37 -0
- package/templates/shared/ir-design.yaml +34 -0
- package/templates/shared/ir-legacy.yaml +12 -0
- package/templates/shared/ir-spec.yaml +18 -0
- package/templates/shared/line-client.bundle.yaml +65 -0
- package/templates/shared/mock-data.yaml +22 -0
- package/templates/shared/openapi.yaml +144 -0
- package/templates/shared/patterns/.gitkeep +0 -0
- package/templates/shared/patterns/admin-crud.pattern.yaml +37 -0
- package/templates/shared/qa-item.yaml +15 -0
- package/templates/shared/spec.yaml +162 -0
- package/templates/shared/testcase.yaml +2 -0
- package/templates/tests-skeleton/cases/README.md +5 -0
- package/templates/tests-skeleton/catalog/locale.yaml +7 -0
- package/templates/tests-skeleton/index.md +7 -0
- package/templates/tests-skeleton/scenarios/README.md +3 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Common list toolbar
|
|
2
|
+
|
|
3
|
+
- **Testcase:** `#`
|
|
4
|
+
- **Screen:** `#`
|
|
5
|
+
|
|
6
|
+
Chuẩn toolbar action của list page, gồm total readonly button, action chính/phụ, bulk action và per-page control.
|
|
7
|
+
|
|
8
|
+
## status
|
|
9
|
+
|
|
10
|
+
draft
|
|
11
|
+
|
|
12
|
+
## owner
|
|
13
|
+
|
|
14
|
+
portal-team
|
|
15
|
+
|
|
16
|
+
## layout
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
position: below search filter, above table
|
|
20
|
+
style:
|
|
21
|
+
- Nằm cùng nền list block, không bọc card/nền trắng riêng.
|
|
22
|
+
- Dùng flex wrap, gap nhỏ, per-page đẩy sang phải khi đủ rộng.
|
|
23
|
+
- Thiết kế phẳng, không shadow hoặc gradient.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## items
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
total:
|
|
30
|
+
text: 合計 {count}
|
|
31
|
+
variant: complete
|
|
32
|
+
color: "#48b0f7"
|
|
33
|
+
behavior: readonly button-style, không clickable
|
|
34
|
+
badgePolicy: Không bọc số bằng badge bo riêng; số nằm cùng text/nền button.
|
|
35
|
+
testId: "{module}-total-btn"
|
|
36
|
+
primaryAction:
|
|
37
|
+
examples:
|
|
38
|
+
- 新規作成
|
|
39
|
+
- CSVアップロード
|
|
40
|
+
- インポート
|
|
41
|
+
variant: complete
|
|
42
|
+
icon: required khi action rõ nghĩa và có icon phù hợp
|
|
43
|
+
bulkAction:
|
|
44
|
+
position: after primary actions
|
|
45
|
+
disabledWhen: no selection
|
|
46
|
+
destructive: true nếu là delete
|
|
47
|
+
perPage:
|
|
48
|
+
position: right
|
|
49
|
+
labels:
|
|
50
|
+
before: 表示
|
|
51
|
+
after: 件 / ページ
|
|
52
|
+
pageSummary:
|
|
53
|
+
text: "{currentPage} / {totalPages}"
|
|
54
|
+
position: cạnh per-page select trong toolbar/header table góc phải
|
|
55
|
+
note: Đây là số trang hiện tại/tổng số trang, không đặt dưới pagination controls.
|
|
56
|
+
options:
|
|
57
|
+
- 20
|
|
58
|
+
- 40
|
|
59
|
+
- 80
|
|
60
|
+
- 100
|
|
61
|
+
testId: "{module}-per-page-select"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## Design intent
|
|
66
|
+
|
|
67
|
+
**Inherits:** `admin-crud`
|
|
68
|
+
|
|
69
|
+
**Shell:** #shell: DataPage
|
|
70
|
+
|
|
71
|
+
**Patterns:**
|
|
72
|
+
|
|
73
|
+
- #pattern: CRUD
|
|
74
|
+
|
|
75
|
+
### Zones
|
|
76
|
+
|
|
77
|
+
| ID | Nhãn | Vị trí | Container | Ghi chú |
|
|
78
|
+
| --- | --- | --- | --- | --- |
|
|
79
|
+
| main | Nội dung chính | | | |
|
|
80
|
+
|
|
81
|
+
## Legacy evidence
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Common navigation and page header
|
|
2
|
+
|
|
3
|
+
- **Testcase:** `#`
|
|
4
|
+
- **Screen:** `#`
|
|
5
|
+
|
|
6
|
+
Chuẩn sidebar, page title, breadcrumb và route trong admin portal prototype.
|
|
7
|
+
|
|
8
|
+
## status
|
|
9
|
+
|
|
10
|
+
draft
|
|
11
|
+
|
|
12
|
+
## owner
|
|
13
|
+
|
|
14
|
+
portal-team
|
|
15
|
+
|
|
16
|
+
## sidebar
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
behavior:
|
|
20
|
+
- Parent menu click để open/close child.
|
|
21
|
+
- Active child route mở parent tương ứng.
|
|
22
|
+
- Prototype chỉ hiển thị feature đã migrate hoặc đang design.
|
|
23
|
+
routePrefix:
|
|
24
|
+
legacyAdminPrefix: /admin
|
|
25
|
+
portalRoute: không dùng `/admin` prefix trong frontend route.
|
|
26
|
+
testIds:
|
|
27
|
+
navItem: nav-{id}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## pageHeader
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
title:
|
|
34
|
+
source: route meta hoặc component page header.
|
|
35
|
+
testId: "{module}-page-title"
|
|
36
|
+
breadcrumb:
|
|
37
|
+
default: optional trong prototype; nếu dùng phải có testId theo
|
|
38
|
+
docs/operational/E2E-TESTIDS.md.
|
|
39
|
+
actions:
|
|
40
|
+
- Header actions chỉ dùng cho page-level action thật sự.
|
|
41
|
+
- Nếu legacy/spec yêu cầu group_action trong card/form thì không đưa action
|
|
42
|
+
lên page header.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## dynamicRoutes
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
detail: pages/{module}/[id]/index.vue
|
|
49
|
+
edit: pages/{module}/[id]/edit.vue
|
|
50
|
+
child: pages/{module}/[id]/{child}.vue
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## Design intent
|
|
55
|
+
|
|
56
|
+
**Inherits:** `admin-crud`
|
|
57
|
+
|
|
58
|
+
**Shell:** #shell: DataPage
|
|
59
|
+
|
|
60
|
+
**Patterns:**
|
|
61
|
+
|
|
62
|
+
- #pattern: CRUD
|
|
63
|
+
|
|
64
|
+
### Zones
|
|
65
|
+
|
|
66
|
+
| ID | Nhãn | Vị trí | Container | Ghi chú |
|
|
67
|
+
| --- | --- | --- | --- | --- |
|
|
68
|
+
| main | Nội dung chính | | | |
|
|
69
|
+
|
|
70
|
+
## Legacy evidence
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Common pagination
|
|
2
|
+
|
|
3
|
+
- **Testcase:** `#`
|
|
4
|
+
- **Screen:** `#`
|
|
5
|
+
|
|
6
|
+
Chuẩn pagination dưới table, dùng page numbers + ellipsis thay vì text generic `Page x of y`.
|
|
7
|
+
|
|
8
|
+
## status
|
|
9
|
+
|
|
10
|
+
draft
|
|
11
|
+
|
|
12
|
+
## owner
|
|
13
|
+
|
|
14
|
+
portal-team
|
|
15
|
+
|
|
16
|
+
## layout
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
position: below table
|
|
20
|
+
alignment: center
|
|
21
|
+
style:
|
|
22
|
+
- Flat outline buttons, border nhẹ, không shadow.
|
|
23
|
+
- Active page dùng text/border primary `#4EAAFF` hoặc background primary nhạt.
|
|
24
|
+
- Disabled previous/next vẫn giữ footprint để layout không nhảy.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## controls
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
previous:
|
|
31
|
+
content: icon + text
|
|
32
|
+
icon: ChevronLeft
|
|
33
|
+
text: 前へ
|
|
34
|
+
ariaLabel: 前のページ
|
|
35
|
+
next:
|
|
36
|
+
content: icon + text
|
|
37
|
+
icon: ChevronRight
|
|
38
|
+
text: 次へ
|
|
39
|
+
ariaLabel: 次のページ
|
|
40
|
+
pageNumbers:
|
|
41
|
+
window: current page +/- 2
|
|
42
|
+
firstLast: show first/last when outside window
|
|
43
|
+
ellipsis: show `...` when gap exists
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## behavior
|
|
47
|
+
|
|
48
|
+
```yaml
|
|
49
|
+
query:
|
|
50
|
+
- Pagination phải giữ search params hiện tại.
|
|
51
|
+
- Page change gọi list service/composable, không lọc local-only nếu API
|
|
52
|
+
contract có pagination.
|
|
53
|
+
perPage:
|
|
54
|
+
- Per-page select và page summary không nằm trong pagination bar dưới table.
|
|
55
|
+
- Per-page select nằm ở toolbar/header table góc phải theo
|
|
56
|
+
`common-list-toolbar`, copy giữ `表示 ... 件 / ページ`.
|
|
57
|
+
- Đổi per-page reset page về 1.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## testIds
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
pagination: "{module}-pagination"
|
|
64
|
+
previous: "{module}-pagination-prev-btn"
|
|
65
|
+
next: "{module}-pagination-next-btn"
|
|
66
|
+
pageButton: "{module}-pagination-page-{page}"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Design intent
|
|
71
|
+
|
|
72
|
+
**Inherits:** `admin-crud`
|
|
73
|
+
|
|
74
|
+
**Shell:** #shell: DataPage
|
|
75
|
+
|
|
76
|
+
**Patterns:**
|
|
77
|
+
|
|
78
|
+
- #pattern: CRUD
|
|
79
|
+
|
|
80
|
+
### Zones
|
|
81
|
+
|
|
82
|
+
| ID | Nhãn | Vị trí | Container | Ghi chú |
|
|
83
|
+
| --- | --- | --- | --- | --- |
|
|
84
|
+
| main | Nội dung chính | | | |
|
|
85
|
+
|
|
86
|
+
## Legacy evidence
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Common search filter
|
|
2
|
+
|
|
3
|
+
- **Testcase:** `#`
|
|
4
|
+
- **Screen:** `#`
|
|
5
|
+
|
|
6
|
+
Chuẩn form search/filter cho list page, tách rõ input filter và nút search/clear.
|
|
7
|
+
|
|
8
|
+
## status
|
|
9
|
+
|
|
10
|
+
draft
|
|
11
|
+
|
|
12
|
+
## owner
|
|
13
|
+
|
|
14
|
+
portal-team
|
|
15
|
+
|
|
16
|
+
## layout
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
filterRow:
|
|
20
|
+
position: top of list block
|
|
21
|
+
behavior:
|
|
22
|
+
- Các field filter nằm cùng row khi đủ rộng, tự wrap theo nhóm field khi màn
|
|
23
|
+
nhỏ.
|
|
24
|
+
- Không đặt button search/clear cùng hàng với action toolbar như
|
|
25
|
+
create/delete/import.
|
|
26
|
+
- Date range dùng start + separator `to` + end trong cùng input group.
|
|
27
|
+
buttonRow:
|
|
28
|
+
position: below filter row
|
|
29
|
+
alignment: center
|
|
30
|
+
buttons:
|
|
31
|
+
- key: search
|
|
32
|
+
text: 検索
|
|
33
|
+
icon: Search
|
|
34
|
+
variant: outline-primary
|
|
35
|
+
color: "#4EAAFF"
|
|
36
|
+
background: "#FFFFFF"
|
|
37
|
+
minWidth: 170px
|
|
38
|
+
- key: clear
|
|
39
|
+
text: クリア
|
|
40
|
+
icon: RotateCcw
|
|
41
|
+
variant: outline-secondary
|
|
42
|
+
color: "#C2C2C2"
|
|
43
|
+
background: "#FFFFFF"
|
|
44
|
+
minWidth: 170px
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## behavior
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
submit:
|
|
51
|
+
- Submit gọi composable/service-like action.
|
|
52
|
+
- Query filter phải có thể giữ trên URL ở phase wire để pagination/sort không
|
|
53
|
+
mất điều kiện.
|
|
54
|
+
clear:
|
|
55
|
+
- Clear reset filter về default.
|
|
56
|
+
- Clear điều hướng hoặc sync về route base của list nếu URL đang có query.
|
|
57
|
+
- Clear không xoá dữ liệu list bằng local-only state; phải refresh qua service
|
|
58
|
+
boundary.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## fieldGuidelines
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
text: input compact, max width theo domain.
|
|
65
|
+
select: dùng select/combobox common, label rõ.
|
|
66
|
+
dateRange: label `期間`, separator `to`, không tách thành hai field rời rạc nếu
|
|
67
|
+
legacy/domain đang hiểu là một khoảng.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## testIds
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
searchForm: "{module}-search-form"
|
|
74
|
+
submitButton: "{module}-search-btn"
|
|
75
|
+
clearButton: "{module}-clear-btn"
|
|
76
|
+
fields: "{module}-{field}-input|select"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Design intent
|
|
81
|
+
|
|
82
|
+
**Inherits:** `admin-crud`
|
|
83
|
+
|
|
84
|
+
**Shell:** #shell: DataPage
|
|
85
|
+
|
|
86
|
+
**Patterns:**
|
|
87
|
+
|
|
88
|
+
- #pattern: CRUD
|
|
89
|
+
|
|
90
|
+
### Zones
|
|
91
|
+
|
|
92
|
+
| ID | Nhãn | Vị trí | Container | Ghi chú |
|
|
93
|
+
| --- | --- | --- | --- | --- |
|
|
94
|
+
| main | Nội dung chính | | | |
|
|
95
|
+
|
|
96
|
+
## Legacy evidence
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Common status chip
|
|
2
|
+
|
|
3
|
+
- **Testcase:** `#`
|
|
4
|
+
- **Screen:** `#`
|
|
5
|
+
|
|
6
|
+
Chuẩn chip/tag trạng thái cho table, form detail và summary block.
|
|
7
|
+
|
|
8
|
+
## status
|
|
9
|
+
|
|
10
|
+
draft
|
|
11
|
+
|
|
12
|
+
## owner
|
|
13
|
+
|
|
14
|
+
portal-team
|
|
15
|
+
|
|
16
|
+
## principles
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
- Status không để text trần nếu cần người dùng nhận biết nhanh.
|
|
20
|
+
- Màu phải có ý nghĩa trạng thái, không dùng để trang trí.
|
|
21
|
+
- Chip luôn có text label, không chỉ dùng màu để đảm bảo accessibility.
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## tones
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
success:
|
|
28
|
+
useFor:
|
|
29
|
+
- active
|
|
30
|
+
- sent
|
|
31
|
+
- valid
|
|
32
|
+
- connected
|
|
33
|
+
color: green
|
|
34
|
+
danger:
|
|
35
|
+
useFor:
|
|
36
|
+
- inactive
|
|
37
|
+
- failed
|
|
38
|
+
- error
|
|
39
|
+
- disconnected
|
|
40
|
+
color: red
|
|
41
|
+
warning:
|
|
42
|
+
useFor:
|
|
43
|
+
- pending
|
|
44
|
+
- sending
|
|
45
|
+
- attention
|
|
46
|
+
color: amber
|
|
47
|
+
info:
|
|
48
|
+
useFor:
|
|
49
|
+
- draft
|
|
50
|
+
- system
|
|
51
|
+
- informational
|
|
52
|
+
color: blue
|
|
53
|
+
muted:
|
|
54
|
+
useFor:
|
|
55
|
+
- disabled
|
|
56
|
+
- unknown
|
|
57
|
+
- none
|
|
58
|
+
color: gray
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## layout
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
shape: rounded-full hoặc rounded-md nhỏ, phẳng, border nhẹ.
|
|
65
|
+
size: compact table chip, không làm row cao.
|
|
66
|
+
maxTextLength: 12-16 ký tự; text dài dùng truncate-tooltip.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## testIds
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
chip: "{module}-{field}-chip"
|
|
73
|
+
rowChip: "{module}-{field}-{id}-chip"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## Design intent
|
|
78
|
+
|
|
79
|
+
**Inherits:** `admin-crud`
|
|
80
|
+
|
|
81
|
+
**Shell:** #shell: DataPage
|
|
82
|
+
|
|
83
|
+
**Patterns:**
|
|
84
|
+
|
|
85
|
+
- #pattern: CRUD
|
|
86
|
+
|
|
87
|
+
### Zones
|
|
88
|
+
|
|
89
|
+
| ID | Nhãn | Vị trí | Container | Ghi chú |
|
|
90
|
+
| --- | --- | --- | --- | --- |
|
|
91
|
+
| main | Nội dung chính | | | |
|
|
92
|
+
|
|
93
|
+
## Legacy evidence
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Common table action column
|
|
2
|
+
|
|
3
|
+
- **Testcase:** `#`
|
|
4
|
+
- **Screen:** `#`
|
|
5
|
+
|
|
6
|
+
Chuẩn cột action trong table list: icon-only, fixed width, accessible và không làm row phình.
|
|
7
|
+
|
|
8
|
+
## status
|
|
9
|
+
|
|
10
|
+
draft
|
|
11
|
+
|
|
12
|
+
## owner
|
|
13
|
+
|
|
14
|
+
portal-team
|
|
15
|
+
|
|
16
|
+
## layout
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
headerText: アクション hoặc blank nếu table quá hẹp nhưng phải có aria context.
|
|
20
|
+
width: fixed theo số action, không auto co text.
|
|
21
|
+
alignment: right hoặc center tùy table; mặc định right cho admin list.
|
|
22
|
+
overflow: nowrap
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## actions
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
iconOnly: true
|
|
29
|
+
requiredAttrs:
|
|
30
|
+
- data-testid
|
|
31
|
+
- aria-label
|
|
32
|
+
- title
|
|
33
|
+
order:
|
|
34
|
+
- view/detail
|
|
35
|
+
- edit/settings
|
|
36
|
+
- duplicate/copy
|
|
37
|
+
- delete/destructive
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## variants
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
view:
|
|
44
|
+
variant: ghost hoặc outline
|
|
45
|
+
icon: Eye
|
|
46
|
+
settings:
|
|
47
|
+
variant: outline
|
|
48
|
+
icon: Settings
|
|
49
|
+
loginAs:
|
|
50
|
+
variant: info hoặc outline
|
|
51
|
+
icon: LogIn
|
|
52
|
+
note: Nếu có nhiều user login-as, dùng pattern riêng thay vì nhồi text dài vào
|
|
53
|
+
action column.
|
|
54
|
+
delete:
|
|
55
|
+
variant: destructive-ghost
|
|
56
|
+
icon: Trash2
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## permissions
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
hiddenWhenNotAllowed: true
|
|
63
|
+
disabledWhenPending: true
|
|
64
|
+
disabledNeedsTooltip: true nếu người dùng cần biết lý do
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## testIds
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
actionButton: "{module}-{action}-{id}"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## Design intent
|
|
75
|
+
|
|
76
|
+
**Inherits:** `admin-crud`
|
|
77
|
+
|
|
78
|
+
**Shell:** #shell: DataPage
|
|
79
|
+
|
|
80
|
+
**Patterns:**
|
|
81
|
+
|
|
82
|
+
- #pattern: CRUD
|
|
83
|
+
|
|
84
|
+
### Zones
|
|
85
|
+
|
|
86
|
+
| ID | Nhãn | Vị trí | Container | Ghi chú |
|
|
87
|
+
| --- | --- | --- | --- | --- |
|
|
88
|
+
| main | Nội dung chính | | | |
|
|
89
|
+
|
|
90
|
+
## Legacy evidence
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Common Breadcrumb Flow
|
|
2
|
+
|
|
3
|
+
Applies to all dashboard pages with sidebar navigation. Read in `/grill-bqa`, `/spec`, `/grill-docs`.
|
|
4
|
+
|
|
5
|
+
## Rule
|
|
6
|
+
|
|
7
|
+
Every page **must** show breadcrumb aligned with **left-menu parent → child** hierarchy and **in-page action navigation** (list → detail → edit → …).
|
|
8
|
+
|
|
9
|
+
Breadcrumb is **not optional** on admin/list/detail/edit/create flows.
|
|
10
|
+
|
|
11
|
+
## Hierarchy model
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
Sidebar parent (menu group)
|
|
15
|
+
→ Sidebar child (menu item) OR list page
|
|
16
|
+
→ Action child page (detail, edit, create, settings, …)
|
|
17
|
+
→ Further nested step if spec defines it
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Example — hotel admin
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
ホテル管理 (sidebar parent)
|
|
24
|
+
→ ホテル一覧 (list — menu child or list route)
|
|
25
|
+
→ Hotel detail (row action / view)
|
|
26
|
+
→ Hotel edit (action from detail)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Rendered breadcrumb (conceptual):
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
ホテル管理 > ホテル一覧
|
|
33
|
+
ホテル管理 > ホテル一覧 > {hotel name}
|
|
34
|
+
ホテル管理 > ホテル一覧 > {hotel name} > 編集
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Use **route labels from spec** (`ui.screens`, menu copy) — do not invent labels in code without spec.
|
|
38
|
+
|
|
39
|
+
## Mapping spec → breadcrumb
|
|
40
|
+
|
|
41
|
+
| Page type | Breadcrumb depth | Source in spec |
|
|
42
|
+
|-----------|------------------|----------------|
|
|
43
|
+
| List | Parent > List | Sidebar + `ui.routes` / page title |
|
|
44
|
+
| Create | Parent > List > Create | Toolbar create action label |
|
|
45
|
+
| Detail | Parent > List > Entity name | Row view action |
|
|
46
|
+
| Edit | Parent > List > Entity name > Edit | Detail edit action |
|
|
47
|
+
| Settings / sub-flow | Parent > List > … > Step | `ui.screens` action chain |
|
|
48
|
+
|
|
49
|
+
**Create** is not a sidebar child — breadcrumb goes through **list** (from toolbar action), same as legacy portal pattern.
|
|
50
|
+
|
|
51
|
+
## UI requirements
|
|
52
|
+
|
|
53
|
+
- Breadcrumb sits in page header area (dashboard layout), above or beside page title per common list/detail shell.
|
|
54
|
+
- Each segment except the last is a **link** back to that level (list → detail → edit: each prior segment navigates correctly).
|
|
55
|
+
- Last segment is current page (plain text, not link).
|
|
56
|
+
- Entity name segment uses display field from data (`name`, `title`) when on detail/edit.
|
|
57
|
+
- i18n: labels match sidebar / spec copy (JP admin terms when legacy applies).
|
|
58
|
+
|
|
59
|
+
## Grill BQA — questions
|
|
60
|
+
|
|
61
|
+
1. Sidebar parent label và child label (menu copy)?
|
|
62
|
+
2. Create page breadcrumb label (e.g. 新規作成)?
|
|
63
|
+
3. Detail/edit segment: entity field hiển thị (`name`, `code`)?
|
|
64
|
+
4. Sub-flows (crawl setting, import): chèn level nào?
|
|
65
|
+
|
|
66
|
+
## Grill Dev — notes
|
|
67
|
+
|
|
68
|
+
- `ui.routes` chain: list `/hotels`, detail `/hotels/[id]`, edit `/hotels/[id]/edit`.
|
|
69
|
+
- Breadcrumb data often from route meta + loaded entity; `#wire-only` if menu API deferred.
|
|
70
|
+
- Do not flatten menu hierarchy into flat titles.
|
|
71
|
+
|
|
72
|
+
## Related common specs
|
|
73
|
+
|
|
74
|
+
- ``docs/features/` stub · hubs`
|
|
75
|
+
- ``docs/features/` stub · hubs` (if present)
|
|
76
|
+
- `common-ui-spec.md` — flat design, header area
|
|
77
|
+
|
|
78
|
+
## Anti-patterns
|
|
79
|
+
|
|
80
|
+
- List page without breadcrumb when sidebar has parent group
|
|
81
|
+
- Detail/edit only showing page title, no trail
|
|
82
|
+
- Breadcrumb labels unrelated to sidebar menu
|
|
83
|
+
- Create as fake sidebar root — must go through list
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Common delete flow
|
|
2
|
+
|
|
3
|
+
Destructive actions **must** block the user until acknowledged. Applies to row delete and bulk delete.
|
|
4
|
+
|
|
5
|
+
## Rule
|
|
6
|
+
|
|
7
|
+
| Step | UI |
|
|
8
|
+
|------|-----|
|
|
9
|
+
| Before delete | Blocking confirm dialog (clear object + impact) |
|
|
10
|
+
| After success | Blocking result dialog with success message — user must OK |
|
|
11
|
+
| After failure | Blocking result dialog with error — user must OK |
|
|
12
|
+
|
|
13
|
+
## Not allowed for delete
|
|
14
|
+
|
|
15
|
+
- Toast-only feedback
|
|
16
|
+
- Inline alert under title as sole confirmation
|
|
17
|
+
- Non-blocking banner
|
|
18
|
+
|
|
19
|
+
Bulk delete uses the same pattern; only copy and count differ.
|
|
20
|
+
|
|
21
|
+
## Spec / grill
|
|
22
|
+
|
|
23
|
+
- BQA: confirm copy, button labels, post-delete navigation (stay vs refresh list).
|
|
24
|
+
- Dev: API action, `#wire-only` if endpoint deferred; tag `#tech-debt:{id}` if contract open.
|
|
25
|
+
|
|
26
|
+
## Related
|
|
27
|
+
|
|
28
|
+
- ``docs/features/` stub · hubs`
|
|
29
|
+
- ``docs/features/` stub · hubs` (non-delete toasts)
|
|
30
|
+
- `common-ui-spec.md`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Common UI Spec (Portal)
|
|
2
|
+
|
|
3
|
+
**CMN SSOT:** `surfaces/common/md/` + `common-*.bundle.yaml` below — promote via `gen-common`, do not paste into every `W-*` YAML.
|
|
4
|
+
|
|
5
|
+
Follow `base-docs Code / `--id`` before copying legacy UI ad hoc.
|
|
6
|
+
|
|
7
|
+
- **Design registry:** `registries/design.registry.json` when present in the FE checkout; list default `#shell: DataListPage`. Promotion: `platform/toolchain/DESIGN-REGISTRY-PROMOTION.md`.
|
|
8
|
+
- If legacy violates project common UI, design to common global and note `#legacy-global-ui-violation` with legacy evidence.
|
|
9
|
+
- Patterns: list page, search filter, toolbar, pagination, data table, table action column, buttons, status chip, form validation, feedback/alert, confirm dialog, CSV import, navigation, flat design.
|
|
10
|
+
- Business buttons outside table actions: icon + text. Table row actions: icon-only per `common-table-action-column`. Paginator: page numbers/ellipsis; prev/next icon + Japanese text.
|
|
11
|
+
- Flat design: no heavy gradient/shadow or nested card/dialog layers unless common requires it.
|
|
12
|
+
- Prefer inline alert under page title/header on flat background. Alert dialog only when the page scrolls and inline alert would be hidden; non-action alert dialog top-right, not center/bottom legacy.
|
|
13
|
+
- Action dialogs (confirm/delete/overwrite/cancel): centered modal per common confirm dialog.
|
|
14
|
+
- Terminology: inline alert persists until user action; toast auto-dismiss ~5s with stack/animation; action modal blocks background.
|
|
15
|
+
- Never stack modals; use page/step/inline section or close current modal before opening a new flow.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
schema: portal-feature-bundle/v1
|
|
2
|
+
id: common-breadcrumb-flow
|
|
3
|
+
title: Common breadcrumb flow
|
|
4
|
+
status: draft
|
|
5
|
+
owner: portal-team
|
|
6
|
+
summary: Mọi dashboard page có breadcrumb khớp menu cha-con và action chain; breadcrumb trên page title.
|
|
7
|
+
specOrigin: legacy
|
|
8
|
+
grillStatus:
|
|
9
|
+
bqaFacts: draft
|
|
10
|
+
bqaOpen: draft
|
|
11
|
+
dev: draft
|
|
12
|
+
full: not_required
|
|
13
|
+
spec:
|
|
14
|
+
principles:
|
|
15
|
+
- Breadcrumb bắt buộc trên list, detail, edit, create khi có sidebar parent.
|
|
16
|
+
- Thứ tự header — breadcrumb rồi page title rồi content.
|
|
17
|
+
- Create không phải menu con — trail đi qua list (toolbar create).
|
|
18
|
+
references:
|
|
19
|
+
- .cursor/extracts/common-breadcrumb-flow.md
|
|
20
|
+
- docs/features/common/common-list-page.spec.yaml
|
|
21
|
+
hierarchy:
|
|
22
|
+
- sidebarParent
|
|
23
|
+
- sidebarChildOrList
|
|
24
|
+
- actionPages
|
|
25
|
+
examples:
|
|
26
|
+
hotelList: ホテル管理 > ホテル一覧
|
|
27
|
+
hotelDetail: ホテル管理 > ホテル一覧 > {name}
|
|
28
|
+
hotelEdit: ホテル管理 > ホテル一覧 > {name} > 編集
|
|
29
|
+
hotelCreate: ホテル管理 > ホテル一覧 > 新規作成
|
|
30
|
+
grill:
|
|
31
|
+
bqa: labels, entity display field, create label
|
|
32
|
+
dev: ui.routes chain, route meta, wire-only menu API
|
|
33
|
+
legacy:
|
|
34
|
+
legacyRef:
|
|
35
|
+
module: common/common
|
|
36
|
+
function: common-breadcrumb-flow
|
|
37
|
+
slice: slices.common-breadcrumb-flow
|
|
38
|
+
behaviors: []
|
|
39
|
+
fields: []
|
|
40
|
+
ui: []
|
|
41
|
+
evidence: []
|
|
42
|
+
refs: {}
|
|
43
|
+
design:
|
|
44
|
+
inherits: admin-crud
|
|
45
|
+
shell:
|
|
46
|
+
tag: "#shell: DataPage"
|
|
47
|
+
overrideCommonPattern: false
|
|
48
|
+
patterns:
|
|
49
|
+
- "#pattern: CRUD"
|
|
50
|
+
zones:
|
|
51
|
+
- id: main
|
|
52
|
+
label: Nội dung chính
|
|
53
|
+
behavior: {}
|
|
54
|
+
actions: []
|
|
55
|
+
review:
|
|
56
|
+
summary: Mọi dashboard page có breadcrumb khớp menu cha-con và action chain; breadcrumb trên page title.
|
|
57
|
+
layoutNotes: []
|
|
58
|
+
_meta:
|
|
59
|
+
generatedBy: archived-legacy-converter
|
|
60
|
+
sourceRevision: null
|