@decantr/content 3.8.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/LICENSE +21 -0
- package/README.md +58 -0
- package/archetypes/about-hybrid.json +104 -0
- package/archetypes/admin-analytics.json +63 -0
- package/archetypes/admin-moderation.json +87 -0
- package/archetypes/admin-overview.json +77 -0
- package/archetypes/agent-orchestrator.json +178 -0
- package/archetypes/agent-studio.json +154 -0
- package/archetypes/ai-chatbot.json +121 -0
- package/archetypes/ai-transparency.json +140 -0
- package/archetypes/alert-manager-pro.json +154 -0
- package/archetypes/api-console.json +130 -0
- package/archetypes/api-reference.json +95 -0
- package/archetypes/appointment-center.json +113 -0
- package/archetypes/asset-browser.json +90 -0
- package/archetypes/audit-center.json +103 -0
- package/archetypes/auth-flow-enterprise.json +140 -0
- package/archetypes/auth-flow.json +101 -0
- package/archetypes/auth-full.json +199 -0
- package/archetypes/auth-gateway.json +76 -0
- package/archetypes/billing-portal.json +75 -0
- package/archetypes/billing.json +74 -0
- package/archetypes/budget-planner.json +63 -0
- package/archetypes/budget-transparency.json +117 -0
- package/archetypes/buyer-dashboard.json +124 -0
- package/archetypes/changelog-center.json +96 -0
- package/archetypes/character-library.json +113 -0
- package/archetypes/citation-tools.json +98 -0
- package/archetypes/cloud-infrastructure.json +253 -0
- package/archetypes/cloud-marketing.json +111 -0
- package/archetypes/collaboration-hub.json +87 -0
- package/archetypes/community-feed.json +131 -0
- package/archetypes/config-editor.json +136 -0
- package/archetypes/contact.json +82 -0
- package/archetypes/content-author.json +121 -0
- package/archetypes/content-editor.json +82 -0
- package/archetypes/content-newsletter.json +111 -0
- package/archetypes/content-reader.json +135 -0
- package/archetypes/content-site.json +112 -0
- package/archetypes/contract-center.json +120 -0
- package/archetypes/cook-mode.json +57 -0
- package/archetypes/copilot-settings.json +87 -0
- package/archetypes/copilot-workspace.json +110 -0
- package/archetypes/creator-content.json +128 -0
- package/archetypes/creator-dashboard.json +105 -0
- package/archetypes/creator-earnings.json +100 -0
- package/archetypes/creator-subscribers.json +99 -0
- package/archetypes/creator-tiers.json +76 -0
- package/archetypes/crm-dashboard.json +199 -0
- package/archetypes/crm-email.json +88 -0
- package/archetypes/crm-intelligence.json +85 -0
- package/archetypes/crm-meetings.json +95 -0
- package/archetypes/customer-loyalty.json +75 -0
- package/archetypes/customer-management.json +76 -0
- package/archetypes/daily-operations.json +62 -0
- package/archetypes/dashboard-core.json +87 -0
- package/archetypes/data-repository.json +81 -0
- package/archetypes/deal-workspace.json +126 -0
- package/archetypes/doc-browser.json +111 -0
- package/archetypes/document-editor.json +147 -0
- package/archetypes/document-vault.json +119 -0
- package/archetypes/ecommerce-admin.json +138 -0
- package/archetypes/ecommerce-checkout.json +57 -0
- package/archetypes/ecommerce.json +138 -0
- package/archetypes/emissions-dashboard.json +136 -0
- package/archetypes/engagement-hub.json +157 -0
- package/archetypes/eval-suite.json +142 -0
- package/archetypes/event-discovery.json +130 -0
- package/archetypes/experiment-tracker.json +83 -0
- package/archetypes/fan-checkout.json +107 -0
- package/archetypes/fan-library.json +99 -0
- package/archetypes/fan-storefront.json +106 -0
- package/archetypes/financial-dashboard.json +127 -0
- package/archetypes/game-catalog.json +120 -0
- package/archetypes/gaming-community.json +196 -0
- package/archetypes/governance-center.json +82 -0
- package/archetypes/health-records.json +111 -0
- package/archetypes/instrument-booking.json +82 -0
- package/archetypes/inventory-supplies.json +72 -0
- package/archetypes/investment-tracker.json +82 -0
- package/archetypes/investor-portal.json +124 -0
- package/archetypes/job-monitor.json +109 -0
- package/archetypes/kitchen-display.json +58 -0
- package/archetypes/lab-notebook.json +83 -0
- package/archetypes/landing-hero.json +145 -0
- package/archetypes/landing-legal.json +101 -0
- package/archetypes/landing-resources.json +127 -0
- package/archetypes/launch-campaign.json +393 -0
- package/archetypes/legal.json +107 -0
- package/archetypes/listing-browser.json +160 -0
- package/archetypes/log-explorer-pro.json +106 -0
- package/archetypes/log-viewer.json +123 -0
- package/archetypes/maintenance-center.json +116 -0
- package/archetypes/marketing-ai-studio.json +117 -0
- package/archetypes/marketing-civic.json +116 -0
- package/archetypes/marketing-climate.json +94 -0
- package/archetypes/marketing-content.json +109 -0
- package/archetypes/marketing-copilot.json +100 -0
- package/archetypes/marketing-creator.json +132 -0
- package/archetypes/marketing-crm.json +96 -0
- package/archetypes/marketing-deal-room.json +100 -0
- package/archetypes/marketing-devtool.json +139 -0
- package/archetypes/marketing-docs.json +92 -0
- package/archetypes/marketing-ecommerce.json +69 -0
- package/archetypes/marketing-esports.json +89 -0
- package/archetypes/marketing-events.json +89 -0
- package/archetypes/marketing-finance.json +69 -0
- package/archetypes/marketing-fractional.json +74 -0
- package/archetypes/marketing-health.json +100 -0
- package/archetypes/marketing-landing.json +65 -0
- package/archetypes/marketing-legal.json +86 -0
- package/archetypes/marketing-marketplace.json +121 -0
- package/archetypes/marketing-observability.json +95 -0
- package/archetypes/marketing-pipeline.json +108 -0
- package/archetypes/marketing-platform.json +129 -0
- package/archetypes/marketing-producer.json +88 -0
- package/archetypes/marketing-productivity.json +139 -0
- package/archetypes/marketing-realestate.json +101 -0
- package/archetypes/marketing-recipe.json +69 -0
- package/archetypes/marketing-research.json +72 -0
- package/archetypes/marketing-restaurant.json +53 -0
- package/archetypes/marketing-saas-v2.json +75 -0
- package/archetypes/marketing-saas.json +119 -0
- package/archetypes/marketing-swipecircle.json +185 -0
- package/archetypes/marketing-video-studio.json +121 -0
- package/archetypes/marketplace-messaging.json +106 -0
- package/archetypes/matter-management.json +104 -0
- package/archetypes/meeting-archive.json +131 -0
- package/archetypes/menu-management.json +73 -0
- package/archetypes/metrics-monitor.json +164 -0
- package/archetypes/metrics-overview-dashboard.json +112 -0
- package/archetypes/music-workspace.json +104 -0
- package/archetypes/notifications.json +68 -0
- package/archetypes/offset-marketplace.json +134 -0
- package/archetypes/onboarding-wizard.json +203 -0
- package/archetypes/order-fulfillment.json +83 -0
- package/archetypes/order-management.json +71 -0
- package/archetypes/organizer-dashboard.json +146 -0
- package/archetypes/owner-dashboard.json +112 -0
- package/archetypes/ownership-dashboard.json +97 -0
- package/archetypes/patient-dashboard.json +142 -0
- package/archetypes/pipeline-builder.json +116 -0
- package/archetypes/pm-financials.json +126 -0
- package/archetypes/portfolio-about.json +85 -0
- package/archetypes/portfolio-blog.json +71 -0
- package/archetypes/portfolio-overview.json +76 -0
- package/archetypes/portfolio-showcase.json +71 -0
- package/archetypes/portfolio.json +122 -0
- package/archetypes/product-management.json +84 -0
- package/archetypes/project-library.json +111 -0
- package/archetypes/prompt-director.json +118 -0
- package/archetypes/prompt-library.json +135 -0
- package/archetypes/property-manager.json +158 -0
- package/archetypes/qa-workflow.json +116 -0
- package/archetypes/recipe-browser.json +83 -0
- package/archetypes/recipe-community.json +126 -0
- package/archetypes/recipe-creator.json +71 -0
- package/archetypes/recipe-social.json +95 -0
- package/archetypes/recipefork-ai-kitchen.json +95 -0
- package/archetypes/recipefork-auth.json +79 -0
- package/archetypes/recipefork-cookbooks.json +104 -0
- package/archetypes/recipefork-landing.json +101 -0
- package/archetypes/recipefork-profile.json +180 -0
- package/archetypes/recipefork-recipe-authoring.json +216 -0
- package/archetypes/recipefork-recipe-detail.json +139 -0
- package/archetypes/recipefork-social.json +103 -0
- package/archetypes/registry-browser.json +121 -0
- package/archetypes/render-monitor.json +114 -0
- package/archetypes/reporting-center.json +107 -0
- package/archetypes/research-workspace.json +127 -0
- package/archetypes/restaurant-floor.json +74 -0
- package/archetypes/review-system.json +84 -0
- package/archetypes/saas-analytics.json +69 -0
- package/archetypes/saas-billing-v2.json +77 -0
- package/archetypes/saas-dashboard.json +127 -0
- package/archetypes/saas-overview.json +77 -0
- package/archetypes/sample-inventory.json +80 -0
- package/archetypes/scrim-scheduler.json +103 -0
- package/archetypes/search-hub.json +87 -0
- package/archetypes/secondary-market.json +83 -0
- package/archetypes/seller-dashboard.json +169 -0
- package/archetypes/server-station.json +61 -0
- package/archetypes/service-requests.json +141 -0
- package/archetypes/session-rooms.json +92 -0
- package/archetypes/settings-full.json +164 -0
- package/archetypes/settings.json +67 -0
- package/archetypes/source-catalog.json +116 -0
- package/archetypes/spatial-workspace.json +115 -0
- package/archetypes/sponsor-dashboard.json +103 -0
- package/archetypes/storefront-browse.json +97 -0
- package/archetypes/supply-chain.json +112 -0
- package/archetypes/swipe-feed.json +469 -0
- package/archetypes/team-management.json +95 -0
- package/archetypes/team-operations.json +131 -0
- package/archetypes/team-workspace.json +71 -0
- package/archetypes/telehealth-room.json +78 -0
- package/archetypes/tenant-manager.json +129 -0
- package/archetypes/tenant-payments.json +105 -0
- package/archetypes/tenant-portal.json +135 -0
- package/archetypes/tenant-switcher-dashboard.json +154 -0
- package/archetypes/terminal-home.json +127 -0
- package/archetypes/ticket-checkout.json +84 -0
- package/archetypes/tool-registry.json +111 -0
- package/archetypes/trace-explorer.json +113 -0
- package/archetypes/trace-viewer.json +112 -0
- package/archetypes/track-library.json +90 -0
- package/archetypes/transaction-history.json +77 -0
- package/archetypes/transformation-editor.json +117 -0
- package/archetypes/usage-billing.json +146 -0
- package/archetypes/user-dashboard.json +155 -0
- package/archetypes/video-editor.json +158 -0
- package/archetypes/vod-review.json +97 -0
- package/archetypes/webhook-manager.json +108 -0
- package/archetypes/workspace-home.json +105 -0
- package/archetypes/workspace-settings.json +140 -0
- package/blueprints/agent-marketplace.json +222 -0
- package/blueprints/agent-studio.json +291 -0
- package/blueprints/ai-copilot-shell.json +163 -0
- package/blueprints/ai-native-crm.json +269 -0
- package/blueprints/ai-video-studio.json +93 -0
- package/blueprints/carbon-ai-portal.json +252 -0
- package/blueprints/civic-platform.json +91 -0
- package/blueprints/climate-dashboard.json +90 -0
- package/blueprints/cloud-platform.json +219 -0
- package/blueprints/content-site.json +110 -0
- package/blueprints/content-studio.json +120 -0
- package/blueprints/creator-monetization-platform.json +373 -0
- package/blueprints/data-pipeline-studio.json +263 -0
- package/blueprints/deal-room.json +88 -0
- package/blueprints/ecommerce-admin.json +253 -0
- package/blueprints/ecommerce.json +242 -0
- package/blueprints/esports-hq.json +116 -0
- package/blueprints/event-community-hub.json +251 -0
- package/blueprints/financial-dashboard.json +237 -0
- package/blueprints/fractional-ownership.json +89 -0
- package/blueprints/gaming-platform.json +171 -0
- package/blueprints/health-wellness-portal.json +252 -0
- package/blueprints/knowledge-base.json +176 -0
- package/blueprints/legal-research.json +90 -0
- package/blueprints/multi-tenant-platform.json +257 -0
- package/blueprints/observability-platform.json +275 -0
- package/blueprints/portfolio.json +164 -0
- package/blueprints/producer-studio.json +156 -0
- package/blueprints/product-landing.json +112 -0
- package/blueprints/property-management-portal.json +384 -0
- package/blueprints/realtime-collaboration-workspace.json +300 -0
- package/blueprints/recipe-community.json +259 -0
- package/blueprints/recipefork.json +194 -0
- package/blueprints/registry-platform.json +204 -0
- package/blueprints/research-lab.json +92 -0
- package/blueprints/restaurant-ops.json +104 -0
- package/blueprints/retro-launch-campaign.json +205 -0
- package/blueprints/saas-dashboard.json +246 -0
- package/blueprints/spatial-collaboration.json +172 -0
- package/blueprints/swipecircle.json +253 -0
- package/blueprints/terminal-dashboard.json +282 -0
- package/blueprints/two-sided-marketplace.json +293 -0
- package/dist/index.d.ts +178 -0
- package/dist/index.js +582 -0
- package/dist/index.js.map +1 -0
- package/package.json +75 -0
- package/patterns/account-settings.json +149 -0
- package/patterns/activity-feed.json +154 -0
- package/patterns/adaptive-density-panel.json +130 -0
- package/patterns/agent-handoff-zone.json +97 -0
- package/patterns/agent-swarm-canvas.json +136 -0
- package/patterns/agent-timeline.json +119 -0
- package/patterns/alert-rule-builder.json +127 -0
- package/patterns/ambient-status-ring.json +125 -0
- package/patterns/api-explorer.json +131 -0
- package/patterns/api-key-row.json +119 -0
- package/patterns/ar-annotation.json +137 -0
- package/patterns/arrangement-canvas.json +72 -0
- package/patterns/ascii-chart.json +138 -0
- package/patterns/audit-trail.json +123 -0
- package/patterns/auth-form.json +209 -0
- package/patterns/avatar-grid-tile.json +118 -0
- package/patterns/backer-progress-console.json +137 -0
- package/patterns/backer-wall-ticker.json +127 -0
- package/patterns/before-after.json +105 -0
- package/patterns/block-toolbar.json +129 -0
- package/patterns/blueprint-anatomy.json +112 -0
- package/patterns/blueprint-launch-hero.json +113 -0
- package/patterns/booking-calendar.json +125 -0
- package/patterns/bottom-tab-bar.json +117 -0
- package/patterns/breadcrumb-nav.json +111 -0
- package/patterns/budget-sankey.json +103 -0
- package/patterns/calendar-view.json +143 -0
- package/patterns/campaign-marquee-hero.json +167 -0
- package/patterns/cap-table.json +121 -0
- package/patterns/card-grid.json +202 -0
- package/patterns/case-brief-card.json +113 -0
- package/patterns/character-sheet.json +102 -0
- package/patterns/chart-grid.json +129 -0
- package/patterns/chat-header.json +105 -0
- package/patterns/chat-input.json +106 -0
- package/patterns/chat-message.json +122 -0
- package/patterns/chat-thread.json +120 -0
- package/patterns/checklist-card.json +96 -0
- package/patterns/checkout-flow.json +148 -0
- package/patterns/chip-multiselect.json +118 -0
- package/patterns/citation-graph.json +118 -0
- package/patterns/command-palette.json +115 -0
- package/patterns/command-rail.json +123 -0
- package/patterns/comment-thread.json +155 -0
- package/patterns/comparison-table.json +121 -0
- package/patterns/contact-form.json +135 -0
- package/patterns/content-card-grid.json +151 -0
- package/patterns/content-detail-hero.json +129 -0
- package/patterns/content-feed.json +141 -0
- package/patterns/content-uploader.json +137 -0
- package/patterns/continue-screen-cta.json +135 -0
- package/patterns/contract-diff.json +110 -0
- package/patterns/contract-explorer.json +119 -0
- package/patterns/conversation-list.json +109 -0
- package/patterns/creator-profile.json +127 -0
- package/patterns/cta-banner.json +103 -0
- package/patterns/cta-section.json +122 -0
- package/patterns/cta.json +124 -0
- package/patterns/data-source-connector.json +131 -0
- package/patterns/data-table.json +138 -0
- package/patterns/dataset-card.json +127 -0
- package/patterns/daw-transport-bar.json +66 -0
- package/patterns/deal-pipeline-board.json +124 -0
- package/patterns/deal-stage-gates.json +102 -0
- package/patterns/depth-layered-canvas.json +105 -0
- package/patterns/detail-header.json +140 -0
- package/patterns/diff-view.json +122 -0
- package/patterns/dividend-ledger.json +120 -0
- package/patterns/doc-editor.json +147 -0
- package/patterns/document-vault.json +129 -0
- package/patterns/drag-sort-list.json +119 -0
- package/patterns/earnings-dashboard.json +132 -0
- package/patterns/emissions-sankey.json +113 -0
- package/patterns/emoji-reaction-bar.json +115 -0
- package/patterns/esports-matchday-command.json +132 -0
- package/patterns/eval-dashboard.json +131 -0
- package/patterns/expense-tracker.json +130 -0
- package/patterns/featured-launchpad-list.json +114 -0
- package/patterns/features.json +118 -0
- package/patterns/file-browser.json +148 -0
- package/patterns/filter-bar.json +146 -0
- package/patterns/footer.json +115 -0
- package/patterns/form-sections.json +180 -0
- package/patterns/form.json +190 -0
- package/patterns/founder-comic-strip.json +126 -0
- package/patterns/generative-card-grid.json +130 -0
- package/patterns/gesture-control-overlay.json +134 -0
- package/patterns/governance-ballot.json +126 -0
- package/patterns/help-modal.json +155 -0
- package/patterns/hero-split.json +125 -0
- package/patterns/hero.json +227 -0
- package/patterns/holographic-control-bar.json +114 -0
- package/patterns/hotkey-bar.json +97 -0
- package/patterns/how-it-works.json +118 -0
- package/patterns/identity-summary.json +115 -0
- package/patterns/instrument-schedule.json +131 -0
- package/patterns/intake-form-wizard.json +134 -0
- package/patterns/intent-radar.json +115 -0
- package/patterns/json-viewer.json +129 -0
- package/patterns/kanban-board.json +133 -0
- package/patterns/kds-ticket-rail.json +133 -0
- package/patterns/kpi-grid.json +123 -0
- package/patterns/launch-update-log.json +129 -0
- package/patterns/launchpad-flow.json +107 -0
- package/patterns/leaderboard.json +143 -0
- package/patterns/lease-manager.json +129 -0
- package/patterns/legal-prose.json +120 -0
- package/patterns/live-room-stage.json +63 -0
- package/patterns/log-stream.json +150 -0
- package/patterns/logo-strip.json +93 -0
- package/patterns/maintenance-board.json +127 -0
- package/patterns/maintenance-ticket.json +156 -0
- package/patterns/map-view.json +140 -0
- package/patterns/match-celebration.json +133 -0
- package/patterns/matter-card.json +113 -0
- package/patterns/mention-popup.json +85 -0
- package/patterns/metric-gauge.json +141 -0
- package/patterns/mixer-console.json +69 -0
- package/patterns/mobile-profile-hero.json +138 -0
- package/patterns/moderation-queue-item.json +129 -0
- package/patterns/morphing-topology.json +113 -0
- package/patterns/namespace-badge.json +93 -0
- package/patterns/nav-header.json +110 -0
- package/patterns/neural-feedback-loop.json +124 -0
- package/patterns/notebook-entry.json +129 -0
- package/patterns/notification-center.json +136 -0
- package/patterns/offset-cart.json +109 -0
- package/patterns/onboarding-wizard.json +130 -0
- package/patterns/org-governance-panel.json +101 -0
- package/patterns/page-tree.json +143 -0
- package/patterns/payment-history.json +130 -0
- package/patterns/payout-settings.json +130 -0
- package/patterns/permission-matrix.json +129 -0
- package/patterns/petition-card.json +106 -0
- package/patterns/pipeline-cards.json +99 -0
- package/patterns/player-form-tracker.json +111 -0
- package/patterns/pledge-checkout-panel.json +145 -0
- package/patterns/pnl-dashboard.json +116 -0
- package/patterns/post-list.json +147 -0
- package/patterns/presence-avatars.json +129 -0
- package/patterns/press-kit-shelf.json +132 -0
- package/patterns/pricing-usage.json +118 -0
- package/patterns/pricing.json +137 -0
- package/patterns/producer-split-workbench.json +57 -0
- package/patterns/product-box-spec-panel.json +126 -0
- package/patterns/product-card.json +120 -0
- package/patterns/product-grid.json +140 -0
- package/patterns/progress-bar.json +124 -0
- package/patterns/prompt-playground.json +129 -0
- package/patterns/property-card.json +112 -0
- package/patterns/property-detail.json +124 -0
- package/patterns/property-grid.json +137 -0
- package/patterns/prose-section.json +102 -0
- package/patterns/protocol-step.json +128 -0
- package/patterns/prototype-demo-bezel.json +137 -0
- package/patterns/qa-thread.json +109 -0
- package/patterns/quick-start.json +88 -0
- package/patterns/recipefork-activity-feed.json +51 -0
- package/patterns/recipefork-chef-ingredients-display.json +48 -0
- package/patterns/recipefork-chef-ingredients-editor.json +52 -0
- package/patterns/recipefork-chef-instruction-editor.json +59 -0
- package/patterns/recipefork-chef-instructions-display.json +54 -0
- package/patterns/recipefork-cookbook-assignment.json +51 -0
- package/patterns/recipefork-cooking-tips-display.json +43 -0
- package/patterns/recipefork-cooking-tips-editor.json +46 -0
- package/patterns/recipefork-fork-provenance.json +50 -0
- package/patterns/recipefork-kitchen-chat.json +103 -0
- package/patterns/recipefork-photo-generator.json +123 -0
- package/patterns/recipefork-presentation-display.json +45 -0
- package/patterns/recipefork-presentation-editor.json +52 -0
- package/patterns/recipefork-recipe-card.json +123 -0
- package/patterns/recipefork-recipe-metadata-form.json +58 -0
- package/patterns/recipefork-recipe-mode-switch.json +52 -0
- package/patterns/recipefork-recipe-story-editor.json +51 -0
- package/patterns/recipefork-simple-recipe-editor.json +49 -0
- package/patterns/redline-track-changes.json +113 -0
- package/patterns/registry-discovery-cta-grid.json +93 -0
- package/patterns/registry-link-list.json +118 -0
- package/patterns/relationship-graph.json +127 -0
- package/patterns/remote-cursor.json +103 -0
- package/patterns/render-queue.json +102 -0
- package/patterns/rent-reminder.json +140 -0
- package/patterns/rent-roll.json +112 -0
- package/patterns/reputation-badge.json +111 -0
- package/patterns/retro-table.json +128 -0
- package/patterns/reward-tier-selector.json +137 -0
- package/patterns/sample-tracker.json +127 -0
- package/patterns/scene-storyboard.json +104 -0
- package/patterns/scope-breakdown.json +108 -0
- package/patterns/scoreboard-live.json +116 -0
- package/patterns/scrim-calendar.json +114 -0
- package/patterns/search-filter-bar.json +141 -0
- package/patterns/secure-document-viewer.json +107 -0
- package/patterns/service-catalog.json +94 -0
- package/patterns/service-map.json +133 -0
- package/patterns/session-inspector.json +62 -0
- package/patterns/session-manager.json +89 -0
- package/patterns/settings-nav.json +106 -0
- package/patterns/share-modal.json +157 -0
- package/patterns/share-quest-panel.json +134 -0
- package/patterns/shot-grid.json +104 -0
- package/patterns/skeleton-loader.json +114 -0
- package/patterns/slash-command.json +80 -0
- package/patterns/sparkline-cell.json +103 -0
- package/patterns/spatial-card-stack.json +133 -0
- package/patterns/spatial-presence-ring.json +103 -0
- package/patterns/split-calculator.json +104 -0
- package/patterns/split-pane.json +112 -0
- package/patterns/stats-bar.json +125 -0
- package/patterns/stats-detail.json +102 -0
- package/patterns/stats-overview.json +132 -0
- package/patterns/stats-section.json +90 -0
- package/patterns/status-bar.json +101 -0
- package/patterns/status-board.json +92 -0
- package/patterns/stem-browser.json +58 -0
- package/patterns/stem-stack.json +101 -0
- package/patterns/stepper.json +115 -0
- package/patterns/storefront-hero.json +120 -0
- package/patterns/stretch-goal-ladder.json +128 -0
- package/patterns/subscriber-list.json +135 -0
- package/patterns/supply-chain-map.json +109 -0
- package/patterns/swipe-action-bar.json +119 -0
- package/patterns/swipe-card.json +126 -0
- package/patterns/table-map.json +134 -0
- package/patterns/target-progress-ring.json +103 -0
- package/patterns/team-member-row.json +139 -0
- package/patterns/tech-pills.json +69 -0
- package/patterns/tenant-card.json +150 -0
- package/patterns/tenant-directory.json +118 -0
- package/patterns/tenant-payment-setup.json +98 -0
- package/patterns/terminal-emulator.json +117 -0
- package/patterns/testimonials.json +133 -0
- package/patterns/tier-builder.json +131 -0
- package/patterns/tier-card.json +118 -0
- package/patterns/tier-upgrade-card.json +144 -0
- package/patterns/timeline-scrubber.json +107 -0
- package/patterns/timeline.json +140 -0
- package/patterns/toast-notification.json +123 -0
- package/patterns/tool-list.json +89 -0
- package/patterns/trace-waterfall.json +123 -0
- package/patterns/trade-modal.json +132 -0
- package/patterns/transcript-stream.json +125 -0
- package/patterns/tree-view.json +124 -0
- package/patterns/unit-detail.json +100 -0
- package/patterns/unit-list.json +106 -0
- package/patterns/unlock-gate.json +132 -0
- package/patterns/usage-meter.json +113 -0
- package/patterns/vacancy-tracker.json +106 -0
- package/patterns/valuation-chart.json +126 -0
- package/patterns/version-history.json +140 -0
- package/patterns/video-room.json +142 -0
- package/patterns/vod-annotator.json +112 -0
- package/patterns/voice-command-palette.json +127 -0
- package/patterns/voice-waveform.json +120 -0
- package/patterns/voting-breakdown.json +101 -0
- package/patterns/waveform-track.json +102 -0
- package/patterns/webhook-debugger.json +116 -0
- package/patterns/workflow-canvas.json +147 -0
- package/patterns/workspace-region-stack.json +74 -0
- package/schemas/archetype.v2.json +145 -0
- package/schemas/blueprint.v1.json +225 -0
- package/schemas/common.v1.json +337 -0
- package/schemas/content-health-report.v1.json +255 -0
- package/schemas/content-intelligence.v1.json +142 -0
- package/schemas/essence.v4.json +430 -0
- package/schemas/execution-pack.common.v1.json +207 -0
- package/schemas/page-pack.v1.json +106 -0
- package/schemas/pattern.v2.json +232 -0
- package/schemas/public-content-list.v1.json +28 -0
- package/schemas/public-content-record.v1.json +91 -0
- package/schemas/public-content-summary.v1.json +132 -0
- package/schemas/registry-intelligence-summary.v1.json +81 -0
- package/schemas/search-response.v1.json +28 -0
- package/schemas/section-pack.v1.json +128 -0
- package/schemas/shell.v1.json +69 -0
- package/schemas/showcase-manifest-entry.v1.json +92 -0
- package/schemas/showcase-manifest.v1.json +28 -0
- package/schemas/showcase-shortlist.v1.json +36 -0
- package/schemas/theme.v1.json +190 -0
- package/shells/canvas-overlay.json +94 -0
- package/shells/centered.json +49 -0
- package/shells/chat-portal.json +153 -0
- package/shells/copilot-overlay.json +156 -0
- package/shells/full-bleed.json +100 -0
- package/shells/immersive-stage.json +89 -0
- package/shells/minimal-header.json +103 -0
- package/shells/mobile-tab-bar.json +119 -0
- package/shells/recipefork-top-nav.json +74 -0
- package/shells/sidebar-aside.json +163 -0
- package/shells/sidebar-main-footer.json +158 -0
- package/shells/sidebar-main.json +175 -0
- package/shells/sidebar-right.json +128 -0
- package/shells/terminal-split.json +95 -0
- package/shells/three-column-browser.json +215 -0
- package/shells/top-nav-footer.json +114 -0
- package/shells/top-nav-main.json +103 -0
- package/shells/top-nav-sidebar.json +130 -0
- package/shells/workspace-aside.json +181 -0
- package/themes/auradecantism.json +601 -0
- package/themes/bespoke.json +433 -0
- package/themes/bioluminescent.json +217 -0
- package/themes/bistro.json +422 -0
- package/themes/carbon-neon.json +458 -0
- package/themes/carbon.json +429 -0
- package/themes/cinema.json +479 -0
- package/themes/clean.json +261 -0
- package/themes/counsel.json +431 -0
- package/themes/dopamine.json +237 -0
- package/themes/earth.json +453 -0
- package/themes/editorial.json +237 -0
- package/themes/estate.json +559 -0
- package/themes/fintech.json +472 -0
- package/themes/gaming-guild.json +341 -0
- package/themes/glassmorphism.json +309 -0
- package/themes/government.json +481 -0
- package/themes/healthcare.json +480 -0
- package/themes/lab.json +437 -0
- package/themes/launchpad.json +320 -0
- package/themes/liquid-glass.json +223 -0
- package/themes/luminarum.json +598 -0
- package/themes/neo-tokyo.json +451 -0
- package/themes/neon-cyber.json +280 -0
- package/themes/neon-dark.json +220 -0
- package/themes/paper.json +496 -0
- package/themes/prismatic.json +217 -0
- package/themes/recipefork.json +278 -0
- package/themes/retro-arcade.json +620 -0
- package/themes/retro.json +240 -0
- package/themes/studio-dark.json +437 -0
- package/themes/studio.json +488 -0
- package/themes/swipecircle.json +533 -0
- package/themes/terminal.json +549 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-swarm-canvas",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Agent Swarm Canvas",
|
|
7
|
+
"description": "A spatial node-graph canvas where AI agents appear as interactive nodes with real-time status, drag-to-connect edges, zoom/pan navigation, and a minimap for orchestration overview.",
|
|
8
|
+
"category": "agentic",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"agentic",
|
|
12
|
+
"spatial",
|
|
13
|
+
"orchestration",
|
|
14
|
+
"node-graph",
|
|
15
|
+
"real-time"
|
|
16
|
+
],
|
|
17
|
+
"components": [
|
|
18
|
+
"AgentNode",
|
|
19
|
+
"ConnectionPath",
|
|
20
|
+
"StatusBadge",
|
|
21
|
+
"CanvasControls",
|
|
22
|
+
"Minimap",
|
|
23
|
+
"TaskTooltip"
|
|
24
|
+
],
|
|
25
|
+
"default_preset": "standard",
|
|
26
|
+
"presets": {
|
|
27
|
+
"standard": {
|
|
28
|
+
"description": "Full spatial canvas with minimap, control bar, and status overlay — intended as a primary view for agent orchestration dashboards",
|
|
29
|
+
"layout": {
|
|
30
|
+
"layout": "spatial",
|
|
31
|
+
"atoms": "_rel _w100 _h100 _overhidden _bgbg"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"compact": {
|
|
35
|
+
"description": "Reduced canvas without minimap or control bar, suitable for embedding in sidebars or secondary panels — agents render as smaller nodes with abbreviated labels",
|
|
36
|
+
"layout": {
|
|
37
|
+
"layout": "spatial",
|
|
38
|
+
"atoms": "_rel _w100 _overhidden _bgbg"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"readonly": {
|
|
42
|
+
"description": "Non-interactive snapshot of the agent graph — no drag, no connect, no zoom controls — used for monitoring dashboards and historical playback",
|
|
43
|
+
"layout": {
|
|
44
|
+
"layout": "spatial",
|
|
45
|
+
"atoms": "_rel _w100 _h100 _overhidden _bgbg _ptrnone"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"visual_brief": "A dark, full-bleed spatial canvas with floating agent-node cards connected by animated bezier paths. Nodes show colored status rings (idle/running/error). Minimap in bottom-right, control bar bottom-center. Dot-grid background scales with zoom.",
|
|
50
|
+
"layout_hints": {
|
|
51
|
+
"container": "borderless",
|
|
52
|
+
"note": "This is a full-bleed visualization. Do NOT wrap in a d-surface card. Agent nodes float freely within the canvas area.",
|
|
53
|
+
"node_interaction": "Each agent node card MUST have cursor: pointer. Use d-surface[data-interactive] for clickable nodes. Clicking navigates to agent detail.",
|
|
54
|
+
"shared_geometry": "Connection paths and agent nodes MUST render in the same transformed coordinate space. Do not scale the SVG and cards separately or the lines will drift away from their nodes during pan and zoom.",
|
|
55
|
+
"metrics": "Display agent metrics with LABELED text, not icon-only. Good: 'Requests: 142 | Latency: 120ms'. Bad: '⚡ 142 ⬇ 120ms'. Icons without labels are unparseable.",
|
|
56
|
+
"status_consistency": "All status badges MUST use d-annotation[data-status]. Every status includes a colored dot (8px circle) prefix for visual scanning. Consistent across all agents.",
|
|
57
|
+
"error_escalation": "Agents with error status should have a subtle red border glow on their card: box-shadow: 0 0 12px color-mix(in srgb, var(--d-error) 25%, transparent).",
|
|
58
|
+
"directional_start_layout": "Default authored layouts should begin in a readable orchestration flow rather than a random scatter. Favor a left-to-right or top-down pipeline with ingress and routing upstream, synthesis and quality in the middle, and dispatch or guard nodes downstream. Operators can then reposition nodes if needed.",
|
|
59
|
+
"drag_behavior": "Nodes should be draggable after the initial authored layout loads. Dragging should move the node itself and update connection paths live without breaking the shared canvas transform model.",
|
|
60
|
+
"node_card": "Agent node cards: min-width 200px, max-width 260px. Layout must be: Row 1: avatar (40px circle) + column(name + agent-id). Row 2: status badge (FULL WIDTH, not beside the name). Row 3+: metrics stacked vertically. The status badge must NEVER share a row with the agent name — it goes on its own row below the name/id, spanning the full card width. Use d-annotation for the badge.",
|
|
61
|
+
"node_card_sizing": "The name text uses text-sm font-semibold with text-ellipsis overflow-hidden whitespace-nowrap. The agent-id uses text-xs text-muted. Status badge row: flex with gap-2, badge pill-shaped. Metrics: mono-data text-xs, one line per metric. Card padding: 12px. Gap between rows: 8px.",
|
|
62
|
+
"connection_ports": "Paths should anchor to meaningful node ports rather than guessed center offsets. Choose left/right anchors when the target is primarily horizontal, and top/bottom anchors when the target is primarily vertical. Curves should leave the node orthogonally before bending toward the destination.",
|
|
63
|
+
"zoom_behavior": "Zoom should feel smooth and continuous, not discrete or jumpy. Prefer cursor-aware scaling on wheel gestures so the point under the cursor stays visually stable while zooming.",
|
|
64
|
+
"overlay_compactness": "Status overlays should behave like compact floating summaries, not wide banners. Cap overlay width, keep copy terse, and avoid large explanatory paragraphs that compete with the graph."
|
|
65
|
+
},
|
|
66
|
+
"default_layout": {
|
|
67
|
+
"layout": "spatial",
|
|
68
|
+
"atoms": "_rel _w100 _h100 _overhidden _bgbg",
|
|
69
|
+
"slots": {
|
|
70
|
+
"canvas-viewport": "The main infinite-scroll canvas area. Uses CSS transform for zoom/pan. Contains all agent nodes and connection paths positioned absolutely via x/y coordinates. Must handle pointer events for drag-to-connect, pan (middle-click or space+drag), and pinch-to-zoom. Background should render a subtle dot-grid pattern that scales with zoom level.",
|
|
71
|
+
"agent-node": "Repeating slot — one per agent. Each node is a rounded card (80–120px wide) positioned absolutely on the canvas. Shows agent name, avatar/icon, and a colored status ring: idle (gray/neutral), running (blue/primary with pulse animation), error (red/destructive with shake), complete (green/success with checkmark). Nodes have connection ports (small circles) on left and right edges for drag-to-connect wiring. Clicking a node expands it inline to show current task description and elapsed time. Nodes support drag repositioning.",
|
|
72
|
+
"connection-line": "SVG path elements drawn between agent-node connection ports. Uses bezier curves (cubic) with a slight droop. Animated dash pattern flows in the direction of data transfer. Line color reflects connection status: active (primary color, animated flow), idle (muted/dashed), error (destructive, static). Hovering a line shows a tooltip with the data payload summary being transferred.",
|
|
73
|
+
"status-overlay": "A translucent overlay panel anchored to the top-right of the canvas viewport. Shows aggregate swarm stats: total agents, running count, error count, completed count, and overall progress as a thin horizontal bar. Collapses to a single summary badge on compact viewports. Uses backdrop-blur for depth.",
|
|
74
|
+
"control-bar": "Horizontal toolbar anchored to the bottom-center of the canvas. Contains zoom-in, zoom-out, fit-to-view, and toggle-minimap icon buttons. Also includes a play/pause button for swarm execution and a reset-layout button that auto-arranges nodes using a force-directed algorithm. Buttons use icon-only rendering with tooltips on hover.",
|
|
75
|
+
"minimap": "A small (160×120px) overview panel anchored to the bottom-right corner. Renders a simplified, zoomed-out view of the entire node graph with colored dots for agents and thin lines for connections. Shows a draggable viewport rectangle indicating the current visible area. Semi-transparent background with subtle border."
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"accessibility": {
|
|
79
|
+
"role": "application",
|
|
80
|
+
"aria-label": "Agent orchestration canvas",
|
|
81
|
+
"announcements": [
|
|
82
|
+
"Agent {name} status changed to {status}",
|
|
83
|
+
"Connection established between {source} and {target}",
|
|
84
|
+
"Swarm execution {started|paused|completed}"
|
|
85
|
+
],
|
|
86
|
+
"keyboard": [
|
|
87
|
+
"Tab: cycle through agent nodes in DOM order",
|
|
88
|
+
"Enter: expand selected agent node details",
|
|
89
|
+
"Space: toggle swarm play/pause",
|
|
90
|
+
"Arrow keys: pan canvas viewport",
|
|
91
|
+
"+/-: zoom in/out",
|
|
92
|
+
"0: fit all agents in view",
|
|
93
|
+
"Delete: remove selected connection",
|
|
94
|
+
"Escape: deselect current node or cancel drag"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"responsive": {
|
|
98
|
+
"mobile": "Below 768px the spatial swarm canvas is too cramped to render usefully. Stack agent nodes vertically as a simple status list with one card per node. Hide decorative SVG connection lines, the minimap, and the zoom control bar. No drag-to-connect; a tap opens a detail sheet.",
|
|
99
|
+
"tablet": "Two-column card grid at tablet viewports. Minimap hidden by default but available from the control bar. Touch gestures: tap-to-select; long-press-then-tap-target to create a connection.",
|
|
100
|
+
"desktop": "Full spatial canvas with absolute-positioned agent nodes, SVG connection lines, pan+zoom, minimap, and drag-to-connect. This is the canonical layout that delivers the mission-control personality directive."
|
|
101
|
+
},
|
|
102
|
+
"motion": {
|
|
103
|
+
"micro": {
|
|
104
|
+
"node-hover": "scale(1.05) + glow-intensity 200ms ease-out",
|
|
105
|
+
"connection-pulse": "opacity 0.3→1→0.3 along path 2s linear infinite"
|
|
106
|
+
},
|
|
107
|
+
"transitions": {
|
|
108
|
+
"node-add": "scale(0) to scale(1) + fade 300ms spring",
|
|
109
|
+
"node-remove": "scale(1) to scale(0) + fade 200ms ease-in",
|
|
110
|
+
"layout-shift": "position lerp 500ms ease-in-out"
|
|
111
|
+
},
|
|
112
|
+
"ambient": {
|
|
113
|
+
"connection-flow": "dash-offset animate along path 3s linear infinite",
|
|
114
|
+
"status-glow": "border-color pulse matching status 2s ease-in-out infinite"
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"interactions": [
|
|
118
|
+
"drag-nodes",
|
|
119
|
+
"pan-background",
|
|
120
|
+
"zoom-scroll",
|
|
121
|
+
"click-select",
|
|
122
|
+
"click-connect",
|
|
123
|
+
"hover-tooltip",
|
|
124
|
+
"status-pulse",
|
|
125
|
+
"animate-on-mount",
|
|
126
|
+
"live-simulation"
|
|
127
|
+
],
|
|
128
|
+
"composition": {
|
|
129
|
+
"AgentSwarmCanvas": "Viewport(d-section, spatial, full-bleed) > [CanvasLayer + StatusOverlay + ControlBar + Minimap?]",
|
|
130
|
+
"CanvasLayer": "Canvas(zoomable, pannable) > [AgentNode[] + ConnectionPath[]]",
|
|
131
|
+
"AgentNode": "Card(d-surface, data-interactive, positioned) > [Name + Avatar + StatusRing(pulse?: running) + TaskTooltip?]",
|
|
132
|
+
"ConnectionPath": "SVG(bezier, animated-dash) > Path(color: status)",
|
|
133
|
+
"StatusOverlay": "Panel(d-annotation, backdrop-blur, top-right) > [AgentCount + RunningCount + ErrorCount + ProgressBar]",
|
|
134
|
+
"ControlBar": "Bar(d-control, bottom-center) > [ZoomIn + ZoomOut + FitView + ToggleMinimap + PlayPause + ResetLayout]"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-timeline",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Agent Timeline",
|
|
7
|
+
"description": "A vertical timeline for agent observability that displays actions, decisions, tool calls, and reasoning steps as collapsible color-coded events with filtering, detail expansion, and summary statistics.",
|
|
8
|
+
"category": "agentic",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"agentic",
|
|
12
|
+
"timeline",
|
|
13
|
+
"observability",
|
|
14
|
+
"tool-calls",
|
|
15
|
+
"reasoning"
|
|
16
|
+
],
|
|
17
|
+
"components": [
|
|
18
|
+
"TimelineEvent",
|
|
19
|
+
"EventDetail",
|
|
20
|
+
"ToolCallCard",
|
|
21
|
+
"ReasoningStep",
|
|
22
|
+
"FilterChip",
|
|
23
|
+
"TimelineSummary"
|
|
24
|
+
],
|
|
25
|
+
"default_preset": "standard",
|
|
26
|
+
"presets": {
|
|
27
|
+
"standard": {
|
|
28
|
+
"description": "Full vertical timeline with summary header, filter bar, and expandable event nodes — intended as a primary observability view or dedicated panel",
|
|
29
|
+
"layout": {
|
|
30
|
+
"layout": "stack",
|
|
31
|
+
"atoms": "_flex _col _gap4 _py4"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"compact": {
|
|
35
|
+
"description": "Condensed timeline for sidebar placement — events render as single-line items with icon + label only, no inline detail expansion (click opens a popover instead), no summary header",
|
|
36
|
+
"layout": {
|
|
37
|
+
"layout": "stack",
|
|
38
|
+
"atoms": "_flex _col _gap1 _py2"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"live": {
|
|
42
|
+
"description": "Streaming variant that auto-scrolls to the latest event as it arrives — new events animate in from the bottom with a fade-slide-up, a 'live' indicator pulses at the top, and the summary header updates in real time",
|
|
43
|
+
"layout": {
|
|
44
|
+
"layout": "stack",
|
|
45
|
+
"atoms": "_flex _col _gap4 _py4 _overyauto"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"visual_brief": "Vertical timeline with a continuous 2px line on the left edge. Color-coded orbs mark each event type (action=cyan, decision=green, error=red, tool_call=purple, reasoning=amber). Cards extend right from the line with colored left-borders. Sticky summary header at top with aggregate stats. Filter chips below header.",
|
|
50
|
+
"layout_hints": {
|
|
51
|
+
"vertical_line": "A continuous 2px vertical line runs the FULL height of the timeline, 16px from the left edge. Color: var(--d-border). The line MUST NOT have gaps between events — it connects all events visually.",
|
|
52
|
+
"orb": "Each event has a 12px diameter colored circle (orb) centered ON the vertical line. The orb is vertically aligned with the FIRST line of text (the badge/timestamp row), not the center of the event block.",
|
|
53
|
+
"event_colors": "Each event TYPE must have a DISTINCT color. No two types share the same color. Suggested: action=cyan(accent), decision=green(success), error=red(error), warning=amber(warning), tool_call=purple, reasoning=amber/gold, info=blue(info).",
|
|
54
|
+
"spacing": "Compact event spacing: gap-3 to gap-4 between events. Dense timelines are easier to scan than spacious ones.",
|
|
55
|
+
"badge_size": "Event type badges use d-annotation with at least 0.7rem font and enough padding to be scannable at speed."
|
|
56
|
+
},
|
|
57
|
+
"default_layout": {
|
|
58
|
+
"layout": "stack",
|
|
59
|
+
"atoms": "_flex _col _gap4 _py4",
|
|
60
|
+
"slots": {
|
|
61
|
+
"summary-header": "A sticky header card at the top of the timeline showing aggregate stats for the current agent session. Displays: total events count, breakdown by type (tool calls, reasoning steps, outputs, errors) as small labeled counts with color-coded dots, total elapsed time, and token usage (input/output tokens). Also shows the agent's name, model identifier, and current status (running/complete/error). In the 'live' preset, the elapsed time and event count update in real time. A small sparkline chart shows event frequency over time (events per second) to visualize bursts of activity.",
|
|
62
|
+
"filter-bar": "A horizontal scrollable row of FilterChip components for narrowing visible events. Default chips: 'All', 'Tool Calls', 'Reasoning', 'Outputs', 'Errors', 'Decisions'. Chips are toggleable (multiple can be active simultaneously). Active chips use a filled style with the corresponding event-type color; inactive chips use an outline style. Also includes a text search input at the right edge for filtering events by content. Filter state persists across live updates. Chip counts show how many events match each filter (e.g., 'Tool Calls (12)').",
|
|
63
|
+
"timeline-track": "The vertical spine of the timeline. Renders as a thin continuous line (2px) running vertically down the left side of the event list (24px from the left edge). The line color uses a muted neutral tone with segments that colorize to match adjacent event nodes. Between events, the line can show elapsed time labels if the gap exceeds a configurable threshold (default 5s). At the bottom of a completed timeline, the track terminates with a small square end-cap. During live streaming, the bottom is an animated pulsing dot.",
|
|
64
|
+
"event-node": "Repeating slot — one per agent action. Each event is a card positioned to the right of the timeline-track, connected by a small horizontal line from the track to the card. The card has a colored left-border indicating event type: tool-call (blue/info), reasoning (purple/accent), output (green/success), error (red/destructive), decision (amber/warning). Each card shows: (1) a type icon matching the color, (2) a one-line summary (e.g., 'Called search_web with query \"decantr patterns\"'), (3) a relative timestamp ('2.3s ago' or '+1.2s'), and (4) a chevron toggle to expand/collapse the detail section. Cards are collapsed by default. Error events auto-expand and have a stronger visual treatment (background tint, bold border). Events animate in with a subtle slide-up + fade when appended in live mode.",
|
|
65
|
+
"event-detail": "The expandable content area within each event-node. Content varies by event type: For tool-call events — shows the tool name, input parameters as a formatted JSON/key-value block, output/result as a collapsible code block, duration in milliseconds, and token cost. For reasoning events — shows the full reasoning text formatted as markdown with a 'thinking' visual treatment (slightly italic, indented, with a brain icon). For output events — shows the generated text or data, formatted with markdown rendering. For error events — shows the error message, stack trace in a scrollable code block, and a 'retry' button if the error is retryable. For decision events — shows the decision description, alternatives considered as a list, and the selected option highlighted."
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"accessibility": {
|
|
69
|
+
"role": "feed",
|
|
70
|
+
"aria-label": "Agent activity timeline",
|
|
71
|
+
"announcements": [
|
|
72
|
+
"New event: {type} — {summary}",
|
|
73
|
+
"Error occurred: {message}",
|
|
74
|
+
"Agent completed after {duration} with {event_count} events",
|
|
75
|
+
"Filter applied: showing {type} events only",
|
|
76
|
+
"Event details expanded for {summary}"
|
|
77
|
+
],
|
|
78
|
+
"keyboard": [
|
|
79
|
+
"Arrow Up/Down: navigate between timeline events",
|
|
80
|
+
"Enter: expand/collapse selected event detail",
|
|
81
|
+
"F: focus the filter bar search input",
|
|
82
|
+
"1-6: toggle filter chips by position",
|
|
83
|
+
"Home: jump to first event",
|
|
84
|
+
"End: jump to latest event",
|
|
85
|
+
"Escape: collapse all expanded events and clear filters"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"responsive": {
|
|
89
|
+
"mobile": "Timeline track moves to a thin left-edge gutter (8px inset). Event cards span full width with reduced padding. Filter bar scrolls horizontally with momentum. Summary header stacks stats in a 2×2 grid. Event details render in a bottom sheet on tap rather than inline expansion to save vertical space.",
|
|
90
|
+
"tablet": "Standard vertical layout maintained. Filter bar remains fully visible without scrolling (wraps to second row if needed). Event cards maintain comfortable padding. Summary header displays stats in a single row."
|
|
91
|
+
},
|
|
92
|
+
"motion": {
|
|
93
|
+
"micro": {
|
|
94
|
+
"event-hover": "translateX(2px) + border-accent 150ms ease-out",
|
|
95
|
+
"orb-pulse": "scale(1→1.2→1) 2s ease-in-out infinite on active events"
|
|
96
|
+
},
|
|
97
|
+
"transitions": {
|
|
98
|
+
"event-expand": "max-height 0→auto + fade 300ms ease-out",
|
|
99
|
+
"event-collapse": "max-height auto→0 + fade 200ms ease-in",
|
|
100
|
+
"new-event": "slide-in-from-top + fade 400ms ease-out"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"interactions": [
|
|
104
|
+
"animate-on-mount",
|
|
105
|
+
"stagger-children",
|
|
106
|
+
"status-pulse",
|
|
107
|
+
"real-time-updates",
|
|
108
|
+
"hover-reveal",
|
|
109
|
+
"scroll-reveal"
|
|
110
|
+
],
|
|
111
|
+
"composition": {
|
|
112
|
+
"AgentTimeline": "Container(d-section, flex-col, gap-4) > [TimelineSummary + FilterBar + EventList]",
|
|
113
|
+
"TimelineSummary": "Card(d-surface, sticky) > [AgentName + ModelId + Status(d-annotation) + EventCounts(d-data) + ElapsedTime(mono-data) + TokenUsage]",
|
|
114
|
+
"FilterBar": "Row(d-control, scrollable) > FilterChip(toggleable, color: event-type)[]",
|
|
115
|
+
"EventList": "Track(d-data, vertical-line) > EventNode[]",
|
|
116
|
+
"EventNode": "Card(d-surface, color-left-border: event-type, collapsible) > [TypeIcon + Summary + Timestamp(mono-data) + ChevronToggle + EventDetail?]",
|
|
117
|
+
"EventDetail": "Panel(d-data, expandable) > [Content(variant: event-type)]"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "alert-rule-builder",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Alert Rule Builder",
|
|
7
|
+
"description": "Visual condition builder for creating alert rules, filters, or automation triggers using nested AND/OR logic groups with metric selectors, operators, threshold sliders, and live rule testing.",
|
|
8
|
+
"category": "configuration",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"configuration",
|
|
12
|
+
"alerts",
|
|
13
|
+
"rules",
|
|
14
|
+
"conditions",
|
|
15
|
+
"builder",
|
|
16
|
+
"monitoring"
|
|
17
|
+
],
|
|
18
|
+
"components": [
|
|
19
|
+
"RuleGroup",
|
|
20
|
+
"ConditionRow",
|
|
21
|
+
"MetricSelector",
|
|
22
|
+
"OperatorSelector",
|
|
23
|
+
"ValueInput",
|
|
24
|
+
"ThresholdSlider",
|
|
25
|
+
"AddConditionButton",
|
|
26
|
+
"TestButton"
|
|
27
|
+
],
|
|
28
|
+
"default_preset": "standard",
|
|
29
|
+
"presets": {
|
|
30
|
+
"standard": {
|
|
31
|
+
"description": "Condition groups with AND/OR logic toggles between rows — supports one level of nesting with groups rendered as bordered cards containing their conditions",
|
|
32
|
+
"layout": {
|
|
33
|
+
"layout": "stack",
|
|
34
|
+
"atoms": "_flex _col _gap4 _p4 _wfull"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"simple": {
|
|
38
|
+
"description": "Single flat list of conditions joined by a single logic operator — no nesting or groups, ideal for basic threshold alerts with just one or two conditions",
|
|
39
|
+
"layout": {
|
|
40
|
+
"layout": "stack",
|
|
41
|
+
"atoms": "_flex _col _gap3 _p4 _wfull"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"advanced": {
|
|
45
|
+
"description": "Deeply nested AND/OR tree with unlimited group depth — groups can contain sub-groups creating a visual tree structure with indentation and connecting lines for complex rule logic",
|
|
46
|
+
"layout": {
|
|
47
|
+
"layout": "stack",
|
|
48
|
+
"atoms": "_flex _col _gap4 _p4 _wfull _overflow-y-auto"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"visual_brief": "Card-based rule builder with indented groups representing AND/OR logic. The top level is a bordered card (the root group) containing condition rows stacked vertically. Each condition row is a horizontal strip with four inline elements: a metric dropdown selector showing the metric name (e.g., 'CPU Usage', 'Error Rate', 'Latency p99'), an operator dropdown (>, <, =, !=, contains, between), a value input field (numeric or text depending on metric type), and a small circular remove button with an X icon at the right edge. Between each condition row sits a small pill-shaped logic toggle button showing 'AND' or 'OR' in uppercase — clicking toggles between the two. The pill color is blue for AND and orange for OR. Nested groups appear as indented bordered cards within the parent group, with a colored left border matching their logic operator color. An 'Add condition' button with a plus icon sits at the bottom of each group, alongside an 'Add group' button for nesting. The ThresholdSlider variant replaces the plain value input with a slider overlaid on a mini sparkline chart of recent metric data, with a draggable horizontal line showing the threshold position. A prominent 'Test Rule' button at the bottom evaluates the complete rule against recent data and shows a pass (green checkmark) or fail (red X) result with a count of matching data points. The entire builder has a subtle background tint distinguishing it from surrounding content.",
|
|
53
|
+
"default_layout": {
|
|
54
|
+
"layout": "stack",
|
|
55
|
+
"atoms": "_flex _col _gap4 _p4 _wfull",
|
|
56
|
+
"slots": {
|
|
57
|
+
"rule-header": "Top bar showing the rule name as an editable text field, a severity selector (info/warning/critical) as colored radio pills, and a notification channel selector dropdown. The severity pills are blue for info, amber for warning, and red for critical.",
|
|
58
|
+
"rule-group": "Repeating slot — the primary structural unit. A bordered card with rounded corners and a colored left border (blue for AND group, orange for OR group). Contains a small group-level logic label in the top-left corner ('ALL of' for AND, 'ANY of' for OR). Inside: a vertical stack of ConditionRow slots separated by logic toggle pills, followed by action buttons at the bottom.",
|
|
59
|
+
"condition-row": "Repeating slot within a rule-group. A horizontal row containing: MetricSelector (dropdown, 180px width, shows metric name with a small type icon), OperatorSelector (dropdown, 100px width, shows operator symbol), ValueInput (text/number input, 120px width) or ThresholdSlider (240px width slider on mini-chart), and a remove button (circular, 24px, muted until hovered). The row has a subtle hover background. Drag handle on the left edge for reordering.",
|
|
60
|
+
"logic-toggle": "Small pill button (60px wide, 24px tall) centered between condition rows. Shows 'AND' or 'OR' text. Clicking toggles the logic operator for the containing group. Background color matches the operator: blue for AND, orange for OR. Smooth color transition on toggle.",
|
|
61
|
+
"threshold-slider": "An enhanced value input variant. Shows a mini sparkline chart (240px wide, 48px tall) of recent metric data with a horizontal draggable threshold line. The area above or below the line (depending on operator direction) tints in the severity color. A numeric readout appears above the drag handle. Moving the handle updates the value input in real time.",
|
|
62
|
+
"test-section": "Bottom area containing the Test button and result display. The 'Test Rule' button is prominent with a play icon. When clicked, it shows a loading spinner, then displays results: a pass/fail badge, the number of data points that matched out of total evaluated, and a small timeline showing when matches occurred in the recent window."
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"responsive": {
|
|
66
|
+
"mobile": "Condition rows stack vertically — metric selector, operator, and value input each take full width on separate lines. Logic toggles remain between conditions. Nested groups indent with a thinner left border. Threshold slider stretches to full width. Test button is sticky at the bottom of the viewport.",
|
|
67
|
+
"tablet": "Condition rows display horizontally with slightly compressed widths. Groups maintain full indentation. Test section is visible without scrolling on most rules.",
|
|
68
|
+
"desktop": "Full horizontal condition rows with generous spacing. Threshold sliders show wider mini-charts. Drag-to-reorder is smooth with drop zone indicators. Multiple levels of nesting display cleanly with indentation guides."
|
|
69
|
+
},
|
|
70
|
+
"motion": {
|
|
71
|
+
"micro": {
|
|
72
|
+
"row-hover": "background-tint 100ms ease-out",
|
|
73
|
+
"toggle-flip": "background-color + text transition 200ms ease-out on logic toggle",
|
|
74
|
+
"remove-hover": "scale(1→1.1) + color shift to red 150ms ease-out"
|
|
75
|
+
},
|
|
76
|
+
"transitions": {
|
|
77
|
+
"row-add": "height 0→auto + fade + slide-down 250ms ease-out",
|
|
78
|
+
"row-remove": "height auto→0 + fade-out 200ms ease-in",
|
|
79
|
+
"group-nest": "indent slide-right + border-appear 300ms ease-out",
|
|
80
|
+
"test-result": "fade + scale(0.95→1) 300ms ease-out"
|
|
81
|
+
},
|
|
82
|
+
"ambient": {
|
|
83
|
+
"threshold-glow": "subtle pulse on threshold line when value is near current metric reading"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"interactions": [
|
|
87
|
+
"drag-reorder",
|
|
88
|
+
"click-select",
|
|
89
|
+
"inline-edit",
|
|
90
|
+
"keyboard-navigation",
|
|
91
|
+
"animate-on-mount",
|
|
92
|
+
"status-pulse"
|
|
93
|
+
],
|
|
94
|
+
"layout_hints": {
|
|
95
|
+
"rule_priority": "The user should be able to read rule logic top to bottom before thinking about nested complexity. Group hierarchy and AND/OR relationships must remain unmistakable.",
|
|
96
|
+
"edit_focus": "Row-level controls should support editing without overpowering the logic structure. Add/remove actions belong at the edge of the builder, not in the center of attention.",
|
|
97
|
+
"test_feedback": "Rule testing should feel attached to the current rule state, not like a separate diagnostics panel detached from the builder."
|
|
98
|
+
},
|
|
99
|
+
"composition": {
|
|
100
|
+
"RuleBuilder": "Container(d-section, flex-col, gap-4) > [RuleHeader(d-control) + RuleGroup*(d-surface) + TestSection(d-control)]",
|
|
101
|
+
"RuleHeader": "Row(d-control) > [RuleNameInput + SeverityPills(d-interactive) + ChannelSelector]",
|
|
102
|
+
"RuleGroup": "Card(d-surface, bordered, indent: depth, color-left-border: logic) > [GroupLabel(d-annotation) + ConditionRow*(d-interactive) + LogicToggle*(d-interactive) + ActionButtons > [AddConditionButton + AddGroupButton]]",
|
|
103
|
+
"ConditionRow": "Row(d-interactive) > [DragHandle + MetricSelector(d-control) + OperatorSelector(d-control) + ValueInput(d-control) | ThresholdSlider(d-interactive) + RemoveButton]",
|
|
104
|
+
"TestSection": "Row(d-control) > [TestButton(d-interactive) + TestResult?(d-annotation)]"
|
|
105
|
+
},
|
|
106
|
+
"accessibility": {
|
|
107
|
+
"role": "form",
|
|
108
|
+
"aria-label": "Alert rule condition builder",
|
|
109
|
+
"keyboard": [
|
|
110
|
+
"Tab: move between condition row inputs and controls",
|
|
111
|
+
"Enter: confirm dropdown selection or trigger test",
|
|
112
|
+
"Arrow Up/Down: navigate dropdown options in metric and operator selectors",
|
|
113
|
+
"Delete/Backspace: remove focused condition row (with confirmation)",
|
|
114
|
+
"Ctrl+G: add a new nested group",
|
|
115
|
+
"Ctrl+Enter: run rule test",
|
|
116
|
+
"Escape: close open dropdowns or cancel pending removal"
|
|
117
|
+
],
|
|
118
|
+
"announcements": [
|
|
119
|
+
"Condition added: {metric} {operator} {value}",
|
|
120
|
+
"Condition removed from group",
|
|
121
|
+
"Logic toggled to {AND|OR} for group",
|
|
122
|
+
"Nested group added with {logic} operator",
|
|
123
|
+
"Rule test result: {pass|fail}, {matchCount} of {total} data points matched",
|
|
124
|
+
"Severity set to {level}"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ambient-status-ring",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Ambient Status Ring",
|
|
7
|
+
"description": "Always-on status indicator that conveys system state through color, motion, and shape — available as a circular ring, dot, horizontal bar, or ambient background glow.",
|
|
8
|
+
"category": "ambient",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2027",
|
|
11
|
+
"frontier",
|
|
12
|
+
"ambient",
|
|
13
|
+
"status",
|
|
14
|
+
"indicator",
|
|
15
|
+
"real-time",
|
|
16
|
+
"animation",
|
|
17
|
+
"system-health"
|
|
18
|
+
],
|
|
19
|
+
"components": [
|
|
20
|
+
"StatusRing",
|
|
21
|
+
"PulseAnimation",
|
|
22
|
+
"StateLabel",
|
|
23
|
+
"DetailTooltip"
|
|
24
|
+
],
|
|
25
|
+
"default_preset": "ring",
|
|
26
|
+
"presets": {
|
|
27
|
+
"ring": {
|
|
28
|
+
"description": "A thin 3px circular ring border that changes color and animation speed based on system state — idle is muted, active rotates, warning pulses amber, error pulses red rapidly",
|
|
29
|
+
"layout": {
|
|
30
|
+
"layout": "flex",
|
|
31
|
+
"atoms": "_inline-flex _items-center _justify-center _rounded-full"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"dot": {
|
|
35
|
+
"description": "A small 8px circle suitable for inline status indication next to labels or in table rows — color-coded with optional pulse animation for active/warning/error states",
|
|
36
|
+
"layout": {
|
|
37
|
+
"layout": "flex",
|
|
38
|
+
"atoms": "_inline-flex _items-center _gap-1.5"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"bar": {
|
|
42
|
+
"description": "A horizontal strip (4px tall, full container width) that acts as a status border along the top or bottom of a container — color and animation convey state",
|
|
43
|
+
"layout": {
|
|
44
|
+
"layout": "flex",
|
|
45
|
+
"atoms": "_w-full _h-1 _rounded-full"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"glow": {
|
|
49
|
+
"description": "A soft ambient background glow applied to a container — uses box-shadow inset or radial gradient to tint the container background with the status color at low opacity",
|
|
50
|
+
"layout": {
|
|
51
|
+
"layout": "flex",
|
|
52
|
+
"atoms": "_relative _rounded-xl _overflow-hidden"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"visual_brief": "In ring mode: a circular ring rendered as an SVG circle element with stroke-width: 3px and no fill. The ring's default size is 48px diameter (configurable via CSS custom property --ring-size). The stroke color and animation change based on system state: IDLE — stroke: var(--d-muted) at 40% opacity, no animation, static. ACTIVE — stroke: var(--d-accent), gentle clockwise rotation animation (the stroke has a 25% gap created via stroke-dasharray, and the gap rotates around the circle over an 8s linear infinite cycle), producing a subtle spinning effect. WARNING — stroke: var(--d-warning)/amber, pulse animation where the stroke opacity oscillates between 0.4 and 1.0 over a 2s ease-in-out infinite cycle. ERROR — stroke: var(--d-destructive)/red, rapid pulse animation (opacity 0.3→1→0.3 over 0.5s ease-in-out infinite), combined with a subtle scale pulse (scale 1→1.05→1) for urgency. SUCCESS — stroke: var(--d-success)/green, brief flash animation (opacity 0→1 over 150ms, hold 600ms, then transition to idle state over 300ms). All state transitions use a 400ms color crossfade so the ring never jumps between colors. In dot mode: an 8px circle (border-radius: 50%) with the same color states. Active state uses the pulse scale animation (1→1.3→1, 1.5s). Warning and error use the same pulse timings as ring mode. The dot can be paired with a StateLabel (text-xs, font-medium, same color as dot) to the right. In bar mode: a full-width horizontal rectangle, 4px tall, rounded-full. Color states match ring. Active state adds a shimmer animation — a 50%-width lighter band sweeps left-to-right across the bar every 3s. Warning/error pulses are opacity-based. In glow mode: the status color is applied as an inset box-shadow (0 0 60px 20px {status-color} at 8% opacity) on the container, creating a soft ambient tint. Active state gently oscillates the glow intensity (8%→15%→8% over 4s). Warning intensifies to 20% with 2s pulse. Error intensifies to 25% with 0.5s pulse. The glow is layered behind all content via a ::before pseudo-element with pointer-events: none.",
|
|
57
|
+
"layout_hints": {
|
|
58
|
+
"container": "inline for ring/dot, block for bar/glow",
|
|
59
|
+
"note": "The ring and dot presets are inline elements designed to sit next to text or within flex rows. The bar preset should be placed at the top or bottom edge of a container. The glow preset wraps an existing container and adds the ambient effect.",
|
|
60
|
+
"state_management": "The component accepts a 'state' prop with values: idle, active, warning, error, success. State transitions should be debounced — brief error flickers (under 500ms) should not trigger the error animation to avoid visual noise.",
|
|
61
|
+
"color_customization": "Each state maps to a CSS custom property: --status-idle, --status-active, --status-warning, --status-error, --status-success. These default to the d-token equivalents but can be overridden."
|
|
62
|
+
},
|
|
63
|
+
"default_layout": {
|
|
64
|
+
"layout": "flex",
|
|
65
|
+
"atoms": "_inline-flex _items-center _justify-center _rounded-full",
|
|
66
|
+
"slots": {
|
|
67
|
+
"status-ring": "The primary SVG element rendering the status ring. Structure: SVG (width/height: var(--ring-size, 48px), viewBox: '0 0 48 48') > circle (cx: 24, cy: 24, r: 21, fill: none, stroke-width: 3, stroke-linecap: round). The circle uses stroke-dasharray to create the rotating gap effect in active state: dasharray='50 16' (approximately 75% visible, 25% gap on a ~132px circumference). A CSS animation rotates the dashoffset for the spinning effect. The SVG has a drop-shadow filter applied during warning/error states: filter: drop-shadow(0 0 4px {status-color}). Transitions between states use: stroke 400ms ease-in-out, filter 400ms ease-in-out. The ring can optionally contain content in its center (e.g., an icon or number) via a foreignObject or an overlaid HTML element centered with absolute positioning.",
|
|
68
|
+
"pulse-animation": "Not a separate DOM element but a set of CSS keyframe animations applied to the StatusRing/Dot/Bar/Glow. Defined keyframes: @keyframes ring-rotate { to { stroke-dashoffset: -66 } } — 8s linear infinite for active. @keyframes pulse-opacity { 0%,100% { opacity: 0.4 } 50% { opacity: 1 } } — 2s for warning, 0.5s for error. @keyframes pulse-scale { 0%,100% { transform: scale(1) } 50% { transform: scale(1.05) } } — 0.5s for error only. @keyframes shimmer { 0% { transform: translateX(-100%) } 100% { transform: translateX(200%) } } — 3s for bar active. @keyframes glow-breathe { 0%,100% { opacity: 0.08 } 50% { opacity: 0.15 } } — 4s for glow active. All animations use will-change for GPU acceleration.",
|
|
69
|
+
"state-label": "Optional text label displayed beside the ring/dot. Renders in text-xs, font-medium with color matching the current status state. Content examples: 'Active', 'Warning: High latency', 'Error: Connection lost', 'Idle'. The label smoothly crossfades its color when state changes (color 400ms ease-in-out). In ring and glow presets, the label is hidden by default. In dot preset, it appears to the right of the dot with gap-1.5. In bar preset, it can be centered above or below the bar.",
|
|
70
|
+
"detail-tooltip": "A hover/focus-activated tooltip (d-annotation, rounded-lg, shadow-md, p-2, text-xs, max-w-48) that appears above the status indicator. Shows detailed state information: current state name, duration in current state ('Active for 2m 34s'), and optional detail message ('Processing 142 requests'). The tooltip has a small arrow/caret pointing to the indicator. It appears with a 200ms fade-in + translateY(-4px→0) transition on hover after a 500ms delay (to avoid accidental triggers). Disappears immediately on mouse leave with 150ms fade-out."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"accessibility": {
|
|
74
|
+
"role": "status",
|
|
75
|
+
"aria-label": "System status indicator",
|
|
76
|
+
"aria-live": "polite",
|
|
77
|
+
"announcements": [
|
|
78
|
+
"System status: {state}",
|
|
79
|
+
"Status changed from {previous_state} to {new_state}",
|
|
80
|
+
"Warning: {detail_message}",
|
|
81
|
+
"Error: {detail_message}",
|
|
82
|
+
"System returned to normal"
|
|
83
|
+
],
|
|
84
|
+
"keyboard": [
|
|
85
|
+
"Tab: focus the status indicator to hear current state via screen reader",
|
|
86
|
+
"Enter/Space: show detail tooltip when focused",
|
|
87
|
+
"Escape: dismiss detail tooltip"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"responsive": {
|
|
91
|
+
"mobile": "Ring size reduces to 36px. Dot remains 8px. Bar remains 4px full-width. Glow intensity reduced by 50% to save GPU. State labels hidden on mobile to save space — accessible via tooltip on tap. Tooltip triggered by tap instead of hover.",
|
|
92
|
+
"tablet": "Full ring size. All presets at standard dimensions. Tooltip on hover with 500ms delay."
|
|
93
|
+
},
|
|
94
|
+
"motion": {
|
|
95
|
+
"micro": {
|
|
96
|
+
"state-color-change": "stroke/background-color 400ms ease-in-out",
|
|
97
|
+
"tooltip-appear": "opacity 0→1 + translateY(-4px→0) 200ms ease-out after 500ms delay"
|
|
98
|
+
},
|
|
99
|
+
"transitions": {
|
|
100
|
+
"idle-to-active": "stroke color crossfade 400ms + rotation animation begins with 300ms ease-in ramp",
|
|
101
|
+
"active-to-idle": "rotation animation decelerates over 600ms + stroke color crossfade 400ms",
|
|
102
|
+
"any-to-error": "stroke color 200ms (faster for urgency) + pulse begins immediately",
|
|
103
|
+
"success-flash": "stroke → success color 150ms, hold 600ms, then crossfade to idle 300ms"
|
|
104
|
+
},
|
|
105
|
+
"ambient": {
|
|
106
|
+
"active-rotation": "stroke-dashoffset rotation 8s linear infinite",
|
|
107
|
+
"warning-pulse": "opacity 0.4→1→0.4 2s ease-in-out infinite",
|
|
108
|
+
"error-pulse": "opacity 0.3→1→0.3 + scale 1→1.05→1 0.5s ease-in-out infinite",
|
|
109
|
+
"bar-shimmer": "lighter band translateX sweep 3s ease-in-out infinite",
|
|
110
|
+
"glow-breathe": "shadow opacity 8%→15%→8% 4s ease-in-out infinite"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"interactions": [
|
|
114
|
+
"status-pulse",
|
|
115
|
+
"real-time-updates",
|
|
116
|
+
"animate-on-mount"
|
|
117
|
+
],
|
|
118
|
+
"composition": {
|
|
119
|
+
"AmbientStatusRing": "Wrapper(inline-flex|block, items-center) > [StatusRing(svg|div, animated, state-driven) + StateLabel?(text-xs, state-colored) + DetailTooltip?(d-annotation, on-hover)]",
|
|
120
|
+
"StatusRing": "SVG(viewBox, circle, stroke-animated) | Div(rounded-full|rounded-bar, bg-state-color, animated)",
|
|
121
|
+
"PulseAnimation": "CSS-keyframes(applied-to-parent, state-driven, GPU-accelerated)",
|
|
122
|
+
"StateLabel": "Span(text-xs, font-medium, color: state-color, transition: color 400ms)",
|
|
123
|
+
"DetailTooltip": "Annotation(d-annotation, rounded-lg, shadow-md, p-2, text-xs) > [StateName + Duration + DetailMessage?]"
|
|
124
|
+
}
|
|
125
|
+
}
|