@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,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "command-palette",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Command Palette",
|
|
7
|
+
"description": "Cmd+K style command search overlay with fuzzy search, categories, and keyboard navigation.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"icon"
|
|
14
|
+
],
|
|
15
|
+
"charts": []
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"components": [
|
|
19
|
+
"icon"
|
|
20
|
+
],
|
|
21
|
+
"default_preset": "standard",
|
|
22
|
+
"presets": {
|
|
23
|
+
"standard": {
|
|
24
|
+
"description": "Full command palette with categories and recent commands",
|
|
25
|
+
"components": [
|
|
26
|
+
"icon"
|
|
27
|
+
],
|
|
28
|
+
"layout": {
|
|
29
|
+
"layout": "stack",
|
|
30
|
+
"atoms": "_fixed _inset0 _flex _center _z[100] _bg[rgba(0,0,0,0.8)]",
|
|
31
|
+
"slots": {
|
|
32
|
+
"search": "Fuzzy search input",
|
|
33
|
+
"results": "Command list with categories",
|
|
34
|
+
"preview": "Optional command preview/help",
|
|
35
|
+
"recent": "Recent commands section"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"minimal": {
|
|
40
|
+
"description": "Simple search-only command palette",
|
|
41
|
+
"components": [
|
|
42
|
+
"icon"
|
|
43
|
+
],
|
|
44
|
+
"layout": {
|
|
45
|
+
"layout": "stack",
|
|
46
|
+
"atoms": "_fixed _inset0 _flex _center _z[100] _bg[rgba(0,0,0,0.8)]",
|
|
47
|
+
"slots": {
|
|
48
|
+
"search": "Search input",
|
|
49
|
+
"results": "Flat command list"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"default_layout": {
|
|
55
|
+
"layout": "stack",
|
|
56
|
+
"atoms": "_fixed _inset0 _flex _center _z[100]",
|
|
57
|
+
"slots": {
|
|
58
|
+
"search": "Fuzzy search input",
|
|
59
|
+
"results": "Command list",
|
|
60
|
+
"preview": "Command preview"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"features": [
|
|
64
|
+
"fuzzy-search",
|
|
65
|
+
"keyboard-navigation",
|
|
66
|
+
"command-categories",
|
|
67
|
+
"shortcut-hints",
|
|
68
|
+
"recent-commands"
|
|
69
|
+
],
|
|
70
|
+
"keyboard_shortcuts": {
|
|
71
|
+
"Ctrl+K": "Open palette",
|
|
72
|
+
"Cmd+K": "Open palette (Mac)",
|
|
73
|
+
"Escape": "Close palette",
|
|
74
|
+
"ArrowUp": "Previous command",
|
|
75
|
+
"ArrowDown": "Next command",
|
|
76
|
+
"Enter": "Execute command"
|
|
77
|
+
},
|
|
78
|
+
"visual_brief": "Centered modal overlay with a large search input at the top featuring a magnifying glass icon and placeholder text ('Type a command...'). Below the input, a scrollable results list shows matched commands grouped by category (Navigation, Actions, Settings) with muted category headers. Each result row displays an icon on the left, command name in medium weight, description in muted text, and a keyboard shortcut badge on the right. The currently selected item has a highlighted surface background. The overlay has a backdrop blur and rounded corners with a subtle border.",
|
|
79
|
+
"layout_hints": {
|
|
80
|
+
"result_priority": "Search input is the hero. Results should read like a decisive command list, not a generic menu. Category grouping must support scanning without dominating the surface.",
|
|
81
|
+
"overlay_balance": "The palette should feel compact and intentional. Do not let preview panels, badges, or secondary metadata turn it into a cluttered dialog.",
|
|
82
|
+
"shortcut_visibility": "Keyboard hints should support command discovery, but should not overpower the command label and description.",
|
|
83
|
+
"required_wrapping": "The d-palette element MUST be rendered inside d-modal[data-align=\"top\"] with a d-modal-backdrop sibling. Without the d-modal wrapper the palette renders as a top-level full-width strip pinned to the viewport. The d-modal provides positioning + max-width centering; d-modal-backdrop provides scrim + click-to-close. This is non-negotiable.",
|
|
84
|
+
"section_grouping": "Commands MUST be grouped into sections via d-palette-section eyebrow rows. The blueprint provides `navigation.command_palette.commands` with explicit `section` strings (e.g., \"Navigation\", \"Account\") — honor them. A flat alphabetical list is wrong.",
|
|
85
|
+
"row_anatomy": "Each d-palette-row has 3 slots: [Lucide icon (16px) | label (text-sm) | d-kbd hotkey (right-aligned mono)]. The hotkey slot can be empty for commands without bindings, but the slot rhythm must be preserved for visual alignment."
|
|
86
|
+
},
|
|
87
|
+
"responsive": {
|
|
88
|
+
"mobile": "Palette takes full screen width with slight horizontal margin. Results list fills available height. No keyboard shortcut badges shown. Touch-optimized row heights.",
|
|
89
|
+
"tablet": "Centered overlay at 560px width. Standard row heights with shortcut badges visible.",
|
|
90
|
+
"desktop": "Centered overlay at 640px max-width. Full keyboard navigation with shortcut badges. Preview panel optionally visible on the right for selected commands."
|
|
91
|
+
},
|
|
92
|
+
"motion": {
|
|
93
|
+
"micro": "Result hover, selection, and shortcut emphasis may animate subtly over 120-180ms.",
|
|
94
|
+
"transitions": "Palette open, close, and result filtering should feel immediate but polished: fade and slight scale or slide over 150-220ms."
|
|
95
|
+
},
|
|
96
|
+
"interactions": [
|
|
97
|
+
"animate-on-mount",
|
|
98
|
+
"keyboard-navigation",
|
|
99
|
+
"focus-trap",
|
|
100
|
+
"click-select"
|
|
101
|
+
],
|
|
102
|
+
"accessibility": {
|
|
103
|
+
"role": "dialog",
|
|
104
|
+
"aria-label": "Command palette",
|
|
105
|
+
"keyboard": [
|
|
106
|
+
"Arrow keys move between results.",
|
|
107
|
+
"Enter activates the selected command.",
|
|
108
|
+
"Escape closes the palette and returns focus to the invoking trigger."
|
|
109
|
+
],
|
|
110
|
+
"announcements": [
|
|
111
|
+
"Result count and current selection should be announced clearly as the query changes."
|
|
112
|
+
],
|
|
113
|
+
"focus_management": "When the palette opens, move focus to the search field. On close, restore focus to the invoking control or command trigger."
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "command-rail",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Command Rail",
|
|
7
|
+
"description": "Horizontal or stacked rail of short command snippets for CLI-driven workflows. Used to expose init, refresh, health, publish, or registry commands near the content they affect.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"CodeBlock",
|
|
14
|
+
"Button",
|
|
15
|
+
"Badge",
|
|
16
|
+
"icon"
|
|
17
|
+
],
|
|
18
|
+
"charts": []
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"components": [
|
|
22
|
+
"CodeBlock",
|
|
23
|
+
"Button",
|
|
24
|
+
"Badge",
|
|
25
|
+
"icon"
|
|
26
|
+
],
|
|
27
|
+
"contained": false,
|
|
28
|
+
"default_preset": "copyable",
|
|
29
|
+
"presets": {
|
|
30
|
+
"copyable": {
|
|
31
|
+
"description": "A compact command row with label, monospace command, optional context badge, and copy button.",
|
|
32
|
+
"components": [
|
|
33
|
+
"CodeBlock",
|
|
34
|
+
"Button",
|
|
35
|
+
"Badge",
|
|
36
|
+
"icon"
|
|
37
|
+
],
|
|
38
|
+
"layout": {
|
|
39
|
+
"layout": "stack",
|
|
40
|
+
"atoms": "_flex _col _gap3",
|
|
41
|
+
"slots": {
|
|
42
|
+
"command-label": "Short purpose label such as Init, Refresh, Health, or Publish.",
|
|
43
|
+
"command-snippet": "One-line monospace command with wrapping protection.",
|
|
44
|
+
"command-meta": "Optional shell, package manager, or target context.",
|
|
45
|
+
"copy-action": "Icon button with copied state."
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"rail": {
|
|
50
|
+
"description": "Horizontal rail of two to four commands. Each command remains compact and independently copyable.",
|
|
51
|
+
"components": [
|
|
52
|
+
"CodeBlock",
|
|
53
|
+
"Button",
|
|
54
|
+
"Badge",
|
|
55
|
+
"icon"
|
|
56
|
+
],
|
|
57
|
+
"layout": {
|
|
58
|
+
"layout": "grid",
|
|
59
|
+
"atoms": "_grid _gc1 _lg:gc2 _gap3",
|
|
60
|
+
"slots": {
|
|
61
|
+
"command-card": "Compact copyable command surface."
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"default_layout": {
|
|
67
|
+
"layout": "stack",
|
|
68
|
+
"atoms": "_flex _col _gap3",
|
|
69
|
+
"slots": {
|
|
70
|
+
"command-label": "Command purpose label",
|
|
71
|
+
"command-snippet": "One-line CLI command",
|
|
72
|
+
"command-meta": "Optional context badge",
|
|
73
|
+
"copy-action": "Copy button"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"visual_brief": "A practical command surface that feels crisp and developer-native without becoming a terminal dump. The command should be the hero of each row, with labels and copy controls kept compact. This pattern should make it obvious what to run next while preserving polish and accessibility.",
|
|
77
|
+
"responsive": {
|
|
78
|
+
"mobile": "Stack commands vertically. Commands wrap or horizontally scroll inside their own code region without forcing page overflow.",
|
|
79
|
+
"tablet": "Two-column command rail when commands are short.",
|
|
80
|
+
"desktop": "Horizontal or two-column rail. Align copy buttons consistently."
|
|
81
|
+
},
|
|
82
|
+
"layout_hints": {
|
|
83
|
+
"command_length": "Keep commands short enough to scan. Move long explanatory flags into docs or helper text.",
|
|
84
|
+
"copy_state": "Copy buttons should have an accessible label and a copied confirmation state.",
|
|
85
|
+
"context": "Use badges for shell, package manager, or project target only when they prevent ambiguity."
|
|
86
|
+
},
|
|
87
|
+
"motion": {
|
|
88
|
+
"micro": "Copy actions can briefly swap icon/state. Hover should sharpen the command surface without moving layout.",
|
|
89
|
+
"transitions": "Copied confirmation should be immediate and fade out after a short delay."
|
|
90
|
+
},
|
|
91
|
+
"interactions": [
|
|
92
|
+
"click-select",
|
|
93
|
+
"keyboard-navigation",
|
|
94
|
+
"hover-reveal"
|
|
95
|
+
],
|
|
96
|
+
"accessibility": {
|
|
97
|
+
"role": "region",
|
|
98
|
+
"aria-label": "Command rail",
|
|
99
|
+
"keyboard": [
|
|
100
|
+
"Copy buttons should be reachable after each command snippet."
|
|
101
|
+
],
|
|
102
|
+
"announcements": [
|
|
103
|
+
"Copied state should be announced with aria-live or an equivalent status pattern."
|
|
104
|
+
],
|
|
105
|
+
"focus_management": "Focus should not enter decorative code tokens one by one. One command and one copy action per item is enough."
|
|
106
|
+
},
|
|
107
|
+
"composition": {
|
|
108
|
+
"CommandRail": "StackOrGrid > CommandItem[]",
|
|
109
|
+
"CommandItem": "Surface > [Label + CodeSnippet + Meta? + CopyButton]",
|
|
110
|
+
"CopyButton": "Button(icon-only, aria-label, copied-status)"
|
|
111
|
+
},
|
|
112
|
+
"io": {
|
|
113
|
+
"consumes": [
|
|
114
|
+
"commands"
|
|
115
|
+
],
|
|
116
|
+
"produces": [
|
|
117
|
+
"copied-command"
|
|
118
|
+
],
|
|
119
|
+
"actions": [
|
|
120
|
+
"command-copy"
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "comment-thread",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Comment Thread",
|
|
7
|
+
"description": "Inline or sidebar comment discussions with reply threading, @mentions, reactions, and resolve functionality.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {
|
|
10
|
+
"mention-popup": "^1.0.0"
|
|
11
|
+
},
|
|
12
|
+
"styles": {},
|
|
13
|
+
"requires_core": {
|
|
14
|
+
"components": [
|
|
15
|
+
"Avatar",
|
|
16
|
+
"Button",
|
|
17
|
+
"Textarea",
|
|
18
|
+
"icon"
|
|
19
|
+
],
|
|
20
|
+
"charts": []
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"components": [
|
|
24
|
+
"Avatar",
|
|
25
|
+
"Button",
|
|
26
|
+
"Textarea",
|
|
27
|
+
"icon"
|
|
28
|
+
],
|
|
29
|
+
"default_preset": "sidebar",
|
|
30
|
+
"presets": {
|
|
31
|
+
"sidebar": {
|
|
32
|
+
"description": "Full thread display in aside panel",
|
|
33
|
+
"components": [
|
|
34
|
+
"Avatar",
|
|
35
|
+
"Button",
|
|
36
|
+
"Textarea",
|
|
37
|
+
"icon"
|
|
38
|
+
],
|
|
39
|
+
"layout": {
|
|
40
|
+
"layout": "column",
|
|
41
|
+
"atoms": "_flex _col _gap3 _p4",
|
|
42
|
+
"slots": {
|
|
43
|
+
"comments": "List of comment messages",
|
|
44
|
+
"reply-input": "New reply composer",
|
|
45
|
+
"actions": "Thread-level actions (resolve, delete)"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"inline": {
|
|
50
|
+
"description": "Compact thread attached to text selection",
|
|
51
|
+
"components": [
|
|
52
|
+
"Avatar",
|
|
53
|
+
"Button",
|
|
54
|
+
"Textarea",
|
|
55
|
+
"icon"
|
|
56
|
+
],
|
|
57
|
+
"layout": {
|
|
58
|
+
"layout": "popover",
|
|
59
|
+
"atoms": "_absolute _w[320px] _bg[var(--surface)] _shadow _r2 _border",
|
|
60
|
+
"slots": {
|
|
61
|
+
"anchor": "Connection line to commented text",
|
|
62
|
+
"comments": "Compact comment list",
|
|
63
|
+
"reply-input": "Inline reply field"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"resolved": {
|
|
68
|
+
"description": "Collapsed resolved thread indicator",
|
|
69
|
+
"components": [
|
|
70
|
+
"Avatar",
|
|
71
|
+
"Button",
|
|
72
|
+
"icon"
|
|
73
|
+
],
|
|
74
|
+
"layout": {
|
|
75
|
+
"layout": "row",
|
|
76
|
+
"atoms": "_flex _aic _gap2 _p2 _bg[var(--surface-raised)] _r1",
|
|
77
|
+
"slots": {
|
|
78
|
+
"indicator": "Resolved checkmark",
|
|
79
|
+
"summary": "Brief thread summary",
|
|
80
|
+
"expand": "Expand to view"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"default_layout": {
|
|
86
|
+
"layout": "column",
|
|
87
|
+
"atoms": "_flex _col _gap3",
|
|
88
|
+
"slots": {
|
|
89
|
+
"anchor": "Connection to commented content",
|
|
90
|
+
"comments": "List of comment messages with avatar, author, timestamp",
|
|
91
|
+
"reply-input": "Textarea for new replies",
|
|
92
|
+
"actions": "Resolve, delete, react actions",
|
|
93
|
+
"resolved-indicator": "Checkmark when thread is resolved"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"io": {
|
|
97
|
+
"consumes": [
|
|
98
|
+
"thread",
|
|
99
|
+
"currentUser"
|
|
100
|
+
],
|
|
101
|
+
"produces": [
|
|
102
|
+
"reply",
|
|
103
|
+
"resolve",
|
|
104
|
+
"react"
|
|
105
|
+
],
|
|
106
|
+
"actions": [
|
|
107
|
+
"add-reply",
|
|
108
|
+
"resolve-thread",
|
|
109
|
+
"reopen-thread",
|
|
110
|
+
"add-reaction",
|
|
111
|
+
"delete-comment",
|
|
112
|
+
"edit-comment"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"visual_brief": "Vertical thread of comment messages with an anchor line connecting to the commented content. Each comment shows a small avatar, author name in bold, timestamp in muted text, and the comment body. Replies indent slightly with a thin left border. A textarea input at the bottom allows new replies with a send button. A resolve button (checkmark icon) sits in the thread header. Resolved threads show a green checkmark and collapsed state. Sidebar preset renders as a right-side panel. Inline preset positions the thread as a popover near the anchor point.",
|
|
116
|
+
"responsive": {
|
|
117
|
+
"mobile": "Thread renders full-width as a bottom sheet. Avatar size reduces. Reply input is full-width. Thread collapses to show only the first comment with an expand button.",
|
|
118
|
+
"tablet": "Sidebar preset renders as a right panel at 320px width. Inline preset uses a popover.",
|
|
119
|
+
"desktop": "Standard sidebar or inline popover layout. Full avatars and comfortable spacing."
|
|
120
|
+
},
|
|
121
|
+
"layout_hints": {
|
|
122
|
+
"thread_role": "The thread should feel attached to the referenced content first and like a discussion surface second. Anchor cues, indentation, and resolve state should preserve that relationship.",
|
|
123
|
+
"reply_hierarchy": "Primary comment, replies, and thread actions should read in a clear top-to-bottom progression. Resolve controls should be easy to find without visually dominating the discussion.",
|
|
124
|
+
"inline_vs_sidebar": "Inline threads should stay compact and context-tethered, while sidebar threads may breathe more and show a fuller reply composer."
|
|
125
|
+
},
|
|
126
|
+
"motion": {
|
|
127
|
+
"micro": "Resolve state, hover actions, and reply affordances may fade or sharpen in gently as attention moves through the thread.",
|
|
128
|
+
"transitions": "Opening, collapsing, or resolving threads should feel calm and collaborative rather than abrupt or chatty."
|
|
129
|
+
},
|
|
130
|
+
"interactions": [
|
|
131
|
+
"animate-on-mount",
|
|
132
|
+
"stagger-children",
|
|
133
|
+
"real-time-updates",
|
|
134
|
+
"inline-edit",
|
|
135
|
+
"hover-reveal"
|
|
136
|
+
],
|
|
137
|
+
"accessibility": {
|
|
138
|
+
"role": "region",
|
|
139
|
+
"aria-label": "Comment thread",
|
|
140
|
+
"keyboard": [
|
|
141
|
+
"Thread messages, reply composer, and resolve actions should follow a predictable reading order.",
|
|
142
|
+
"Resolved and reopened states should remain clear to keyboard and assistive-technology users."
|
|
143
|
+
],
|
|
144
|
+
"announcements": [
|
|
145
|
+
"Author, timestamp, reply depth, and resolution state should be communicated semantically, not only through indentation or color."
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"composition": {
|
|
149
|
+
"CommentThread": "Container(d-surface, flex-col) > [AnchorLine? + CommentList + ReplyInput + ThreadActions]",
|
|
150
|
+
"CommentList": "List(flex-col, gap-3) > Comment[]",
|
|
151
|
+
"Comment": "Row > [Avatar(small) + Body(flex-col) > [AuthorName(font-bold) + Timestamp(text-muted) + CommentText] + ReactionBar?]",
|
|
152
|
+
"ReplyInput": "Row > [Textarea(d-control) + SendButton(d-interactive)]",
|
|
153
|
+
"ThreadActions": "Row(d-interactive) > [ResolveButton(icon: check) + DeleteButton?(variant: ghost)]"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "comparison-table",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Comparison Table",
|
|
7
|
+
"description": "A feature comparison grid for products, plans, or options with sticky headers, category grouping, check/cross indicators, and optional recommended-column highlighting.",
|
|
8
|
+
"category": "decision-support",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"decision-support",
|
|
12
|
+
"comparison",
|
|
13
|
+
"table",
|
|
14
|
+
"pricing",
|
|
15
|
+
"features",
|
|
16
|
+
"grid"
|
|
17
|
+
],
|
|
18
|
+
"components": [
|
|
19
|
+
"ComparisonGrid",
|
|
20
|
+
"ColumnHeader",
|
|
21
|
+
"FeatureRow",
|
|
22
|
+
"CategoryHeader",
|
|
23
|
+
"CheckIcon",
|
|
24
|
+
"CrossIcon",
|
|
25
|
+
"ValueCell",
|
|
26
|
+
"RecommendedBadge"
|
|
27
|
+
],
|
|
28
|
+
"default_preset": "standard",
|
|
29
|
+
"presets": {
|
|
30
|
+
"standard": {
|
|
31
|
+
"description": "Full comparison grid with all feature rows visible, sticky headers, and even row striping — the default view for pricing and feature comparison pages",
|
|
32
|
+
"layout": {
|
|
33
|
+
"layout": "grid",
|
|
34
|
+
"atoms": "_w100 _overflow-x-auto"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"highlight": {
|
|
38
|
+
"description": "Comparison grid with one recommended column visually emphasized via accent background tint and a badge above the header — draws user attention to the preferred option",
|
|
39
|
+
"layout": {
|
|
40
|
+
"layout": "grid",
|
|
41
|
+
"atoms": "_w100 _overflow-x-auto"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"toggle": {
|
|
45
|
+
"description": "Comparison grid with collapsible category sections that expand and collapse on click — reduces visual clutter for tables with many feature categories",
|
|
46
|
+
"layout": {
|
|
47
|
+
"layout": "grid",
|
|
48
|
+
"atoms": "_w100 _overflow-x-auto"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"visual_brief": "A structured data grid rendered as an HTML table with clean lines and generous whitespace. The top row contains column headers: the first column is blank or labeled 'Features' (160px min-width, sticky on horizontal scroll), and subsequent columns show product/plan names (text-base font-semibold) with a price beneath (text-lg font-bold for the amount, text-sm text-muted for the billing period). Headers have a white background, a 1px bottom border in border-strong, and are sticky (position: sticky, top: 0, z-index: 10) so they remain visible during vertical scroll. The first column (feature names) is also sticky (position: sticky, left: 0, z-index: 5) with a white background and a 1px right border, so it stays visible during horizontal scroll on mobile. The recommended column has a subtle accent background tint (accent color at 5% opacity) applied to its entire column — header cell, all value cells, and the bottom row. Above the recommended column header sits a RecommendedBadge: a small pill (accent background, white text, text-xs font-semibold, border-radius-full, padding 4px 12px) reading 'Recommended', centered above the column name. Feature rows alternate backgrounds: odd rows transparent, even rows surface-subtle (a faint gray tint). Each feature row is 48px tall with vertical centering. CategoryHeader rows span the full table width (colspan=all), have a bold text-sm label in text-default color, surface-muted background, 40px height, and 16px left padding. They act as section dividers grouping related features. Value cells can contain: a CheckIcon (a 20px accent-colored circle with a white 2px-stroke checkmark SVG centered inside), a CrossIcon (a 20px muted-gray circle with a white 2px-stroke X SVG centered inside), or a text/number value (text-sm, centered in the cell). Cells are centered both horizontally and vertically. The overall table has border-collapse: separate, border-spacing: 0, and a subtle outer border (1px solid border-muted) with border-radius-lg on the wrapping container. The container clips overflow with border-radius and allows horizontal scroll on narrow viewports.",
|
|
53
|
+
"layout_hints": {
|
|
54
|
+
"container": "card or section",
|
|
55
|
+
"note": "Wrap in a d-surface card with overflow-x auto for horizontal scrolling on mobile. The table element itself should have width: 100% with min-width based on column count. Columns should be evenly distributed after the sticky first column.",
|
|
56
|
+
"sticky_behavior": "Column headers: position sticky top 0 z-10 with bg-white. First column: position sticky left 0 z-5 with bg-white and right border. The intersection cell (top-left) needs z-15 to layer above both sticky axes.",
|
|
57
|
+
"recommended_column": "In the highlight preset, the recommended column cells get a background tint of color-mix(in srgb, var(--d-accent) 5%, transparent). This tint stacks with the alternating row color.",
|
|
58
|
+
"check_cross_icons": "Check: 20px circle, accent fill, white checkmark SVG (2px stroke). Cross: 20px circle, muted fill, white X SVG (2px stroke). Both centered in cell. Do NOT use emoji or text characters for these."
|
|
59
|
+
},
|
|
60
|
+
"default_layout": {
|
|
61
|
+
"layout": "grid",
|
|
62
|
+
"atoms": "_w100 _overflow-x-auto _border _border-muted _rounded-lg",
|
|
63
|
+
"slots": {
|
|
64
|
+
"comparison-grid": "The outer scrollable container wrapping the HTML table. Has overflow-x: auto for horizontal scroll on narrow viewports. Border: 1px solid border-muted, border-radius-lg with overflow: hidden to clip the table corners. The inner table has width: 100%, border-collapse: separate, border-spacing: 0. Columns are sized: first column 160px min-width (feature names), remaining columns equal-width (min 140px each). The table supports 2–6 comparison columns comfortably.",
|
|
65
|
+
"column-header": "Repeating slot — one per product/plan column, plus one for the feature-name column. Each header cell has padding: 16px, vertical-align: bottom, background: white, border-bottom: 2px solid border-strong. The feature-name header (first column) shows 'Features' in text-sm font-semibold text-muted, or is left blank. Product/plan headers show: product name (text-base font-semibold text-default), price amount on next line (text-lg font-bold text-default), billing period below price (text-sm text-muted, e.g., '/month'). Optional CTA button at the bottom of the header cell (small, primary variant for recommended, secondary for others). Sticky: position sticky, top: 0, z-index: 10. For the recommended column in highlight preset, the header cell gets the accent background tint and the RecommendedBadge above.",
|
|
66
|
+
"recommended-badge": "A small pill-shaped badge rendered above (or at the top of) the recommended column header cell. Background: accent color. Text: 'Recommended' in white, text-xs, font-semibold. Padding: 4px 12px. border-radius-full. Centered horizontally within the column. Only rendered in the highlight preset. The badge sits in a dedicated row above the main header row or is absolutely positioned -24px above the header cell.",
|
|
67
|
+
"category-header": "A full-width row that spans all columns (using colspan equal to total column count). Background: surface-muted. Height: 40px. Padding-left: 16px. Text: text-sm font-semibold text-default. Acts as a visual section divider (e.g., 'Core Features', 'Integrations', 'Support'). In the toggle preset, the category header has a chevron icon (12px, right-pointing when collapsed, down-pointing when expanded) to the left of the label, and clicking the row toggles visibility of all feature rows in that category. Transition: chevron rotation 200ms ease.",
|
|
68
|
+
"feature-row": "Repeating slot — one per feature being compared. A table row with 48px height, vertical-align: center. The first cell (feature name) has padding: 12px 16px, text-sm text-default, sticky left: 0, bg-white, border-right: 1px solid border-muted. Remaining cells are ValueCells, centered. Alternating row backgrounds: odd rows transparent, even rows surface-subtle (bg color-mix(in srgb, var(--d-surface) 50%, transparent)). Hover: entire row gets a subtle surface-hover tint. In the toggle preset, rows within a collapsed category have display: none with a height collapse transition.",
|
|
69
|
+
"value-cell": "A single comparison cell within a feature row. Padding: 12px. Text-align: center, vertical-align: middle. Content can be: (1) CheckIcon — a 20px-diameter circle with accent fill containing a white 2px-stroke checkmark SVG, (2) CrossIcon — a 20px-diameter circle with muted-gray fill containing a white 2px-stroke X SVG, (3) a text value (text-sm, text-default, e.g., '10 GB', 'Unlimited'), or (4) a dash '—' in text-muted for not-applicable. In the highlight preset, cells in the recommended column receive the accent background tint."
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"accessibility": {
|
|
73
|
+
"role": "table",
|
|
74
|
+
"aria-label": "Feature comparison table",
|
|
75
|
+
"announcements": [
|
|
76
|
+
"Comparing {count} options across {featureCount} features",
|
|
77
|
+
"{feature}: {product} has {value}",
|
|
78
|
+
"Category {name} expanded",
|
|
79
|
+
"Category {name} collapsed"
|
|
80
|
+
],
|
|
81
|
+
"keyboard": [
|
|
82
|
+
"Tab: move focus between interactive cells and CTA buttons",
|
|
83
|
+
"Arrow keys: navigate between cells in the grid",
|
|
84
|
+
"Enter: activate CTA button or toggle category section",
|
|
85
|
+
"Space: toggle category section in toggle preset",
|
|
86
|
+
"Home: jump to first cell in current row",
|
|
87
|
+
"End: jump to last cell in current row"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"responsive": {
|
|
91
|
+
"mobile": "Table scrolls horizontally with the first column (feature names) sticky at left. Column headers remain sticky at top. A subtle horizontal scroll indicator (fade gradient on the right edge) hints at additional columns. Column width reduces to 120px minimum. CTA buttons in headers stack below the price. Recommended badge shrinks to icon-only or smaller text.",
|
|
92
|
+
"tablet": "Full table visible for up to 3 columns without horizontal scroll. 4+ columns enable horizontal scroll. Sticky behavior on both axes. Touch-friendly row height increases to 52px. Category toggle targets enlarge to 44px height.",
|
|
93
|
+
"desktop": "Full grid displayed without horizontal scroll for up to 5 columns. Hover states on rows. Sticky headers on both axes. Smooth scroll behavior for long tables. Optional column highlight follows mouse for comparison assistance."
|
|
94
|
+
},
|
|
95
|
+
"motion": {
|
|
96
|
+
"micro": {
|
|
97
|
+
"row-hover": "background-color fade 120ms ease",
|
|
98
|
+
"check-appear": "scale 0→1 + opacity 0→1, 200ms ease-out (on initial render)",
|
|
99
|
+
"badge-hover": "translateY(-1px) 150ms ease"
|
|
100
|
+
},
|
|
101
|
+
"transitions": {
|
|
102
|
+
"category-toggle": "max-height 0↔auto + opacity 0↔1, 250ms ease-in-out for contained rows",
|
|
103
|
+
"chevron-rotate": "rotate 0→90deg (or reverse), 200ms ease",
|
|
104
|
+
"scroll-snap": "scroll-behavior smooth for programmatic column focus"
|
|
105
|
+
},
|
|
106
|
+
"ambient": {}
|
|
107
|
+
},
|
|
108
|
+
"interactions": [
|
|
109
|
+
"hover-reveal",
|
|
110
|
+
"animate-on-mount",
|
|
111
|
+
"keyboard-navigation"
|
|
112
|
+
],
|
|
113
|
+
"composition": {
|
|
114
|
+
"ComparisonGrid": "Container(d-data, overflow-x-auto, rounded-lg) > Table(full-width)",
|
|
115
|
+
"ColumnHeader": "HeaderRow(d-header, sticky-top) > [FeatureLabel + ProductHeader*(plan-name, price, CTA?)]",
|
|
116
|
+
"CategoryHeader": "FullWidthRow(d-header, colspan-all, surface-muted) > [ChevronIcon? + CategoryLabel]",
|
|
117
|
+
"FeatureRow": "Row(d-row, alternating-bg) > [FeatureNameCell(sticky-left) + ValueCell*(d-cell)]",
|
|
118
|
+
"ValueCell": "Cell(d-cell, centered) > [CheckIcon | CrossIcon | TextValue | Dash]",
|
|
119
|
+
"RecommendedBadge": "Pill(accent-bg, white-text, rounded-full) > 'Recommended'"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "contact-form",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Contact Form",
|
|
7
|
+
"description": "Working contact form with validation, honeypot spam protection, file attachment, and department dropdown.",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"Button",
|
|
14
|
+
"icon"
|
|
15
|
+
],
|
|
16
|
+
"charts": []
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"components": [
|
|
20
|
+
"Button",
|
|
21
|
+
"icon"
|
|
22
|
+
],
|
|
23
|
+
"default_preset": "standard",
|
|
24
|
+
"presets": {
|
|
25
|
+
"standard": {
|
|
26
|
+
"description": "Full contact form with all fields",
|
|
27
|
+
"components": [
|
|
28
|
+
"Button",
|
|
29
|
+
"icon"
|
|
30
|
+
],
|
|
31
|
+
"layout": {
|
|
32
|
+
"layout": "stack",
|
|
33
|
+
"atoms": "_flex _col _gap6 _maxw[600px] _mx[auto]",
|
|
34
|
+
"slots": {
|
|
35
|
+
"header": "Title and description",
|
|
36
|
+
"fields": "Form inputs (name, email, department, message)",
|
|
37
|
+
"attachments": "File attachment area",
|
|
38
|
+
"submit": "Submit button",
|
|
39
|
+
"success": "Success message after submission",
|
|
40
|
+
"info": "Contact info sidebar (optional)"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"split": {
|
|
45
|
+
"description": "Primary contact form with a dominant form column and a narrower companion panel for contact details, response expectations, and social links.",
|
|
46
|
+
"components": [
|
|
47
|
+
"Button",
|
|
48
|
+
"icon"
|
|
49
|
+
],
|
|
50
|
+
"layout": {
|
|
51
|
+
"layout": "grid",
|
|
52
|
+
"atoms": "_grid _gc1 _lg:gc2 _gap6",
|
|
53
|
+
"slots": {
|
|
54
|
+
"header": "Title and description at the top of the form column.",
|
|
55
|
+
"fields": "Main form inputs (name, email, department, message) in a stable vertical stack.",
|
|
56
|
+
"attachments": "Optional file attachment area below the message field.",
|
|
57
|
+
"submit": "Submit button anchored to the end of the form column.",
|
|
58
|
+
"success": "Success message that clearly replaces the form state after submission.",
|
|
59
|
+
"info": "Companion contact panel aligned to the top of the split layout with stacked contact channels, response window, and social actions."
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"compact": {
|
|
64
|
+
"description": "Simplified contact form with minimal fields",
|
|
65
|
+
"components": [
|
|
66
|
+
"Button",
|
|
67
|
+
"icon"
|
|
68
|
+
],
|
|
69
|
+
"layout": {
|
|
70
|
+
"layout": "stack",
|
|
71
|
+
"atoms": "_flex _col _gap4",
|
|
72
|
+
"slots": {
|
|
73
|
+
"fields": "Email and message only",
|
|
74
|
+
"submit": "Submit button"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"default_layout": {
|
|
80
|
+
"layout": "stack",
|
|
81
|
+
"atoms": "_flex _col _gap6 _maxw[600px] _mx[auto]",
|
|
82
|
+
"slots": {
|
|
83
|
+
"header": "Title and description",
|
|
84
|
+
"fields": "Form inputs",
|
|
85
|
+
"submit": "Submit button",
|
|
86
|
+
"success": "Success confirmation",
|
|
87
|
+
"info": "Contact info (optional)"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"visual_brief": "Vertically stacked form with a header (title and short description), input fields for name, email, department dropdown, subject, and a multiline message textarea. An optional file attachment area with a paperclip icon sits below the textarea. A honeypot field is hidden from visual display. The submit button is primary-colored at the bottom. Success state replaces the form with a checkmark icon and confirmation message. Compact preset removes the department dropdown and attachment area. An optional contact-info sidebar shows phone, email, and address.",
|
|
91
|
+
"visual_brief": "Vertically stacked form with a header (title and short description), input fields for name, email, department dropdown, subject, and a multiline message textarea. An optional file attachment area with a paperclip icon sits below the textarea. A honeypot field is hidden from visual display. The submit button is primary-colored at the bottom. Success state replaces the form with a checkmark icon and confirmation message. Compact preset removes the department dropdown and attachment area. Split preset pairs the primary form with a narrower companion panel for phone, email, location, response expectations, and social actions; that panel stays aligned to the top of the layout rather than stretching to match the full form height. Contact channels inside the companion panel render as stacked rows with a small circular icon chip on the left and a two-line label/value block on the right. Social or outreach actions at the bottom should render as unmistakable buttons or action rows with icon, label, and clear hit area rather than loose inline text links.",
|
|
92
|
+
"layout_hints": {
|
|
93
|
+
"field_grouping": "Keep related fields in a stable vertical rhythm and avoid splitting short contact forms into overly wide multi-column arrangements.",
|
|
94
|
+
"submit_zone": "The primary submit action should feel anchored to the end of the form, not float disconnected from the field stack.",
|
|
95
|
+
"success_state": "Success confirmation should replace or clearly supersede the form state so the user understands the submission is complete.",
|
|
96
|
+
"split_ratio": "When the optional info panel is shown beside the form, keep the form column visually dominant and the companion panel narrower. Do not use an equal-width split unless the route contract explicitly calls for it.",
|
|
97
|
+
"info_stack": "Contact info in the companion panel should read as a stacked list of channels or facts, not as a wrapped inline row that leaves large empty card areas behind.",
|
|
98
|
+
"sidebar_alignment": "The optional info panel should align to the top of the split layout and size to its content. It should not stretch just to match the form column height.",
|
|
99
|
+
"channel_presentation": "Icon-bearing contact rows should align on a shared baseline with the icon wrapped in a compact circular or rounded chip. Avoid icons floating above labels or drifting independently of the channel text.",
|
|
100
|
+
"social_actions": "Companion-panel social links should read as explicit actions with button treatment or clear action rows. Do not leave them as loose text labels with ambiguous hit areas."
|
|
101
|
+
},
|
|
102
|
+
"responsive": {
|
|
103
|
+
"mobile": "Full-width form with stacked fields. Submit button goes full-width. Contact info section moves below the form. File attachment uses native file picker.",
|
|
104
|
+
"tablet": "Form centered at 500px max-width. Contact info appears beside the form if space allows, but split preset may still collapse to a single column if the companion panel would feel cramped.",
|
|
105
|
+
"desktop": "Form at 500px max-width centered or beside a contact info panel. Split preset uses a dominant form column with a compact top-aligned companion panel instead of a fully stretched equal split. Companion actions should stack or wrap into clearly separated buttons rather than forming a loose text row."
|
|
106
|
+
},
|
|
107
|
+
"motion": {
|
|
108
|
+
"micro": "Inputs and submit actions use calm hover and focus transitions. Attachment zones may highlight softly on drag-over.",
|
|
109
|
+
"transitions": "Validation and success states should fade or expand gently over 180-250ms without shifting the whole layout abruptly."
|
|
110
|
+
},
|
|
111
|
+
"interactions": [
|
|
112
|
+
"animate-on-mount",
|
|
113
|
+
"inline-edit",
|
|
114
|
+
"keyboard-navigation"
|
|
115
|
+
],
|
|
116
|
+
"accessibility": {
|
|
117
|
+
"role": "form",
|
|
118
|
+
"aria-label": "Contact form",
|
|
119
|
+
"keyboard": [
|
|
120
|
+
"Tab moves through fields, attachment controls, and submit actions in order.",
|
|
121
|
+
"Enter should submit only when the submit button or an intentional submit control is active."
|
|
122
|
+
],
|
|
123
|
+
"announcements": [
|
|
124
|
+
"Validation errors should be announced with field-specific explanations.",
|
|
125
|
+
"Successful submission should be announced clearly."
|
|
126
|
+
],
|
|
127
|
+
"focus_management": "Move focus to the first invalid field on failed validation, and move focus to the success confirmation heading or message after successful submission."
|
|
128
|
+
},
|
|
129
|
+
"composition": {
|
|
130
|
+
"ContactForm": "Stack(d-section) > [Header + FieldStack(d-control) + AttachmentZone? + SubmitAction + SuccessState?]",
|
|
131
|
+
"SplitContactForm": "ResponsiveSplit(form-dominant) > [FormColumn(ContactForm) + InfoColumn(d-surface, top-aligned) > [ContactChannel* + ResponseNote + ActionRow*]]",
|
|
132
|
+
"ContactChannel": "Row(compact-icon-chip + label-value stack) > [IconChip + ChannelBody > [Label + Value]]",
|
|
133
|
+
"CompanionAction": "ActionRow(d-interactive or explicit action pill) > [Icon + Label + optional direction hint]"
|
|
134
|
+
}
|
|
135
|
+
}
|