@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,132 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "unlock-gate",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Unlock Gate",
|
|
7
|
+
"description": "Paywall/tier gate component that blurs or hides content and prompts subscription. Shows required tier and quick subscribe flow.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"Button",
|
|
14
|
+
"Card",
|
|
15
|
+
"Badge",
|
|
16
|
+
"icon"
|
|
17
|
+
],
|
|
18
|
+
"charts": []
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"components": [
|
|
22
|
+
"Button",
|
|
23
|
+
"Card",
|
|
24
|
+
"Badge",
|
|
25
|
+
"icon"
|
|
26
|
+
],
|
|
27
|
+
"default_preset": "blur",
|
|
28
|
+
"presets": {
|
|
29
|
+
"blur": {
|
|
30
|
+
"description": "Blurred preview with unlock overlay",
|
|
31
|
+
"components": [
|
|
32
|
+
"Button",
|
|
33
|
+
"Card",
|
|
34
|
+
"icon"
|
|
35
|
+
],
|
|
36
|
+
"layout": {
|
|
37
|
+
"layout": "overlay",
|
|
38
|
+
"atoms": "_relative _overflow[hidden]",
|
|
39
|
+
"slots": {
|
|
40
|
+
"preview": "Blurred content preview",
|
|
41
|
+
"overlay": "Unlock prompt overlay",
|
|
42
|
+
"tier-info": "Required tier badge",
|
|
43
|
+
"cta": "Subscribe button"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"solid": {
|
|
48
|
+
"description": "Solid opaque overlay that fully hides content behind a lock icon and subscribe prompt",
|
|
49
|
+
"components": [
|
|
50
|
+
"Button",
|
|
51
|
+
"icon"
|
|
52
|
+
],
|
|
53
|
+
"layout": {
|
|
54
|
+
"layout": "center",
|
|
55
|
+
"atoms": "_aspect[16/9] _bgmuted/5 _flex _col _center _r3",
|
|
56
|
+
"slots": {
|
|
57
|
+
"message": "Unlock prompt text",
|
|
58
|
+
"tier-info": "Required tier",
|
|
59
|
+
"cta": "Subscribe button"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"teaser": {
|
|
64
|
+
"description": "Partial content visible with fade to gate",
|
|
65
|
+
"components": [
|
|
66
|
+
"Button",
|
|
67
|
+
"Card",
|
|
68
|
+
"icon"
|
|
69
|
+
],
|
|
70
|
+
"layout": {
|
|
71
|
+
"layout": "stack",
|
|
72
|
+
"atoms": "_relative",
|
|
73
|
+
"slots": {
|
|
74
|
+
"teaser-content": "Visible portion of content",
|
|
75
|
+
"fade": "Gradient fade to gate",
|
|
76
|
+
"gate": "Subscribe prompt"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"default_layout": {
|
|
82
|
+
"layout": "overlay",
|
|
83
|
+
"atoms": "_relative",
|
|
84
|
+
"slots": {
|
|
85
|
+
"preview": "Content preview",
|
|
86
|
+
"overlay": "Gate overlay",
|
|
87
|
+
"cta": "Unlock action"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"io": {
|
|
91
|
+
"produces": [
|
|
92
|
+
"unlock-click",
|
|
93
|
+
"subscribe-click"
|
|
94
|
+
],
|
|
95
|
+
"consumes": [
|
|
96
|
+
"tier-data",
|
|
97
|
+
"preview-content"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"visual_brief": "Content paywall overlay. The blur preset applies a strong CSS blur filter to the protected content behind the gate, with a centered overlay card showing a lock icon, the required tier name as a badge, a message ('Subscribe to unlock this content'), and a 'Subscribe' CTA button. The solid preset replaces blurred content with a solid surface that hides the content entirely, showing the same lock icon, tier, and CTA. The teaser preset shows the first portion of content (a paragraph or image preview) unblurred, then fades into the gate overlay with the subscribe prompt.",
|
|
101
|
+
"responsive": {
|
|
102
|
+
"mobile": "Gate overlay takes full content width. CTA button full-width. Tier badge and lock icon centered. Blur amount may reduce for performance.",
|
|
103
|
+
"tablet": "Standard overlay. CTA button at natural width. Comfortable padding.",
|
|
104
|
+
"desktop": "Overlay centered over the content area. CTA button with hover effects. Teaser shows more content before the fade."
|
|
105
|
+
},
|
|
106
|
+
"layout_hints": {
|
|
107
|
+
"gate_priority": "The user should immediately understand what is locked, why it is locked, and what unlock action is available. The gate must preserve that hierarchy before any surrounding decoration.",
|
|
108
|
+
"teaser_balance": "Preview content should entice without confusing the boundary between visible and gated material. Keep the transition into the gate unmistakable.",
|
|
109
|
+
"tier_context": "Required tier information should sit close to the CTA and the value proposition, not drift into secondary metadata territory."
|
|
110
|
+
},
|
|
111
|
+
"motion": {
|
|
112
|
+
"micro": "Lock states, CTA focus, and overlay emphasis may sharpen subtly, but the gate should not feel manipulative or overly animated.",
|
|
113
|
+
"transitions": "Unlock prompts and teaser fades should feel premium and clear, preserving trust while still communicating exclusivity."
|
|
114
|
+
},
|
|
115
|
+
"interactions": [
|
|
116
|
+
"animate-on-mount"
|
|
117
|
+
],
|
|
118
|
+
"accessibility": {
|
|
119
|
+
"role": "region",
|
|
120
|
+
"aria-label": "Unlock gate",
|
|
121
|
+
"keyboard": [
|
|
122
|
+
"The primary unlock or subscribe action should be reachable immediately after the explanatory content."
|
|
123
|
+
],
|
|
124
|
+
"announcements": [
|
|
125
|
+
"Locked state, required tier, and available unlock action should be exposed semantically so the gate remains understandable without blur or overlay styling alone."
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"composition": {
|
|
129
|
+
"UnlockGate": "Overlay(d-section, relative) > [BlurredContent(d-surface, blur) + GateOverlay]",
|
|
130
|
+
"GateOverlay": "Card(d-surface, centered, elevated) > [LockIcon(d-annotation, large) + Message(heading4) + TierBadge(d-annotation) + SubscribeButton(d-interactive, variant: primary)]"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "usage-meter",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Usage Meter",
|
|
7
|
+
"description": "Quota and usage visualization with color-coded thresholds, animated progress indicators, category breakdowns, and contextual upgrade prompts when nearing limits.",
|
|
8
|
+
"category": "billing",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"billing",
|
|
12
|
+
"usage",
|
|
13
|
+
"quota",
|
|
14
|
+
"meter",
|
|
15
|
+
"upgrade",
|
|
16
|
+
"threshold"
|
|
17
|
+
],
|
|
18
|
+
"components": [
|
|
19
|
+
"UsageBar",
|
|
20
|
+
"UsageGauge",
|
|
21
|
+
"ThresholdMarker",
|
|
22
|
+
"UpgradePrompt",
|
|
23
|
+
"UsageBreakdown",
|
|
24
|
+
"PeriodSelector"
|
|
25
|
+
],
|
|
26
|
+
"default_preset": "bar",
|
|
27
|
+
"presets": {
|
|
28
|
+
"bar": {
|
|
29
|
+
"description": "Horizontal bar meter showing filled portion with threshold markers, percentage label, and contextual color shifts at warning/critical thresholds",
|
|
30
|
+
"layout": {
|
|
31
|
+
"layout": "stack",
|
|
32
|
+
"atoms": "_flex _col _gap3 _py3 _w-full"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"radial": {
|
|
36
|
+
"description": "Circular gauge arc rendering usage as a swept ring with the same threshold color logic — percentage in the center, label below, suitable for dashboard cards",
|
|
37
|
+
"layout": {
|
|
38
|
+
"layout": "stack",
|
|
39
|
+
"atoms": "_flex _col _aic _jcc _gap2 _aspect-square"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"breakdown": {
|
|
43
|
+
"description": "Stacked horizontal bar with category segments, a color legend, and per-category values — shows how different usage types contribute to the total quota",
|
|
44
|
+
"layout": {
|
|
45
|
+
"layout": "stack",
|
|
46
|
+
"atoms": "_flex _col _gap4 _py3 _w-full"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"visual_brief": "Horizontal bar meter on a light track (8px tall, rounded-full corners). The filled portion starts from the left and represents current usage as a proportion of the total quota. Color of the filled portion changes by threshold: under 70% uses the theme accent color (blue/indigo), 70-90% shifts to yellow/amber with a subtle warm glow, above 90% turns red with a slow pulsing glow animation on the bar edge (box-shadow pulse). Small triangular threshold markers sit below the bar at configurable points (e.g. 70%, 90%, 100%) as tiny upward-pointing carets with thin labels. To the right of the bar, two values display: the percentage in bold (e.g. '73%') and the absolute values below in muted text (e.g. '7,300 / 10,000 API calls'). A PeriodSelector sits above as small segmented control (This Month / Last Month / Custom). The radial preset renders a circular gauge: a 270-degree arc on a circular track with the same color thresholds, the percentage number large and centered inside the ring, and the label ('API Calls') below the number. The gauge ring is 8px thick with rounded caps. The breakdown preset shows a single stacked horizontal bar where each category is a different-colored segment (e.g. blue for API calls, purple for storage, green for bandwidth). Below the bar, a legend row lists each category with a color dot, category name, and individual usage value. When total usage exceeds 80%, an UpgradePrompt card appears below: a bordered card with a small lightning-bolt icon, a headline like 'Approaching your plan limit', a one-line description, and a primary 'Upgrade Plan' button. The prompt card has a subtle gradient left-border in the warning color.",
|
|
51
|
+
"default_layout": {
|
|
52
|
+
"layout": "stack",
|
|
53
|
+
"atoms": "_flex _col _gap3 _py3 _w-full",
|
|
54
|
+
"slots": {
|
|
55
|
+
"period-selector": "A small segmented control or tab group at the top-left for selecting the billing period. Options: 'Current Period', 'Previous Period', 'Custom Range'. The selected option is filled with accent color; others are outlined. Custom opens a date range picker popover. Compact size, does not dominate the layout.",
|
|
56
|
+
"usage-bar": "The primary usage visualization. A horizontal bar with a light neutral track (rounded-full, 8px height). Filled portion animates from left to right on mount with an ease-out transition. Color is determined by threshold: accent (0-69%), warning/amber (70-89%), destructive/red (90-100%). At 90%+ the filled edge has a pulsing glow. ThresholdMarker components render as small triangular carets below the track at configured percentage points with tiny labels. To the right of the bar: percentage value in semibold text and absolute usage below in caption-size muted text (e.g. '7,300 / 10,000').",
|
|
57
|
+
"upgrade-prompt": "Conditional slot that appears only when usage exceeds the upgrade threshold (default 80%). Renders as a compact card with a colored left border (amber at 80%, red at 95%). Contains: a small icon (lightning bolt or warning triangle), a bold one-line headline, a short description explaining the limit, and a primary CTA button ('Upgrade Plan' or 'View Plans'). The card animates in with a slide-up + fade when the threshold is crossed. Includes a small dismiss X button."
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"responsive": {
|
|
61
|
+
"mobile": "Bar fills full width. Percentage and absolute values move below the bar instead of to the right. Radial gauge scales down but maintains minimum 120px diameter for readability. Breakdown legend stacks vertically as a list. Upgrade prompt is full-width.",
|
|
62
|
+
"tablet": "Standard layout. Bar has comfortable width with values to the right. Radial gauge at natural size. Breakdown legend is a horizontal row.",
|
|
63
|
+
"desktop": "Full layout with generous spacing. Multiple usage meters can sit side by side in a grid. Radial gauge fits well in dashboard card layouts. Upgrade prompt aligns below the meter with max-width constraint."
|
|
64
|
+
},
|
|
65
|
+
"layout_hints": {
|
|
66
|
+
"meter_role": "Treat this as one self-contained quota instrument. Parent pricing or billing sections own the surrounding narrative and comparison layout.",
|
|
67
|
+
"threshold_readability": "The current value, threshold markers, and quota context should read in one quick scan without forcing the user to decode color alone.",
|
|
68
|
+
"prompt_discipline": "Upgrade prompts should appear as supportive escalation below the meter rather than hijacking the entire surface."
|
|
69
|
+
},
|
|
70
|
+
"motion": {
|
|
71
|
+
"micro": {
|
|
72
|
+
"bar-hover": "bar height 8px→10px + shadow-sm 150ms ease-out",
|
|
73
|
+
"threshold-marker-hover": "scale(1→1.3) + opacity label 0→1 150ms ease-out",
|
|
74
|
+
"upgrade-dismiss": "opacity 1→0 + translateY(0→-8px) 200ms ease-in"
|
|
75
|
+
},
|
|
76
|
+
"transitions": {
|
|
77
|
+
"bar-fill": "width 0→target% 800ms ease-out on mount",
|
|
78
|
+
"color-shift": "background-color 400ms ease-in-out on threshold change",
|
|
79
|
+
"gauge-sweep": "stroke-dashoffset 0→target 1000ms ease-out on mount",
|
|
80
|
+
"upgrade-prompt-enter": "translateY(12px)→0 + opacity 0→1 400ms ease-out"
|
|
81
|
+
},
|
|
82
|
+
"ambient": {
|
|
83
|
+
"critical-pulse": "box-shadow glow scale(1→1.05→1) + opacity(0.6→1→0.6) 2s ease-in-out infinite when usage >=90%"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"interactions": [
|
|
87
|
+
"animate-on-mount"
|
|
88
|
+
],
|
|
89
|
+
"composition": {
|
|
90
|
+
"UsageMeter": "Container(d-surface, flex-col, gap-3) > [PeriodSelector(d-control, segmented) + UsageBar(d-data, threshold-color) > [FilledBar(d-data, animated-width, color: threshold) + ThresholdMarker(d-annotation, caret-below)* + ValueLabel(d-data, mono)] + UpgradePrompt?(d-interactive, conditional: usage>80%)]",
|
|
91
|
+
"UsageBar": "Track(d-data, rounded-full, h-2) > [Fill(color: threshold, width: percentage) + ThresholdMarker(d-annotation, position: absolute)*]",
|
|
92
|
+
"UsageGauge": "SVG(d-data, aspect-square) > [TrackArc(d-data, 270deg, muted) + FillArc(d-data, sweep: percentage, color: threshold) + CenterLabel(d-data, percentage, large)]",
|
|
93
|
+
"UsageBreakdown": "Container(d-data, flex-col) > [StackedBar(d-data) > Segment(color: category)* + Legend(d-annotation) > LegendItem(d-annotation, dot + label + value)*]",
|
|
94
|
+
"UpgradePrompt": "Card(d-interactive, border-left: warning-color, flex-row) > [Icon(d-annotation) + Content(flex-col) > [Headline(d-data, bold) + Description(d-annotation, muted)] + CTAButton(d-interactive, variant: primary)]"
|
|
95
|
+
},
|
|
96
|
+
"accessibility": {
|
|
97
|
+
"role": "meter",
|
|
98
|
+
"aria-label": "Usage quota meter",
|
|
99
|
+
"keyboard": [
|
|
100
|
+
"Tab: move focus between period selector, usage bar, and upgrade prompt",
|
|
101
|
+
"Arrow Left/Right: change selected period in period selector",
|
|
102
|
+
"Enter: activate upgrade prompt CTA button",
|
|
103
|
+
"Escape: dismiss upgrade prompt"
|
|
104
|
+
],
|
|
105
|
+
"announcements": [
|
|
106
|
+
"Current usage: {percentage}% — {used} of {total} {unit}",
|
|
107
|
+
"Warning: usage has exceeded {threshold}% of your quota",
|
|
108
|
+
"Critical: usage at {percentage}%, approaching plan limit",
|
|
109
|
+
"Period changed to {period_label}",
|
|
110
|
+
"Upgrade prompt: {headline}"
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "vacancy-tracker",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Vacancy Tracker",
|
|
7
|
+
"description": "Empty units tracker with vacancy rate, days vacant, lost revenue, listing status, and applicant pipeline.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"Button",
|
|
14
|
+
"icon",
|
|
15
|
+
"Badge"
|
|
16
|
+
],
|
|
17
|
+
"charts": []
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"components": [
|
|
21
|
+
"Button",
|
|
22
|
+
"icon",
|
|
23
|
+
"Badge"
|
|
24
|
+
],
|
|
25
|
+
"default_preset": "standard",
|
|
26
|
+
"presets": {
|
|
27
|
+
"standard": {
|
|
28
|
+
"description": "Full vacancy tracker with rate metrics, vacant unit list, applicant pipeline, and listing status",
|
|
29
|
+
"components": [
|
|
30
|
+
"Button",
|
|
31
|
+
"icon",
|
|
32
|
+
"Badge"
|
|
33
|
+
],
|
|
34
|
+
"layout": {
|
|
35
|
+
"layout": "stack",
|
|
36
|
+
"atoms": "_flex _col _gap6",
|
|
37
|
+
"slots": {
|
|
38
|
+
"header": "Title, total vacant count",
|
|
39
|
+
"summary": "Vacancy rate, days vacant avg, lost revenue",
|
|
40
|
+
"units": "Vacant unit list",
|
|
41
|
+
"pipeline": "Applicants in pipeline",
|
|
42
|
+
"marketing": "Listing status per unit"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"mini": {
|
|
47
|
+
"description": "Compact vacancy widget for dashboard",
|
|
48
|
+
"components": [
|
|
49
|
+
"Badge"
|
|
50
|
+
],
|
|
51
|
+
"layout": {
|
|
52
|
+
"layout": "stack",
|
|
53
|
+
"atoms": "_flex _col _gap3 _p4",
|
|
54
|
+
"slots": {
|
|
55
|
+
"header": "Title",
|
|
56
|
+
"rate": "Vacancy rate",
|
|
57
|
+
"lost": "Lost revenue"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"default_layout": {
|
|
63
|
+
"layout": "stack",
|
|
64
|
+
"atoms": "_flex _col _gap6",
|
|
65
|
+
"slots": {
|
|
66
|
+
"header": "Title",
|
|
67
|
+
"summary": "Vacancy metrics",
|
|
68
|
+
"units": "Vacant unit list",
|
|
69
|
+
"pipeline": "Applicants"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"visual_brief": "Dashboard panel for tracking vacant units. Header with 'Vacancy Tracker' title. A summary metrics row shows total vacant units, overall vacancy rate (percentage with color coding), total days vacant across all units, and estimated lost revenue. Below, a list of vacant unit cards, each showing unit number, property name, days vacant, last rent amount, listing status badge (listed, unlisted, pending), and an applicant pipeline indicator (number of applicants at each stage). The mini preset condenses to a single summary card showing vacancy rate and count only.",
|
|
73
|
+
"responsive": {
|
|
74
|
+
"mobile": "Summary metrics in a 2x2 grid. Vacant unit cards stack full-width. Pipeline indicators simplified to counts only.",
|
|
75
|
+
"tablet": "Metrics in a row. Two-column card grid for vacant units.",
|
|
76
|
+
"desktop": "Full dashboard panel with metrics bar, unit cards in a grid, and detailed pipeline indicators."
|
|
77
|
+
},
|
|
78
|
+
"layout_hints": {
|
|
79
|
+
"vacancy_priority": "Lead with the cost and urgency of vacancy first: count, rate, days vacant, and lost revenue. Unit-level and applicant detail should support that portfolio read.",
|
|
80
|
+
"pipeline_context": "Applicant pipeline indicators should feel attached to each vacant unit so leasing momentum is easy to interpret at a glance.",
|
|
81
|
+
"dashboard_role": "This pattern is an operational monitoring surface. Keep the metrics and unit cards tightly coupled rather than letting the panel sprawl into separate analytics blocks."
|
|
82
|
+
},
|
|
83
|
+
"motion": {
|
|
84
|
+
"micro": "Vacancy status and pipeline indicators may brighten subtly on hover and focus, especially when a unit needs attention.",
|
|
85
|
+
"transitions": "Leasing-stage or vacancy-state changes should feel clear and professional, reinforcing operational continuity rather than gamified motion."
|
|
86
|
+
},
|
|
87
|
+
"interactions": [
|
|
88
|
+
"animate-on-mount"
|
|
89
|
+
],
|
|
90
|
+
"accessibility": {
|
|
91
|
+
"role": "region",
|
|
92
|
+
"aria-label": "Vacancy tracker",
|
|
93
|
+
"keyboard": [
|
|
94
|
+
"Summary metrics, vacant unit rows or cards, and leasing actions should be reachable in a stable top-to-bottom order."
|
|
95
|
+
],
|
|
96
|
+
"announcements": [
|
|
97
|
+
"Vacancy counts, days vacant, and applicant pipeline context should be exposed semantically so urgency is understandable without color or chart treatment alone."
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"composition": {
|
|
101
|
+
"VacancyTracker": "Container(d-section, flex-col, gap-4) > [MetricsRow + VacantUnitList + ApplicantPipeline?]",
|
|
102
|
+
"MetricsRow": "Grid(d-data, responsive: 2/4-col) > [VacancyRate(d-surface, mono-data) + AvgDaysVacant(d-surface) + LostRevenue(d-surface, color: destructive)]",
|
|
103
|
+
"VacantUnitList": "Table(d-data) > VacantUnitRow[]",
|
|
104
|
+
"VacantUnitRow": "Row(d-data-row) > [UnitNumber + Property + DaysVacant(mono-data) + ListingStatus(d-annotation) + ApplicantCount + ActionButton(d-interactive)]"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "valuation-chart",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Valuation Chart",
|
|
7
|
+
"description": "A time-series valuation chart that renders historical price data with optional projection, confidence bands, benchmark overlays, and annotated event markers for critical moments like funding rounds or product launches.",
|
|
8
|
+
"category": "finance",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"finance",
|
|
12
|
+
"chart",
|
|
13
|
+
"valuation",
|
|
14
|
+
"time-series",
|
|
15
|
+
"dataviz",
|
|
16
|
+
"projection",
|
|
17
|
+
"benchmark"
|
|
18
|
+
],
|
|
19
|
+
"components": [
|
|
20
|
+
"ChartCanvas",
|
|
21
|
+
"PriceLine",
|
|
22
|
+
"ConfidenceBand",
|
|
23
|
+
"ProjectionDashed",
|
|
24
|
+
"BenchmarkLine",
|
|
25
|
+
"EventMarker",
|
|
26
|
+
"ValueCallout",
|
|
27
|
+
"AxisLabels",
|
|
28
|
+
"CrosshairTooltip"
|
|
29
|
+
],
|
|
30
|
+
"default_preset": "line",
|
|
31
|
+
"presets": {
|
|
32
|
+
"line": {
|
|
33
|
+
"description": "Classic single-line price history with time on the x-axis and valuation on the y-axis. Clean and readable, ideal for investor dashboards showing straightforward price evolution without forecast noise.",
|
|
34
|
+
"layout": {
|
|
35
|
+
"layout": "chart",
|
|
36
|
+
"atoms": "_w100 _relative _overflow-hidden"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"area": {
|
|
40
|
+
"description": "Area-fill chart with projection extension and confidence band shading showing forecast uncertainty. The filled area beneath the price line uses a gradient fade, while the forecast extends as a dashed line with shaded confidence envelope.",
|
|
41
|
+
"layout": {
|
|
42
|
+
"layout": "chart",
|
|
43
|
+
"atoms": "_w100 _relative _overflow-hidden"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"candlestick": {
|
|
47
|
+
"description": "OHLC candlestick rendering with wicks and bodies colored green (up) or red (down). Includes volume histogram below and moving-average overlays. Intended for detailed trader views rather than summary dashboards.",
|
|
48
|
+
"layout": {
|
|
49
|
+
"layout": "chart",
|
|
50
|
+
"atoms": "_w100 _relative _overflow-hidden"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"visual_brief": "A wide time-series chart rendered as an SVG inside a d-surface card with chart padding of 24px. The x-axis runs along the bottom with tick labels showing dates (Jan '24, Apr '24, Jul '24, ...) in d-annotation muted text. The y-axis runs along the left with currency-formatted value ticks ($10M, $20M, $50M, ...) in mono-data tabular figures. A subtle horizontal grid-line pattern spans the plot area with very low opacity. The PriceLine is the primary element: a 2px solid stroke in the primary accent color, drawn as a smooth monotone curve connecting historical data points. Each data point has an invisible hover target (12px radius) that reveals a CrosshairTooltip showing the exact date and value. When projection is enabled, the line transitions mid-chart to a dashed pattern (4-4 dash array) with 60% opacity, extending into the future portion of the x-axis, which has a subtle background tint distinguishing historical from projected zones. The ConfidenceBand renders behind the projected line as a shaded polygon with gradient fill (15% opacity primary at edges, 5% at center) representing ±1 standard deviation. A BenchmarkLine (e.g., S&P 500 or peer index) overlays as a thin 1px dashed stroke in a muted secondary color with its own label at the right edge. EventMarkers appear as vertical 1px lines from top to bottom of the plot area at key moments, each topped with a small circular badge (icon: rocket for launch, dollar for funding, flag for milestone) and a rotated label. Hovering an event expands a card with the event description and delta impact. A ValueCallout card anchors to the top-right corner showing the current/latest value in large semibold figures, the absolute delta from a chosen baseline, and a trend arrow (up/down) colored success/destructive. On area preset, the space under PriceLine fills with a vertical gradient from 30% primary at top fading to 0% at the x-axis. On candlestick preset, each trading period renders as a vertical body (filled rectangle) with wicks (thin vertical lines) showing high/low; green for close-above-open, red for close-below-open.",
|
|
55
|
+
"layout_hints": {
|
|
56
|
+
"container": "d-surface card with chart padding",
|
|
57
|
+
"note": "Charts need generous padding to prevent label collisions with chart edges. Minimum 24px padding on all sides, 48px on left for y-axis labels and 32px on bottom for x-axis labels.",
|
|
58
|
+
"axis_labels": "Use d-annotation text-xs muted for all axis labels. Rotate x-axis labels -30deg only if they would otherwise overlap. Always include unit indicators ($, %, shares) in axis titles.",
|
|
59
|
+
"projection_distinction": "Historical vs projected zones MUST be visually distinct: different line stroke (solid vs dashed), different background tint for the projected x-axis region (very subtle), and always a vertical 'today' line separating them.",
|
|
60
|
+
"event_markers": "EventMarkers use d-annotation[data-event-type]. Icon badges at top of vertical line, labels rotated 45deg or stacked vertically to avoid overlap. Click opens detail card. Limit to 8 visible markers to prevent clutter.",
|
|
61
|
+
"value_callout": "ValueCallout is a d-surface card floating in top-right with absolute positioning, backdrop-blur, and z-index above chart. Contains current value (text-2xl semibold mono-data), delta (text-sm with trend arrow), and timeframe label."
|
|
62
|
+
},
|
|
63
|
+
"default_layout": {
|
|
64
|
+
"layout": "chart",
|
|
65
|
+
"atoms": "_w100 _relative _overflow-hidden _p6",
|
|
66
|
+
"slots": {
|
|
67
|
+
"chart-canvas": "The main SVG plot area responsible for rendering all chart primitives. Contains axis grid lines, price paths, benchmark overlays, and event markers. Must be responsive to container width and maintain aspect ratio (typically 16:9 or 2:1). Uses viewBox for resolution-independent rendering.",
|
|
68
|
+
"price-line": "The primary data series rendered as an SVG path element using a monotone curve interpolator. Historical segment uses solid 2px stroke in primary color. Projected segment (if present) uses dashed 4-4 stroke pattern at 60% opacity. Anchors to data points with invisible hover targets.",
|
|
69
|
+
"confidence-band": "Shaded polygon behind the projection line representing forecast uncertainty. Rendered as an SVG path with gradient fill (primary color at low opacity). Only visible when projection data includes upper/lower bounds.",
|
|
70
|
+
"benchmark-line": "Optional overlay line (or multiple lines) showing comparison index like S&P 500, category average, or peer valuation. Rendered as thin 1px dashed stroke in muted secondary color with right-edge label identifying the benchmark name.",
|
|
71
|
+
"event-markers": "Repeating slot — one EventMarker per annotated event. Each marker is a vertical 1px line spanning plot height with a circular icon badge at top (24px diameter) and rotated text label. Clickable to reveal full event description in a floating card.",
|
|
72
|
+
"axis-labels": "X-axis tick labels (dates) along bottom edge and y-axis tick labels (values with currency formatting) along left edge. Uses d-annotation small-caps muted styling with tabular-nums for alignment.",
|
|
73
|
+
"value-callout": "Floating card anchored top-right corner showing current/latest valuation in large figures, delta from baseline, percent change, trend arrow, and timeframe selector. Uses backdrop-blur and elevated z-index.",
|
|
74
|
+
"crosshair-tooltip": "On-hover element that follows cursor along the price line, displaying vertical guide line plus a floating tooltip card with exact date, value, benchmark comparison at that point, and any nearby event annotations."
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"accessibility": {
|
|
78
|
+
"role": "img",
|
|
79
|
+
"aria-label": "Valuation chart showing price history and projections",
|
|
80
|
+
"announcements": [
|
|
81
|
+
"Current valuation: {value}, change of {delta} over {timeframe}",
|
|
82
|
+
"Event: {eventName} on {date} with impact {delta}",
|
|
83
|
+
"Projection shows range from {low} to {high} by {futureDate}"
|
|
84
|
+
],
|
|
85
|
+
"keyboard": [
|
|
86
|
+
"Left/Right arrows: move crosshair along time axis",
|
|
87
|
+
"Up/Down arrows: toggle between visible data series",
|
|
88
|
+
"Enter: open detail card for currently highlighted event",
|
|
89
|
+
"Escape: dismiss tooltip or detail card",
|
|
90
|
+
"T: toggle between absolute and percent-change axis"
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"responsive": {
|
|
94
|
+
"mobile": "Chart height reduces to 240px minimum. BenchmarkLine overlays hidden by default, toggle-able. EventMarker labels collapse to icon-only with tap-to-expand. ValueCallout repositions to inline above chart rather than floating overlay. Axis tick density reduced.",
|
|
95
|
+
"tablet": "Full chart with dual-finger pinch-to-zoom on x-axis. EventMarker labels rotate -45deg for space. ValueCallout remains floating but shrinks to compact mode."
|
|
96
|
+
},
|
|
97
|
+
"motion": {
|
|
98
|
+
"micro": {
|
|
99
|
+
"line-draw": "stroke-dashoffset animate from full-length to 0 over 800ms ease-out on mount",
|
|
100
|
+
"crosshair-follow": "x-position transform 80ms linear",
|
|
101
|
+
"tooltip-fade": "opacity 0 to 1 120ms ease-out"
|
|
102
|
+
},
|
|
103
|
+
"transitions": {
|
|
104
|
+
"data-update": "path morph with d-attribute interpolation 400ms ease-in-out",
|
|
105
|
+
"zoom-change": "viewBox interpolation 300ms ease-out",
|
|
106
|
+
"preset-swap": "cross-fade 250ms ease-in-out between line, area, and candlestick renderings"
|
|
107
|
+
},
|
|
108
|
+
"ambient": {
|
|
109
|
+
"projection-shimmer": "confidence-band opacity 0.1 to 0.2 to 0.1 over 3s ease-in-out infinite",
|
|
110
|
+
"current-value-pulse": "ValueCallout subtle scale 1.0 to 1.02 to 1.0 on data refresh 600ms ease-out"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"interactions": [
|
|
114
|
+
"animate-on-mount",
|
|
115
|
+
"hover-tooltip",
|
|
116
|
+
"real-time-updates"
|
|
117
|
+
],
|
|
118
|
+
"composition": {
|
|
119
|
+
"ValuationChart": "Section(d-section, d-surface) > [ChartCanvas + ValueCallout]",
|
|
120
|
+
"ChartCanvas": "SVG(responsive, viewBox) > [GridLines + AxisLabels + PriceLine + ConfidenceBand? + ProjectionDashed? + BenchmarkLine[] + EventMarker[] + CrosshairTooltip]",
|
|
121
|
+
"PriceLine": "Path(d-annotation, data-series) > [HistoricalSegment + ProjectionSegment?]",
|
|
122
|
+
"ConfidenceBand": "Polygon(d-annotation, data-band) > [GradientFill]",
|
|
123
|
+
"EventMarker": "Marker(d-annotation, data-event, data-interactive) > [VerticalLine + IconBadge + Label + DetailCard?]",
|
|
124
|
+
"ValueCallout": "Card(d-surface, floating, backdrop-blur) > [CurrentValue + DeltaChip + TrendArrow + TimeframeSelector]"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "version-history",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Version History",
|
|
7
|
+
"description": "Document revision timeline with version preview, diff view, and restore functionality. Shows auto-saves and named checkpoints.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"Avatar",
|
|
14
|
+
"Button",
|
|
15
|
+
"icon"
|
|
16
|
+
],
|
|
17
|
+
"charts": []
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"components": [
|
|
21
|
+
"Avatar",
|
|
22
|
+
"Button",
|
|
23
|
+
"icon"
|
|
24
|
+
],
|
|
25
|
+
"default_preset": "sidebar",
|
|
26
|
+
"presets": {
|
|
27
|
+
"sidebar": {
|
|
28
|
+
"description": "Vertical timeline in aside panel",
|
|
29
|
+
"components": [
|
|
30
|
+
"Avatar",
|
|
31
|
+
"Button",
|
|
32
|
+
"icon"
|
|
33
|
+
],
|
|
34
|
+
"layout": {
|
|
35
|
+
"layout": "column",
|
|
36
|
+
"atoms": "_flex _col _hfull",
|
|
37
|
+
"slots": {
|
|
38
|
+
"header": "Panel header with close button",
|
|
39
|
+
"timeline": "Chronological version list",
|
|
40
|
+
"actions": "Restore and compare buttons"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"modal": {
|
|
45
|
+
"description": "Full-screen history viewer with preview pane",
|
|
46
|
+
"components": [
|
|
47
|
+
"Avatar",
|
|
48
|
+
"Button",
|
|
49
|
+
"icon"
|
|
50
|
+
],
|
|
51
|
+
"layout": {
|
|
52
|
+
"layout": "split",
|
|
53
|
+
"atoms": "_grid _grid-cols[300px_1fr] _h[80vh]",
|
|
54
|
+
"slots": {
|
|
55
|
+
"timeline": "Left pane with version list",
|
|
56
|
+
"preview": "Right pane with version content",
|
|
57
|
+
"diff-toggle": "Switch between content and diff view",
|
|
58
|
+
"actions": "Restore and download buttons"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"compact": {
|
|
63
|
+
"description": "Condensed dropdown version selector with current version label and version list menu",
|
|
64
|
+
"components": [
|
|
65
|
+
"Button",
|
|
66
|
+
"icon"
|
|
67
|
+
],
|
|
68
|
+
"layout": {
|
|
69
|
+
"layout": "dropdown",
|
|
70
|
+
"atoms": "_relative",
|
|
71
|
+
"slots": {
|
|
72
|
+
"trigger": "Current version display with dropdown arrow",
|
|
73
|
+
"menu": "Version list dropdown"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"default_layout": {
|
|
79
|
+
"layout": "column",
|
|
80
|
+
"atoms": "_flex _col",
|
|
81
|
+
"slots": {
|
|
82
|
+
"timeline": "Chronological version list grouped by date",
|
|
83
|
+
"preview": "Selected version content view",
|
|
84
|
+
"compare": "Diff view toggle between versions",
|
|
85
|
+
"restore": "Restore to selected version button"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"io": {
|
|
89
|
+
"consumes": [
|
|
90
|
+
"versions",
|
|
91
|
+
"currentVersionId"
|
|
92
|
+
],
|
|
93
|
+
"produces": [
|
|
94
|
+
"version-select",
|
|
95
|
+
"restore"
|
|
96
|
+
],
|
|
97
|
+
"actions": [
|
|
98
|
+
"select-version",
|
|
99
|
+
"restore-version",
|
|
100
|
+
"create-checkpoint",
|
|
101
|
+
"download-version",
|
|
102
|
+
"compare-versions"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"visual_brief": "Sidebar or modal panel showing a chronological list of document versions grouped by date. Each version entry shows a timestamp, an auto-save or named-checkpoint label, the author avatar and name, and a brief summary of changes. Selecting a version shows a preview of the document at that point. A compare toggle enables diff view between the selected version and the current or another version. A 'Restore' button allows reverting to the selected version with a confirmation dialog. The sidebar preset renders as a right-side panel. The modal preset opens as a centered modal. The compact preset shows a condensed timeline with fewer details.",
|
|
106
|
+
"responsive": {
|
|
107
|
+
"mobile": "Version history opens as a full-screen overlay. Timeline entries are compact. Preview replaces the timeline view (back button to return). Restore button at the bottom.",
|
|
108
|
+
"tablet": "Sidebar at 320px width with timeline and inline preview. Compare mode uses a bottom sheet.",
|
|
109
|
+
"desktop": "Sidebar with timeline, adjacent preview panel, and inline diff view. Full author details and change summaries visible."
|
|
110
|
+
},
|
|
111
|
+
"layout_hints": {
|
|
112
|
+
"timeline_priority": "Lead with chronology and authorship. Restore or compare actions should feel secondary until a version is actively selected.",
|
|
113
|
+
"preview_attachment": "The selected version preview or diff should feel attached to the highlighted entry so users never lose track of which revision they are viewing.",
|
|
114
|
+
"compact_mode": "Compact mode should keep the current version and recent named checkpoints most visible rather than trying to render the full timeline density."
|
|
115
|
+
},
|
|
116
|
+
"motion": {
|
|
117
|
+
"micro": "Selected entries may sharpen or glow subtly, and restore/compare actions may acknowledge focus clearly without distracting from the timeline.",
|
|
118
|
+
"transitions": "Entry selection, preview swaps, and compare-mode toggles should preserve the sense of chronological navigation rather than feeling like unrelated modal jumps."
|
|
119
|
+
},
|
|
120
|
+
"interactions": [
|
|
121
|
+
"animate-on-mount"
|
|
122
|
+
],
|
|
123
|
+
"accessibility": {
|
|
124
|
+
"role": "region",
|
|
125
|
+
"aria-label": "Version history",
|
|
126
|
+
"keyboard": [
|
|
127
|
+
"Timeline entries should be keyboard navigable in chronological order, with clear focus and selected state.",
|
|
128
|
+
"Restore and compare actions should be exposed without requiring pointer hover."
|
|
129
|
+
],
|
|
130
|
+
"announcements": [
|
|
131
|
+
"Version author, timestamp, and change summary should be announced together so revision choice remains understandable without visual grouping."
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"composition": {
|
|
135
|
+
"VersionHistory": "Panel(d-section, flex-col) > [VersionList + DiffView?]",
|
|
136
|
+
"VersionList": "List(d-data, flex-col) > VersionEntry[]",
|
|
137
|
+
"VersionEntry": "Row(d-data-row, hoverable, active?: selected) > [Avatar(small) + EntryInfo > [AuthorName(font-medium) + Timestamp(text-muted, mono-data)] + VersionLabel?(d-annotation) + RestoreButton?(d-interactive)]",
|
|
138
|
+
"DiffView": "Panel(d-surface, split) > [OldContent + NewContent(highlighted-changes)]"
|
|
139
|
+
}
|
|
140
|
+
}
|