@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,190 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "form",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Form",
|
|
7
|
+
"description": "Structured form with labeled field groups, validation states, and action buttons",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"patterns": {},
|
|
10
|
+
"styles": {},
|
|
11
|
+
"requires_core": {
|
|
12
|
+
"components": [
|
|
13
|
+
"Card",
|
|
14
|
+
"Input",
|
|
15
|
+
"Select",
|
|
16
|
+
"Switch",
|
|
17
|
+
"Checkbox",
|
|
18
|
+
"Button",
|
|
19
|
+
"Label",
|
|
20
|
+
"Textarea",
|
|
21
|
+
"RadioGroup"
|
|
22
|
+
],
|
|
23
|
+
"charts": []
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"components": [
|
|
27
|
+
"Card",
|
|
28
|
+
"Input",
|
|
29
|
+
"Select",
|
|
30
|
+
"Switch",
|
|
31
|
+
"Checkbox",
|
|
32
|
+
"Button",
|
|
33
|
+
"Label",
|
|
34
|
+
"Textarea",
|
|
35
|
+
"RadioGroup"
|
|
36
|
+
],
|
|
37
|
+
"default_preset": "settings",
|
|
38
|
+
"presets": {
|
|
39
|
+
"settings": {
|
|
40
|
+
"description": "Vertical stack of sections, each with a title/description on the left and form fields on the right (2-column layout per section). Save button at bottom.",
|
|
41
|
+
"components": [
|
|
42
|
+
"Card",
|
|
43
|
+
"Input",
|
|
44
|
+
"Select",
|
|
45
|
+
"Switch",
|
|
46
|
+
"Button",
|
|
47
|
+
"Label",
|
|
48
|
+
"Textarea"
|
|
49
|
+
],
|
|
50
|
+
"layout": {
|
|
51
|
+
"layout": "stack",
|
|
52
|
+
"atoms": "_flex _col _gap6 _p4",
|
|
53
|
+
"slots": {
|
|
54
|
+
"section": "Card with 2-column layout: labels left, fields right",
|
|
55
|
+
"section-title": "Section heading with _heading4 and description with _bodysm _fgmuted",
|
|
56
|
+
"field-group": "Grid of form fields with _grid _gc1 _lg:gc2 _gap4",
|
|
57
|
+
"actions": "Bottom-aligned save/cancel buttons"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"creation": {
|
|
62
|
+
"description": "Single-column wizard-like form with sections as steps. Progress indicator at top, prev/next buttons.",
|
|
63
|
+
"components": [
|
|
64
|
+
"Card",
|
|
65
|
+
"Input",
|
|
66
|
+
"Select",
|
|
67
|
+
"Checkbox",
|
|
68
|
+
"Button",
|
|
69
|
+
"Label",
|
|
70
|
+
"Textarea"
|
|
71
|
+
],
|
|
72
|
+
"layout": {
|
|
73
|
+
"layout": "stack",
|
|
74
|
+
"atoms": "_flex _col _gap6 _p4 _mw[640px] _mx[auto]",
|
|
75
|
+
"slots": {
|
|
76
|
+
"progress": "Step indicator bar at top showing current/total steps",
|
|
77
|
+
"step-card": "Single Card containing current step fields",
|
|
78
|
+
"step-title": "Step heading with _heading4",
|
|
79
|
+
"field-group": "Vertical stack of form fields with _flex _col _gap4",
|
|
80
|
+
"navigation": "Prev/Next buttons at bottom"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"structured": {
|
|
85
|
+
"description": "Dense form with fieldsets, collapsible sections, and inline validation. Good for complex data entry.",
|
|
86
|
+
"components": [
|
|
87
|
+
"Card",
|
|
88
|
+
"Input",
|
|
89
|
+
"Select",
|
|
90
|
+
"Checkbox",
|
|
91
|
+
"RadioGroup",
|
|
92
|
+
"Button",
|
|
93
|
+
"Label",
|
|
94
|
+
"Textarea"
|
|
95
|
+
],
|
|
96
|
+
"layout": {
|
|
97
|
+
"layout": "stack",
|
|
98
|
+
"atoms": "_flex _col _gap4 _p4",
|
|
99
|
+
"slots": {
|
|
100
|
+
"fieldset": "Collapsible Card section with border and legend-style title",
|
|
101
|
+
"field-row": "Horizontal field groups with _grid _gc2 _gap4 for dense layout",
|
|
102
|
+
"inline-validation": "Error text below fields with _textsm _fgdestructive",
|
|
103
|
+
"actions": "Button group with save, cancel, reset"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"visual_brief": "Well-organized form with clear field grouping under section headings. Each section has a heading in heading4 weight and a muted description line, followed by form fields arranged in a one- or two-column grid. Labels sit above their respective fields (stacked, never side-by-side) in small medium-weight text. Input fields use consistent height (~40px), rounded corners (r2), and border styling that brightens on focus with a primary-color ring. Select dropdowns match input styling with a custom chevron. Textareas have a taller minimum height (6rem). Required fields show a small asterisk. Validation errors display below the field in small destructive-red text. The form is constrained to 640px max-width for readability. Action buttons (Save, Cancel) sit at the bottom right, separated by a top border or spacing from the form fields.",
|
|
109
|
+
"responsive": {
|
|
110
|
+
"mobile": "Single column for all field groups. Fields go full-width. Action buttons stack vertically at full width, primary on top. Section headings go full-width above fields. Padding reduces to p3.",
|
|
111
|
+
"tablet": "Two-column field grid activates for shorter fields (name, email). Textareas span full width. Action buttons stay horizontal, right-aligned.",
|
|
112
|
+
"desktop": "Full two-column grid for field groups. Settings preset shows section label column on the left, fields on the right. Generous p4 spacing. Inline validation visible without layout shift."
|
|
113
|
+
},
|
|
114
|
+
"motion": {
|
|
115
|
+
"micro": {
|
|
116
|
+
"field-focus": "border-color transition 150ms ease-out",
|
|
117
|
+
"button-press": "scale(0.97) 100ms ease-out",
|
|
118
|
+
"error-shake": "translateX(-4px, 4px, -2px, 2px, 0) 300ms ease-out on validation error"
|
|
119
|
+
},
|
|
120
|
+
"transitions": {
|
|
121
|
+
"validation-error": "fade + slideDown 200ms ease-out for error message",
|
|
122
|
+
"success-submit": "fade-out form + fade-in success message 300ms ease-out"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"interactions": [
|
|
126
|
+
"animate-on-mount",
|
|
127
|
+
"inline-edit",
|
|
128
|
+
"keyboard-navigation"
|
|
129
|
+
],
|
|
130
|
+
"accessibility": {
|
|
131
|
+
"role": "form",
|
|
132
|
+
"aria-label": "Form",
|
|
133
|
+
"keyboard": [
|
|
134
|
+
"Tab navigates between fields",
|
|
135
|
+
"Shift+Tab navigates backwards between fields",
|
|
136
|
+
"Enter submits when focus is on submit button",
|
|
137
|
+
"Escape cancels or closes modal forms",
|
|
138
|
+
"Arrow keys navigate within radio groups",
|
|
139
|
+
"Space toggles checkboxes and switches"
|
|
140
|
+
],
|
|
141
|
+
"announcements": [
|
|
142
|
+
"Validation errors announced on field blur",
|
|
143
|
+
"Required field indicator announced on focus",
|
|
144
|
+
"Success confirmation announced on submit",
|
|
145
|
+
"Field group label announced on section entry"
|
|
146
|
+
],
|
|
147
|
+
"focus_management": "First invalid field receives focus on failed validation. On successful submit, focus moves to success message or next logical action.",
|
|
148
|
+
"labels": "Every input has an associated <label> element with matching htmlFor/id. Labels are always visible — no placeholder-only fields.",
|
|
149
|
+
"validation": "Error messages are linked to inputs via aria-describedby. Invalid fields use aria-invalid='true'. Error text uses role='alert' for screen reader announcement."
|
|
150
|
+
},
|
|
151
|
+
"layout_hints": {
|
|
152
|
+
"label_position": "stacked",
|
|
153
|
+
"note": "Labels go ABOVE their field, not side-by-side. This prevents the label-field gap problem at wide viewports.",
|
|
154
|
+
"max_width": "Form content should be constrained to max-width: 40rem (640px). Full-width forms are hard to read.",
|
|
155
|
+
"section_grouping": "Group related fields under section headers. Use a SINGLE d-surface card for the entire form, OR no card at all. Do NOT wrap each section in its own separate card.",
|
|
156
|
+
"icon_placement": "Section header icons render INLINE with the heading text (icon left of heading, vertically centered), not floating outside the card border.",
|
|
157
|
+
"select_styling": "Apply d-control to ALL form elements including <select>. Add appearance: none and a custom SVG chevron for consistent styling.",
|
|
158
|
+
"textarea": "Textareas should have min-height: 6rem to visually differentiate from single-line inputs."
|
|
159
|
+
},
|
|
160
|
+
"default_layout": {
|
|
161
|
+
"layout": "stack",
|
|
162
|
+
"atoms": "_flex _col _gap6 _p4",
|
|
163
|
+
"slots": {
|
|
164
|
+
"section": "Card with labeled field groups",
|
|
165
|
+
"section-title": "Section heading with description",
|
|
166
|
+
"field-group": "Grid of form fields",
|
|
167
|
+
"actions": "Save/cancel buttons"
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"io": {
|
|
171
|
+
"consumes": [
|
|
172
|
+
"data"
|
|
173
|
+
],
|
|
174
|
+
"produces": [
|
|
175
|
+
"form-data"
|
|
176
|
+
],
|
|
177
|
+
"actions": [
|
|
178
|
+
"save",
|
|
179
|
+
"cancel",
|
|
180
|
+
"reset"
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"composition": {
|
|
184
|
+
"Form": "Container(d-section, flex-col, gap-6, max-width) > [FormSection[] + ActionButtons]",
|
|
185
|
+
"FormSection": "Card(d-surface) > [SectionTitle(heading4) + SectionDescription?(text-muted) + FieldGroup(d-control, grid: 1/2-col)]",
|
|
186
|
+
"FieldGroup": "Grid > Field[]",
|
|
187
|
+
"Field": "Stack(flex-col) > [Label(d-control, font-medium) + Input(d-control) + ValidationError?(d-annotation, text-destructive)]",
|
|
188
|
+
"ActionButtons": "Row(d-interactive, gap-2) > [SaveButton(variant: primary) + CancelButton(variant: ghost)]"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
3
|
+
"id": "founder-comic-strip",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Founder Comic Strip",
|
|
7
|
+
"description": "Campaign story section rendered as bold comic/manual panels for maker origin, product problem, prototype breakthrough, and launch ask.",
|
|
8
|
+
"category": "campaign",
|
|
9
|
+
"tags": [
|
|
10
|
+
"campaign",
|
|
11
|
+
"story",
|
|
12
|
+
"founder",
|
|
13
|
+
"comic",
|
|
14
|
+
"launch",
|
|
15
|
+
"trust"
|
|
16
|
+
],
|
|
17
|
+
"components": [
|
|
18
|
+
"Media",
|
|
19
|
+
"Badge",
|
|
20
|
+
"Button",
|
|
21
|
+
"icon"
|
|
22
|
+
],
|
|
23
|
+
"contained": false,
|
|
24
|
+
"default_preset": "story-panels",
|
|
25
|
+
"presets": {
|
|
26
|
+
"story-panels": {
|
|
27
|
+
"description": "Four to six comic-style story panels with captions, maker photos or illustrations, and a clear campaign ask.",
|
|
28
|
+
"components": [
|
|
29
|
+
"Media",
|
|
30
|
+
"Badge",
|
|
31
|
+
"Button",
|
|
32
|
+
"icon"
|
|
33
|
+
],
|
|
34
|
+
"layout": {
|
|
35
|
+
"layout": "grid",
|
|
36
|
+
"atoms": "_grid _gap5 _wfull _maxw[76rem] _mx[auto]",
|
|
37
|
+
"slots": {
|
|
38
|
+
"story-panel": "Repeating panel with image/diagram, label, title, and short caption.",
|
|
39
|
+
"maker-note": "Plain-spoken founder note or quote.",
|
|
40
|
+
"campaign-ask": "What support enables next, with CTA."
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"manual-origin": {
|
|
45
|
+
"description": "Instruction-manual origin story with numbered product development steps and maker credibility notes.",
|
|
46
|
+
"components": [
|
|
47
|
+
"Media",
|
|
48
|
+
"Badge",
|
|
49
|
+
"Button"
|
|
50
|
+
],
|
|
51
|
+
"layout": {
|
|
52
|
+
"layout": "stack",
|
|
53
|
+
"atoms": "_flex _col _gap5 _wfull _maxw[58rem] _mx[auto]",
|
|
54
|
+
"slots": {
|
|
55
|
+
"origin-step": "Numbered development milestone.",
|
|
56
|
+
"maker-proof": "Credentials, prototype count, customer quotes, or build progress.",
|
|
57
|
+
"campaign-ask": "Support request."
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"default_layout": {
|
|
63
|
+
"layout": "grid",
|
|
64
|
+
"atoms": "_grid _gap5 _wfull _maxw[76rem] _mx[auto]",
|
|
65
|
+
"slots": {
|
|
66
|
+
"story-panel": "Comic-style story panel",
|
|
67
|
+
"maker-note": "Founder or team note",
|
|
68
|
+
"campaign-ask": "Support request and CTA"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"visual_brief": "A founder story told through bold panels rather than a wall of prose. Each panel should have a clear scene: problem, prototype, user signal, and what backing unlocks. Use photos, product sketches, UI screenshots, or simple diagrams where possible. The style should be playful but honest; campaign trust matters.",
|
|
72
|
+
"responsive": {
|
|
73
|
+
"mobile": "Single-column comic strip. Keep captions short and readable.",
|
|
74
|
+
"tablet": "Two-column panel grid with maker note spanning full width.",
|
|
75
|
+
"desktop": "Editorial comic strip or staggered grid. Avoid nested panel groups."
|
|
76
|
+
},
|
|
77
|
+
"layout_hints": {
|
|
78
|
+
"story_arc": "Problem -> prototype -> proof -> launch ask.",
|
|
79
|
+
"honesty": "Do not overclaim. Include current product state and what funding/support enables.",
|
|
80
|
+
"media": "Prefer actual maker/product evidence over decorative illustration."
|
|
81
|
+
},
|
|
82
|
+
"motion": {
|
|
83
|
+
"micro": {
|
|
84
|
+
"panel-hover": "panel shadow shifts hard by 2px; no soft elevation",
|
|
85
|
+
"caption-reveal": "caption line appears with short snap-in"
|
|
86
|
+
},
|
|
87
|
+
"transitions": {
|
|
88
|
+
"story-stagger": "Panels enter one by one as the reader scrolls."
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"interactions": [
|
|
92
|
+
"animate-on-mount",
|
|
93
|
+
"stagger-children",
|
|
94
|
+
"hover-reveal",
|
|
95
|
+
"click-select"
|
|
96
|
+
],
|
|
97
|
+
"composition": {
|
|
98
|
+
"FounderComicStrip": "Section > [Header + StoryPanel[] + MakerNote + CampaignAsk]",
|
|
99
|
+
"StoryPanel": "Panel(arcade-pixel-border) > [Media + PanelLabel + Title + Caption]",
|
|
100
|
+
"CampaignAsk": "ManualPanel > [AskCopy + PrimaryAction]"
|
|
101
|
+
},
|
|
102
|
+
"accessibility": {
|
|
103
|
+
"role": "region",
|
|
104
|
+
"aria-label": "Founder story",
|
|
105
|
+
"keyboard": [
|
|
106
|
+
"Interactive story panels should expose detail buttons when expandable.",
|
|
107
|
+
"Panel order must match visual reading order."
|
|
108
|
+
],
|
|
109
|
+
"announcements": [
|
|
110
|
+
"Story panel expanded: {title}."
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
"io": {
|
|
114
|
+
"consumes": [
|
|
115
|
+
"founder-story",
|
|
116
|
+
"prototype-evidence"
|
|
117
|
+
],
|
|
118
|
+
"produces": [
|
|
119
|
+
"trust-signal"
|
|
120
|
+
],
|
|
121
|
+
"actions": [
|
|
122
|
+
"story-detail-open",
|
|
123
|
+
"campaign-ask-click"
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "generative-card-grid",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Generative Card Grid",
|
|
7
|
+
"description": "A grid of cards where each card shows a procedurally generated preview of what an AI would build from a given prompt. Cards display live micro-renders, placeholder sketches, or wireframe thumbnails that materialize from skeleton states. The grid itself is generative: card sizes, positions, and visual weights adapt to content relevance and user interaction history. For AI generation galleries, prompt exploration interfaces, template browsers, and any context where users browse and compare multiple AI outputs.",
|
|
8
|
+
"category": "generative",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2026",
|
|
11
|
+
"generative",
|
|
12
|
+
"cards",
|
|
13
|
+
"grid",
|
|
14
|
+
"AI",
|
|
15
|
+
"gallery",
|
|
16
|
+
"preview",
|
|
17
|
+
"masonry",
|
|
18
|
+
"prompt"
|
|
19
|
+
],
|
|
20
|
+
"components": [
|
|
21
|
+
"PreviewCard",
|
|
22
|
+
"GenerationBadge",
|
|
23
|
+
"PromptTag",
|
|
24
|
+
"ActionBar",
|
|
25
|
+
"SkeletonPreview",
|
|
26
|
+
"RegenerateButton"
|
|
27
|
+
],
|
|
28
|
+
"default_preset": "masonry",
|
|
29
|
+
"presets": {
|
|
30
|
+
"masonry": {
|
|
31
|
+
"description": "Variable-height masonry grid using CSS columns or grid with masonry alignment. Cards size to their content preview height. Optimal for browsing diverse generation outputs where previews have different aspect ratios. Gap between cards is consistent. New cards append with fade-in animation.",
|
|
32
|
+
"layout": {
|
|
33
|
+
"layout": "grid",
|
|
34
|
+
"atoms": "_grid _gap4 _p4"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"uniform": {
|
|
38
|
+
"description": "Fixed-size card grid using auto-fill with minmax(280px, 1fr). All cards same height with preview area cropped to fit. Clean and predictable. Good for structured browsing when previews have similar content types.",
|
|
39
|
+
"layout": {
|
|
40
|
+
"layout": "grid",
|
|
41
|
+
"atoms": "_grid _gap4 _p4"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"featured": {
|
|
45
|
+
"description": "Mixed grid where one card is expanded to 2x2 size (the featured or highest-confidence result) while others remain standard. Featured card shows larger preview with more detail. Grid rearranges when a different card is featured. Good for highlighting the best AI output.",
|
|
46
|
+
"layout": {
|
|
47
|
+
"layout": "grid",
|
|
48
|
+
"atoms": "_grid _gap4 _p4"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"list": {
|
|
52
|
+
"description": "Vertical list layout. Each card is a horizontal row: preview thumbnail on the left, prompt and metadata on the right, action bar at the far right. Compact and scannable. Good for comparing many generations by prompt text.",
|
|
53
|
+
"layout": {
|
|
54
|
+
"layout": "stack",
|
|
55
|
+
"atoms": "_flex _col _gap3 _p4"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"visual_brief": "Responsive auto-fill card grid (minmax 280px). Each card shows a generated preview thumbnail, a generation badge overlay (top-right), a truncated prompt label below, and a hover-reveal action bar. Cards shimmer from skeleton to final preview. Masonry or uniform sizing depending on preset.",
|
|
60
|
+
"layout_hints": {
|
|
61
|
+
"filtering": "If filter tabs or category pills are shown, they MUST be functional. Clicking a tab/pill filters the grid. Use React state to filter. Non-functional filter UI is worse than no filters.",
|
|
62
|
+
"empty_state": "When filters produce 0 results, show an empty state: centered icon (48px, muted) + descriptive message + 'Clear filters' action.",
|
|
63
|
+
"grid": "Use CSS grid with auto-fill: grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)). Cards should be equal height within each row."
|
|
64
|
+
},
|
|
65
|
+
"default_layout": {
|
|
66
|
+
"layout": "grid",
|
|
67
|
+
"atoms": "_grid _gap4 _p4",
|
|
68
|
+
"slots": {
|
|
69
|
+
"grid-container": "The grid parent that holds all preview cards. Supports auto-fill columns with responsive minmax sizing. In masonry preset, uses CSS columns or masonry grid alignment. Container handles empty state (no generations yet) with a centered prompt-to-start message. Supports infinite scroll or paginated loading.",
|
|
70
|
+
"preview-card": "Individual PreviewCard containing a generated preview. Card lifecycle: SkeletonPreview (loading) → generation animation (materializing) → final preview (interactive). Preview area shows a miniature render of the AI output: could be a wireframe, screenshot thumbnail, or abstract representation. Card has a subtle border, rounded corners, and lift shadow on hover.",
|
|
71
|
+
"generation-overlay": "GenerationBadge overlay on each card showing generation metadata: model used, generation time, confidence score, or iteration number. Positioned as a small pill in the card's top-right corner. Semi-transparent background to not obscure the preview. Shows 'Generating...' with a spinner animation during active generation.",
|
|
72
|
+
"prompt-label": "PromptTag showing the input prompt or description that produced this generation. Truncated to 2 lines with full text in a tooltip. Displayed below the preview area. Supports click-to-copy for prompt reuse. If the card represents a variation, shows the delta from the original prompt.",
|
|
73
|
+
"action-bar": "ActionBar with card-level actions: RegenerateButton (re-run this prompt), favorite/bookmark, expand to full view, copy output, delete, and share. Appears on card hover or focus. In list preset, always visible. Actions are icon-only with tooltips, except RegenerateButton which has a label.",
|
|
74
|
+
"skeleton-state": "SkeletonPreview rendered while the generation is in progress. Shows animated placeholder shapes that hint at the expected output structure: header bars, content blocks, image placeholders. Skeleton uses shimmer animation (background gradient translateX). Transitions to the real preview with a reveal animation (clip-path or opacity)."
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"accessibility": {
|
|
78
|
+
"role": "feed",
|
|
79
|
+
"aria_label": "AI generation gallery",
|
|
80
|
+
"announcements": [
|
|
81
|
+
"Announce new generation completion: 'Generation complete: [prompt summary]'",
|
|
82
|
+
"Announce when entering skeleton/loading state: 'Generating preview for: [prompt]'",
|
|
83
|
+
"Announce grid layout changes: 'Switched to [preset] view'",
|
|
84
|
+
"Announce featured card change: '[prompt] featured'"
|
|
85
|
+
],
|
|
86
|
+
"keyboard": [
|
|
87
|
+
"Tab navigates between cards in grid order",
|
|
88
|
+
"Arrow keys navigate between cards in 2D grid (Left/Right within row, Up/Down between rows)",
|
|
89
|
+
"Enter expands the focused card to full view",
|
|
90
|
+
"R key triggers regeneration for the focused card",
|
|
91
|
+
"F key toggles the focused card as featured",
|
|
92
|
+
"V key cycles between grid presets (masonry, uniform, featured, list)",
|
|
93
|
+
"Escape closes expanded view and returns focus to the card"
|
|
94
|
+
],
|
|
95
|
+
"reduce_motion": "Skeleton shimmer animation replaced with static gray placeholder. Card appearance transitions are instant (no fade-in). Grid rearrangement on featured change is immediate. Generation overlay spinner replaced with static 'Generating...' text."
|
|
96
|
+
},
|
|
97
|
+
"responsive": {
|
|
98
|
+
"mobile": "Single column layout regardless of preset. Cards full-width. Preview area maintains 16:9 aspect ratio. ActionBar always visible (no hover state on touch). Skeleton state simplified to a single pulsing block. Maximum 10 cards before 'Load more' button.",
|
|
99
|
+
"tablet": "Two-column grid for uniform and masonry presets. Featured preset uses 2-column with featured card spanning full width at top. List preset unchanged. Touch targets for ActionBar buttons are 44px minimum."
|
|
100
|
+
},
|
|
101
|
+
"motion": {
|
|
102
|
+
"micro": {
|
|
103
|
+
"card-hover": "translateY(-4px) + shadow-lg 200ms ease-out",
|
|
104
|
+
"card-press": "scale(0.98) 100ms ease-out"
|
|
105
|
+
},
|
|
106
|
+
"transitions": {
|
|
107
|
+
"card-enter": "fade-up + scale(0.95→1) 300ms ease-out, stagger 50ms per card",
|
|
108
|
+
"grid-reflow": "position + size lerp 400ms ease-in-out",
|
|
109
|
+
"card-remove": "scale(1→0.9) + fade-out 200ms ease-in"
|
|
110
|
+
},
|
|
111
|
+
"ambient": {
|
|
112
|
+
"shimmer-loading": "gradient-sweep left-to-right 1.5s ease-in-out infinite on skeleton"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"interactions": [
|
|
116
|
+
"lift-hover",
|
|
117
|
+
"click-select",
|
|
118
|
+
"animate-on-mount",
|
|
119
|
+
"stagger-children",
|
|
120
|
+
"glow-hover",
|
|
121
|
+
"live-simulation"
|
|
122
|
+
],
|
|
123
|
+
"composition": {
|
|
124
|
+
"GenerativeCardGrid": "Grid(d-section, auto-fill, responsive) > [PreviewCard[] + EmptyState?]",
|
|
125
|
+
"PreviewCard": "Card(d-surface, hoverable, lift-on-hover) > [SkeletonPreview | Preview + GenerationBadge(d-annotation, top-right) + PromptTag(d-data, line-clamp-2) + ActionBar]",
|
|
126
|
+
"SkeletonPreview": "Placeholder(shimmer, animated)",
|
|
127
|
+
"GenerationBadge": "Badge(d-annotation, semi-transparent) > [ModelName + GenerationTime + ConfidenceScore?]",
|
|
128
|
+
"ActionBar": "Row(d-interactive, show-on-hover) > [RegenerateButton(labeled) + FavoriteButton + ExpandButton + CopyButton + DeleteButton]"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "gesture-control-overlay",
|
|
3
|
+
"$schema": "https://decantr.ai/schemas/pattern.v2.json",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"decantr_compat": ">=2.0.0",
|
|
6
|
+
"name": "Gesture Control Overlay",
|
|
7
|
+
"description": "Visual guide showing available touch and gesture controls as an animated overlay — supports step-by-step tutorial, subtle contextual hints, and full gesture reference grid.",
|
|
8
|
+
"category": "spatial",
|
|
9
|
+
"tags": [
|
|
10
|
+
"2027",
|
|
11
|
+
"frontier",
|
|
12
|
+
"spatial",
|
|
13
|
+
"gesture",
|
|
14
|
+
"touch",
|
|
15
|
+
"tutorial",
|
|
16
|
+
"onboarding",
|
|
17
|
+
"overlay",
|
|
18
|
+
"accessibility"
|
|
19
|
+
],
|
|
20
|
+
"components": [
|
|
21
|
+
"GestureOverlay",
|
|
22
|
+
"GestureIcon",
|
|
23
|
+
"GestureLabel",
|
|
24
|
+
"HandAnimation",
|
|
25
|
+
"DismissButton",
|
|
26
|
+
"ProgressDots"
|
|
27
|
+
],
|
|
28
|
+
"default_preset": "tutorial",
|
|
29
|
+
"presets": {
|
|
30
|
+
"tutorial": {
|
|
31
|
+
"description": "Step-by-step guided walkthrough showing one gesture at a time with animated hand demonstration, description text, and Next/Skip navigation for onboarding flows",
|
|
32
|
+
"layout": {
|
|
33
|
+
"layout": "stack",
|
|
34
|
+
"atoms": "_fixed _inset-0 _flex _items-center _justify-center _bg-black/60 _backdrop-blur-sm _z-50"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"hint": {
|
|
38
|
+
"description": "Subtle ghost icons positioned near interactive elements that demonstrate the available gesture — auto-fades after 3 seconds, reappears on long-press or idle, minimal visual disruption",
|
|
39
|
+
"layout": {
|
|
40
|
+
"layout": "spatial",
|
|
41
|
+
"atoms": "_absolute _inset-0 _pointer-events-none _z-40"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"full": {
|
|
45
|
+
"description": "Complete gesture reference grid showing all available gestures simultaneously in a card layout — useful as a help screen or settings reference accessible via a help button",
|
|
46
|
+
"layout": {
|
|
47
|
+
"layout": "grid",
|
|
48
|
+
"atoms": "_fixed _inset-0 _flex _items-center _justify-center _bg-black/60 _backdrop-blur-sm _z-50"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"visual_brief": "In tutorial mode: a full-screen dark overlay (bg-black/60%, backdrop-blur-sm) with a centered content card (max-w-sm, bg-surface, rounded-2xl, shadow-2xl, overflow-hidden). The card is vertically stacked. At the top (60% of card height, bg-muted/5%): a large animated hand SVG (120px) demonstrating the current gesture. The hand is a simplified line-art illustration (stroke-width: 2, stroke: var(--d-foreground), fill: none) showing fingers in the appropriate position. The animation loops continuously: for a pinch gesture, two fingers come together over 1s then separate over 0.5s then pause 0.5s before repeating; for a swipe, a single finger moves horizontally 80px over 0.8s, pauses, then resets; for rotate, two fingers rotate 45deg clockwise over 1s then back; for tap, a finger presses down (scale 0.9) and releases (scale 1) with a ripple circle expanding from the tap point. Below the animation area: a title (text-lg, font-semibold, text-center, px-4, pt-3) like 'Pinch to Zoom', a description (text-sm, text-muted, text-center, px-4, pb-4) like 'Use two fingers to zoom in and out of the canvas'. At the bottom of the card: a footer bar (px-4, py-3, border-t, flex, justify-between, items-center). Left side: a 'Skip' text button (text-sm, text-muted). Center: ProgressDots showing tutorial position. Right side: a 'Next' button (bg-accent, text-accent-foreground, rounded-lg, px-4, py-2, text-sm, font-medium). On the last step, 'Next' changes to 'Done'. Navigating between steps crossfades the hand animation and text (200ms). In hint mode: small ghost icons (32px, opacity 0.4) appear positioned near relevant interactive elements. Each icon shows a simplified gesture symbol (e.g., two-finger spread icon near zoomable areas, swipe arrow near scrollable areas). Icons fade in over 300ms, hold for 3 seconds, then fade out over 500ms. They reappear when the user is idle for 5s or long-presses the area. Icons are pointer-events: none so they don't interfere with actual gestures. In full mode: a centered panel (max-w-lg, max-h-[80vh], bg-surface, rounded-2xl, shadow-2xl, overflow-y-auto) containing a grid (2 columns, gap-4, p-6) of gesture cards. Each card (rounded-lg, border, p-4) contains: the hand animation (64px, centered), the gesture name (text-sm, font-semibold, text-center, mt-2), and the description (text-xs, text-muted, text-center). A header bar at the top of the panel reads 'Gesture Controls' (text-lg, font-semibold) with a close X button on the right. A DismissButton (absolute, top-right of overlay, or inside panel header) closes the overlay.",
|
|
53
|
+
"layout_hints": {
|
|
54
|
+
"container": "fixed overlay (tutorial/full) or absolute overlay within a spatial container (hint)",
|
|
55
|
+
"note": "Tutorial and full presets use fixed positioning and should trap focus. Hint preset uses absolute positioning relative to a parent container and should NOT trap focus or block interactions.",
|
|
56
|
+
"gesture_library": "Common gestures to support: tap, double-tap, long-press, swipe (4 directions), pinch-to-zoom, two-finger-rotate, two-finger-scroll, three-finger-swipe. Each gesture has a unique hand animation SVG.",
|
|
57
|
+
"auto_dismiss": "Hint mode gestures auto-dismiss after 3s. Tutorial mode stays until user explicitly navigates. Full mode stays until dismissed.",
|
|
58
|
+
"first_use": "Track gesture tutorial completion in localStorage. Show tutorial automatically on first use, then only via explicit trigger (help button or keyboard shortcut)."
|
|
59
|
+
},
|
|
60
|
+
"default_layout": {
|
|
61
|
+
"layout": "stack",
|
|
62
|
+
"atoms": "_fixed _inset-0 _flex _items-center _justify-center _bg-black/60 _backdrop-blur-sm _z-50",
|
|
63
|
+
"slots": {
|
|
64
|
+
"gesture-overlay": "The full-screen backdrop layer for tutorial and full modes. Position: fixed, inset: 0. Background: black at 60% opacity with backdrop-filter: blur(4px). Z-index: 50. Clicking the backdrop area (outside the content card) dismisses the overlay in full mode but NOT in tutorial mode (to prevent accidental dismissal during onboarding). The overlay fades in (opacity 0→1 over 200ms) on open. In hint mode, the overlay is position: absolute, inset: 0, bg: transparent, pointer-events: none — it merely serves as a positioning context for hint icons.",
|
|
65
|
+
"gesture-icon": "Repeating slot — one per gesture to be demonstrated. In tutorial mode: a large (120px) area at the top of the content card reserved for the animated hand SVG. The area has a subtle muted background (bg-muted/5%, rounded-t-2xl) to frame the animation. Only one gesture-icon is visible at a time; transitions between gestures use a crossfade (old fades out 150ms, new fades in 150ms, 50ms overlap). In hint mode: small 32px icons positioned absolutely near the relevant interactive element. Each icon is a simplified gesture symbol (not a full hand animation — just iconographic: two chevrons for pinch, arrow for swipe, tap circle for tap). Opacity: 0.4, color: var(--d-foreground). In full mode: 64px animated hand SVGs centered within each gesture grid card.",
|
|
66
|
+
"gesture-label": "The text content describing each gesture. Two parts: (1) Title — the gesture name in concise imperative form ('Pinch to Zoom', 'Swipe to Navigate', 'Tap to Select'). Text-lg, font-semibold in tutorial mode; text-sm, font-semibold in full mode grid. (2) Description — a brief explanation of what the gesture does and where it applies ('Use two fingers to zoom in and out of the canvas. Works in all spatial views.'). Text-sm, text-muted in tutorial mode; text-xs, text-muted in full mode grid. Both are text-center. In hint mode, labels are hidden — only the icon is shown (the gesture name is available as a tooltip on long-press).",
|
|
67
|
+
"hand-animation": "The core animated SVG element demonstrating each gesture. The SVG uses a viewBox of '0 0 120 120' and contains path elements forming a simplified hand outline (line-art style: stroke: var(--d-foreground), stroke-width: 2, stroke-linecap: round, fill: none). Different gesture animations: PINCH — two fingers (index + thumb) start 40px apart and move to 8px apart over 800ms ease-in-out, pause 400ms, then separate back over 600ms, pause 400ms, loop. A small circle appears at the pinch point when fingers meet. SWIPE — single finger starts at x:20 and moves to x:100 over 600ms ease-out, leaves a motion trail (5 circles of decreasing opacity behind the finger), then resets instantly to start position after 500ms pause. ROTATE — two fingers positioned 30px apart rotate 45deg clockwise around their midpoint over 1s ease-in-out, pause 400ms, rotate back, pause 400ms, loop. A curved arrow appears between the fingers indicating rotation direction. TAP — single finger in resting position, quickly scales to 0.9 (press) over 100ms then back to 1.0 over 100ms, accompanied by a ripple circle (expanding ring from tap point, 0→40px radius, opacity 1→0, 400ms). Long-press: same as tap but the press holds for 800ms with a circular progress ring filling around the finger. All animations use CSS animations or SMIL for smooth 60fps playback.",
|
|
68
|
+
"dismiss-button": "A close button to dismiss the overlay. In tutorial mode: positioned as a 'Skip' text button in the card footer (text-sm, text-muted, hover: text-foreground, cursor: pointer). Also a small X icon button (24px, absolute top-3 right-3 of the card, text-muted, hover: text-foreground) for quick dismissal. In full mode: the X button in the panel header (right-aligned, 24px, same styling) plus clicking the backdrop. In hint mode: no dismiss button — hints auto-dismiss after 3s. All dismiss actions trigger the overlay-close transition.",
|
|
69
|
+
"progress-dots": "Tutorial step indicator centered in the card footer. A horizontal row of dots (8px circles, gap-2). Current step dot: bg-accent, scale(1). Completed step dots: bg-accent at 40% opacity. Upcoming step dots: bg-muted, border 1.5px solid var(--d-border). Dots transition between states with background-color 200ms and transform 200ms. If there are more than 7 steps, dots collapse to show current + 2 on each side with ellipsis. Clicking a dot in full mode jumps to that gesture (in tutorial mode, only forward navigation via Next is allowed to ensure sequential learning)."
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"accessibility": {
|
|
73
|
+
"role": "dialog",
|
|
74
|
+
"aria-label": "Gesture controls guide",
|
|
75
|
+
"aria-modal": "true",
|
|
76
|
+
"announcements": [
|
|
77
|
+
"Gesture tutorial opened — step {current} of {total}",
|
|
78
|
+
"Gesture: {name} — {description}",
|
|
79
|
+
"Navigated to gesture {current} of {total}: {name}",
|
|
80
|
+
"Gesture tutorial completed",
|
|
81
|
+
"Gesture guide closed"
|
|
82
|
+
],
|
|
83
|
+
"keyboard": [
|
|
84
|
+
"Arrow Right / Enter: next gesture (tutorial mode)",
|
|
85
|
+
"Arrow Left: previous gesture (tutorial mode)",
|
|
86
|
+
"Escape: dismiss overlay",
|
|
87
|
+
"Tab: cycle through gesture cards (full mode)",
|
|
88
|
+
"Space: replay current gesture animation",
|
|
89
|
+
"?: open gesture guide from anywhere in the app"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"responsive": {
|
|
93
|
+
"mobile": "Tutorial card expands to full-width (inset-x: 16px). Hand animation area remains 120px. Full mode switches from 2-column grid to single column scrollable list. Hint icons increase to 40px for visibility on touch screens. All touch targets minimum 44px. Progress dots remain at 8px.",
|
|
94
|
+
"tablet": "Tutorial card at max-w-sm centered. Full mode at 2-column grid. Hand animations at full size. Standard touch targets."
|
|
95
|
+
},
|
|
96
|
+
"motion": {
|
|
97
|
+
"micro": {
|
|
98
|
+
"next-button-hover": "bg-accent brightness increase + scale(1.02), 150ms ease-out",
|
|
99
|
+
"skip-hover": "color muted→foreground 150ms",
|
|
100
|
+
"dot-hover": "scale(1.15) 150ms"
|
|
101
|
+
},
|
|
102
|
+
"transitions": {
|
|
103
|
+
"overlay-open": "backdrop opacity 0→1 200ms, card scale(0.9)→scale(1) + opacity 0→1 250ms spring",
|
|
104
|
+
"overlay-close": "card scale(1)→scale(0.95) + opacity 1→0 150ms ease-in, backdrop opacity 1→0 200ms",
|
|
105
|
+
"step-change": "current content fade-out 150ms, new content fade-in 150ms with 50ms overlap — crossfade effect",
|
|
106
|
+
"hint-appear": "opacity 0→0.4 + scale(0.8→1) 300ms ease-out",
|
|
107
|
+
"hint-disappear": "opacity 0.4→0 500ms ease-in"
|
|
108
|
+
},
|
|
109
|
+
"ambient": {
|
|
110
|
+
"pinch-loop": "fingers approach 800ms → pause 400ms → separate 600ms → pause 400ms, infinite",
|
|
111
|
+
"swipe-loop": "finger translate 80px 600ms ease-out → pause 500ms → reset instant → pause 300ms, infinite",
|
|
112
|
+
"rotate-loop": "fingers rotate ±45deg 1s ease-in-out → pause 400ms, infinite",
|
|
113
|
+
"tap-ripple": "circle expand 0→40px + opacity 1→0 400ms ease-out per tap cycle",
|
|
114
|
+
"hint-idle-reappear": "after 5s user idle, hints fade back in at 0.3 opacity"
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"interactions": [
|
|
118
|
+
"animate-on-mount",
|
|
119
|
+
"focus-trap",
|
|
120
|
+
"keyboard-navigation",
|
|
121
|
+
"glow-hover",
|
|
122
|
+
"live-simulation"
|
|
123
|
+
],
|
|
124
|
+
"composition": {
|
|
125
|
+
"GestureControlOverlay": "Overlay(fixed|absolute, backdrop, z-50) > [ContentCard(d-surface, centered) + DismissButton]",
|
|
126
|
+
"ContentCard": "Surface(rounded-2xl, shadow-2xl, max-w-sm, overflow-hidden) > [AnimationArea + LabelArea + FooterBar]",
|
|
127
|
+
"AnimationArea": "Div(bg-muted/5%, flex, items-center, justify-center, h-60%) > HandAnimation(svg, animated, 120px)",
|
|
128
|
+
"LabelArea": "Div(px-4, py-3, text-center) > [GestureLabel.title(text-lg, font-semibold) + GestureLabel.description(text-sm, text-muted)]",
|
|
129
|
+
"FooterBar": "Div(flex, justify-between, items-center, px-4, py-3, border-t) > [SkipButton + ProgressDots + NextButton(d-interactive)]",
|
|
130
|
+
"HandAnimation": "SVG(viewBox: 0 0 120 120, line-art) > [FingerPaths*(stroke-animated) + EffectElements(ripple|trail|arrow)]",
|
|
131
|
+
"GestureIcon": "Div(positioned-absolute|inline, 32px|64px|120px) > SVG(gesture-symbol|hand-animation)",
|
|
132
|
+
"ProgressDots": "Flex(gap-2, items-center) > Dot*(8px, circle, state: current|completed|upcoming)"
|
|
133
|
+
}
|
|
134
|
+
}
|