@givolt/i3-composer-agent 3.0.0 → 3.2.1
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/.agents/plugins/marketplace.json +1 -1
- package/.claude/commands/i3-sop.md +3 -3
- package/.claude/commands/i3-ui-demo.md +21 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.gemini/commands/i3-sop.toml +3 -3
- package/.gemini/commands/i3-ui-demo.toml +21 -0
- package/README.md +29 -32
- package/bin/i3-composer-agent.cjs +38 -44
- package/bin/install.cjs +15 -3
- package/bin/native-layout.cjs +2 -1
- package/bin/native-migration.cjs +19 -2
- package/bin/retired-sop-fingerprints.json +213 -0
- package/bin/wizard.cjs +7 -18
- package/commands/i3-sop.toml +3 -3
- package/commands/i3-ui-demo.toml +21 -0
- package/docs/codebuddy-setup.md +20 -23
- package/docs/codex-setup.md +2 -2
- package/docs/comparison.md +131 -0
- package/docs/developer-onboarding.md +143 -0
- package/docs/opencode-setup.md +1 -1
- package/docs/other-hosts.md +2 -2
- package/docs/skill-anatomy.md +211 -0
- package/docs/workbuddy-setup.md +7 -10
- package/evals/cases/i3-enterprise-sop.json +70 -32
- package/evals/cases/i3-ui-demo.json +98 -0
- package/evals/fixtures/i3-ui-demo/asset-management.md +25 -0
- package/evals/zh-CN/cases/i3-enterprise-sop.json +77 -31
- package/evals/zh-CN/cases/i3-ui-demo.json +103 -0
- package/hooks/PROTOTYPE.md +16 -8
- package/hooks/i3-prototype.cjs +4 -10
- package/hooks/manage.cjs +30 -31
- package/package.json +20 -5
- package/plugin.json +1 -1
- package/scripts/ui-demo-dependencies-test.js +228 -0
- package/scripts/ui-demo-mcp-test.js +95 -0
- package/scripts/ui-demo-test.js +170 -0
- package/scripts/ui-prototype-execution-runtime-test.js +1 -1
- package/scripts/ui-prototype-native-test.js +25 -3
- package/skills/i3-enterprise-sop/SKILL.md +151 -91
- package/{references/engineering-skeleton-resources → skills/i3-enterprise-sop/references/engineering-skeleton}/directory-standard.md +29 -15
- package/skills/i3-enterprise-sop/references/handoff.py +348 -0
- package/skills/i3-enterprise-sop/references/read_text.py +60 -0
- package/{references/enterprise-sop-resources/technical-baseline/baselines//344/274/201/344/270/232/345/272/224/347/224/250-/346/212/200/346/234/257/350/247/204/347/272/246_v0.0.2.md → skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md} +136 -51
- package/skills/i3-enterprise-sop/references/technical-baseline/readme.md +23 -0
- package/{references/enterprise-sop-resources/technical-baseline/templates/TECHNICAL-BASELINE.md → skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md} +1 -1
- package/{references/enterprise-sop-resources/ad/templates/AD.md → skills/i3-enterprise-sop/references/templates/ad.md} +34 -27
- package/{references/enterprise-sop-resources/brd/templates/BRD.md → skills/i3-enterprise-sop/references/templates/brd.md} +21 -10
- package/{references/enterprise-sop-resources/prd/templates/PRD.md → skills/i3-enterprise-sop/references/templates/prd.md} +57 -24
- package/{references/enterprise-sop-resources/testcase/templates/TestCase.md → skills/i3-enterprise-sop/references/templates/testcase.md} +32 -22
- package/skills/i3-ui-demo/SKILL.md +234 -0
- package/skills/i3-ui-demo/assets/antdv-build/package-lock.json +3363 -0
- package/skills/i3-ui-demo/assets/antdv-build/package.json +28 -0
- package/skills/i3-ui-demo/assets/design-source.json +11 -0
- package/skills/i3-ui-demo/assets/host-targets.json +739 -0
- package/skills/i3-ui-demo/assets/official-files.json +76 -0
- package/skills/i3-ui-demo/assets/starter/index.html +11 -0
- package/skills/i3-ui-demo/assets/starter/package-lock.json +2299 -0
- package/skills/i3-ui-demo/assets/starter/package.json +28 -0
- package/skills/i3-ui-demo/assets/starter/provenance.json +14 -0
- package/skills/i3-ui-demo/assets/starter/public/prototype-config.json +22 -0
- package/skills/i3-ui-demo/assets/starter/src/App.vue +64 -0
- package/skills/i3-ui-demo/assets/starter/src/PrototypeShell.vue +59 -0
- package/skills/i3-ui-demo/assets/starter/src/config.ts +23 -0
- package/skills/i3-ui-demo/assets/starter/src/domain/presentation.ts +30 -0
- package/skills/i3-ui-demo/assets/starter/src/domain/theme.ts +25 -0
- package/skills/i3-ui-demo/assets/starter/src/main.ts +18 -0
- package/skills/i3-ui-demo/assets/starter/src/style.css +26 -0
- package/skills/i3-ui-demo/assets/starter/tests/presentation.test.ts +23 -0
- package/skills/i3-ui-demo/assets/starter/tests/theme.test.ts +26 -0
- package/skills/i3-ui-demo/assets/starter/tsconfig.json +15 -0
- package/skills/i3-ui-demo/assets/starter/vite.config.ts +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/capability-definition.json +1395 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/component-inventory.json +707 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/design-system.md +26 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/generation.json +49 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/index.html +534 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/manifest.json +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/offline-build.json +265 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/offline.js +8888 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/origin.json +344 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/preset.json +928 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/app.js +22 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/assets/empty.svg +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/assets/reference-styles.json +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/assets/result-403.svg +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/assets/result-404.svg +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/assets-manifest.json +334 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/baseline.json +173 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/conversion.md +30 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/credits.md +17 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/design-tokens.json +881 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/index.html +28 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +22 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +21 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/package.json +12 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/browser-routes.json +298 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/coverage.json +180 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/integrity.json +13 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/keyboard.json +11 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/responsive.json +125 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/review.md +51 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/rules.log +150 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/selection.json +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +342 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/readme.md +73 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/reference.md +59 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/routes.json +178 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/controls.js +99 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/dialogs.js +54 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/dom.js +264 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/forms.js +47 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/icons.js +41 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/layout.js +47 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/router.js +63 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/state.js +90 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/table.js +41 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/runtime/widgets.js +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +36 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +51 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +48 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +6 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +13 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/data.js +24 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/domain.js +32 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/registry.js +25 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/agents/store.js +85 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +17 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +66 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +38 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +66 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +5 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +12 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +11 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +116 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +32 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +49 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +10 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +77 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/data.js +60 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/domain.js +105 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/intents/store.js +212 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +18 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +23 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +78 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +55 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +26 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +38 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +7 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +72 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +46 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +52 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/RowActions.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/RowActions.js +19 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +30 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/data.js +48 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/domain.js +39 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/models/store.js +129 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +21 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +10 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +49 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +22 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/commands.js +82 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/examples.js +47 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/model.js +61 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/repair.js +68 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/store.js +55 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/types.js +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/operations/workbench.js +18 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +28 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +18 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +31 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +27 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +16 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +43 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +34 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +30 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +67 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +41 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +31 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +26 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +70 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/data.js +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/domain.js +62 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/management.js +36 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +49 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/pbc/store.js +132 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +38 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +11 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +45 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +54 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +27 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +12 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +45 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +38 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/domain.js +61 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/state.js +51 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/permissions/store.js +116 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +45 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +30 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +67 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +5 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +60 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/commands.js +157 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/model.js +136 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/releases/store.js +76 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +26 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +14 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +113 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +62 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/commands.js +97 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/model.js +147 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/reviews/store.js +13 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +17 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/columns.js +32 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +49 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +12 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +15 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/policy.js +68 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shared/session.js +44 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +25 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +53 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +10 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +30 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +10 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/shell/navigation.js +19 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +32 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +15 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +11 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +57 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/data.js +20 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/domain.js +55 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/specs/store.js +151 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +18 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +40 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +51 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +5 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +48 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/domain.js +204 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +22 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/registry.js +135 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/tasks/store.js +137 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +36 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workbench/model.js +56 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workbench/store.js +15 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +27 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +31 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +68 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +5 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +55 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/data.js +16 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/domain.js +83 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/registry.js +18 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/src/workflows/store.js +61 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/admin.css +60 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/agents.css +46 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/antdv.css +295 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/app.css +102 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/delivery.css +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/intents.css +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/native.css +22 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/operations.css +2 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/pbc.css +3 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/permissions.css +22 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/pro.css +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/releases.css +4 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/reset.css +246 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/reviews.css +8 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/tasks.css +6 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/tokens.css +15 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/workbench.css +61 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/styles/workflows.css +1 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +96 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/agents.test.js +14 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +37 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +44 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +19 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +14 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/operations.test.js +25 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +17 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +24 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +23 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/permissions.test.js +24 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/releases.test.js +50 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/reviews.test.js +36 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +28 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +42 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +16 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +11 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/tasks.test.js +27 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/workbench.test.js +34 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tests/workflows.test.js +16 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tools/convert.mjs +168 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tools/serve.mjs +7 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tools/styles.mjs +11 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/reference/tools/verify.mjs +24 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/serve.cjs +16 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/template-inventory.json +28791 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/template.json +9 -0
- package/skills/i3-ui-demo/assets/templates/enterprise-admin/usability.css +44 -0
- package/skills/i3-ui-demo/assets/templates.json +10 -0
- package/skills/i3-ui-demo/assets/versions.json +20 -0
- package/skills/i3-ui-demo/readme.md +350 -0
- package/skills/i3-ui-demo/references/browser.md +71 -0
- package/skills/i3-ui-demo/references/dependencies.md +67 -0
- package/skills/i3-ui-demo/references/resources.md +142 -0
- package/skills/i3-ui-demo/scripts/dependencies.cjs +364 -0
- package/skills/i3-ui-demo/scripts/design-install.cjs +105 -0
- package/skills/i3-ui-demo/scripts/design-provider.cjs +57 -0
- package/skills/i3-ui-demo/scripts/locations.cjs +52 -0
- package/skills/i3-ui-demo/scripts/mcp.cjs +112 -0
- package/skills/i3-ui-demo/scripts/provider-discovery.cjs +131 -0
- package/skills/i3-ui-demo/scripts/resources.cjs +283 -0
- package/skills/i3-ui-prototype/SKILL.md +1 -1
- package/skills/i3-ui-prototype/references/execution-evidence.md +12 -56
- package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +1 -1
- package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +5 -2
- package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +3 -2
- package/skills/i3-ui-prototype/scripts/native-delivery.cjs +2 -2
- package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +23 -20
- package/docs/ui-prototype-native/MAIN-SESSION-REPORT.md +0 -66
- package/docs/ui-prototype-native/USAGE.md +0 -93
- package/references/engineering-skeleton-resources/README.md +0 -52
- package/references/engineering-skeleton-resources/adoption.md +0 -200
- package/references/engineering-skeleton-resources/catalog.json +0 -17
- package/references/enterprise-sop-resources/README.md +0 -165
- package/references/enterprise-sop-resources/ad/README.md +0 -70
- package/references/enterprise-sop-resources/ad/assets-manifest.json +0 -106
- package/references/enterprise-sop-resources/ad/prompts/01-generate.md +0 -58
- package/references/enterprise-sop-resources/ad/prompts/02-review.md +0 -54
- package/references/enterprise-sop-resources/ad/prompts/03-revise.md +0 -54
- package/references/enterprise-sop-resources/ad/prompts/04-recheck.md +0 -54
- package/references/enterprise-sop-resources/assets-manifest.json +0 -199
- package/references/enterprise-sop-resources/brd/README.md +0 -50
- package/references/enterprise-sop-resources/brd/assets-manifest.json +0 -94
- package/references/enterprise-sop-resources/brd/prompts/01-generate.md +0 -51
- package/references/enterprise-sop-resources/brd/prompts/02-review.md +0 -47
- package/references/enterprise-sop-resources/brd/prompts/03-revise.md +0 -47
- package/references/enterprise-sop-resources/brd/prompts/04-recheck.md +0 -47
- package/references/enterprise-sop-resources/codebuddy-project-guide.md +0 -34
- package/references/enterprise-sop-resources/controlled-handoff.md +0 -41
- package/references/enterprise-sop-resources/controlled_handoff.py +0 -334
- package/references/enterprise-sop-resources/handoff-contract.md +0 -196
- package/references/enterprise-sop-resources/handoff.py +0 -277
- package/references/enterprise-sop-resources/lifecycle-contract.md +0 -91
- package/references/enterprise-sop-resources/plan-handoff.md +0 -73
- package/references/enterprise-sop-resources/prd/README.md +0 -137
- package/references/enterprise-sop-resources/prd/assets-manifest.json +0 -115
- package/references/enterprise-sop-resources/prd/prompts/01-generate.md +0 -64
- package/references/enterprise-sop-resources/prd/prompts/02-review.md +0 -49
- package/references/enterprise-sop-resources/prd/prompts/03-revise.md +0 -48
- package/references/enterprise-sop-resources/prd/prompts/04-recheck.md +0 -47
- package/references/enterprise-sop-resources/prd/template-contracts.md +0 -39
- package/references/enterprise-sop-resources/prd/templates/AD.md +0 -17
- package/references/enterprise-sop-resources/recovery-contract.md +0 -65
- package/references/enterprise-sop-resources/review-handoff.md +0 -105
- package/references/enterprise-sop-resources/selection-handoff.md +0 -55
- package/references/enterprise-sop-resources/selection_handoff.py +0 -225
- package/references/enterprise-sop-resources/stages.json +0 -262
- package/references/enterprise-sop-resources/technical-baseline/README.md +0 -132
- package/references/enterprise-sop-resources/technical-baseline/assets-manifest.json +0 -101
- package/references/enterprise-sop-resources/technical-baseline/baselines/PROVENANCE.md +0 -40
- package/references/enterprise-sop-resources/technical-baseline/references/engineering-directory-v0.2.0/adoption.md +0 -112
- package/references/enterprise-sop-resources/technical-baseline/references/engineering-directory-v0.2.0/directory-standard.md +0 -119
- package/references/enterprise-sop-resources/template-contracts.md +0 -142
- package/references/enterprise-sop-resources/testcase/README.md +0 -61
- package/references/enterprise-sop-resources/testcase/assets-manifest.json +0 -111
- package/references/enterprise-sop-resources/testcase/prompts/01-generate.md +0 -53
- package/references/enterprise-sop-resources/testcase/prompts/02-review.md +0 -51
- package/references/enterprise-sop-resources/testcase/prompts/03-revise.md +0 -49
- package/references/enterprise-sop-resources/testcase/prompts/04-recheck.md +0 -51
- package/references/enterprise-sop-resources/verification/README.md +0 -149
- package/references/enterprise-sop-resources/verification/check_execution.py +0 -185
- package/references/enterprise-sop-resources/verification/check_native_execution.py +0 -282
- package/references/enterprise-sop-resources/verification/check_reads.py +0 -348
- package/references/enterprise-sop-resources/verification/review-output.schema.json +0 -155
- package/references/enterprise-sop-resources/verification/review_handoff.py +0 -329
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { h, defineWidget, Portal, Fragment, afterRender } from './dom.js';
|
|
2
|
+
import { invalidate } from './state.js';
|
|
3
|
+
import { DownOutlined, CloseCircleOutlined, SearchOutlined, LoadingOutlined } from './icons.js';
|
|
4
|
+
|
|
5
|
+
export const uid = value => { let hash = 2166136261; for (const c of value) hash = Math.imul(hash ^ c.charCodeAt(0), 16777619); return 'ui-' + (hash >>> 0).toString(36); };
|
|
6
|
+
export const attrs = props => Object.fromEntries(Object.entries(props).filter(([key]) => ['id', 'title', 'tabindex', 'role'].includes(key) || key.startsWith('aria-') || key.startsWith('data-') && !key.startsWith('data-bind')));
|
|
7
|
+
const popups = new Map();
|
|
8
|
+
export function popup(state, ctx, event) {
|
|
9
|
+
state.rect = event.currentTarget.getBoundingClientRect(); state.open = !state.open;
|
|
10
|
+
popups.set(ctx.id, state); invalidate();
|
|
11
|
+
}
|
|
12
|
+
if (typeof document !== 'undefined') {
|
|
13
|
+
document.addEventListener('mousedown', event => {
|
|
14
|
+
for (const [id, state] of popups) if (state.open && !event.target.closest(`[data-popup-owner="${uid(id)}"]`)) { state.open = false; invalidate(); }
|
|
15
|
+
});
|
|
16
|
+
document.addEventListener('keydown', event => { if (event.key === 'Escape') for (const state of popups.values()) if (state.open) { state.open = false; invalidate(); } });
|
|
17
|
+
}
|
|
18
|
+
export function popupStyle(state, minimum = 180) {
|
|
19
|
+
const r = state.rect || { left: 0, bottom: 0, top: 0, width: minimum };
|
|
20
|
+
return { position: 'fixed', top: r.bottom + 4, left: Math.max(8, Math.min(r.left, window.innerWidth - Math.max(minimum, r.width) - 8)), width: Math.max(minimum, r.width), zIndex: 2200 };
|
|
21
|
+
}
|
|
22
|
+
export const Button = defineWidget('Button', (p, s) => {const raw=s.default?.(),content=(Array.isArray(raw)?raw:[raw]).flat(Infinity).filter(x=>x!=null&&x!==false),iconOnly=content.length===1&&/Outlined$|Filled$/.test(content[0]?.type?.name||'');return h('button', {
|
|
23
|
+
...attrs(p), type: p.htmlType || 'button', disabled: p.disabled || p.loading,
|
|
24
|
+
class: ['ant-btn', 'ant-btn-' + (p.type || 'default'),p.type==='primary'?'ant-btn-variant-solid':p.type==='link'?'ant-btn-variant-link':p.type==='text'?'ant-btn-variant-text':'ant-btn-variant-outlined',p.danger?'ant-btn-color-dangerous':p.type==='primary'?'ant-btn-color-primary':p.type==='link'?'ant-btn-color-link':'ant-btn-color-default',iconOnly&&'ant-btn-icon-only',p.size === 'small' && 'ant-btn-sm', p.size === 'large' && 'ant-btn-lg', p.danger && 'ant-btn-dangerous', p.block && 'ant-btn-block', p.loading && 'ant-btn-loading', p.class],
|
|
25
|
+
style: p.style, onClick: p.onClick,
|
|
26
|
+
}, [p.loading ? h(LoadingOutlined) : s.icon?.(), content.map(child=>typeof child==='string'||typeof child==='number'?h('span',{},child):child)]);});
|
|
27
|
+
|
|
28
|
+
export const Input = defineWidget('Input', (p, s, ctx) => {
|
|
29
|
+
const input = h('input', {
|
|
30
|
+
...attrs(p), class: ['ant-input ant-input-outlined ant-input-css-var', p.class], value: p.value ?? p.modelValue ?? '', type: p.type || 'text', placeholder: p.placeholder, disabled: p.disabled, readOnly: p.readonly || p.readOnly,
|
|
31
|
+
maxlength: p.maxlength ?? p.maxLength ?? 160, style: p.style,
|
|
32
|
+
onInput: e => { ctx.emit('update:value', e.target.value); ctx.emit('update:modelValue', e.target.value); p.onInput?.(e); },
|
|
33
|
+
onChange: p.onChange, onBlur: p.onBlur, onFocus: p.onFocus,
|
|
34
|
+
onKeydown: e => { p.onKeydown?.(e); if (e.key === 'Enter') { p.onPressEnter?.(e); p.onSearch?.(e.target.value); } },
|
|
35
|
+
});
|
|
36
|
+
if (p.allowClear || p.showCount || s.prefix || s.suffix) return h('span', { class: ['ant-input-affix-wrapper ant-input-outlined ant-input-css-var', p.disabled && 'ant-input-affix-wrapper-disabled', p.class], style: p.style }, [s.prefix?.(), h('input', { ...input.props, class: 'ant-input', style: undefined }, []),h('span',{class:'ant-input-suffix'},[p.allowClear ? h('button', {type:'button',disabled:p.disabled, class: ['ant-input-clear-icon',!p.value&&'ant-input-clear-icon-hidden'], 'aria-label': '清空',tabindex:-1, onClick: () => ctx.emit('update:value', '') }, h(CloseCircleOutlined)) : null, s.suffix?.(),p.showCount&&h('span',{class:'ant-input-show-count-suffix'},String(p.value||'').length+' / '+(p.maxlength||p.maxLength||160))])]);
|
|
37
|
+
return input;
|
|
38
|
+
});
|
|
39
|
+
export const TextArea = defineWidget('TextArea', (p, s, ctx) => {
|
|
40
|
+
const id=p.id||uid(ctx.id);
|
|
41
|
+
if(p.autoSize)afterRender(()=>{const el=document.getElementById(id);if(!el)return;const c=getComputedStyle(el),line=parseFloat(c.lineHeight)||22,padding=parseFloat(c.paddingTop)+parseFloat(c.paddingBottom)+parseFloat(c.borderTopWidth)+parseFloat(c.borderBottomWidth),min=(p.autoSize.minRows||1)*line+padding,max=(p.autoSize.maxRows||100)*line+padding;el.style.height='auto';const height=Math.max(min,Math.min(max,el.scrollHeight+2));el.style.height=height+'px';el.style.overflowY=height>=max?'auto':'hidden';});
|
|
42
|
+
const textarea=h('textarea', {
|
|
43
|
+
...attrs(p),id, class: ['ant-input ant-input-outlined ant-input-css-var',!p.showCount&&p.class], value: p.value ?? p.modelValue ?? '', placeholder: p.placeholder, disabled: p.disabled,
|
|
44
|
+
rows: p.rows || p.autoSize?.minRows || 3, maxlength: p.maxlength || p.maxLength, style: p.style,
|
|
45
|
+
onInput: e => { ctx.emit('update:value', e.target.value); ctx.emit('update:modelValue', e.target.value); p.onInput?.(e); }, onChange: p.onChange, onBlur: p.onBlur,
|
|
46
|
+
}, []);
|
|
47
|
+
return p.showCount?h('span',{class:['ant-input-textarea ant-input-textarea-show-count',p.class],style:p.style,'data-count':String(p.value||'').length+' / '+(p.maxlength||p.maxLength)},textarea):textarea;
|
|
48
|
+
});
|
|
49
|
+
Input.TextArea = TextArea;
|
|
50
|
+
Input.Search = defineWidget('Input.Search', (p, s, ctx) => h('div', { class: ['ant-space-compact', 'ant-input-search', p.class], style: p.style }, [h(Input, { ...p, class: 'ant-input-compact-item ant-input-compact-first-item', style: undefined, onSearch: value => p.onSearch?.(value), 'onUpdate:value': v => ctx.emit('update:value', v) }), h(Button, {class:'ant-btn-icon-only ant-btn-compact-item ant-btn-compact-last-item','aria-label': '搜索', onClick: () => p.onSearch?.(p.value || '') }, h(SearchOutlined))]));
|
|
51
|
+
Input.Group = defineWidget('Input.Group', (p, s) => h('div', { class: 'ant-input-group', ...attrs(p) }, s.default?.()));
|
|
52
|
+
|
|
53
|
+
export const InputNumber = defineWidget('InputNumber', (p, s, ctx) => {const state=ctx.state(()=>({focused:false,draft:''}));return h('div', { class: ['ant-input-number ant-input-number-outlined ant-input-number-css-var ant-input-number-mode-input', p.disabled && 'ant-input-number-disabled', p.class], style: p.style }, h('div', { class: 'ant-input-number-input-wrap' }, h('input', {
|
|
54
|
+
...attrs(p), type: 'number', role: 'spinbutton', class: 'ant-input-number-input', value: state.focused?state.draft:p.value == null ? '' : p.precision == null ? p.value : Number(p.value).toFixed(p.precision),
|
|
55
|
+
disabled: p.disabled, placeholder: p.placeholder, min: p.min, max: p.max, step: p.step || (p.precision ? 10 ** -p.precision : 1),
|
|
56
|
+
onInput: e => {state.draft=e.target.value;const value = e.target.value === '' ? undefined : Number(e.target.value); ctx.emit('update:value', value); p.onChange?.(value); },
|
|
57
|
+
onFocus:e=>{state.focused=true;state.draft=e.target.value;},onBlur:e=>{state.focused=false;p.onBlur?.(e);invalidate();},
|
|
58
|
+
})));});
|
|
59
|
+
|
|
60
|
+
function optionsOf(options) { return (options || []).map(option => typeof option === 'object' ? option : { label: option, value: option }); }
|
|
61
|
+
export const Select = defineWidget('Select', (p, s, ctx) => {
|
|
62
|
+
const state = ctx.state(() => ({ open: false, search: '', highlight: 0 }));
|
|
63
|
+
const multiple = p.mode === 'multiple' || p.mode === 'tags';
|
|
64
|
+
const options = optionsOf(p.options), selected = multiple ? p.value || [] : [p.value];
|
|
65
|
+
const visible = options.filter(o => !state.search || String(o.label).toLowerCase().includes(state.search.toLowerCase()));
|
|
66
|
+
const choose = value => {
|
|
67
|
+
const next = multiple ? selected.includes(value) ? selected.filter(v => v !== value) : [...selected, value] : value;
|
|
68
|
+
ctx.emit('update:value', next); p.onChange?.(next, options.find(o => o.value === value));
|
|
69
|
+
if (!multiple) state.open = false;
|
|
70
|
+
state.search = ''; invalidate();
|
|
71
|
+
};
|
|
72
|
+
const open = event => { if (!p.disabled) { popup(state, ctx, event); state.highlight = 0; } };
|
|
73
|
+
const label = options.find(o => o.value === p.value)?.label;
|
|
74
|
+
const owner = uid(ctx.id);
|
|
75
|
+
const selection = multiple ? h('div', { class: 'ant-select-selection-overflow' }, [selected.map(v => h('span', { class: 'ant-select-selection-item' }, [options.find(o => o.value === v)?.label ?? v, !p.disabled && h('button', {type:'button', class: 'ant-select-selection-item-remove', 'aria-label': '移除 ' + (options.find(o => o.value === v)?.label ?? v), onClick: e => { e.stopPropagation(); choose(v); } }, '×')])), !selected.length && h('span', { class: 'ant-select-placeholder' }, p.placeholder)]) : h('div', { class: p.value == null || p.value === '' ? 'ant-select-placeholder' : 'ant-select-content-value' }, label ?? (p.value != null && p.value !== '' ? p.value : p.placeholder || '请选择'));
|
|
76
|
+
return h(Fragment, {}, [
|
|
77
|
+
h('div', {class: ['ant-select ant-select-outlined ant-select-css-var',ctx.form&&'ant-select-in-form-item', multiple ? 'ant-select-multiple' : 'ant-select-single',p.size==='small'&&'ant-select-sm',p.size==='large'&&'ant-select-lg', p.disabled && 'ant-select-disabled', state.open && 'ant-select-open', 'ant-select-show-arrow', p.class], style: p.style, 'data-popup-owner': owner, onClick: open }, [
|
|
78
|
+
h('div', { class: ['ant-select-content',p.value!=null&&p.value!==''&&'ant-select-content-has-value'] }, [selection, h('input', { ...attrs(p),class: 'ant-select-input', role: 'combobox', 'aria-expanded': state.open,'aria-haspopup':'listbox', 'aria-label': p['aria-label'] || p.placeholder || '选择',autocomplete:'off', disabled: p.disabled, value: state.search, readOnly: !p.showSearch, tabindex: p.disabled ? -1 : 0,onBlur:p.onBlur,onFocus:p.onFocus, onInput: e => { state.search = e.target.value; state.open = true; invalidate(); }, onKeydown: e => { if (e.key === 'ArrowDown') { e.preventDefault(); if (!state.open) open(e); else state.highlight = Math.min(visible.length - 1, state.highlight + 1); invalidate(); } if (e.key === 'ArrowUp') { e.preventDefault(); state.highlight = Math.max(0, state.highlight - 1); invalidate(); } if (e.key === 'Enter' && state.open) { e.preventDefault(); const o = visible[state.highlight]; if (o && !o.disabled) choose(o.value); } } })]),
|
|
79
|
+
h('div', { class: 'ant-select-suffix', 'aria-hidden': true }, h(DownOutlined)),
|
|
80
|
+
p.allowClear && (multiple ? selected.length : p.value != null && p.value !== '') ? h('button', {type:'button',disabled:p.disabled, class: 'ant-select-clear', 'aria-label': '清空选择', onClick: e => { e.stopPropagation(); ctx.emit('update:value', multiple ? [] : undefined); p.onChange?.(multiple ? [] : undefined); } }, h(CloseCircleOutlined)) : null,
|
|
81
|
+
]),
|
|
82
|
+
state.open && h(Portal, {}, h('div', { class: 'ant-select-dropdown native-popup', style: popupStyle(state), 'data-popup-owner': owner, role: 'listbox', 'aria-multiselectable': multiple }, visible.length ? visible.map((o, i) => h('div', { class: ['ant-select-item ant-select-item-option', selected.includes(o.value) && 'ant-select-item-option-selected', o.disabled && 'ant-select-item-option-disabled', i === state.highlight && 'ant-select-item-option-active'], role: 'option', 'aria-selected': selected.includes(o.value), 'aria-disabled': !!o.disabled, onClick: () => { if (!o.disabled) choose(o.value); } }, h('div', { class: 'ant-select-item-option-content' }, o.label))) : h('div', { class: 'native-popup-empty' }, '暂无可选项'))),
|
|
83
|
+
]);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
export const Checkbox = defineWidget('Checkbox', (p, s, ctx) => h('label', { class: ['ant-checkbox-wrapper ant-checkbox-css-var', p.disabled && 'ant-checkbox-wrapper-disabled', p.class], style: p.style }, [h('span', { class: ['ant-checkbox ant-wave-target', p.checked && 'ant-checkbox-checked',p.indeterminate&&'ant-checkbox-indeterminate', p.disabled && 'ant-checkbox-disabled'] }, [h('input', { ...attrs(p), class: 'ant-checkbox-input', type: 'checkbox', checked: p.checked, disabled: p.disabled, onChange: e => { ctx.emit('update:checked', e.target.checked); p.onChange?.(e); } })]), s.default&&h('span', {}, s.default())]));
|
|
87
|
+
Checkbox.Group = defineWidget('Checkbox.Group', (p, s, ctx) => h('div', { class: 'ant-checkbox-group' }, optionsOf(p.options).map(o => h(Checkbox, { checked: (p.value || []).includes(o.value), disabled: p.disabled || o.disabled, 'onUpdate:checked': checked => { const next = checked ? [...(p.value || []), o.value] : (p.value || []).filter(v => v !== o.value); ctx.emit('update:value', next); p.onChange?.(next); } }, o.label))));
|
|
88
|
+
export const Switch = defineWidget('Switch', (p, s, ctx) => h('button', { ...attrs(p), type: 'button', role: 'switch', 'aria-checked': !!p.checked, disabled: p.disabled, class: ['ant-switch', p.checked && 'ant-switch-checked', p.size === 'small' && 'ant-switch-small', p.class], onClick: () => { ctx.emit('update:checked', !p.checked); p.onChange?.(!p.checked); } }, [h('div', { class: 'ant-switch-handle' }), h('span', { class: 'ant-switch-inner' }, p.checked ? p.checkedChildren || '' : p.unCheckedChildren || '')]));
|
|
89
|
+
export const Radio=defineWidget('Radio',(p,s,ctx)=>h('label',{class:['ant-radio-wrapper ant-radio-css-var',p.checked&&'ant-radio-wrapper-checked',p.disabled&&'ant-radio-wrapper-disabled',p.class]},[h('span',{class:['ant-radio ant-wave-target',p.checked&&'ant-radio-checked',p.disabled&&'ant-radio-disabled']},h('input',{...attrs(p),type:'radio',class:'ant-radio-input',name:p.name||uid(ctx.id),value:p.value,checked:p.checked,disabled:p.disabled,onChange:e=>{ctx.emit('update:checked',e.target.checked);p.onChange?.(e);}})),s.default&&h('span',{class:'ant-radio-label'},s.default())]));
|
|
90
|
+
export const RadioGroup = defineWidget('RadioGroup', (p, s, ctx) => h('div', { ...attrs(p), class: ['ant-radio-group', p.class] }, optionsOf(p.options).map(o => h(Radio,{name:uid(ctx.id),value:o.value,checked:p.value===o.value,disabled:p.disabled||o.disabled,'onUpdate:checked':()=>{ctx.emit('update:value',o.value);p.onChange?.({target:{value:o.value}});}},o.label))));
|
|
91
|
+
|
|
92
|
+
export const Dropdown = defineWidget('Dropdown', (p, s, ctx) => {
|
|
93
|
+
const state = ctx.state(() => ({ open: false })), owner = uid(ctx.id), menu = p.menu || {};
|
|
94
|
+
const activate=(value,event)=>{if(value.disabled)return;state.open=false;menu.onClick?.({key:value.key,domEvent:event});invalidate();};
|
|
95
|
+
const item = value => value.type === 'divider' ? h('li', { class: 'ant-dropdown-menu-item-divider', role: 'separator' }) : h('li', { role: 'menuitem',tabindex:value.disabled?-1:0, class: ['ant-dropdown-menu-item', value.disabled && 'ant-dropdown-menu-item-disabled', value.danger && 'ant-dropdown-menu-item-danger'], onClick:event=>activate(value,event),onKeydown:event=>{if(['Enter',' '].includes(event.key)){event.preventDefault();activate(value,event);}if(['ArrowDown','ArrowUp'].includes(event.key)){event.preventDefault();const nodes=[...event.currentTarget.parentElement.querySelectorAll('[role="menuitem"][tabindex="0"]')],index=nodes.indexOf(event.currentTarget);nodes[(index+(event.key==='ArrowDown'?1:nodes.length-1))%nodes.length]?.focus();}} }, value.label);
|
|
96
|
+
return h(Fragment, {}, [h('span', { class: ['ant-dropdown-trigger', p.class], 'data-popup-owner': owner, onClick: e => { if (!p.disabled) popup(state, ctx, e); } }, s.default?.()), state.open && h(Portal, {}, h('div', { class: 'ant-dropdown native-popup', style: popupStyle(state, 160), 'data-popup-owner': owner }, h('ul', { class: 'ant-dropdown-menu', role: 'menu' }, (menu.items || []).map(item))))]);
|
|
97
|
+
});
|
|
98
|
+
export const Tooltip = defineWidget('Tooltip', (p, s,ctx) => {const state=ctx.state(()=>({open:false,rect:null})),id=uid(ctx.id);return h(Fragment,{},[h('span', { class: p.class,'aria-describedby':state.open?id:undefined,onMouseenter:e=>{state.open=!!p.title;state.rect=e.currentTarget.getBoundingClientRect();invalidate();},onMouseleave:()=>{state.open=false;invalidate();}}, s.default?.()),state.open&&h(Portal,{},h('div',{id,class:'ant-tooltip ant-tooltip-placement-top',role:'tooltip',style:{position:'fixed',left:state.rect.left+state.rect.width/2,top:state.rect.top-6,transform:'translate(-50%,-100%)',zIndex:2400,pointerEvents:'none'}},h('div',{class:'ant-tooltip-inner'},p.title)))]);});
|
|
99
|
+
export const Avatar = defineWidget('Avatar', (p, s) => h('span', { class: ['ant-avatar ant-avatar-circle', p.class], style: { width: p.size || 32, height: p.size || 32, lineHeight: (p.size || 32) + 'px', ...p.style } }, s.default?.()));
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { h,defineWidget,Portal,Fragment,afterRender } from './dom.js';
|
|
2
|
+
import { invalidate } from './state.js';
|
|
3
|
+
import { Button,attrs,uid } from './controls.js';
|
|
4
|
+
import { CloseOutlined,CheckCircleOutlined,CloseCircleOutlined,InfoCircleOutlined,LoadingOutlined } from './icons.js';
|
|
5
|
+
|
|
6
|
+
const active=new Map();
|
|
7
|
+
if(typeof document!=='undefined')document.addEventListener('keydown',event=>{
|
|
8
|
+
const top=[...active.values()].at(-1);if(!top)return;
|
|
9
|
+
if(event.key==='Escape'&&top.keyboard!==false){event.preventDefault();event.stopPropagation();top.close(event);}
|
|
10
|
+
if(event.key==='Tab'){
|
|
11
|
+
const root=document.getElementById(top.id),nodes=[...(root?.querySelectorAll('button:not(:disabled), input:not(:disabled), textarea:not(:disabled), [tabindex="0"], a[href]')||[])].filter(el=>el.getClientRects().length);
|
|
12
|
+
if(!nodes.length){event.preventDefault();root?.focus();return;}
|
|
13
|
+
const first=nodes[0],last=nodes.at(-1);
|
|
14
|
+
if(event.shiftKey&&(document.activeElement===first||!root.contains(document.activeElement))){event.preventDefault();last.focus();}
|
|
15
|
+
else if(!event.shiftKey&&(document.activeElement===last||!root.contains(document.activeElement))){event.preventDefault();first.focus();}
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
function dialog(p,ctx,kind){
|
|
19
|
+
const state=ctx.state(()=>({wasOpen:false,previousFocus:null})),id=uid(ctx.id),close=e=>kind==='drawer'?p.onClose?.(e):p.onCancel?.(e);
|
|
20
|
+
if(!p.open){if(state.wasOpen){active.delete(id);state.wasOpen=false;afterRender(()=>{state.previousFocus?.isConnected&&state.previousFocus.focus();if(!active.size)document.body.style.overflow='';});}return false;}
|
|
21
|
+
if(!state.wasOpen){state.wasOpen=true;state.previousFocus=document.activeElement;afterRender(()=>{document.body.style.overflow='hidden';document.getElementById(id)?.focus({preventScroll:true});});}
|
|
22
|
+
active.delete(id);active.set(id,{id,close,keyboard:p.keyboard,previousFocus:state.previousFocus});
|
|
23
|
+
return {id,close};
|
|
24
|
+
}
|
|
25
|
+
export const Drawer=defineWidget('Drawer',(p,s,ctx)=>{
|
|
26
|
+
const current=dialog(p,ctx,'drawer');if(!current)return null;
|
|
27
|
+
const {id,close}=current,width=typeof p.size==='number'?p.size:p.width||(p.size==='large'?736:378),placement=p.placement||'right';
|
|
28
|
+
return h(Portal,{},h('div',{class:['ant-drawer','ant-drawer-'+placement,'ant-drawer-open',p.class],style:{zIndex:p.zIndex||1000},'data-dialog-owner':id},[
|
|
29
|
+
p.mask!==false&&h('div',{class:'ant-drawer-mask',onClick:e=>{if(p.mask?.closable!==false&&p.maskClosable!==false)close(e);}}),
|
|
30
|
+
h('div',{class:'ant-drawer-content-wrapper',style:{width}},h('div',{id,tabindex:-1,class:'ant-drawer-section',role:'dialog','aria-modal':true,'aria-labelledby':id+'-title'},[
|
|
31
|
+
h('div',{class:'ant-drawer-header'},h('div',{class:'ant-drawer-header-title'},[p.closable!==false&&h('button',{type:'button',class:'ant-drawer-close','aria-label':'关闭',onClick:close},h(CloseOutlined)),h('div',{class:'ant-drawer-title',id:id+'-title'},p.title),s.extra&&h('div',{class:'ant-drawer-extra'},s.extra())])),
|
|
32
|
+
h('div',{class:'ant-drawer-body'},s.default?.()),
|
|
33
|
+
s.footer&&h('div',{class:'ant-drawer-footer'},s.footer()),
|
|
34
|
+
])),
|
|
35
|
+
]));
|
|
36
|
+
});
|
|
37
|
+
export const Modal=defineWidget('Modal',(p,s,ctx)=>{
|
|
38
|
+
const current=dialog(p,ctx,'modal');if(!current)return null;
|
|
39
|
+
const {id,close}=current;
|
|
40
|
+
const footer=s.footer?s.footer():p.footer===null?null:p.footer||[h(Button,{onClick:close,disabled:p.cancelButtonProps?.disabled},p.cancelText||'取消'),h(Button,{type:'primary',loading:p.confirmLoading,...p.okButtonProps,onClick:p.onOk},p.okText||'确定')];
|
|
41
|
+
return h(Portal,{},h('div',{class:'ant-modal-root',style:{zIndex:p.zIndex||1100}},[
|
|
42
|
+
p.mask!==false&&h('div',{class:'ant-modal-mask'}),
|
|
43
|
+
h('div',{class:['ant-modal-wrap',p.centered&&'ant-modal-centered'],onClick:e=>{if(e.target===e.currentTarget&&p.mask?.closable!==false&&p.maskClosable!==false)close(e);}},h('div',{class:['ant-modal',p.class],style:{width:p.width||520,top:p.centered?undefined:p.top||100},id,tabindex:-1,role:'dialog','aria-modal':true,'aria-labelledby':id+'-title'},h('div',{class:'ant-modal-container'},[
|
|
44
|
+
p.closable!==false&&h('button',{type:'button',class:'ant-modal-close','aria-label':'关闭',onClick:close},h('span',{class:'ant-modal-close-x'},h(CloseOutlined))),
|
|
45
|
+
p.title&&h('div',{class:'ant-modal-header'},h('div',{class:'ant-modal-title',id:id+'-title'},p.title)),
|
|
46
|
+
h('div',{class:'ant-modal-body'},s.default?.()),
|
|
47
|
+
footer&&h('div',{class:'ant-modal-footer'},footer),
|
|
48
|
+
]))),
|
|
49
|
+
]));
|
|
50
|
+
});
|
|
51
|
+
const notices=[];
|
|
52
|
+
const notify=(type,content,duration=3)=>{const item={id:crypto.randomUUID(),type,content:typeof content==='object'?content.content:content};notices.push(item);invalidate();const remove=()=>{const index=notices.indexOf(item);if(index>=0){notices.splice(index,1);invalidate();}};if(duration)setTimeout(remove,duration*1000);return remove;};
|
|
53
|
+
export const message={success:(text,duration)=>notify('success',text,duration),error:(text,duration)=>notify('error',text,duration),info:(text,duration)=>notify('info',text,duration),warning:(text,duration)=>notify('warning',text,duration),loading:(text,duration)=>notify('loading',text,duration),destroy:()=>{notices.length=0;invalidate();}};
|
|
54
|
+
export const Notices=defineWidget('Notices',()=>{afterRender(()=>{for(const [id,entry] of active)if(!document.getElementById(id)){active.delete(id);if(entry.previousFocus?.isConnected)entry.previousFocus.focus({preventScroll:true});}if(!active.size)document.body.style.overflow='';});return h(Portal,{},h('div',{class:'ant-message',role:'status','aria-live':'polite'},notices.map(n=>h('div',{class:'ant-message-notice'},h('div',{class:['ant-message-notice-content','ant-message-'+n.type]},[h(n.type==='success'?CheckCircleOutlined:n.type==='error'?CloseCircleOutlined:n.type==='loading'?LoadingOutlined:InfoCircleOutlined),h('span',{},n.content)])))));});
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { currentOwner, withOwner, unref, invalidate } from './state.js';
|
|
2
|
+
|
|
3
|
+
export const Fragment = Symbol('fragment'), Portal = Symbol('portal');
|
|
4
|
+
const definitions = new Set(), instances = new Map(), widgetStates = new Map(), functions = new Map(), globalWidgets = new Map();
|
|
5
|
+
let portals = [], effects = [];
|
|
6
|
+
let epoch = 0;
|
|
7
|
+
export function createComponent(spec) { const component = { ...spec, kind: 'component' }; definitions.add(component); return component; }
|
|
8
|
+
export function defineComponent(spec) { return { ...spec, kind: 'component' }; }
|
|
9
|
+
export const defineWidget = (name, render) => { const result = { name, kind: 'widget', render }; globalWidgets.set(name, result); return result; };
|
|
10
|
+
export const afterRender = callback => effects.push(callback);
|
|
11
|
+
export function h(type, props, children) {
|
|
12
|
+
if (arguments.length === 2 && (typeof props === 'string' || Array.isArray(props) || typeof props === 'function')) { children = props; props = {}; }
|
|
13
|
+
return { type, props: props || {}, children };
|
|
14
|
+
}
|
|
15
|
+
export function widgetState(key, init = () => ({})) {
|
|
16
|
+
if (!widgetStates.has(key)) widgetStates.set(key, init());
|
|
17
|
+
return widgetStates.get(key);
|
|
18
|
+
}
|
|
19
|
+
export async function loadTemplates() {
|
|
20
|
+
await Promise.all([...definitions].filter(d => d.template && !d.nodes).map(async component => {
|
|
21
|
+
const response = await fetch(component.template);
|
|
22
|
+
if (!response.ok) throw Error('HTML template could not be loaded: ' + component.template);
|
|
23
|
+
const template = document.createElement('template');
|
|
24
|
+
template.innerHTML = await response.text();
|
|
25
|
+
component.nodes = [...template.content.childNodes];
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
function scopeFor(raw, props = {}, locals = {}, parent) {
|
|
29
|
+
return new Proxy({}, {
|
|
30
|
+
has: (_, key) => key in locals || key in raw || key in props || !!(parent && key in parent),
|
|
31
|
+
get(_, key) {
|
|
32
|
+
if (key === Symbol.unscopables) return undefined;
|
|
33
|
+
if (key in locals) return unref(locals[key]);
|
|
34
|
+
if (key in raw) return unref(raw[key]);
|
|
35
|
+
if (key in props) return unref(raw.props?.[key] ?? props[key]);
|
|
36
|
+
return parent?.[key];
|
|
37
|
+
},
|
|
38
|
+
set(_, key, value) {
|
|
39
|
+
const target = key in locals ? locals : key in raw ? raw : key in props ? props : null;
|
|
40
|
+
if (target) { if (target[key]?.__ref) target[key].value = value; else target[key] = value; }
|
|
41
|
+
else if (parent) parent[key] = value;
|
|
42
|
+
else raw[key] = value;
|
|
43
|
+
invalidate(); return true;
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function evaluate(expression, scope) {
|
|
48
|
+
if (!expression) return undefined;
|
|
49
|
+
const id = 'value:' + expression;
|
|
50
|
+
try {
|
|
51
|
+
if (!functions.has(id)) functions.set(id, new Function('scope', 'with(scope){return (' + expression + ')}'));
|
|
52
|
+
return functions.get(id)(scope);
|
|
53
|
+
} catch(error) { throw new Error(error.message+' [HTML expression: '+expression+']',{cause:error}); }
|
|
54
|
+
}
|
|
55
|
+
function assign(expression, scope, value) {
|
|
56
|
+
const id = 'set:' + expression;
|
|
57
|
+
if (!functions.has(id)) functions.set(id, new Function('scope', '__input', 'with(scope){' + expression + ' = __input}'));
|
|
58
|
+
functions.get(id)(scope, value); invalidate();
|
|
59
|
+
}
|
|
60
|
+
function handler(expression, scope, modifiers = []) {
|
|
61
|
+
return (...args) => {
|
|
62
|
+
const event = args[0];
|
|
63
|
+
if (modifiers.includes('esc') && event?.key !== 'Escape') return;
|
|
64
|
+
if (modifiers.includes('enter') && event?.key !== 'Enter') return;
|
|
65
|
+
if (modifiers.includes('stop')) event?.stopPropagation?.();
|
|
66
|
+
if (modifiers.includes('prevent')) event?.preventDefault?.();
|
|
67
|
+
const child = scopeFor({}, {}, { $event: event }, scope);
|
|
68
|
+
const id = 'event:' + expression;
|
|
69
|
+
if (!functions.has(id)) {
|
|
70
|
+
let fn;
|
|
71
|
+
try { fn = new Function('scope', 'with(scope){return (' + expression + ')}'); }
|
|
72
|
+
catch { fn = new Function('scope', 'with(scope){' + expression + '}'); }
|
|
73
|
+
functions.set(id, fn);
|
|
74
|
+
}
|
|
75
|
+
const result = functions.get(id)(child);
|
|
76
|
+
if (typeof result === 'function') return result(...args);
|
|
77
|
+
return result;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const camel = name => name.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
81
|
+
const eventKey = name => 'on' + name[0].toUpperCase() + camel(name.slice(1));
|
|
82
|
+
function attributes(node, scope, raw, isComponent) {
|
|
83
|
+
const props = {};
|
|
84
|
+
for (const attr of node.attributes) {
|
|
85
|
+
const { name, value } = attr;
|
|
86
|
+
if (name.startsWith('data-bind-')) {
|
|
87
|
+
const attribute = name.slice(10), key = isComponent && !/^(aria|data)-/.test(attribute) ? camel(attribute) : attribute;
|
|
88
|
+
const bound = evaluate(value, scope);
|
|
89
|
+
props[key] = key === 'class' && props.class ? [props.class, bound] : key === 'style' && props.style ? [props.style, bound] : bound;
|
|
90
|
+
}
|
|
91
|
+
else if (name === 'data-bind') Object.assign(props, evaluate(value, scope));
|
|
92
|
+
else if (name.startsWith('data-on-')) {
|
|
93
|
+
const [event, ...modifiers] = name.slice(8).split('.');
|
|
94
|
+
props[eventKey(event)] = handler(value, scope, modifiers);
|
|
95
|
+
} else if (name.startsWith('data-model-')) {
|
|
96
|
+
const property = camel(name.slice(11)); props[property] = evaluate(value, scope);
|
|
97
|
+
props['onUpdate:' + property] = input => assign(value, scope, input);
|
|
98
|
+
} else if (name === 'ref') props.ref = raw[value] || scope[value];
|
|
99
|
+
else if (!name.startsWith('data-') || !['component', 'if', 'else-if', 'else', 'each', 'slot', 'slot-args', 'show', 'text', 'html'].includes(name.slice(5))) props[isComponent && !/^(aria|data)-/.test(name) ? camel(name) : name] = isComponent && value === '' ? true : value;
|
|
100
|
+
}
|
|
101
|
+
if (node.hasAttribute('data-show') && !evaluate(node.getAttribute('data-show'), scope)) props.style = { ...(props.style || {}), display: 'none' };
|
|
102
|
+
return props;
|
|
103
|
+
}
|
|
104
|
+
const nodeChildren = node => node.localName === 'template' ? [...node.content.childNodes] : [...node.childNodes];
|
|
105
|
+
function renderNodes(nodes, scope, raw, slots, base) {
|
|
106
|
+
const out = [];
|
|
107
|
+
let branch = null;
|
|
108
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
109
|
+
const node = nodes[i], id = base + '.' + i;
|
|
110
|
+
if (node.nodeType === 8) continue;
|
|
111
|
+
if (node.nodeType === 3) {
|
|
112
|
+
const text = node.textContent.replace(/\{\{([\s\S]*?)\}\}/g, (_, expression) => {
|
|
113
|
+
const value = evaluate(expression.trim(), scope); return value == null ? '' : typeof value === 'object' ? JSON.stringify(value) : String(value);
|
|
114
|
+
});
|
|
115
|
+
if (text) out.push(text);
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (node.nodeType !== 1) continue;
|
|
119
|
+
if (node.hasAttribute('data-if')) { branch = !!evaluate(node.getAttribute('data-if'), scope); if (!branch) continue; }
|
|
120
|
+
else if (node.hasAttribute('data-else-if')) { if (branch) continue; branch = !!evaluate(node.getAttribute('data-else-if'), scope); if (!branch) continue; }
|
|
121
|
+
else if (node.hasAttribute('data-else')) { if (branch) continue; branch = true; }
|
|
122
|
+
else branch = null;
|
|
123
|
+
if (node.hasAttribute('data-slot')) continue;
|
|
124
|
+
const each = node.getAttribute('data-each');
|
|
125
|
+
if (each) {
|
|
126
|
+
const match = each.match(/^\s*(?:\((.*?)\)|([^\s]+))\s+(?:in|of)\s+([\s\S]+)$/);
|
|
127
|
+
if (!match) throw Error('Invalid HTML iteration ' + each);
|
|
128
|
+
const names = (match[1] || match[2]).split(',').map(v => v.trim());
|
|
129
|
+
const list = evaluate(match[3], scope) || [];
|
|
130
|
+
const entries = typeof list === 'number' ? Array.from({ length: list }, (_, j) => [j, j + 1]) : Array.isArray(list) ? list.map((v, j) => [j, v]) : Object.entries(list);
|
|
131
|
+
for (let j = 0; j < entries.length; j++) {
|
|
132
|
+
const [key, value] = entries[j], local = { [names[0]]: value, [names[1] || '$index']: key, [names[2] || '$position']: j };
|
|
133
|
+
const child = scopeFor({}, {}, local, scope);
|
|
134
|
+
out.push(renderElement(node, child, raw, slots, id + '.row:' + (value?.id || key)));
|
|
135
|
+
}
|
|
136
|
+
} else out.push(renderElement(node, scope, raw, slots, id));
|
|
137
|
+
}
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
function renderElement(node, scope, raw, slots, id) {
|
|
141
|
+
const component = node.getAttribute('data-component');
|
|
142
|
+
const props = attributes(node, scope, raw, !!component);
|
|
143
|
+
props.__nativeKey = id + (props.key == null ? '' : ':' + props.key);
|
|
144
|
+
const children = nodeChildren(node);
|
|
145
|
+
if (node.localName === 'slot') return slots[node.getAttribute('name') || 'default']?.({}) || renderNodes(children, scope, raw, slots, id);
|
|
146
|
+
if (component) {
|
|
147
|
+
const named = {};
|
|
148
|
+
for (const child of children) if (child.nodeType === 1 && child.hasAttribute('data-slot')) {
|
|
149
|
+
const name = child.getAttribute('data-slot');
|
|
150
|
+
named[name] = args => renderNodes(nodeChildren(child), scopeFor({}, {}, args || {}, scope), raw, slots, id + '.slot:' + name);
|
|
151
|
+
}
|
|
152
|
+
named.default = () => renderNodes(children.filter(n => !(n.nodeType === 1 && n.hasAttribute('data-slot'))), scope, raw, slots, id + '.default');
|
|
153
|
+
const type = component === '$dynamic' ? props.is : globalWidgets.has(component) && !(component.split('.')[0] in scope) ? globalWidgets.get(component) : evaluate(component, scope);
|
|
154
|
+
if (!type) throw Error('HTML component missing: ' + component);
|
|
155
|
+
return h(type, props, named);
|
|
156
|
+
}
|
|
157
|
+
const content = node.hasAttribute('data-text') ? String(evaluate(node.getAttribute('data-text'), scope) ?? '') : renderNodes(children, scope, raw, slots, id);
|
|
158
|
+
return node.localName === 'template' ? content : h(node.localName, props, content);
|
|
159
|
+
}
|
|
160
|
+
function slotObject(children) {
|
|
161
|
+
if (children && typeof children === 'object' && !Array.isArray(children) && !children.type && !children.nodeType) return children;
|
|
162
|
+
return { default: () => typeof children === 'function' ? children() : children };
|
|
163
|
+
}
|
|
164
|
+
function event(props, name, ...args) { return props[eventKey(name)]?.(...args); }
|
|
165
|
+
function expand(vnode, key = 'root', context = {}) {
|
|
166
|
+
if (vnode === undefined || vnode === null || vnode === false || vnode === true) return [];
|
|
167
|
+
if (Array.isArray(vnode)) return vnode.flatMap((n, i) => expand(n, key + '.' + i, context));
|
|
168
|
+
if (typeof vnode === 'function') return expand(vnode(), key, context);
|
|
169
|
+
if (typeof vnode !== 'object' || vnode.nodeType) return vnode;
|
|
170
|
+
const { type, props = {}, children } = vnode;
|
|
171
|
+
const id = props.__nativeKey || key;
|
|
172
|
+
if (type === Portal) { portals.push({ tree: children, id, context }); return []; }
|
|
173
|
+
if (type === Fragment) return expand(typeof children === 'function' ? children() : children, id, context);
|
|
174
|
+
if (typeof type === 'string') return { type, props: { ...props, 'data-native-id': id }, children: expand(children, id + '.children', props.__formApi ? { ...context, form: props.__formApi } : context) };
|
|
175
|
+
if (type?.kind === 'widget') return expand(type.render(context.form?.disabled ? {...props, disabled: true} : props, slotObject(children), { ...context, id, state: init => widgetState(id, init), emit: (name, ...args) => event(props, name, ...args) }), id + '.widget', context);
|
|
176
|
+
if (type?.kind === 'component') {
|
|
177
|
+
const declaredProps=Object.fromEntries((type.propKeys||[]).map(key=>[key,undefined]));
|
|
178
|
+
let fingerprint;
|
|
179
|
+
try { fingerprint=JSON.stringify(Object.fromEntries((type.propKeys||[]).map(key=>[key,props[key]]))); } catch { fingerprint=null; }
|
|
180
|
+
let instance = instances.get(id);
|
|
181
|
+
if (!instance || instance.type !== type) {
|
|
182
|
+
if (instance) dispose(instance);
|
|
183
|
+
instance = { type, props: { ...declaredProps,...props }, mounted: [], updated: [], disposers: [], fresh: true, epoch, fingerprint };
|
|
184
|
+
const emit = (name, ...args) => event(instance.props, name, ...args);
|
|
185
|
+
instance.raw = withOwner(instance, () => type.setup?.(instance.props, emit) || {});
|
|
186
|
+
instance.scope = scopeFor(instance.raw, instance.props, { $emit: emit });
|
|
187
|
+
instances.set(id, instance);
|
|
188
|
+
}
|
|
189
|
+
instance.epoch = epoch;
|
|
190
|
+
for (const name of Object.keys(instance.props)) if (!(name in props) && !(name in declaredProps)) delete instance.props[name];
|
|
191
|
+
Object.assign(instance.props,declaredProps, props);
|
|
192
|
+
if(instance.fingerprint!==fingerprint){instance.fingerprint=fingerprint;invalidate();}
|
|
193
|
+
const slots = slotObject(children);
|
|
194
|
+
const tree = type.nodes ? renderNodes(type.nodes, instance.scope, instance.raw, slots, id + '.template') : typeof instance.raw === 'function' ? instance.raw() : type.render?.call(instance.scope);
|
|
195
|
+
return expand(tree, id + '.component', context);
|
|
196
|
+
}
|
|
197
|
+
throw Error('Unrecognized HTML view ' + String(type));
|
|
198
|
+
}
|
|
199
|
+
function className(value) { return Array.isArray(value) ? value.map(className).filter(Boolean).join(' ') : value && typeof value === 'object' ? Object.keys(value).filter(k => value[k]).join(' ') : value || ''; }
|
|
200
|
+
function applyProps(node, before, after) {
|
|
201
|
+
for (const key of new Set([...Object.keys(before), ...Object.keys(after)])) {
|
|
202
|
+
if (key.startsWith('__') || key === 'key' || key === 'ref') continue;
|
|
203
|
+
const value = after[key];
|
|
204
|
+
if (key.startsWith('on')) { const event = key.slice(2).toLowerCase(); if (!event.includes(':')) node['on' + event] = value ? input => { const result = value(input); if (result?.catch) result.catch(error => console.error(error)); } : null; continue; }
|
|
205
|
+
if (key === 'class' || key === 'className') { node.setAttribute('class', className(value)); continue; }
|
|
206
|
+
if (key === 'style') {
|
|
207
|
+
node.style.cssText='';
|
|
208
|
+
for(const part of Array.isArray(value)?value:[value]){
|
|
209
|
+
if(typeof part==='string')node.style.cssText+=';'+part;
|
|
210
|
+
else for (const [name, v] of Object.entries(part || {})) if (v != null) node.style.setProperty(name.replace(/[A-Z]/g, l => '-' + l.toLowerCase()), typeof v === 'number' && !name.startsWith('--') && !['opacity', 'zIndex', 'flex', 'flexGrow', 'fontWeight', 'order', 'lineHeight'].includes(name) ? v + 'px' : String(v));
|
|
211
|
+
}
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (key === 'value' && ['INPUT', 'TEXTAREA', 'SELECT'].includes(node.tagName)) { const next = value == null ? '' : String(value); if (node.value !== next) node.value = next; continue; }
|
|
215
|
+
if (['checked','indeterminate', 'disabled', 'inert', 'multiple', 'readOnly'].includes(key)) { node[key] = !!value; if (value) node.setAttribute(key.toLowerCase(), ''); else node.removeAttribute(key.toLowerCase()); continue; }
|
|
216
|
+
if (key.startsWith('aria-') && typeof value === 'boolean') node.setAttribute(key,String(value));
|
|
217
|
+
else if (value === undefined || value === null || value === false) node.removeAttribute(key);
|
|
218
|
+
else node.setAttribute(key, value === true ? '' : String(value));
|
|
219
|
+
}
|
|
220
|
+
if (after.ref?.__ref && after.ref.value !== node) after.ref.value = node;
|
|
221
|
+
}
|
|
222
|
+
function patch(parent, previous, next, svg = false) {
|
|
223
|
+
const old = [...parent.childNodes];
|
|
224
|
+
const list = (Array.isArray(next) ? next : [next]).flat(Infinity).filter(v => v !== undefined && v !== null && v !== false);
|
|
225
|
+
for (let i = 0; i < list.length; i++) {
|
|
226
|
+
const value = list[i]; let node = old[i];
|
|
227
|
+
if (value?.nodeType) { if (node !== value) parent.insertBefore(value, node || null); continue; }
|
|
228
|
+
if (typeof value !== 'object') {
|
|
229
|
+
if (!node || node.nodeType !== 3) { const replacement = document.createTextNode(String(value)); if (node) parent.replaceChild(replacement, node); else parent.appendChild(replacement); node = replacement; }
|
|
230
|
+
else if (node.textContent !== String(value)) node.textContent = String(value);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const isSvg = svg || value.type === 'svg';
|
|
234
|
+
if (!node || node.nodeType !== 1 || node.localName !== value.type || (node._nativeKey && node._nativeKey !== value.props['data-native-id'])) {
|
|
235
|
+
const replacement = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', value.type) : document.createElement(value.type);
|
|
236
|
+
if (node) parent.replaceChild(replacement, node); else parent.appendChild(replacement);
|
|
237
|
+
node = replacement;
|
|
238
|
+
}
|
|
239
|
+
applyProps(node, node._nativeProps || {}, value.props);
|
|
240
|
+
node._nativeProps = value.props; node._nativeKey = value.props['data-native-id'];
|
|
241
|
+
patch(node, null, value.children, isSvg && value.type !== 'foreignObject');
|
|
242
|
+
}
|
|
243
|
+
while (parent.childNodes.length > list.length) parent.lastChild.remove();
|
|
244
|
+
}
|
|
245
|
+
function dispose(instance) { for (const callback of instance.disposers) callback(); }
|
|
246
|
+
export function disposeStalePages(activeKey) {
|
|
247
|
+
const stale=key=>key.startsWith('page:')&&key!==activeKey&&!key.startsWith(activeKey+'.');
|
|
248
|
+
for(const [id,instance] of instances)if(stale(id)){dispose(instance);instances.delete(id);}
|
|
249
|
+
for(const [id] of widgetStates)if(stale(id))widgetStates.delete(id);
|
|
250
|
+
}
|
|
251
|
+
export function render(vnode, root) {
|
|
252
|
+
epoch++;
|
|
253
|
+
portals = []; effects = [];
|
|
254
|
+
const tree = expand(vnode);
|
|
255
|
+
const overlayTrees = [];
|
|
256
|
+
for (let i = 0; i < portals.length; i++) overlayTrees.push(expand(portals[i].tree, portals[i].id + '.portal', portals[i].context));
|
|
257
|
+
patch(root, null, [tree, ...overlayTrees]);
|
|
258
|
+
for (const [id, instance] of instances) {
|
|
259
|
+
if (instance.epoch !== epoch) { dispose(instance); instances.delete(id); continue; }
|
|
260
|
+
if (instance.fresh) { instance.fresh = false; for (const callback of instance.mounted) callback(); }
|
|
261
|
+
else for (const callback of instance.updated) callback();
|
|
262
|
+
}
|
|
263
|
+
for (const effect of effects) effect();
|
|
264
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { h, defineWidget, afterRender } from './dom.js';
|
|
2
|
+
import { ref, reactive, unref, invalidate } from './state.js';
|
|
3
|
+
import { Input, TextArea, Select, InputNumber, Checkbox, Switch, attrs, uid } from './controls.js';
|
|
4
|
+
|
|
5
|
+
const get=(data,path)=>String(path).split('.').reduce((v,k)=>v?.[k],data);
|
|
6
|
+
const set=(data,path,value)=>{const parts=String(path).split('.');let target=data;for(const key of parts.slice(0,-1))target=target[key]??=( {} );target[parts.at(-1)]=value;};
|
|
7
|
+
export async function validateValue(value,rules){
|
|
8
|
+
for(const rule of unref(rules)||[]){
|
|
9
|
+
const missing=value===undefined||value===null||value===''||Array.isArray(value)&&!value.length;
|
|
10
|
+
if(rule.required&&missing||rule.whitespace&&typeof value==='string'&&!value.trim())return rule.message||'请填写此字段';
|
|
11
|
+
if(missing&&!rule.required)continue;
|
|
12
|
+
if(rule.type==='number'&&(typeof value!=='number'||!Number.isFinite(value)))return rule.message||'请输入有效数字';
|
|
13
|
+
if(rule.type==='array'&&!Array.isArray(value))return rule.message||'请选择有效内容';
|
|
14
|
+
if(rule.type==='url'){try{const u=new URL(value);if(!['http:','https:'].includes(u.protocol))throw Error();}catch{return rule.message||'请输入有效地址';}}
|
|
15
|
+
const length=typeof value==='number'?value:value?.length;
|
|
16
|
+
if(rule.min!==undefined&&length<rule.min||rule.max!==undefined&&length>rule.max)return rule.message||'输入超出范围';
|
|
17
|
+
if(rule.pattern&&!rule.pattern.test(String(value)))return rule.message||'输入格式不正确';
|
|
18
|
+
if(rule.validator){try{await rule.validator(rule,value);}catch(error){return error.message||rule.message||'校验未通过';}}
|
|
19
|
+
}
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
export function useForm(initial={},fields=[]){
|
|
23
|
+
const formData=reactive({...initial}),errors=reactive({}),api={formData,fields:ref(fields),errors,formRef:ref(null),setFormData:partial=>Object.assign(formData,partial)};
|
|
24
|
+
const validate=async()=>{let failed=false;for(const field of api.fields.value){if(unref(field.hidden))continue;const error=await validateValue(get(formData,field.path),field.rules);errors[field.path]=error;if(error)failed=true;}invalidate();if(failed){if(typeof document!=='undefined')queueMicrotask(()=>document.getElementById(api.name)?.querySelector('[aria-invalid="true"]')?.focus());throw Error('表单校验未通过');}return formData;};
|
|
25
|
+
api.formRef.value={validate,validateFields:validate,clearValidate:()=>{for(const k of Object.keys(errors))delete errors[k];},resetFields:()=>Object.assign(formData,initial)};
|
|
26
|
+
return api;
|
|
27
|
+
}
|
|
28
|
+
export const Form=defineWidget('Form',(p,s)=>h('form',{...attrs(p),class:['ant-form','ant-form-'+(p.layout||'horizontal'),'ant-form-css-var',p.class],style:p.style,__formApi:{...p.__formApi,disabled:p.disabled,layout:p.layout||'horizontal'},onSubmit:e=>{e.preventDefault();p.onFinish?.();},onKeydown:p.onKeydown},s.default?.()));
|
|
29
|
+
export const FormItem=defineWidget('FormItem',(p,s,ctx)=>{
|
|
30
|
+
const vertical=(p.layout||ctx.form?.layout)==='vertical',id=p.htmlFor||p.id;
|
|
31
|
+
return h('div',{class:['ant-form-item ant-form-css-var',vertical?'ant-form-item-vertical':'ant-form-item-horizontal',p.error&&'ant-form-item-has-error',p.class],style:p.style},h('div',{class:'ant-row ant-form-item-row'},[
|
|
32
|
+
p.label&&h('div',{class:'ant-col ant-form-item-label',style:p.labelCol?.style},h('label',{for:id,title:p.label,class:['ant-form-item-no-colon',p.required&&'ant-form-item-required']},p.label)),
|
|
33
|
+
h('div',{class:'ant-col ant-form-item-control',style:p.wrapperCol?.flex?{flex:p.wrapperCol.flex}:undefined},[h('div',{class:'ant-form-item-control-input'},h('div',{class:'ant-form-item-control-input-content'},s.default?.())),h('div',{class:'ant-form-item-additional'},[p.error&&h('div',{class:'ant-form-item-explain ant-form-item-explain-error',role:'alert'},p.error),p.extra&&h('div',{class:'ant-form-item-extra'},p.extra)])]),
|
|
34
|
+
]));
|
|
35
|
+
});
|
|
36
|
+
const controls={'input':Input,'textarea':TextArea,'select':Select,'input-number':InputNumber,'checkbox':Checkbox,'switch':Switch};
|
|
37
|
+
export const ProForm=defineWidget('ProForm',(p,s,ctx)=>{
|
|
38
|
+
const form=p.form;form.name=p.name||uid(ctx.id);const fields=form.fields.value.filter(f=>!unref(f.hidden)),gutter=p.grid?.gutter??24;
|
|
39
|
+
const renderField=field=>{
|
|
40
|
+
const {path,label,rules,hidden,component,span,xs,sm,md,lg,extra,...options}=field,id=form.name+'_'+path;
|
|
41
|
+
const props={...Object.fromEntries(Object.entries(options).map(([k,v])=>[k,unref(v)])),id,style:{width:'100%',...options.style},value:get(form.formData,path),disabled:p.disabled||unref(field.disabled),allowClear:field.allowClear!==false,'aria-invalid':!!form.errors[path],'aria-required':(unref(rules)||[]).some(r=>r.required),'aria-label':label,'onUpdate:value':v=>{set(form.formData,path,v);if(form.errors[path])form.errors[path]='';},onBlur:async()=>{const value=get(form.formData,path),error=await validateValue(value,rules);if(Object.is(value,get(form.formData,path)))form.errors[path]=error;}};
|
|
42
|
+
const control=controls[component||'input'];if(!control)throw Error('Unknown native form component: '+component);
|
|
43
|
+
const content=h(FormItem,{label,htmlFor:id,required:(unref(rules)||[]).some(r=>r.required),error:form.errors[path],extra,labelCol:p.labelCol,wrapperCol:p.wrapperCol,layout:p.layout},()=>h(control,props));
|
|
44
|
+
return p.grid?h('div',{class:['ant-col','ant-col-'+(span||24),xs&&'ant-col-xs-'+xs,sm&&'ant-col-sm-'+sm,md&&'ant-col-md-'+md,lg&&'ant-col-lg-'+lg],style:{paddingLeft:gutter/2,paddingRight:gutter/2}},content):content;
|
|
45
|
+
};
|
|
46
|
+
return h(Form,{...p,id:form.name,name:form.name,class:['pro-form',p.class],__formApi:form},()=>[p.grid?h('div',{class:'ant-row',style:{marginLeft:-gutter/2,marginRight:-gutter/2}},fields.map(renderField)):fields.map(renderField),s.default?.()]);
|
|
47
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { h, defineWidget } from './dom.js';
|
|
2
|
+
const svg = node => h(node.tag, node.attrs || {}, (node.children || []).map(svg));
|
|
3
|
+
const icon = (name, data) => defineWidget(name, props => h('span', { class: ['anticon', 'anticon-' + data.name, props.class], role: 'img', 'aria-label': data.name, style: props.style }, svg({ ...data.icon, attrs: { ...data.icon.attrs, width: '1em', height: '1em', fill: 'currentColor', 'aria-hidden': 'true' } })));
|
|
4
|
+
export const DownOutlined = icon('DownOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},"name":"down","theme":"outlined"});
|
|
5
|
+
export const UpOutlined = icon('UpOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"}}]},"name":"up","theme":"outlined"});
|
|
6
|
+
export const LeftOutlined = icon('LeftOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"}}]},"name":"left","theme":"outlined"});
|
|
7
|
+
export const RightOutlined = icon('RightOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"}}]},"name":"right","theme":"outlined"});
|
|
8
|
+
export const CloseOutlined = icon('CloseOutlined', {"icon":{"tag":"svg","attrs":{"fill-rule":"evenodd","viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z"}}]},"name":"close","theme":"outlined"});
|
|
9
|
+
export const CloseCircleOutlined = icon('CloseCircleOutlined', {"icon":{"tag":"svg","attrs":{"fill-rule":"evenodd","viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},"name":"close-circle","theme":"outlined"});
|
|
10
|
+
export const SearchOutlined = icon('SearchOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z"}}]},"name":"search","theme":"outlined"});
|
|
11
|
+
export const LoadingOutlined = icon('LoadingOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"0 0 1024 1024","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},"name":"loading","theme":"outlined"});
|
|
12
|
+
export const CheckOutlined = icon('CheckOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"}}]},"name":"check","theme":"outlined"});
|
|
13
|
+
export const CheckCircleOutlined = icon('CheckCircleOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{"tag":"path","attrs":{"d":"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},"name":"check-circle","theme":"outlined"});
|
|
14
|
+
export const InfoCircleOutlined = icon('InfoCircleOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{"tag":"path","attrs":{"d":"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"}}]},"name":"info-circle","theme":"outlined"});
|
|
15
|
+
export const ExclamationCircleOutlined = icon('ExclamationCircleOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{"tag":"path","attrs":{"d":"M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z"}}]},"name":"exclamation-circle","theme":"outlined"});
|
|
16
|
+
export const CheckCircleFilled = icon('CheckCircleFilled', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z"}}]},"name":"check-circle","theme":"filled"});
|
|
17
|
+
export const InfoCircleFilled = icon('InfoCircleFilled', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},"name":"info-circle","theme":"filled"});
|
|
18
|
+
export const CloseCircleFilled = icon('CloseCircleFilled', {"icon":{"tag":"svg","attrs":{"fill-rule":"evenodd","viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"}}]},"name":"close-circle","theme":"filled"});
|
|
19
|
+
export const ExclamationCircleFilled = icon('ExclamationCircleFilled', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"}}]},"name":"exclamation-circle","theme":"filled"});
|
|
20
|
+
export const EditOutlined = icon('EditOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z"}}]},"name":"edit","theme":"outlined"});
|
|
21
|
+
export const HistoryOutlined = icon('HistoryOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 003 14.1zm167.7 301.1l-56.7-19.5a8 8 0 00-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 01-112.5 75.9 352.18 352.18 0 01-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 01-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 01171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 01112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 01775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z"}}]},"name":"history","theme":"outlined"});
|
|
22
|
+
export const PlusOutlined = icon('PlusOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z"}},{"tag":"path","attrs":{"d":"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z"}}]},"name":"plus","theme":"outlined"});
|
|
23
|
+
export const ReloadOutlined = icon('ReloadOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z"}}]},"name":"reload","theme":"outlined"});
|
|
24
|
+
export const CommentOutlined = icon('CommentOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M573 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40zm-280 0c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z"}},{"tag":"path","attrs":{"d":"M894 345a343.92 343.92 0 00-189-130v.1c-17.1-19-36.4-36.5-58-52.1-163.7-119-393.5-82.7-513 81-96.3 133-92.2 311.9 6 439l.8 132.6c0 3.2.5 6.4 1.5 9.4a31.95 31.95 0 0040.1 20.9L309 806c33.5 11.9 68.1 18.7 102.5 20.6l-.5.4c89.1 64.9 205.9 84.4 313 49l127.1 41.4c3.2 1 6.5 1.6 9.9 1.6 17.7 0 32-14.3 32-32V753c88.1-119.6 90.4-284.9 1-408zM323 735l-12-5-99 31-1-104-8-9c-84.6-103.2-90.2-251.9-11-361 96.4-132.2 281.2-161.4 413-66 132.2 96.1 161.5 280.6 66 412-80.1 109.9-223.5 150.5-348 102zm505-17l-8 10 1 104-98-33-12 5c-56 20.8-115.7 22.5-171 7l-.2-.1A367.31 367.31 0 00729 676c76.4-105.3 88.8-237.6 44.4-350.4l.6.4c23 16.5 44.1 37.1 62 62 72.6 99.6 68.5 235.2-8 330z"}},{"tag":"path","attrs":{"d":"M433 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z"}}]},"name":"comment","theme":"outlined"});
|
|
25
|
+
export const SettingOutlined = icon('SettingOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z"}}]},"name":"setting","theme":"outlined"});
|
|
26
|
+
export const ArrowUpOutlined = icon('ArrowUpOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M868 545.5L536.1 163a31.96 31.96 0 00-48.3 0L156 545.5a7.97 7.97 0 006 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z"}}]},"name":"arrow-up","theme":"outlined"});
|
|
27
|
+
export const ArrowDownOutlined = icon('ArrowDownOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0048.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z"}}]},"name":"arrow-down","theme":"outlined"});
|
|
28
|
+
export const DeleteOutlined = icon('DeleteOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},"name":"delete","theme":"outlined"});
|
|
29
|
+
export const MenuFoldOutlined = icon('MenuFoldOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 000 13.8z"}}]},"name":"menu-fold","theme":"outlined"});
|
|
30
|
+
export const MenuUnfoldOutlined = icon('MenuUnfoldOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 000-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0014.4 7z"}}]},"name":"menu-unfold","theme":"outlined"});
|
|
31
|
+
export const HomeOutlined = icon('HomeOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 00-44.4 0L77.5 505a63.9 63.9 0 00-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0018.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z"}}]},"name":"home","theme":"outlined"});
|
|
32
|
+
export const ProjectOutlined = icon('ProjectOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8zm216-432H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},"name":"project","theme":"outlined"});
|
|
33
|
+
export const AppstoreOutlined = icon('AppstoreOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"}}]},"name":"appstore","theme":"outlined"});
|
|
34
|
+
export const SafetyCertificateOutlined = icon('SafetyCertificateOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0026 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"}}]},"name":"safety-certificate","theme":"outlined"});
|
|
35
|
+
export const RocketOutlined = icon('RocketOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 00-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0043.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0043.1-30.5 97.52 97.52 0 0021.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0162.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 01-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1096 0 48 48 0 10-96 0z"}}]},"name":"rocket","theme":"outlined"});
|
|
36
|
+
export const FundProjectionScreenOutlined = icon('FundProjectionScreenOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M312.1 591.5c3.1 3.1 8.2 3.1 11.3 0l101.8-101.8 86.1 86.2c3.1 3.1 8.2 3.1 11.3 0l226.3-226.5c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 00-11.3 0L517 485.3l-86.1-86.2a8.03 8.03 0 00-11.3 0L275.3 543.4a8.03 8.03 0 000 11.3l36.8 36.8z"}},{"tag":"path","attrs":{"d":"M904 160H548V96c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H120c-17.7 0-32 14.3-32 32v520c0 17.7 14.3 32 32 32h356.4v32L311.6 884.1a7.92 7.92 0 00-2.3 11l30.3 47.2v.1c2.4 3.7 7.4 4.7 11.1 2.3L512 838.9l161.3 105.8c3.7 2.4 8.7 1.4 11.1-2.3v-.1l30.3-47.2a8 8 0 00-2.3-11L548 776.3V744h356c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 512H160V232h704v440z"}}]},"name":"fund-projection-screen","theme":"outlined"});
|
|
37
|
+
export const AuditOutlined = icon('AuditOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M296 250c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 144H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 458H208V148h560v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm440-88H728v-36.6c46.3-13.8 80-56.6 80-107.4 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 50.7 33.7 93.6 80 107.4V764H520c-8.8 0-16 7.2-16 16v152c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V780c0-8.8-7.2-16-16-16zM646 620c0-27.6 22.4-50 50-50s50 22.4 50 50-22.4 50-50 50-50-22.4-50-50zm180 266H566v-60h260v60z"}}]},"name":"audit","theme":"outlined"});
|
|
38
|
+
export const TeamOutlined = icon('TeamOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M824.2 699.9a301.55 301.55 0 00-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 00-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 008 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 01612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 008-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 01-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 01612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 01-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 008 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z"}}]},"name":"team","theme":"outlined"});
|
|
39
|
+
export const ArrowRightOutlined = icon('ArrowRightOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 000-48.4z"}}]},"name":"arrow-right","theme":"outlined"});
|
|
40
|
+
export const CheckSquareOutlined = icon('CheckSquareOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M433.1 657.7a31.8 31.8 0 0051.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7H642c-10.2 0-19.9 4.9-25.9 13.3L459 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H315c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8z"}},{"tag":"path","attrs":{"d":"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},"name":"check-square","theme":"outlined"});
|
|
41
|
+
export const NotificationOutlined = icon('NotificationOutlined', {"icon":{"tag":"svg","attrs":{"viewBox":"64 64 896 896","focusable":"false"},"children":[{"tag":"path","attrs":{"d":"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z"}}]},"name":"notification","theme":"outlined"});
|