@zaip-ai/cli 3.2.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +5 -3
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/agent-catalog-upgrade.d.ts +3 -0
- package/dist/services/agent-catalog-upgrade.d.ts.map +1 -0
- package/dist/services/agent-catalog-upgrade.js +35 -0
- package/dist/services/agent-catalog-upgrade.js.map +1 -0
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +22 -22
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/install-template-policy.d.ts +3 -0
- package/dist/services/install-template-policy.d.ts.map +1 -0
- package/dist/services/install-template-policy.js +21 -0
- package/dist/services/install-template-policy.js.map +1 -0
- package/dist/services/logger.js +24 -8
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +33 -6
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/sqlite-bootstrap.d.ts +1 -0
- package/dist/services/sqlite-bootstrap.d.ts.map +1 -1
- package/dist/services/sqlite-bootstrap.js +10 -1
- package/dist/services/sqlite-bootstrap.js.map +1 -1
- package/package.json +2 -2
- package/templates/.agents/README-ENG.md +2 -1
- package/templates/.agents/README.md +2 -1
- package/templates/.agents/config/agents/catalog.yaml +1 -0
- package/templates/.agents/config/agents/discovery.json +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +2 -2
- package/templates/.agents/dashboard/.zaip-managed.json +278 -126
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-CEDZjl4V.js → CostCalculationGuidePage-C5NgEcVh.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-BzaUTZDx.js → DashboardHelpDialog-CCMVnkkI.js} +4 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-21cCJik-.js → PricingSettingsDialog-CGYcJ5EB.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BAvLPAee.js → ProjectSettingsPage-DVCPPV75.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-wqW52uCx.js → TraceabilityWorkspace-CqK3Psfy.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-PoJA2PI1.css → cost-monitor-BsMfGfQi.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-j3aUYH5G.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-BkAm8-h4.js → dashboard-localization-jvdDfNKs.js} +2 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DEmo6Tn2.js → icons-vendor-x8xxL9yW.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cl5EWx8R.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cwylbh_N.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CadYsm83.js → react-vendor-CNOXIJHN.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BzKK8kK3.js → traceability-CcpbpT1s.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +12 -1
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +33 -0
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +58 -0
- package/templates/.agents/dashboard/apps/frontend/src/app-work-board-options.ts +41 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +25 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +5 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +140 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +28 -41
- package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +38 -0
- package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +33 -0
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +25 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +17 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +13 -167
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +2 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +8 -8
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +29 -52
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +4 -27
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +4 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/agent-model-presentation.test.ts +26 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-embedded.css +7 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +173 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-props.ts +47 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +1 -7
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +3 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +44 -83
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +11 -111
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +47 -181
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +63 -91
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-monitor-unavailable.test.ts +55 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-duration.test.ts +189 -0
- package/templates/.agents/dashboard/modules/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsEntityFilters.tsx +82 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +4 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +5 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +22 -31
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +13 -1
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +16 -3
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +11 -27
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +44 -193
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +186 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/excel-agent-participations.test.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +55 -31
- package/templates/.agents/dashboard/modules/operations/src/react/operations-export-duration.ts +13 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-filter-panel.css +4 -0
- package/templates/.agents/dashboard/modules/operations/src/react/use-operation-filter-feedback.ts +18 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +11 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +10 -2
- package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +1 -1
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/package.json +1 -1
- package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +406 -332
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +352 -280
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +4 -2
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +406 -332
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +95 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +102 -12
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +75 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +10 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-lifecycle-diagnostics.ts +50 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-macro-population.test.ts +165 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-page-filters.ts +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +111 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +53 -63
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +19 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.test.ts +19 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +11 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +19 -12
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +46 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +10 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +43 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +46 -11
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +188 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.test.ts +85 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.ts +147 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.test.ts +94 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +96 -55
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +58 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-macro-classification.test.ts +172 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +4 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +7 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +10 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +18 -82
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-cached-cost-page.ts +169 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-developer.ts +205 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +13 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +22 -23
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +42 -209
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +18 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +9 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +76 -83
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +25 -161
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +18 -45
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +15 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +16 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +47 -22
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +16 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +13 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-rebuild-result.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +4 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +19 -42
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-macro-classification.ts +48 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-summary-cursor.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-token-active-allocation.ts +46 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-stages.ts +60 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +5 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +7 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +17 -2
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.mjs +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.test.mjs +72 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +32 -9
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +39 -45
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -2
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/scripts/qualify-macro-overview.mjs +50 -0
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +1 -18
- package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.spec.ts +20 -0
- package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.ts +20 -0
- package/templates/.agents/design/.zaip-managed.json +82 -74
- package/templates/.agents/design/apps/catalog/dist/assets/index-0W0Gj_Gs.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-32GZO95T.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/{index-D_lfqoyx.js → index-BP8IxOxt.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/assets/{index-BOjCcUaU.js → index-QJsgr9Ht.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-CvaciY0C.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-Cm-yJJz_.js → Color-6AOWCN3U-DwBV1A1Y.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-3dqK5g3e.js +142 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-2OCgtT0I.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-Belk4jRr.js → DocsRenderer-JROSPFPF-CODg0rSl.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Primitives-BmeKjJW4.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-DoPvjkS1.js → WithTooltip-7X4HQR7L-C5MI-3uZ.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatus.stories-Tb_iQqVK.js +17 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-CD54pw0-.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-B1itKXEN.js → chunk-DRQKCCAG-KSn75jcy.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-C-Eb5SPY.js → chunk-W22LQPXL-C4LS1Thf.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-DnyKLwhj.js → components-DV1BRgMY.js} +5 -5
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-BU_68im1.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-DcXBsFPz.js → iframe-CBbPFx5G.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-CRM89QRf.js → react-18-C9IPGXtb.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-CEv2qkJT.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-B03jQGTF.js → syntaxhighlighter-YFXUGROL-ZgDQjyWI.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-4ZyufAga.js → theming-Cx9-gH6l.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/a11y-2/manager-bundle.js +3 -3
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/docs-1/manager-bundle.js +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +60 -60
- package/templates/.agents/design/apps/catalog/package.json +1 -1
- package/templates/.agents/design/apps/catalog/src/components/DashboardFiltersSpecimen.tsx +61 -0
- package/templates/.agents/design/apps/catalog/src/components/Primitives.tsx +24 -0
- package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +26 -0
- package/templates/.agents/design/apps/catalog/src/design-contract.test.ts +27 -13
- package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +38 -0
- package/templates/.agents/design/apps/catalog/src/pages/DesignSystemPage.tsx +15 -1
- package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +18 -0
- package/templates/.agents/design/apps/catalog/src/stories/DashboardFilters.stories.tsx +7 -0
- package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +9 -0
- package/templates/.agents/design/apps/catalog/src/styles/components.css +83 -2
- package/templates/.agents/design/apps/catalog/src/styles.css +2 -0
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/design/tokens.json +32 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
- package/templates/.agents/requirements/comparative-audit.md +1 -1
- package/templates/.agents/requirements/context-engine.md +1 -1
- package/templates/.agents/requirements/cost-observability.md +1 -1
- package/templates/.agents/requirements/dashboard-launch.md +1 -1
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +1 -1
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +18 -4
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +1 -1
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/autonomy-decision.md +1 -0
- package/templates/.agents/rules/workflow.md +1 -1
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +28 -26
- package/templates/.agents/runtime/checksums.sha256 +5 -5
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/provenance.json +4 -4
- package/templates/.agents/runtime/sbom.cdx.json +1 -1
- package/templates/.agents/skills/zaip-aios/SKILL.md +0 -1
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +1 -0
- package/templates/.agents/skills/zaip-skill-config/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +13 -0
- package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +17 -0
- package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +4 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +4 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +2 -2
- package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -3
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +15 -8
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +13 -12
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +50 -13
- package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-update-version-doc/SKILL.md +39 -0
- package/templates/.agents/skills/zaip-skill-update-version-doc/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-update-version-doc/scripts/update-version-doc.mjs +21 -0
- package/templates/.agents/skills/zaip-skill-update-version-doc/scripts/update-version-doc.test.mjs +32 -0
- package/templates/.agents/zaip-aios/README.md +2 -1
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +7 -3
- package/templates/template-manifest.json +436 -256
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-06__WZco.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DqZKJS8y.js +0 -2
- package/templates/.agents/design/apps/catalog/dist/assets/index-BEmIE7WE.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-CqqYWY2f.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/assets/index-CqtYXZfV.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-D9pj7Jlf.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +0 -137
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-BEmIE7WE.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { Card } from "./Primitives.js";
|
|
3
|
+
|
|
4
|
+
export const dashboardFilterFixtures = [
|
|
5
|
+
{ name: "Operação", labels: ["Busca", "Status", "Risco", "Origem"] },
|
|
6
|
+
{
|
|
7
|
+
name: "Custos",
|
|
8
|
+
labels: [
|
|
9
|
+
"Buscar custos",
|
|
10
|
+
"Provider",
|
|
11
|
+
"Agente",
|
|
12
|
+
"Modelo",
|
|
13
|
+
"Status",
|
|
14
|
+
"Prioridade",
|
|
15
|
+
"Risco",
|
|
16
|
+
"Fase",
|
|
17
|
+
"Entrada",
|
|
18
|
+
"Trabalho",
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
] as const;
|
|
22
|
+
/** Native catalog adapter: business modules keep the query and lifecycle contracts. */
|
|
23
|
+
export function DashboardFiltersSpecimen({
|
|
24
|
+
fixture = dashboardFilterFixtures[0],
|
|
25
|
+
}: {
|
|
26
|
+
fixture?: (typeof dashboardFilterFixtures)[number];
|
|
27
|
+
}) {
|
|
28
|
+
const [values, setValues] = useState<Record<string, string>>({});
|
|
29
|
+
return (
|
|
30
|
+
<Card>
|
|
31
|
+
<h3>{fixture.name}</h3>
|
|
32
|
+
<details open>
|
|
33
|
+
<summary>Filtros de {fixture.name.toLowerCase()}</summary>
|
|
34
|
+
{fixture.labels.map((label) => (
|
|
35
|
+
<label key={label} style={{ display: "block", marginBlock: 8 }}>
|
|
36
|
+
{label}
|
|
37
|
+
{label.startsWith("Busca") ? (
|
|
38
|
+
<input
|
|
39
|
+
aria-label={label}
|
|
40
|
+
value={values[label] ?? ""}
|
|
41
|
+
onChange={(e) => setValues({ ...values, [label]: e.target.value })}
|
|
42
|
+
/>
|
|
43
|
+
) : (
|
|
44
|
+
<select
|
|
45
|
+
aria-label={label}
|
|
46
|
+
value={values[label] ?? ""}
|
|
47
|
+
onChange={(e) => setValues({ ...values, [label]: e.target.value })}
|
|
48
|
+
>
|
|
49
|
+
<option value="">Todos</option>
|
|
50
|
+
<option value="example">{label === "Status" ? "Bloqueado" : "Exemplo"}</option>
|
|
51
|
+
</select>
|
|
52
|
+
)}
|
|
53
|
+
</label>
|
|
54
|
+
))}
|
|
55
|
+
<button type="button" onClick={() => setValues({})}>
|
|
56
|
+
Limpar filtros
|
|
57
|
+
</button>
|
|
58
|
+
</details>
|
|
59
|
+
</Card>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
@@ -34,6 +34,30 @@ export function Card({ children, accent = false }: { children: ReactNode; accent
|
|
|
34
34
|
return <article className={accent ? "card card-accent" : "card"}>{children}</article>;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
export function EditorialHero({
|
|
38
|
+
eyebrow,
|
|
39
|
+
title,
|
|
40
|
+
description,
|
|
41
|
+
children,
|
|
42
|
+
}: {
|
|
43
|
+
eyebrow?: string;
|
|
44
|
+
title: string;
|
|
45
|
+
description: string;
|
|
46
|
+
children?: ReactNode;
|
|
47
|
+
}) {
|
|
48
|
+
return (
|
|
49
|
+
<section className="editorial-hero">
|
|
50
|
+
<div className="editorial-hero-copy">
|
|
51
|
+
{eyebrow ? <p className="eyebrow">{eyebrow}</p> : null}
|
|
52
|
+
<h2>{title}</h2>
|
|
53
|
+
<p>{description}</p>
|
|
54
|
+
{children ? <div className="editorial-hero-actions">{children}</div> : null}
|
|
55
|
+
</div>
|
|
56
|
+
<div aria-hidden="true" className="editorial-hero-orbit" />
|
|
57
|
+
</section>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
37
61
|
export function Metric({ label, value, change }: { label: string; value: string; change: string }) {
|
|
38
62
|
return (
|
|
39
63
|
<Card>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Card } from "./Primitives.js";
|
|
2
|
+
|
|
3
|
+
export const workspaceStatusFixtures = [
|
|
4
|
+
{ name: "Inicializado", message: "Lifecycle inicializado" },
|
|
5
|
+
{ name: "Ausente", message: "Lifecycle não inicializado" },
|
|
6
|
+
{ name: "Inválido", message: "Manifesto do lifecycle inválido" },
|
|
7
|
+
{ name: "Indisponível", message: "Não foi possível consultar a saúde do Dashboard" },
|
|
8
|
+
] as const;
|
|
9
|
+
|
|
10
|
+
/** Native adapter: the catalog cannot depend on the Dashboard application. */
|
|
11
|
+
export function WorkspaceStatusSpecimen({
|
|
12
|
+
fixture = workspaceStatusFixtures[0],
|
|
13
|
+
}: {
|
|
14
|
+
fixture?: (typeof workspaceStatusFixtures)[number];
|
|
15
|
+
}) {
|
|
16
|
+
return (
|
|
17
|
+
<Card>
|
|
18
|
+
<h3>{fixture.name}</h3>
|
|
19
|
+
<aside aria-label="Workspace do Dashboard" style={{ overflowWrap: "anywhere" }}>
|
|
20
|
+
<strong>zaip-growth</strong>
|
|
21
|
+
<p>C:/projetos/zaip-growth</p>
|
|
22
|
+
<p>{fixture.message}</p>
|
|
23
|
+
</aside>
|
|
24
|
+
</Card>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -7,19 +7,28 @@ const designRoot = resolve(import.meta.dirname, "../../..");
|
|
|
7
7
|
|
|
8
8
|
describe("design contract", () => {
|
|
9
9
|
it("keeps structured tokens aligned with DESIGN.md frontmatter", async () => {
|
|
10
|
-
const [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
const [
|
|
11
|
+
markdown,
|
|
12
|
+
tokensSource,
|
|
13
|
+
designSystemPage,
|
|
14
|
+
componentsPage,
|
|
15
|
+
primitives,
|
|
16
|
+
stories,
|
|
17
|
+
app,
|
|
18
|
+
...styles
|
|
19
|
+
] = await Promise.all([
|
|
20
|
+
readFile(resolve(designRoot, "DESIGN.md"), "utf8"),
|
|
21
|
+
readFile(resolve(designRoot, "tokens.json"), "utf8"),
|
|
22
|
+
readFile(resolve(import.meta.dirname, "pages/DesignSystemPage.tsx"), "utf8"),
|
|
23
|
+
readFile(resolve(import.meta.dirname, "pages/ComponentsPage.tsx"), "utf8"),
|
|
24
|
+
readFile(resolve(import.meta.dirname, "components/Primitives.tsx"), "utf8"),
|
|
25
|
+
readFile(resolve(import.meta.dirname, "stories/Components.stories.tsx"), "utf8"),
|
|
26
|
+
readFile(resolve(import.meta.dirname, "App.tsx"), "utf8"),
|
|
27
|
+
readFile(resolve(import.meta.dirname, "styles.css"), "utf8"),
|
|
28
|
+
readFile(resolve(import.meta.dirname, "styles/catalog.css"), "utf8"),
|
|
29
|
+
readFile(resolve(import.meta.dirname, "styles/design-system.css"), "utf8"),
|
|
30
|
+
readFile(resolve(import.meta.dirname, "styles/components.css"), "utf8"),
|
|
31
|
+
]);
|
|
23
32
|
const css = styles.join("\n");
|
|
24
33
|
const match = /^---\n([\s\S]+?)\n---/.exec(markdown);
|
|
25
34
|
expect(match?.[1]).toBeDefined();
|
|
@@ -30,6 +39,7 @@ describe("design contract", () => {
|
|
|
30
39
|
expect(tokens.dark).toEqual(design.dark);
|
|
31
40
|
expect(tokens.effects).toEqual(design.effects);
|
|
32
41
|
expect(tokens.neutral).toEqual(design.neutral);
|
|
42
|
+
expect(tokens.typography).toEqual(design.typography);
|
|
33
43
|
expect(tokens.rounded).toEqual(design.rounded);
|
|
34
44
|
expect(tokens.spacing).toEqual(design.spacing);
|
|
35
45
|
for (const value of Object.values(tokens.colors as Record<string, string>)) {
|
|
@@ -58,5 +68,9 @@ describe("design contract", () => {
|
|
|
58
68
|
expect(componentsPage).toContain(`<${specimen}`);
|
|
59
69
|
expect(stories).toContain(`<${specimen}`);
|
|
60
70
|
}
|
|
71
|
+
expect(primitives).toContain("function EditorialHero");
|
|
72
|
+
expect(designSystemPage).toContain("<EditorialHero");
|
|
73
|
+
expect(componentsPage).toContain("<EditorialHero");
|
|
74
|
+
expect(stories).toContain("<EditorialHero");
|
|
61
75
|
});
|
|
62
76
|
});
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { AutonomySpecimen, autonomyFixtures } from "../components/AutonomySpecimen.js";
|
|
2
|
+
import {
|
|
3
|
+
DashboardFiltersSpecimen,
|
|
4
|
+
dashboardFilterFixtures,
|
|
5
|
+
} from "../components/DashboardFiltersSpecimen.js";
|
|
2
6
|
import { PageIntro, Section } from "../components/CatalogShell.js";
|
|
3
7
|
import {
|
|
4
8
|
CostPopulationSpecimen,
|
|
@@ -15,6 +19,7 @@ import {
|
|
|
15
19
|
ChartPanel,
|
|
16
20
|
DataTable,
|
|
17
21
|
DialogSpecimen,
|
|
22
|
+
EditorialHero,
|
|
18
23
|
Field,
|
|
19
24
|
FilterForm,
|
|
20
25
|
Metric,
|
|
@@ -25,6 +30,10 @@ import {
|
|
|
25
30
|
ProjectStatusSpecimen,
|
|
26
31
|
projectStatusFixtures,
|
|
27
32
|
} from "../components/ProjectStatusSpecimen.js";
|
|
33
|
+
import {
|
|
34
|
+
WorkspaceStatusSpecimen,
|
|
35
|
+
workspaceStatusFixtures,
|
|
36
|
+
} from "../components/WorkspaceStatusSpecimen.js";
|
|
28
37
|
|
|
29
38
|
const dashboardFamilies = [
|
|
30
39
|
["Dialogs e popups", "TaskDetailsDialog, TraceStageDialog", "Foco, contexto e saída explícita"],
|
|
@@ -44,6 +53,35 @@ export function ComponentsPage() {
|
|
|
44
53
|
title="Components"
|
|
45
54
|
description="Famílias reais do dashboard representadas por espécimes compartilhados com o Storybook. O catálogo documenta o contrato; os componentes de negócio continuam em seus módulos."
|
|
46
55
|
/>
|
|
56
|
+
<Section
|
|
57
|
+
title="Filtros do Dashboard"
|
|
58
|
+
description="Operação expõe busca, status, risco e origem no cabeçalho visível. Custos mantém seus filtros dimensionais acessíveis na área integrada; Desenvolvedores usa somente o período. Adaptadores nativos com limpeza e foco de teclado."
|
|
59
|
+
>
|
|
60
|
+
{dashboardFilterFixtures.map((fixture) => (
|
|
61
|
+
<DashboardFiltersSpecimen key={fixture.name} fixture={fixture} />
|
|
62
|
+
))}
|
|
63
|
+
</Section>
|
|
64
|
+
<Section
|
|
65
|
+
title="Hero editorial"
|
|
66
|
+
description="Componente público para promessa, explicação e até duas ações; a variação de ação secundária permanece legível sobre navy."
|
|
67
|
+
>
|
|
68
|
+
<EditorialHero
|
|
69
|
+
eyebrow="Componente central"
|
|
70
|
+
title="Uma direção pública que chama para a ação."
|
|
71
|
+
description="Use em abertura de páginas de marca; mantenha a prova detalhada e a lógica comercial no conteúdo local."
|
|
72
|
+
>
|
|
73
|
+
<Button>Ação principal</Button>
|
|
74
|
+
<Button variant="secondary">Ação secundária</Button>
|
|
75
|
+
</EditorialHero>
|
|
76
|
+
</Section>
|
|
77
|
+
<Section
|
|
78
|
+
title="Workspace do Dashboard"
|
|
79
|
+
description="Nome e caminho absolutos sempre visíveis; lifecycle ausente ou inválido impede a exibição de zeros como dados válidos. Adaptador nativo do componente WorkspaceStatus."
|
|
80
|
+
>
|
|
81
|
+
{workspaceStatusFixtures.map((fixture) => (
|
|
82
|
+
<WorkspaceStatusSpecimen key={fixture.name} fixture={fixture} />
|
|
83
|
+
))}
|
|
84
|
+
</Section>
|
|
47
85
|
<Section
|
|
48
86
|
title="Dialogs e popups"
|
|
49
87
|
description="Superfícies focadas com nome acessível, contexto, Escape e ação de fechamento."
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { PageIntro, Section } from "../components/CatalogShell.js";
|
|
2
|
-
import { Badge, Button, Card, Field } from "../components/Primitives.js";
|
|
2
|
+
import { Badge, Button, Card, EditorialHero, Field } from "../components/Primitives.js";
|
|
3
3
|
|
|
4
4
|
const primaryColors = [
|
|
5
5
|
["Primary", "#00B0F0", "Ação, foco e identidade"],
|
|
6
6
|
["Primary strong", "#018abb", "Hover e ênfase reforçada"],
|
|
7
7
|
["Primary ink", "#006b91", "Texto e ícones sobre fundos claros"],
|
|
8
|
+
["Primary soft", "#dffcff", "Base breve para badge e ênfase"],
|
|
8
9
|
] as const;
|
|
9
10
|
|
|
10
11
|
const secondaryColors = [
|
|
@@ -87,6 +88,19 @@ export function DesignSystemPage() {
|
|
|
87
88
|
))}
|
|
88
89
|
</div>
|
|
89
90
|
</Section>
|
|
91
|
+
<Section
|
|
92
|
+
title="Hero editorial público"
|
|
93
|
+
description="Hero de alto contraste para comunicar uma promessa verificável, com ações claras e espaço para leitura."
|
|
94
|
+
>
|
|
95
|
+
<EditorialHero
|
|
96
|
+
eyebrow="Direção pública"
|
|
97
|
+
title="Mais contraste para decisões mais claras."
|
|
98
|
+
description="Navy estabelece profundidade; tipografia expressiva e CTAs pill deixam a próxima ação inequívoca."
|
|
99
|
+
>
|
|
100
|
+
<Button>Começar agora</Button>
|
|
101
|
+
<Button variant="secondary">Entender o sistema</Button>
|
|
102
|
+
</EditorialHero>
|
|
103
|
+
</Section>
|
|
90
104
|
<Section
|
|
91
105
|
title="Tipografia"
|
|
92
106
|
description="Hierarquia compacta para produto e escala expressiva para superfícies públicas."
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
ChartPanel,
|
|
15
15
|
DataTable,
|
|
16
16
|
DialogSpecimen,
|
|
17
|
+
EditorialHero,
|
|
17
18
|
FilterForm,
|
|
18
19
|
Metric,
|
|
19
20
|
StateGallery,
|
|
@@ -75,6 +76,23 @@ export const DialogsAndPopups: Story = {
|
|
|
75
76
|
render: () => <DialogSpecimen />,
|
|
76
77
|
};
|
|
77
78
|
|
|
79
|
+
export const EditorialHeroes: Story = {
|
|
80
|
+
render: () => (
|
|
81
|
+
<EditorialHero
|
|
82
|
+
eyebrow="Componente central"
|
|
83
|
+
title="Contraste e direção para páginas públicas."
|
|
84
|
+
description="Mantenha uma promessa verificável e no máximo duas ações, inclusive em telas estreitas."
|
|
85
|
+
>
|
|
86
|
+
<button className="button button-primary" type="button">
|
|
87
|
+
Ação principal
|
|
88
|
+
</button>
|
|
89
|
+
<button className="button button-secondary" type="button">
|
|
90
|
+
Ação secundária
|
|
91
|
+
</button>
|
|
92
|
+
</EditorialHero>
|
|
93
|
+
),
|
|
94
|
+
};
|
|
95
|
+
|
|
78
96
|
export const CardsAndMetrics: Story = {
|
|
79
97
|
render: () => (
|
|
80
98
|
<div className="metric-grid">
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DashboardFiltersSpecimen,
|
|
3
|
+
dashboardFilterFixtures,
|
|
4
|
+
} from "../components/DashboardFiltersSpecimen.js";
|
|
5
|
+
export default { title: "Components/Filtros do Dashboard", component: DashboardFiltersSpecimen };
|
|
6
|
+
export const Operations = { args: { fixture: dashboardFilterFixtures[0] } };
|
|
7
|
+
export const Costs = { args: { fixture: dashboardFilterFixtures[1] } };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WorkspaceStatusSpecimen,
|
|
3
|
+
workspaceStatusFixtures,
|
|
4
|
+
} from "../components/WorkspaceStatusSpecimen.js";
|
|
5
|
+
export default { title: "Components/Workspace do Dashboard", component: WorkspaceStatusSpecimen };
|
|
6
|
+
export const Initialized = { args: { fixture: workspaceStatusFixtures[0] } };
|
|
7
|
+
export const Missing = { args: { fixture: workspaceStatusFixtures[1] } };
|
|
8
|
+
export const Invalid = { args: { fixture: workspaceStatusFixtures[2] } };
|
|
9
|
+
export const Unavailable = { args: { fixture: workspaceStatusFixtures[3] } };
|
|
@@ -6,7 +6,74 @@
|
|
|
6
6
|
box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
|
|
7
7
|
}
|
|
8
8
|
.card-accent {
|
|
9
|
-
background: linear-gradient(180deg,
|
|
9
|
+
background: linear-gradient(180deg, var(--primary-soft) 0%, #ffffff 100%);
|
|
10
|
+
}
|
|
11
|
+
.editorial-hero {
|
|
12
|
+
position: relative;
|
|
13
|
+
isolation: isolate;
|
|
14
|
+
display: grid;
|
|
15
|
+
min-height: 380px;
|
|
16
|
+
align-items: center;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
19
|
+
border-radius: 32px;
|
|
20
|
+
padding: clamp(32px, 7vw, 76px);
|
|
21
|
+
background:
|
|
22
|
+
radial-gradient(circle at 82% 20%, rgba(0, 176, 240, 0.24), transparent 24%),
|
|
23
|
+
linear-gradient(135deg, var(--secondary) 0%, var(--secondary-elevated) 100%);
|
|
24
|
+
color: #f1f5f9;
|
|
25
|
+
box-shadow: 0 26px 70px rgba(15, 23, 42, 0.22);
|
|
26
|
+
}
|
|
27
|
+
.editorial-hero-copy {
|
|
28
|
+
position: relative;
|
|
29
|
+
z-index: 1;
|
|
30
|
+
max-width: 720px;
|
|
31
|
+
}
|
|
32
|
+
.editorial-hero .eyebrow {
|
|
33
|
+
color: #72f4fb;
|
|
34
|
+
}
|
|
35
|
+
.editorial-hero h2 {
|
|
36
|
+
max-width: 680px;
|
|
37
|
+
margin: 14px 0 18px;
|
|
38
|
+
font-family: Inter, Poppins, ui-sans-serif, system-ui, sans-serif;
|
|
39
|
+
font-size: clamp(2.5rem, 6vw, 4.25rem);
|
|
40
|
+
font-weight: 650;
|
|
41
|
+
line-height: 1.05;
|
|
42
|
+
letter-spacing: -0.05em;
|
|
43
|
+
}
|
|
44
|
+
.editorial-hero-copy > p:not(.eyebrow) {
|
|
45
|
+
max-width: 620px;
|
|
46
|
+
margin: 0;
|
|
47
|
+
color: #cbd5e1;
|
|
48
|
+
font-size: clamp(1rem, 2vw, 1.2rem);
|
|
49
|
+
line-height: 1.65;
|
|
50
|
+
}
|
|
51
|
+
.editorial-hero-actions {
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-wrap: wrap;
|
|
54
|
+
gap: 12px;
|
|
55
|
+
margin-top: 30px;
|
|
56
|
+
}
|
|
57
|
+
.editorial-hero .button-secondary {
|
|
58
|
+
border-color: rgba(255, 255, 255, 0.3);
|
|
59
|
+
color: #f1f5f9;
|
|
60
|
+
}
|
|
61
|
+
.editorial-hero .button-secondary:hover {
|
|
62
|
+
border-color: var(--primary);
|
|
63
|
+
background: rgba(0, 176, 240, 0.12);
|
|
64
|
+
}
|
|
65
|
+
.editorial-hero-orbit {
|
|
66
|
+
position: absolute;
|
|
67
|
+
z-index: 0;
|
|
68
|
+
width: min(48vw, 540px);
|
|
69
|
+
aspect-ratio: 1;
|
|
70
|
+
right: -12%;
|
|
71
|
+
bottom: -42%;
|
|
72
|
+
border: 1px solid rgba(114, 244, 251, 0.28);
|
|
73
|
+
border-radius: 50%;
|
|
74
|
+
box-shadow:
|
|
75
|
+
0 0 0 46px rgba(0, 176, 240, 0.05),
|
|
76
|
+
0 0 0 112px rgba(0, 176, 240, 0.035);
|
|
10
77
|
}
|
|
11
78
|
.card h3 {
|
|
12
79
|
margin: 24px 0 8px;
|
|
@@ -201,7 +268,7 @@ tbody tr:last-child td {
|
|
|
201
268
|
height: 64px;
|
|
202
269
|
place-items: center;
|
|
203
270
|
border-radius: 24px;
|
|
204
|
-
background:
|
|
271
|
+
background: var(--primary-soft);
|
|
205
272
|
color: #006b91;
|
|
206
273
|
font-size: 2rem;
|
|
207
274
|
}
|
|
@@ -404,6 +471,17 @@ tbody tr:last-child td {
|
|
|
404
471
|
}
|
|
405
472
|
|
|
406
473
|
@media (max-width: 560px) {
|
|
474
|
+
.editorial-hero {
|
|
475
|
+
min-height: 0;
|
|
476
|
+
border-radius: 24px;
|
|
477
|
+
}
|
|
478
|
+
.editorial-hero-actions {
|
|
479
|
+
align-items: stretch;
|
|
480
|
+
flex-direction: column;
|
|
481
|
+
}
|
|
482
|
+
.editorial-hero-actions .button {
|
|
483
|
+
width: 100%;
|
|
484
|
+
}
|
|
407
485
|
.filter-form {
|
|
408
486
|
grid-template-columns: 1fr;
|
|
409
487
|
}
|
|
@@ -422,6 +500,9 @@ tbody tr:last-child td {
|
|
|
422
500
|
}
|
|
423
501
|
|
|
424
502
|
@media (prefers-reduced-motion: reduce) {
|
|
503
|
+
.editorial-hero-orbit {
|
|
504
|
+
box-shadow: none;
|
|
505
|
+
}
|
|
425
506
|
.loading-spinner {
|
|
426
507
|
animation: none;
|
|
427
508
|
border-color: var(--primary);
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
"primary": "#00B0F0",
|
|
6
6
|
"primary-strong": "#018abb",
|
|
7
7
|
"primary-ink": "#006b91",
|
|
8
|
+
"primary-soft": "#dffcff",
|
|
8
9
|
"secondary": "#0a0e17",
|
|
10
|
+
"secondary-elevated": "#111827",
|
|
9
11
|
"surface": "#ffffff",
|
|
10
12
|
"surface-muted": "#f5f7fb",
|
|
11
13
|
"text": "#0f172a",
|
|
@@ -43,6 +45,36 @@
|
|
|
43
45
|
"canvas": "#f5f7fb",
|
|
44
46
|
"white": "#ffffff"
|
|
45
47
|
},
|
|
48
|
+
"typography": {
|
|
49
|
+
"display": {
|
|
50
|
+
"fontFamily": "Inter, Poppins, ui-sans-serif, system-ui, sans-serif",
|
|
51
|
+
"fontSize": "clamp(2.5rem, 6vw, 4.25rem)",
|
|
52
|
+
"fontWeight": "650",
|
|
53
|
+
"lineHeight": "1.05",
|
|
54
|
+
"letterSpacing": "-0.05em"
|
|
55
|
+
},
|
|
56
|
+
"heading": {
|
|
57
|
+
"fontFamily": "Inter, Poppins, ui-sans-serif, system-ui, sans-serif",
|
|
58
|
+
"fontSize": "clamp(1.75rem, 4vw, 2.5rem)",
|
|
59
|
+
"fontWeight": "650",
|
|
60
|
+
"lineHeight": "1.15",
|
|
61
|
+
"letterSpacing": "-0.035em"
|
|
62
|
+
},
|
|
63
|
+
"body": {
|
|
64
|
+
"fontFamily": "Inter, ui-sans-serif, system-ui, sans-serif",
|
|
65
|
+
"fontSize": "1rem",
|
|
66
|
+
"fontWeight": "400",
|
|
67
|
+
"lineHeight": "1.65",
|
|
68
|
+
"letterSpacing": "0"
|
|
69
|
+
},
|
|
70
|
+
"label": {
|
|
71
|
+
"fontFamily": "Inter, ui-sans-serif, system-ui, sans-serif",
|
|
72
|
+
"fontSize": "0.75rem",
|
|
73
|
+
"fontWeight": "700",
|
|
74
|
+
"lineHeight": "1.3",
|
|
75
|
+
"letterSpacing": "0.12em"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
46
78
|
"rounded": {
|
|
47
79
|
"sm": "8px",
|
|
48
80
|
"md": "16px",
|