@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.
Files changed (593) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/archetypes/about-hybrid.json +104 -0
  4. package/archetypes/admin-analytics.json +63 -0
  5. package/archetypes/admin-moderation.json +87 -0
  6. package/archetypes/admin-overview.json +77 -0
  7. package/archetypes/agent-orchestrator.json +178 -0
  8. package/archetypes/agent-studio.json +154 -0
  9. package/archetypes/ai-chatbot.json +121 -0
  10. package/archetypes/ai-transparency.json +140 -0
  11. package/archetypes/alert-manager-pro.json +154 -0
  12. package/archetypes/api-console.json +130 -0
  13. package/archetypes/api-reference.json +95 -0
  14. package/archetypes/appointment-center.json +113 -0
  15. package/archetypes/asset-browser.json +90 -0
  16. package/archetypes/audit-center.json +103 -0
  17. package/archetypes/auth-flow-enterprise.json +140 -0
  18. package/archetypes/auth-flow.json +101 -0
  19. package/archetypes/auth-full.json +199 -0
  20. package/archetypes/auth-gateway.json +76 -0
  21. package/archetypes/billing-portal.json +75 -0
  22. package/archetypes/billing.json +74 -0
  23. package/archetypes/budget-planner.json +63 -0
  24. package/archetypes/budget-transparency.json +117 -0
  25. package/archetypes/buyer-dashboard.json +124 -0
  26. package/archetypes/changelog-center.json +96 -0
  27. package/archetypes/character-library.json +113 -0
  28. package/archetypes/citation-tools.json +98 -0
  29. package/archetypes/cloud-infrastructure.json +253 -0
  30. package/archetypes/cloud-marketing.json +111 -0
  31. package/archetypes/collaboration-hub.json +87 -0
  32. package/archetypes/community-feed.json +131 -0
  33. package/archetypes/config-editor.json +136 -0
  34. package/archetypes/contact.json +82 -0
  35. package/archetypes/content-author.json +121 -0
  36. package/archetypes/content-editor.json +82 -0
  37. package/archetypes/content-newsletter.json +111 -0
  38. package/archetypes/content-reader.json +135 -0
  39. package/archetypes/content-site.json +112 -0
  40. package/archetypes/contract-center.json +120 -0
  41. package/archetypes/cook-mode.json +57 -0
  42. package/archetypes/copilot-settings.json +87 -0
  43. package/archetypes/copilot-workspace.json +110 -0
  44. package/archetypes/creator-content.json +128 -0
  45. package/archetypes/creator-dashboard.json +105 -0
  46. package/archetypes/creator-earnings.json +100 -0
  47. package/archetypes/creator-subscribers.json +99 -0
  48. package/archetypes/creator-tiers.json +76 -0
  49. package/archetypes/crm-dashboard.json +199 -0
  50. package/archetypes/crm-email.json +88 -0
  51. package/archetypes/crm-intelligence.json +85 -0
  52. package/archetypes/crm-meetings.json +95 -0
  53. package/archetypes/customer-loyalty.json +75 -0
  54. package/archetypes/customer-management.json +76 -0
  55. package/archetypes/daily-operations.json +62 -0
  56. package/archetypes/dashboard-core.json +87 -0
  57. package/archetypes/data-repository.json +81 -0
  58. package/archetypes/deal-workspace.json +126 -0
  59. package/archetypes/doc-browser.json +111 -0
  60. package/archetypes/document-editor.json +147 -0
  61. package/archetypes/document-vault.json +119 -0
  62. package/archetypes/ecommerce-admin.json +138 -0
  63. package/archetypes/ecommerce-checkout.json +57 -0
  64. package/archetypes/ecommerce.json +138 -0
  65. package/archetypes/emissions-dashboard.json +136 -0
  66. package/archetypes/engagement-hub.json +157 -0
  67. package/archetypes/eval-suite.json +142 -0
  68. package/archetypes/event-discovery.json +130 -0
  69. package/archetypes/experiment-tracker.json +83 -0
  70. package/archetypes/fan-checkout.json +107 -0
  71. package/archetypes/fan-library.json +99 -0
  72. package/archetypes/fan-storefront.json +106 -0
  73. package/archetypes/financial-dashboard.json +127 -0
  74. package/archetypes/game-catalog.json +120 -0
  75. package/archetypes/gaming-community.json +196 -0
  76. package/archetypes/governance-center.json +82 -0
  77. package/archetypes/health-records.json +111 -0
  78. package/archetypes/instrument-booking.json +82 -0
  79. package/archetypes/inventory-supplies.json +72 -0
  80. package/archetypes/investment-tracker.json +82 -0
  81. package/archetypes/investor-portal.json +124 -0
  82. package/archetypes/job-monitor.json +109 -0
  83. package/archetypes/kitchen-display.json +58 -0
  84. package/archetypes/lab-notebook.json +83 -0
  85. package/archetypes/landing-hero.json +145 -0
  86. package/archetypes/landing-legal.json +101 -0
  87. package/archetypes/landing-resources.json +127 -0
  88. package/archetypes/launch-campaign.json +393 -0
  89. package/archetypes/legal.json +107 -0
  90. package/archetypes/listing-browser.json +160 -0
  91. package/archetypes/log-explorer-pro.json +106 -0
  92. package/archetypes/log-viewer.json +123 -0
  93. package/archetypes/maintenance-center.json +116 -0
  94. package/archetypes/marketing-ai-studio.json +117 -0
  95. package/archetypes/marketing-civic.json +116 -0
  96. package/archetypes/marketing-climate.json +94 -0
  97. package/archetypes/marketing-content.json +109 -0
  98. package/archetypes/marketing-copilot.json +100 -0
  99. package/archetypes/marketing-creator.json +132 -0
  100. package/archetypes/marketing-crm.json +96 -0
  101. package/archetypes/marketing-deal-room.json +100 -0
  102. package/archetypes/marketing-devtool.json +139 -0
  103. package/archetypes/marketing-docs.json +92 -0
  104. package/archetypes/marketing-ecommerce.json +69 -0
  105. package/archetypes/marketing-esports.json +89 -0
  106. package/archetypes/marketing-events.json +89 -0
  107. package/archetypes/marketing-finance.json +69 -0
  108. package/archetypes/marketing-fractional.json +74 -0
  109. package/archetypes/marketing-health.json +100 -0
  110. package/archetypes/marketing-landing.json +65 -0
  111. package/archetypes/marketing-legal.json +86 -0
  112. package/archetypes/marketing-marketplace.json +121 -0
  113. package/archetypes/marketing-observability.json +95 -0
  114. package/archetypes/marketing-pipeline.json +108 -0
  115. package/archetypes/marketing-platform.json +129 -0
  116. package/archetypes/marketing-producer.json +88 -0
  117. package/archetypes/marketing-productivity.json +139 -0
  118. package/archetypes/marketing-realestate.json +101 -0
  119. package/archetypes/marketing-recipe.json +69 -0
  120. package/archetypes/marketing-research.json +72 -0
  121. package/archetypes/marketing-restaurant.json +53 -0
  122. package/archetypes/marketing-saas-v2.json +75 -0
  123. package/archetypes/marketing-saas.json +119 -0
  124. package/archetypes/marketing-swipecircle.json +185 -0
  125. package/archetypes/marketing-video-studio.json +121 -0
  126. package/archetypes/marketplace-messaging.json +106 -0
  127. package/archetypes/matter-management.json +104 -0
  128. package/archetypes/meeting-archive.json +131 -0
  129. package/archetypes/menu-management.json +73 -0
  130. package/archetypes/metrics-monitor.json +164 -0
  131. package/archetypes/metrics-overview-dashboard.json +112 -0
  132. package/archetypes/music-workspace.json +104 -0
  133. package/archetypes/notifications.json +68 -0
  134. package/archetypes/offset-marketplace.json +134 -0
  135. package/archetypes/onboarding-wizard.json +203 -0
  136. package/archetypes/order-fulfillment.json +83 -0
  137. package/archetypes/order-management.json +71 -0
  138. package/archetypes/organizer-dashboard.json +146 -0
  139. package/archetypes/owner-dashboard.json +112 -0
  140. package/archetypes/ownership-dashboard.json +97 -0
  141. package/archetypes/patient-dashboard.json +142 -0
  142. package/archetypes/pipeline-builder.json +116 -0
  143. package/archetypes/pm-financials.json +126 -0
  144. package/archetypes/portfolio-about.json +85 -0
  145. package/archetypes/portfolio-blog.json +71 -0
  146. package/archetypes/portfolio-overview.json +76 -0
  147. package/archetypes/portfolio-showcase.json +71 -0
  148. package/archetypes/portfolio.json +122 -0
  149. package/archetypes/product-management.json +84 -0
  150. package/archetypes/project-library.json +111 -0
  151. package/archetypes/prompt-director.json +118 -0
  152. package/archetypes/prompt-library.json +135 -0
  153. package/archetypes/property-manager.json +158 -0
  154. package/archetypes/qa-workflow.json +116 -0
  155. package/archetypes/recipe-browser.json +83 -0
  156. package/archetypes/recipe-community.json +126 -0
  157. package/archetypes/recipe-creator.json +71 -0
  158. package/archetypes/recipe-social.json +95 -0
  159. package/archetypes/recipefork-ai-kitchen.json +95 -0
  160. package/archetypes/recipefork-auth.json +79 -0
  161. package/archetypes/recipefork-cookbooks.json +104 -0
  162. package/archetypes/recipefork-landing.json +101 -0
  163. package/archetypes/recipefork-profile.json +180 -0
  164. package/archetypes/recipefork-recipe-authoring.json +216 -0
  165. package/archetypes/recipefork-recipe-detail.json +139 -0
  166. package/archetypes/recipefork-social.json +103 -0
  167. package/archetypes/registry-browser.json +121 -0
  168. package/archetypes/render-monitor.json +114 -0
  169. package/archetypes/reporting-center.json +107 -0
  170. package/archetypes/research-workspace.json +127 -0
  171. package/archetypes/restaurant-floor.json +74 -0
  172. package/archetypes/review-system.json +84 -0
  173. package/archetypes/saas-analytics.json +69 -0
  174. package/archetypes/saas-billing-v2.json +77 -0
  175. package/archetypes/saas-dashboard.json +127 -0
  176. package/archetypes/saas-overview.json +77 -0
  177. package/archetypes/sample-inventory.json +80 -0
  178. package/archetypes/scrim-scheduler.json +103 -0
  179. package/archetypes/search-hub.json +87 -0
  180. package/archetypes/secondary-market.json +83 -0
  181. package/archetypes/seller-dashboard.json +169 -0
  182. package/archetypes/server-station.json +61 -0
  183. package/archetypes/service-requests.json +141 -0
  184. package/archetypes/session-rooms.json +92 -0
  185. package/archetypes/settings-full.json +164 -0
  186. package/archetypes/settings.json +67 -0
  187. package/archetypes/source-catalog.json +116 -0
  188. package/archetypes/spatial-workspace.json +115 -0
  189. package/archetypes/sponsor-dashboard.json +103 -0
  190. package/archetypes/storefront-browse.json +97 -0
  191. package/archetypes/supply-chain.json +112 -0
  192. package/archetypes/swipe-feed.json +469 -0
  193. package/archetypes/team-management.json +95 -0
  194. package/archetypes/team-operations.json +131 -0
  195. package/archetypes/team-workspace.json +71 -0
  196. package/archetypes/telehealth-room.json +78 -0
  197. package/archetypes/tenant-manager.json +129 -0
  198. package/archetypes/tenant-payments.json +105 -0
  199. package/archetypes/tenant-portal.json +135 -0
  200. package/archetypes/tenant-switcher-dashboard.json +154 -0
  201. package/archetypes/terminal-home.json +127 -0
  202. package/archetypes/ticket-checkout.json +84 -0
  203. package/archetypes/tool-registry.json +111 -0
  204. package/archetypes/trace-explorer.json +113 -0
  205. package/archetypes/trace-viewer.json +112 -0
  206. package/archetypes/track-library.json +90 -0
  207. package/archetypes/transaction-history.json +77 -0
  208. package/archetypes/transformation-editor.json +117 -0
  209. package/archetypes/usage-billing.json +146 -0
  210. package/archetypes/user-dashboard.json +155 -0
  211. package/archetypes/video-editor.json +158 -0
  212. package/archetypes/vod-review.json +97 -0
  213. package/archetypes/webhook-manager.json +108 -0
  214. package/archetypes/workspace-home.json +105 -0
  215. package/archetypes/workspace-settings.json +140 -0
  216. package/blueprints/agent-marketplace.json +222 -0
  217. package/blueprints/agent-studio.json +291 -0
  218. package/blueprints/ai-copilot-shell.json +163 -0
  219. package/blueprints/ai-native-crm.json +269 -0
  220. package/blueprints/ai-video-studio.json +93 -0
  221. package/blueprints/carbon-ai-portal.json +252 -0
  222. package/blueprints/civic-platform.json +91 -0
  223. package/blueprints/climate-dashboard.json +90 -0
  224. package/blueprints/cloud-platform.json +219 -0
  225. package/blueprints/content-site.json +110 -0
  226. package/blueprints/content-studio.json +120 -0
  227. package/blueprints/creator-monetization-platform.json +373 -0
  228. package/blueprints/data-pipeline-studio.json +263 -0
  229. package/blueprints/deal-room.json +88 -0
  230. package/blueprints/ecommerce-admin.json +253 -0
  231. package/blueprints/ecommerce.json +242 -0
  232. package/blueprints/esports-hq.json +116 -0
  233. package/blueprints/event-community-hub.json +251 -0
  234. package/blueprints/financial-dashboard.json +237 -0
  235. package/blueprints/fractional-ownership.json +89 -0
  236. package/blueprints/gaming-platform.json +171 -0
  237. package/blueprints/health-wellness-portal.json +252 -0
  238. package/blueprints/knowledge-base.json +176 -0
  239. package/blueprints/legal-research.json +90 -0
  240. package/blueprints/multi-tenant-platform.json +257 -0
  241. package/blueprints/observability-platform.json +275 -0
  242. package/blueprints/portfolio.json +164 -0
  243. package/blueprints/producer-studio.json +156 -0
  244. package/blueprints/product-landing.json +112 -0
  245. package/blueprints/property-management-portal.json +384 -0
  246. package/blueprints/realtime-collaboration-workspace.json +300 -0
  247. package/blueprints/recipe-community.json +259 -0
  248. package/blueprints/recipefork.json +194 -0
  249. package/blueprints/registry-platform.json +204 -0
  250. package/blueprints/research-lab.json +92 -0
  251. package/blueprints/restaurant-ops.json +104 -0
  252. package/blueprints/retro-launch-campaign.json +205 -0
  253. package/blueprints/saas-dashboard.json +246 -0
  254. package/blueprints/spatial-collaboration.json +172 -0
  255. package/blueprints/swipecircle.json +253 -0
  256. package/blueprints/terminal-dashboard.json +282 -0
  257. package/blueprints/two-sided-marketplace.json +293 -0
  258. package/dist/index.d.ts +178 -0
  259. package/dist/index.js +582 -0
  260. package/dist/index.js.map +1 -0
  261. package/package.json +75 -0
  262. package/patterns/account-settings.json +149 -0
  263. package/patterns/activity-feed.json +154 -0
  264. package/patterns/adaptive-density-panel.json +130 -0
  265. package/patterns/agent-handoff-zone.json +97 -0
  266. package/patterns/agent-swarm-canvas.json +136 -0
  267. package/patterns/agent-timeline.json +119 -0
  268. package/patterns/alert-rule-builder.json +127 -0
  269. package/patterns/ambient-status-ring.json +125 -0
  270. package/patterns/api-explorer.json +131 -0
  271. package/patterns/api-key-row.json +119 -0
  272. package/patterns/ar-annotation.json +137 -0
  273. package/patterns/arrangement-canvas.json +72 -0
  274. package/patterns/ascii-chart.json +138 -0
  275. package/patterns/audit-trail.json +123 -0
  276. package/patterns/auth-form.json +209 -0
  277. package/patterns/avatar-grid-tile.json +118 -0
  278. package/patterns/backer-progress-console.json +137 -0
  279. package/patterns/backer-wall-ticker.json +127 -0
  280. package/patterns/before-after.json +105 -0
  281. package/patterns/block-toolbar.json +129 -0
  282. package/patterns/blueprint-anatomy.json +112 -0
  283. package/patterns/blueprint-launch-hero.json +113 -0
  284. package/patterns/booking-calendar.json +125 -0
  285. package/patterns/bottom-tab-bar.json +117 -0
  286. package/patterns/breadcrumb-nav.json +111 -0
  287. package/patterns/budget-sankey.json +103 -0
  288. package/patterns/calendar-view.json +143 -0
  289. package/patterns/campaign-marquee-hero.json +167 -0
  290. package/patterns/cap-table.json +121 -0
  291. package/patterns/card-grid.json +202 -0
  292. package/patterns/case-brief-card.json +113 -0
  293. package/patterns/character-sheet.json +102 -0
  294. package/patterns/chart-grid.json +129 -0
  295. package/patterns/chat-header.json +105 -0
  296. package/patterns/chat-input.json +106 -0
  297. package/patterns/chat-message.json +122 -0
  298. package/patterns/chat-thread.json +120 -0
  299. package/patterns/checklist-card.json +96 -0
  300. package/patterns/checkout-flow.json +148 -0
  301. package/patterns/chip-multiselect.json +118 -0
  302. package/patterns/citation-graph.json +118 -0
  303. package/patterns/command-palette.json +115 -0
  304. package/patterns/command-rail.json +123 -0
  305. package/patterns/comment-thread.json +155 -0
  306. package/patterns/comparison-table.json +121 -0
  307. package/patterns/contact-form.json +135 -0
  308. package/patterns/content-card-grid.json +151 -0
  309. package/patterns/content-detail-hero.json +129 -0
  310. package/patterns/content-feed.json +141 -0
  311. package/patterns/content-uploader.json +137 -0
  312. package/patterns/continue-screen-cta.json +135 -0
  313. package/patterns/contract-diff.json +110 -0
  314. package/patterns/contract-explorer.json +119 -0
  315. package/patterns/conversation-list.json +109 -0
  316. package/patterns/creator-profile.json +127 -0
  317. package/patterns/cta-banner.json +103 -0
  318. package/patterns/cta-section.json +122 -0
  319. package/patterns/cta.json +124 -0
  320. package/patterns/data-source-connector.json +131 -0
  321. package/patterns/data-table.json +138 -0
  322. package/patterns/dataset-card.json +127 -0
  323. package/patterns/daw-transport-bar.json +66 -0
  324. package/patterns/deal-pipeline-board.json +124 -0
  325. package/patterns/deal-stage-gates.json +102 -0
  326. package/patterns/depth-layered-canvas.json +105 -0
  327. package/patterns/detail-header.json +140 -0
  328. package/patterns/diff-view.json +122 -0
  329. package/patterns/dividend-ledger.json +120 -0
  330. package/patterns/doc-editor.json +147 -0
  331. package/patterns/document-vault.json +129 -0
  332. package/patterns/drag-sort-list.json +119 -0
  333. package/patterns/earnings-dashboard.json +132 -0
  334. package/patterns/emissions-sankey.json +113 -0
  335. package/patterns/emoji-reaction-bar.json +115 -0
  336. package/patterns/esports-matchday-command.json +132 -0
  337. package/patterns/eval-dashboard.json +131 -0
  338. package/patterns/expense-tracker.json +130 -0
  339. package/patterns/featured-launchpad-list.json +114 -0
  340. package/patterns/features.json +118 -0
  341. package/patterns/file-browser.json +148 -0
  342. package/patterns/filter-bar.json +146 -0
  343. package/patterns/footer.json +115 -0
  344. package/patterns/form-sections.json +180 -0
  345. package/patterns/form.json +190 -0
  346. package/patterns/founder-comic-strip.json +126 -0
  347. package/patterns/generative-card-grid.json +130 -0
  348. package/patterns/gesture-control-overlay.json +134 -0
  349. package/patterns/governance-ballot.json +126 -0
  350. package/patterns/help-modal.json +155 -0
  351. package/patterns/hero-split.json +125 -0
  352. package/patterns/hero.json +227 -0
  353. package/patterns/holographic-control-bar.json +114 -0
  354. package/patterns/hotkey-bar.json +97 -0
  355. package/patterns/how-it-works.json +118 -0
  356. package/patterns/identity-summary.json +115 -0
  357. package/patterns/instrument-schedule.json +131 -0
  358. package/patterns/intake-form-wizard.json +134 -0
  359. package/patterns/intent-radar.json +115 -0
  360. package/patterns/json-viewer.json +129 -0
  361. package/patterns/kanban-board.json +133 -0
  362. package/patterns/kds-ticket-rail.json +133 -0
  363. package/patterns/kpi-grid.json +123 -0
  364. package/patterns/launch-update-log.json +129 -0
  365. package/patterns/launchpad-flow.json +107 -0
  366. package/patterns/leaderboard.json +143 -0
  367. package/patterns/lease-manager.json +129 -0
  368. package/patterns/legal-prose.json +120 -0
  369. package/patterns/live-room-stage.json +63 -0
  370. package/patterns/log-stream.json +150 -0
  371. package/patterns/logo-strip.json +93 -0
  372. package/patterns/maintenance-board.json +127 -0
  373. package/patterns/maintenance-ticket.json +156 -0
  374. package/patterns/map-view.json +140 -0
  375. package/patterns/match-celebration.json +133 -0
  376. package/patterns/matter-card.json +113 -0
  377. package/patterns/mention-popup.json +85 -0
  378. package/patterns/metric-gauge.json +141 -0
  379. package/patterns/mixer-console.json +69 -0
  380. package/patterns/mobile-profile-hero.json +138 -0
  381. package/patterns/moderation-queue-item.json +129 -0
  382. package/patterns/morphing-topology.json +113 -0
  383. package/patterns/namespace-badge.json +93 -0
  384. package/patterns/nav-header.json +110 -0
  385. package/patterns/neural-feedback-loop.json +124 -0
  386. package/patterns/notebook-entry.json +129 -0
  387. package/patterns/notification-center.json +136 -0
  388. package/patterns/offset-cart.json +109 -0
  389. package/patterns/onboarding-wizard.json +130 -0
  390. package/patterns/org-governance-panel.json +101 -0
  391. package/patterns/page-tree.json +143 -0
  392. package/patterns/payment-history.json +130 -0
  393. package/patterns/payout-settings.json +130 -0
  394. package/patterns/permission-matrix.json +129 -0
  395. package/patterns/petition-card.json +106 -0
  396. package/patterns/pipeline-cards.json +99 -0
  397. package/patterns/player-form-tracker.json +111 -0
  398. package/patterns/pledge-checkout-panel.json +145 -0
  399. package/patterns/pnl-dashboard.json +116 -0
  400. package/patterns/post-list.json +147 -0
  401. package/patterns/presence-avatars.json +129 -0
  402. package/patterns/press-kit-shelf.json +132 -0
  403. package/patterns/pricing-usage.json +118 -0
  404. package/patterns/pricing.json +137 -0
  405. package/patterns/producer-split-workbench.json +57 -0
  406. package/patterns/product-box-spec-panel.json +126 -0
  407. package/patterns/product-card.json +120 -0
  408. package/patterns/product-grid.json +140 -0
  409. package/patterns/progress-bar.json +124 -0
  410. package/patterns/prompt-playground.json +129 -0
  411. package/patterns/property-card.json +112 -0
  412. package/patterns/property-detail.json +124 -0
  413. package/patterns/property-grid.json +137 -0
  414. package/patterns/prose-section.json +102 -0
  415. package/patterns/protocol-step.json +128 -0
  416. package/patterns/prototype-demo-bezel.json +137 -0
  417. package/patterns/qa-thread.json +109 -0
  418. package/patterns/quick-start.json +88 -0
  419. package/patterns/recipefork-activity-feed.json +51 -0
  420. package/patterns/recipefork-chef-ingredients-display.json +48 -0
  421. package/patterns/recipefork-chef-ingredients-editor.json +52 -0
  422. package/patterns/recipefork-chef-instruction-editor.json +59 -0
  423. package/patterns/recipefork-chef-instructions-display.json +54 -0
  424. package/patterns/recipefork-cookbook-assignment.json +51 -0
  425. package/patterns/recipefork-cooking-tips-display.json +43 -0
  426. package/patterns/recipefork-cooking-tips-editor.json +46 -0
  427. package/patterns/recipefork-fork-provenance.json +50 -0
  428. package/patterns/recipefork-kitchen-chat.json +103 -0
  429. package/patterns/recipefork-photo-generator.json +123 -0
  430. package/patterns/recipefork-presentation-display.json +45 -0
  431. package/patterns/recipefork-presentation-editor.json +52 -0
  432. package/patterns/recipefork-recipe-card.json +123 -0
  433. package/patterns/recipefork-recipe-metadata-form.json +58 -0
  434. package/patterns/recipefork-recipe-mode-switch.json +52 -0
  435. package/patterns/recipefork-recipe-story-editor.json +51 -0
  436. package/patterns/recipefork-simple-recipe-editor.json +49 -0
  437. package/patterns/redline-track-changes.json +113 -0
  438. package/patterns/registry-discovery-cta-grid.json +93 -0
  439. package/patterns/registry-link-list.json +118 -0
  440. package/patterns/relationship-graph.json +127 -0
  441. package/patterns/remote-cursor.json +103 -0
  442. package/patterns/render-queue.json +102 -0
  443. package/patterns/rent-reminder.json +140 -0
  444. package/patterns/rent-roll.json +112 -0
  445. package/patterns/reputation-badge.json +111 -0
  446. package/patterns/retro-table.json +128 -0
  447. package/patterns/reward-tier-selector.json +137 -0
  448. package/patterns/sample-tracker.json +127 -0
  449. package/patterns/scene-storyboard.json +104 -0
  450. package/patterns/scope-breakdown.json +108 -0
  451. package/patterns/scoreboard-live.json +116 -0
  452. package/patterns/scrim-calendar.json +114 -0
  453. package/patterns/search-filter-bar.json +141 -0
  454. package/patterns/secure-document-viewer.json +107 -0
  455. package/patterns/service-catalog.json +94 -0
  456. package/patterns/service-map.json +133 -0
  457. package/patterns/session-inspector.json +62 -0
  458. package/patterns/session-manager.json +89 -0
  459. package/patterns/settings-nav.json +106 -0
  460. package/patterns/share-modal.json +157 -0
  461. package/patterns/share-quest-panel.json +134 -0
  462. package/patterns/shot-grid.json +104 -0
  463. package/patterns/skeleton-loader.json +114 -0
  464. package/patterns/slash-command.json +80 -0
  465. package/patterns/sparkline-cell.json +103 -0
  466. package/patterns/spatial-card-stack.json +133 -0
  467. package/patterns/spatial-presence-ring.json +103 -0
  468. package/patterns/split-calculator.json +104 -0
  469. package/patterns/split-pane.json +112 -0
  470. package/patterns/stats-bar.json +125 -0
  471. package/patterns/stats-detail.json +102 -0
  472. package/patterns/stats-overview.json +132 -0
  473. package/patterns/stats-section.json +90 -0
  474. package/patterns/status-bar.json +101 -0
  475. package/patterns/status-board.json +92 -0
  476. package/patterns/stem-browser.json +58 -0
  477. package/patterns/stem-stack.json +101 -0
  478. package/patterns/stepper.json +115 -0
  479. package/patterns/storefront-hero.json +120 -0
  480. package/patterns/stretch-goal-ladder.json +128 -0
  481. package/patterns/subscriber-list.json +135 -0
  482. package/patterns/supply-chain-map.json +109 -0
  483. package/patterns/swipe-action-bar.json +119 -0
  484. package/patterns/swipe-card.json +126 -0
  485. package/patterns/table-map.json +134 -0
  486. package/patterns/target-progress-ring.json +103 -0
  487. package/patterns/team-member-row.json +139 -0
  488. package/patterns/tech-pills.json +69 -0
  489. package/patterns/tenant-card.json +150 -0
  490. package/patterns/tenant-directory.json +118 -0
  491. package/patterns/tenant-payment-setup.json +98 -0
  492. package/patterns/terminal-emulator.json +117 -0
  493. package/patterns/testimonials.json +133 -0
  494. package/patterns/tier-builder.json +131 -0
  495. package/patterns/tier-card.json +118 -0
  496. package/patterns/tier-upgrade-card.json +144 -0
  497. package/patterns/timeline-scrubber.json +107 -0
  498. package/patterns/timeline.json +140 -0
  499. package/patterns/toast-notification.json +123 -0
  500. package/patterns/tool-list.json +89 -0
  501. package/patterns/trace-waterfall.json +123 -0
  502. package/patterns/trade-modal.json +132 -0
  503. package/patterns/transcript-stream.json +125 -0
  504. package/patterns/tree-view.json +124 -0
  505. package/patterns/unit-detail.json +100 -0
  506. package/patterns/unit-list.json +106 -0
  507. package/patterns/unlock-gate.json +132 -0
  508. package/patterns/usage-meter.json +113 -0
  509. package/patterns/vacancy-tracker.json +106 -0
  510. package/patterns/valuation-chart.json +126 -0
  511. package/patterns/version-history.json +140 -0
  512. package/patterns/video-room.json +142 -0
  513. package/patterns/vod-annotator.json +112 -0
  514. package/patterns/voice-command-palette.json +127 -0
  515. package/patterns/voice-waveform.json +120 -0
  516. package/patterns/voting-breakdown.json +101 -0
  517. package/patterns/waveform-track.json +102 -0
  518. package/patterns/webhook-debugger.json +116 -0
  519. package/patterns/workflow-canvas.json +147 -0
  520. package/patterns/workspace-region-stack.json +74 -0
  521. package/schemas/archetype.v2.json +145 -0
  522. package/schemas/blueprint.v1.json +225 -0
  523. package/schemas/common.v1.json +337 -0
  524. package/schemas/content-health-report.v1.json +255 -0
  525. package/schemas/content-intelligence.v1.json +142 -0
  526. package/schemas/essence.v4.json +430 -0
  527. package/schemas/execution-pack.common.v1.json +207 -0
  528. package/schemas/page-pack.v1.json +106 -0
  529. package/schemas/pattern.v2.json +232 -0
  530. package/schemas/public-content-list.v1.json +28 -0
  531. package/schemas/public-content-record.v1.json +91 -0
  532. package/schemas/public-content-summary.v1.json +132 -0
  533. package/schemas/registry-intelligence-summary.v1.json +81 -0
  534. package/schemas/search-response.v1.json +28 -0
  535. package/schemas/section-pack.v1.json +128 -0
  536. package/schemas/shell.v1.json +69 -0
  537. package/schemas/showcase-manifest-entry.v1.json +92 -0
  538. package/schemas/showcase-manifest.v1.json +28 -0
  539. package/schemas/showcase-shortlist.v1.json +36 -0
  540. package/schemas/theme.v1.json +190 -0
  541. package/shells/canvas-overlay.json +94 -0
  542. package/shells/centered.json +49 -0
  543. package/shells/chat-portal.json +153 -0
  544. package/shells/copilot-overlay.json +156 -0
  545. package/shells/full-bleed.json +100 -0
  546. package/shells/immersive-stage.json +89 -0
  547. package/shells/minimal-header.json +103 -0
  548. package/shells/mobile-tab-bar.json +119 -0
  549. package/shells/recipefork-top-nav.json +74 -0
  550. package/shells/sidebar-aside.json +163 -0
  551. package/shells/sidebar-main-footer.json +158 -0
  552. package/shells/sidebar-main.json +175 -0
  553. package/shells/sidebar-right.json +128 -0
  554. package/shells/terminal-split.json +95 -0
  555. package/shells/three-column-browser.json +215 -0
  556. package/shells/top-nav-footer.json +114 -0
  557. package/shells/top-nav-main.json +103 -0
  558. package/shells/top-nav-sidebar.json +130 -0
  559. package/shells/workspace-aside.json +181 -0
  560. package/themes/auradecantism.json +601 -0
  561. package/themes/bespoke.json +433 -0
  562. package/themes/bioluminescent.json +217 -0
  563. package/themes/bistro.json +422 -0
  564. package/themes/carbon-neon.json +458 -0
  565. package/themes/carbon.json +429 -0
  566. package/themes/cinema.json +479 -0
  567. package/themes/clean.json +261 -0
  568. package/themes/counsel.json +431 -0
  569. package/themes/dopamine.json +237 -0
  570. package/themes/earth.json +453 -0
  571. package/themes/editorial.json +237 -0
  572. package/themes/estate.json +559 -0
  573. package/themes/fintech.json +472 -0
  574. package/themes/gaming-guild.json +341 -0
  575. package/themes/glassmorphism.json +309 -0
  576. package/themes/government.json +481 -0
  577. package/themes/healthcare.json +480 -0
  578. package/themes/lab.json +437 -0
  579. package/themes/launchpad.json +320 -0
  580. package/themes/liquid-glass.json +223 -0
  581. package/themes/luminarum.json +598 -0
  582. package/themes/neo-tokyo.json +451 -0
  583. package/themes/neon-cyber.json +280 -0
  584. package/themes/neon-dark.json +220 -0
  585. package/themes/paper.json +496 -0
  586. package/themes/prismatic.json +217 -0
  587. package/themes/recipefork.json +278 -0
  588. package/themes/retro-arcade.json +620 -0
  589. package/themes/retro.json +240 -0
  590. package/themes/studio-dark.json +437 -0
  591. package/themes/studio.json +488 -0
  592. package/themes/swipecircle.json +533 -0
  593. package/themes/terminal.json +549 -0
@@ -0,0 +1,129 @@
1
+ {
2
+ "id": "notebook-entry",
3
+ "$schema": "https://decantr.ai/schemas/pattern.v2.json",
4
+ "version": "1.0.0",
5
+ "decantr_compat": ">=2.0.0",
6
+ "name": "Notebook Entry",
7
+ "description": "An electronic lab notebook (ELN) entry card combining rich text, embedded images, LaTeX-rendered formulas, timestamp-chained edit history, and reviewer annotations for scientific record-keeping and witness-signing compliance.",
8
+ "category": "science",
9
+ "tags": [
10
+ "2026",
11
+ "science",
12
+ "eln",
13
+ "notebook",
14
+ "lab",
15
+ "record",
16
+ "witness",
17
+ "rich-text"
18
+ ],
19
+ "components": [
20
+ "EntryHeader",
21
+ "RichContent",
22
+ "ImageEmbed",
23
+ "FormulaBlock",
24
+ "TimestampChain",
25
+ "ReviewerNote",
26
+ "TextBlock",
27
+ "SignatureBlock",
28
+ "AuthorAvatar"
29
+ ],
30
+ "default_preset": "standard",
31
+ "presets": {
32
+ "standard": {
33
+ "description": "Full rich-entry rendering with header, body content (text/images/formulas/tables), timestamp chain, and signature block. Intended as the primary reading view for lab notebook entries in research ELN systems.",
34
+ "layout": {
35
+ "layout": "document",
36
+ "atoms": "_w100 _grid _gap4 _p6 _max-w-820"
37
+ }
38
+ },
39
+ "minimal": {
40
+ "description": "Text-only collapsed rendering suitable for linked-entry preview cards and search results. Hides images and formulas, shows only header metadata and a truncated text body with expand-to-read action.",
41
+ "layout": {
42
+ "layout": "stack",
43
+ "atoms": "_w100 _grid _gap2 _p4 _max-w-640"
44
+ }
45
+ },
46
+ "review": {
47
+ "description": "Review-mode rendering with reviewer annotation marginalia visible alongside the entry body. ReviewerNotes render as yellow sticky-note cards in the right margin anchored to the text range they annotate.",
48
+ "layout": {
49
+ "layout": "document",
50
+ "atoms": "_w100 _grid _grid-cols-[1fr_240px] _gap4 _p6 _max-w-1040"
51
+ }
52
+ }
53
+ },
54
+ "visual_brief": "A lab-notebook entry rendered as a d-surface document with a thin left accent border and generous padding reflecting the feel of a bound laboratory notebook page. The EntryHeader at the top shows: a DateBadge pill with full date and time ('April 5, 2026 — 14:23'), an experiment-ID chip ('EXP-2026-042'), and an AuthorAvatar (32px circle) with author name and role beneath. A title in text-2xl semibold follows ('Protein Expression Optimization — Trial 3'). A horizontal rule separates header from body. The RichContent body flows in a newspaper-column-inspired layout with readable line-height (1.6) and max-width 70ch. TextBlocks render as paragraphs with proper typography. ImageEmbeds appear as centered figures with thin borders, captions beneath ('Figure 1: SDS-PAGE gel showing lane 1-6 expressed protein') in text-sm italic, and click-to-enlarge behavior opening a full-resolution lightbox. FormulaBlocks render mathematical expressions via LaTeX (e.g., 'OD600 = log(I₀/I) × path-length') in a display-math style with subtle gray background inset. Data tables render with monospaced headers and tabular-nums cells. The TimestampChain sits at the bottom of the entry showing edit-history as a horizontal chain: small timestamp pills connected with arrows ('Created 14:23 → Edited 15:47 → Edited 16:12'). Each pill shows user initial + time, hoverable for full diff. In review preset, ReviewerNotes render as yellow sticky-note cards in the right margin, anchored by thin connector lines to the text range they annotate, with reviewer avatar, note text, and 'resolve' button. A SignatureBlock at the very bottom shows the author signature (e.g., 'Signed: J. Chen 16:12 EDT') and when witnessed, a co-signer block ('Witnessed by: S. Park 17:04 EDT') with tamper-evident hash of the content. The entire entry becomes immutable after signing — further edits create a new dated revision.",
55
+ "layout_hints": {
56
+ "container": "d-surface document with left-accent border",
57
+ "note": "ELN entries are regulated scientific records (21 CFR Part 11 compliant). After signature, entries are immutable. Edits create new revisions with full diff preserved.",
58
+ "rich_content_width": "RichContent body max-width 70ch for readable line-length. Line-height 1.6. Paragraph spacing generous.",
59
+ "image_embed": "ImageEmbed figures centered with 1px border, 8px padding, and caption beneath in text-sm italic. Click opens lightbox at full resolution.",
60
+ "formula_block": "FormulaBlock uses MathJax/KaTeX rendering, display-math style. Inset gray background for visual distinction from body text.",
61
+ "timestamp_chain": "TimestampChain shows ALL edits with user+timestamp. Never hides revision history. Hoverable pills show diff of that edit.",
62
+ "signature_block": "SignatureBlock hashes entry content at time of signing for tamper-evidence. After witness co-signature, entry enters locked state (no further edits allowed, only appended revisions)."
63
+ },
64
+ "default_layout": {
65
+ "layout": "document",
66
+ "atoms": "_w100 _grid _gap4 _p6 _max-w-820",
67
+ "slots": {
68
+ "entry-header": "Top section with DateBadge, experiment-ID chip, AuthorAvatar + name + role, and entry title (text-2xl semibold). Horizontal rule separates header from body.",
69
+ "rich-content": "Main body content with mixed block types: TextBlocks (paragraphs), ImageEmbeds (figures with captions), FormulaBlocks (LaTeX math), tables, lists, quotes. Newspaper-column typography with max-width 70ch.",
70
+ "image-embeds": "Repeating sub-slot within rich-content. Figure elements with centered image, thin border, italic caption, and click-to-lightbox behavior. Numbered automatically (Figure 1, Figure 2...).",
71
+ "formula-blocks": "Repeating sub-slot within rich-content. LaTeX-rendered mathematical expressions in display-math style with subtle gray background.",
72
+ "timestamp-chain": "Horizontal chain of edit-history pills at bottom of entry. Each pill shows user initial + time, hoverable to reveal diff. Chain uses arrows connecting pills chronologically.",
73
+ "reviewer-notes": "Review-preset-only slot. Yellow sticky-note cards in right margin anchored by connector lines to annotated text ranges. Each note shows reviewer avatar, text, timestamp, and resolve action.",
74
+ "signature-block": "Footer at entry end showing author signature with timestamp and optional witness co-signature. Includes tamper-evidence content hash. Locks entry from further edits after witnessing."
75
+ }
76
+ },
77
+ "accessibility": {
78
+ "role": "article",
79
+ "aria-label": "Laboratory notebook entry",
80
+ "announcements": [
81
+ "Entry by {author} from {date}, experiment {id}",
82
+ "Edited {count} times, last edit {timestamp}",
83
+ "Entry signed by {author} and witnessed by {witness}",
84
+ "New reviewer note on {range}"
85
+ ],
86
+ "keyboard": [
87
+ "J/K: navigate between entries",
88
+ "R: toggle review annotations",
89
+ "I: open images in lightbox",
90
+ "E: edit current entry (if unsigned)",
91
+ "S: sign entry (author) or witness (reviewer)"
92
+ ]
93
+ },
94
+ "responsive": {
95
+ "mobile": "Entry expands to full width with reduced padding. ReviewerNotes collapse into inline indicators that expand on tap. ImageEmbeds fit 100% width. FormulaBlocks allow horizontal scroll.",
96
+ "tablet": "Standard document at max-w-820px. Review preset maintains right margin ReviewerNotes at reduced 200px width."
97
+ },
98
+ "motion": {
99
+ "micro": {
100
+ "image-hover": "subtle shadow-lift 150ms ease-out",
101
+ "timestamp-hover": "pill brightens + expands 120ms ease-out",
102
+ "formula-hover": "background darkens subtly 150ms ease-out"
103
+ },
104
+ "transitions": {
105
+ "image-lightbox": "image scale + fade from thumbnail to fullscreen 300ms ease-out",
106
+ "note-resolve": "yellow note fade + slide-out 250ms ease-in",
107
+ "signature-lock": "border color shift to success + content dim 400ms ease-out"
108
+ },
109
+ "ambient": {
110
+ "unsigned-pulse": "SignatureBlock subtle amber tint pulse 2s ease-in-out infinite when entry unsigned"
111
+ }
112
+ },
113
+ "interactions": [
114
+ "click-select",
115
+ "animate-on-mount",
116
+ "keyboard-navigation",
117
+ "hover-reveal"
118
+ ],
119
+ "composition": {
120
+ "NotebookEntry": "Surface(d-surface, document, border-left-accent) > [EntryHeader + RichContent + TimestampChain + ReviewerNote[]? + SignatureBlock]",
121
+ "EntryHeader": "Header(d-annotation) > [DateBadge + ExperimentIdChip + AuthorAvatar + EntryTitle]",
122
+ "RichContent": "Body(d-prose, max-w-70ch) > [TextBlock[] + ImageEmbed[] + FormulaBlock[] + DataTable[]]",
123
+ "ImageEmbed": "Figure(d-surface, bordered, data-interactive) > [Image + Caption + LightboxLink]",
124
+ "FormulaBlock": "Block(d-annotation, data-formula, mathjax) > [LatexExpression]",
125
+ "TimestampChain": "Chain(d-annotation, data-timestamp-history) > [TimestampPill[] > [UserInitial + TimeText] + ChainArrow[]]",
126
+ "ReviewerNote": "Card(d-surface, data-note, sticky-yellow, margin-right) > [ReviewerAvatar + NoteText + Timestamp + ResolveButton + AnchorLine]",
127
+ "SignatureBlock": "Block(d-annotation, data-signature, data-locked?) > [AuthorSignature + WitnessSignature? + ContentHash]"
128
+ }
129
+ }
@@ -0,0 +1,136 @@
1
+ {
2
+ "$schema": "https://decantr.ai/schemas/pattern.v2.json",
3
+ "id": "notification-center",
4
+ "version": "1.0.0",
5
+ "decantr_compat": ">=2.0.0",
6
+ "name": "Notification Center",
7
+ "description": "Bell menu dropdown with notification list, category filtering, mark-all-read, and a preferences link for managing notification delivery.",
8
+ "category": "system",
9
+ "tags": [
10
+ "2026",
11
+ "notifications",
12
+ "bell",
13
+ "alerts",
14
+ "system",
15
+ "popover",
16
+ "toast",
17
+ "inbox"
18
+ ],
19
+ "components": [
20
+ "BellButton",
21
+ "NotificationList",
22
+ "NotificationItem",
23
+ "CategoryTabs",
24
+ "EmptyState",
25
+ "PreferencesLink",
26
+ "UnreadBadge"
27
+ ],
28
+ "default_preset": "dropdown",
29
+ "presets": {
30
+ "dropdown": {
31
+ "description": "Popover dropdown anchored to the bell icon — a 380px-wide floating panel with category tabs, notification list, and quick actions for desktop navigation bars",
32
+ "layout": {
33
+ "layout": "stack",
34
+ "atoms": "_flex _col _w-380 _max-h-480 _bg-surface _rounded-xl _shadow-xl _border _overflow-hidden"
35
+ }
36
+ },
37
+ "page": {
38
+ "description": "Full-page notification center with sidebar category navigation and expanded notification cards — for dedicated notification management screens",
39
+ "layout": {
40
+ "layout": "split",
41
+ "atoms": "_flex _row _h-full _bg-surface _gap-6 _p-6"
42
+ }
43
+ },
44
+ "toast-stack": {
45
+ "description": "Corner-anchored toast notification stack — ephemeral notifications that auto-dismiss, stacking vertically in the bottom-right or top-right corner of the viewport",
46
+ "layout": {
47
+ "layout": "stack",
48
+ "atoms": "_fixed _bottom-4 _right-4 _flex _col-reverse _gap-2 _z-50 _w-380 _pointer-events-none"
49
+ }
50
+ }
51
+ },
52
+ "visual_brief": "The BellButton is a 40px icon button with a bell outline icon (20px). When unread notifications exist, a small filled circle badge (18px diameter) sits at the top-right corner of the bell, overlapping by 4px. The badge has a solid accent color background (var(--d-accent)) with white bold text (text-xs, font-bold) showing the unread count — numbers up to 99 display literally, above that shows '99+'. The badge has a subtle 2px white border (matching the background behind the bell) creating a cut-out effect. When clicked, the dropdown popover appears anchored below the bell with a small upward-pointing caret/triangle (8px) aligned to the bell icon. The popover is 380px wide with max-height 480px, background var(--d-bg-surface), border-radius 12px, a prominent shadow (0 8px 32px rgba(0,0,0,0.16), 0 2px 8px rgba(0,0,0,0.08)), and a 1px border (var(--d-border-subtle)). The popover header has 'Notifications' title (text-base font-semibold) on the left and a 'Mark all read' text button (text-xs, text-accent, hover: underline) on the right, with 16px horizontal padding and 12px vertical padding. Below the header, CategoryTabs render as a horizontal tab bar: four tabs (All, Mentions, Updates, System) in text-sm, evenly spaced. The active tab has accent-colored text with a 2px bottom border in accent color. Inactive tabs are text-muted with hover: text-foreground. Below the tabs, the NotificationList scrolls vertically. Each NotificationItem is a horizontal row (padding: 12px 16px) with: a left-edge unread indicator (a 6px filled accent-colored circle, vertically centered, visible only for unread items — read items have no dot, creating a clear visual distinction), a source icon (24px, inside a 32px circle with muted background, representing the notification type: chat bubble for mentions, arrow-up for updates, gear for system, bell for general), a content column (flex: 1, margin-left 12px) with the notification title (text-sm font-medium, single line, truncated) and description (text-xs text-muted, max 2 lines with line-clamp-2), a right column with the relative timestamp (text-xs text-muted, e.g., '2m ago', '1h', 'Yesterday'), and on hover a dismiss X button (16px, text-muted, opacity 0→1 on row hover) that appears at the top-right of the right column. Unread items have a very subtle background tint (var(--d-accent) at 3% opacity). Clicking an item marks it as read (dot disappears with a fade) and navigates to the relevant content. The EmptyState shows when no notifications exist in the current category: a centered column with a large check-circle icon (48px, text-muted) and 'All caught up' heading (text-sm font-medium text-muted), with optional 'No new notifications' subtext (text-xs text-muted). At the bottom of the popover, a thin border-top separator and a full-width link row 'Notification preferences' (text-xs text-muted, centered, padding 10px, hover: text-foreground) leads to the settings page. In the toast-stack preset, each toast is a 380px-wide card (d-surface, border-radius 10px, shadow-lg, border) that slides in from the right, shows for 5 seconds, then slides out. Toasts stack vertically with the newest at the bottom. Each toast has: a left color strip (4px, accent for info, green for success, red for error, amber for warning), the source icon (20px), title (text-sm font-medium), message (text-xs text-muted, 1 line), timestamp, and a close X button.",
53
+ "layout_hints": {
54
+ "container": "popover-anchored",
55
+ "note": "The dropdown preset renders as a popover floating below the bell button, not as a page-level element. Use position: absolute or a portal to ensure correct z-index and positioning. The popover must dismiss on outside click or Escape.",
56
+ "bell_badge": "The unread count badge is CRITICAL for user attention. It must be clearly visible: filled accent background, white text, slight overlap on the bell icon. Use a 2px border matching the page background to create the 'cut-out' effect. Badge should animate with a subtle scale bounce when the count changes.",
57
+ "unread_dot": "The 6px unread indicator dot is the primary signal for unread state. It must be consistently positioned (left edge of each item) and use the accent color. When an item is marked as read, the dot should fade out (200ms) rather than disappear instantly.",
58
+ "notification_density": "Items should be compact but scannable. 12px vertical padding per item. The two-line description with line-clamp-2 prevents overly long notifications from dominating the list. Timestamps should use relative format ('2m', '1h', 'Yesterday') not absolute dates."
59
+ },
60
+ "default_layout": {
61
+ "layout": "stack",
62
+ "atoms": "_relative",
63
+ "slots": {
64
+ "bell-button": "A 40px square icon button positioned in the app's navigation header. Renders a bell outline icon (20px). Hover state: background tint (var(--d-bg-muted)). Active/open state: background tint persists to indicate the dropdown is open. The UnreadBadge is positioned absolutely at top: -4px, right: -4px — an 18px diameter circle (min-width 18px for wider numbers) with background var(--d-accent), color white, text-xs font-bold, centered text, border: 2px solid var(--d-bg-surface) for the cut-out effect. Badge is hidden (display: none or scale-to-zero) when count is 0. When the count increases, the badge does a scale bounce animation (0→1.2→1.0, 300ms spring). When the count reaches 0, it shrinks away (1.0→0, 200ms ease-in).",
65
+ "notification-dropdown": "A 380px-wide floating popover panel anchored below the bell button. Background: var(--d-bg-surface). Border: 1px solid var(--d-border-subtle). Border-radius: 12px. Box-shadow: 0 8px 32px rgba(0,0,0,0.16), 0 2px 8px rgba(0,0,0,0.08). Max-height: 480px with internal scrolling on the notification list. A small upward-pointing caret (8px CSS triangle using border trick, background matching the popover surface, border-top and border-left matching the popover border) aligns with the bell button above. The popover has three vertical sections: header, tabs+list (scrollable), and footer. It appears with a scale+fade animation from the anchor point and dismisses on outside click, Escape key, or bell re-click.",
66
+ "dropdown-header": "Top section of the popover. Height 44px, padding 12px 16px, flex row, items center, justify between, border-bottom 1px solid var(--d-border-subtle). Left: 'Notifications' text (text-base font-semibold text-foreground). Right: 'Mark all read' button (text-xs text-accent font-medium, cursor pointer, hover: underline, opacity 0.7→1.0 on hover). The mark-all-read button is disabled (opacity 0.4, cursor default) when there are no unread notifications. On click, all unread dots fade out simultaneously with a satisfying 200ms cascade.",
67
+ "category-tabs": "A horizontal tab bar below the header. Height 36px, padding 0 16px, flex row, gap 0. Four tabs: All, Mentions, Updates, System. Each tab is a text-sm button with padding 8px 12px, flex: 1, text-center. Active tab: text-accent font-medium with a 2px bottom border in var(--d-accent), transitioning via a sliding underline animation (200ms ease-out). Inactive tabs: text-muted, hover: text-foreground. The tab bar has a border-bottom 1px solid var(--d-border-subtle). Tab counts can optionally show as small superscript numbers (text-xs, text-muted) beside each tab label.",
68
+ "notification-list": "Scrollable container (flex: 1, overflow-y: auto, max-height: ~340px within the popover) containing NotificationItem entries stacked vertically. Has a thin top hairline within each item for visual separation. Scrollbar is styled thin (4px width, rounded, semi-transparent). When scrolled, a subtle top shadow (box-shadow: inset 0 8px 8px -8px rgba(0,0,0,0.05)) indicates more content above.",
69
+ "notification-item": "Repeating slot — one per notification. A horizontal flex row, padding 12px 16px, gap 12px, items start. Hover: background var(--d-bg-muted). Unread items have background color-mix(in srgb, var(--d-accent) 3%, transparent). Left column: the unread dot (6px filled circle, var(--d-accent), margin-top 6px to align with title text, transition: opacity 200ms for read/unread toggle; invisible but occupying space when read to maintain alignment). Source icon column: a 32px circle with background var(--d-bg-muted), centered 20px icon representing notification type (chat-bubble-left for mentions in blue, arrow-path for updates in green, cog for system in gray, bell for general in accent). Content column (flex: 1, min-width 0 for truncation): title (text-sm font-medium text-foreground, white-space nowrap, overflow hidden, text-ellipsis), description (text-xs text-muted, line-clamp-2, margin-top 2px). Right column (flex-shrink 0, text-right): timestamp (text-xs text-muted, white-space nowrap, e.g., '2m ago', '1h', 'Yesterday'), dismiss X button (16px icon, text-muted, opacity 0, position absolute top-right of item, transition: opacity 150ms, hover: text-foreground; becomes opacity 1 when the parent item is hovered). The entire item is clickable, navigating to the source content.",
70
+ "empty-state": "Shown when the current category has zero notifications. A centered vertical flex column within the list area: a large check-circle outline icon (48px, text-muted at 50% opacity), 'All caught up' heading (text-sm font-medium text-muted, margin-top 12px), and 'No new notifications' subtext (text-xs text-muted, margin-top 4px). The empty state also shows a subtle illustration or decorative element if the design system supports it. This state should feel celebratory and clean, not broken or empty.",
71
+ "preferences-footer": "Anchored at the bottom of the popover. A full-width row with border-top 1px solid var(--d-border-subtle), padding 10px 16px, text-center. Contains a 'Notification preferences' link in text-xs text-muted with a small settings/gear icon (12px) to the left. Hover: text-foreground. Clicking navigates to the notification settings page. In page preset, this becomes a sidebar link or prominent section header."
72
+ }
73
+ },
74
+ "accessibility": {
75
+ "role": "dialog",
76
+ "aria-label": "Notification center",
77
+ "announcements": [
78
+ "Notification center opened, {count} unread notifications",
79
+ "New notification: {title}",
80
+ "Notification marked as read",
81
+ "All notifications marked as read",
82
+ "Notification dismissed"
83
+ ],
84
+ "keyboard": [
85
+ "Enter/Space on bell: toggle notification dropdown",
86
+ "Escape: close notification dropdown",
87
+ "Tab: move between header actions, tabs, and notification items",
88
+ "Arrow Up/Down: navigate between notification items",
89
+ "Enter on item: navigate to notification source",
90
+ "Delete on item: dismiss notification",
91
+ "Ctrl/Cmd+Shift+N: mark all as read"
92
+ ]
93
+ },
94
+ "responsive": {
95
+ "mobile": "Dropdown becomes a full-screen slide-up sheet (bottom sheet) with a drag handle at the top. Bell button remains in the navigation bar with the badge. Category tabs become horizontally scrollable. Notification items get larger tap targets (padding 16px). Dismiss X button is always visible (not hover-dependent). Swipe-left on an item reveals dismiss and mute actions. 'Mark all read' is in a top-right action menu. Toast notifications appear at the top of the screen instead of bottom-right, spanning full width with 8px horizontal margin.",
96
+ "tablet": "Dropdown renders at full 380px width anchored to the bell. Notification items maintain compact sizing. Category tabs show with counts. Toast stack appears in the top-right corner. Page preset uses a two-column layout: categories on the left (200px) and notification list on the right.",
97
+ "desktop": "Full dropdown experience with hover states, keyboard navigation, and dismiss-on-hover X buttons. Toast stack in bottom-right corner. Page preset shows full three-column layout (categories, list, detail preview). Notifications can be grouped by date (Today, Yesterday, This Week, Older) with sticky date headers."
98
+ },
99
+ "motion": {
100
+ "micro": {
101
+ "bell-ring": "Bell icon wiggles (rotate -15deg→15deg→-10deg→10deg→0) over 500ms when a new notification arrives, ease-out",
102
+ "badge-bounce": "Count badge scales 1.0→1.3→1.0 over 300ms spring when count changes",
103
+ "item-hover": "Background color transition 100ms ease-out",
104
+ "dismiss-reveal": "X button fades in (opacity 0→1) 150ms ease-out on item hover"
105
+ },
106
+ "transitions": {
107
+ "dropdown-open": "Popover scales from 0.95 to 1.0 + fade in, 200ms ease-out, transform-origin at the bell button anchor point",
108
+ "dropdown-close": "Popover scales to 0.95 + fade out, 150ms ease-in",
109
+ "read-dot-fade": "Unread dot fades from opacity 1→0 over 200ms ease-out when marked as read",
110
+ "mark-all-read": "All unread dots cascade-fade from top to bottom with 30ms stagger between items",
111
+ "toast-enter": "Toast slides in from right (translateX(100%)→0) + fade, 300ms spring(1, 90, 12)",
112
+ "toast-exit": "Toast slides out to right (0→translateX(100%)) + fade, 200ms ease-in"
113
+ },
114
+ "ambient": {
115
+ "new-notification-pulse": "Newly arrived notification item background pulses accent-tint once (0%→5%→0% opacity) over 1s ease-out to draw attention",
116
+ "toast-progress": "Toast auto-dismiss progress: a thin 2px accent bar at the bottom shrinks from 100%→0% width over 5s linear, showing time remaining before auto-dismiss"
117
+ }
118
+ },
119
+ "interactions": [
120
+ "animate-on-mount",
121
+ "real-time-updates",
122
+ "stagger-children",
123
+ "hover-reveal",
124
+ "click-select"
125
+ ],
126
+ "composition": {
127
+ "NotificationCenter": "Anchor(d-interactive) > [BellButton + UnreadBadge?] + Dropdown?(d-surface, floating)",
128
+ "Dropdown": "Popover(d-surface, anchored, shadow-xl) > [Header + CategoryTabs + NotificationList + PreferencesFooter]",
129
+ "Header": "Bar(flex-row, justify-between) > [Title + MarkAllReadButton]",
130
+ "CategoryTabs": "Tabs(d-control, flex-row) > Tab[](All|Mentions|Updates|System)",
131
+ "NotificationList": "List(scrollable, flex-col) > NotificationItem* | EmptyState",
132
+ "NotificationItem": "Item(d-interactive, flex-row) > [UnreadDot? + SourceIcon + Content(Title + Description) + Timestamp + DismissButton?]",
133
+ "EmptyState": "State(centered, flex-col) > [CheckCircleIcon + Heading + Subtext]",
134
+ "ToastStack": "Stack(fixed, corner-anchored, z-top) > Toast*(d-surface, auto-dismiss) > [ColorStrip + Icon + Content + CloseButton]"
135
+ }
136
+ }
@@ -0,0 +1,109 @@
1
+ {
2
+ "id": "offset-cart",
3
+ "$schema": "https://decantr.ai/schemas/pattern.v2.json",
4
+ "version": "1.0.0",
5
+ "decantr_compat": ">=2.0.0",
6
+ "name": "Offset Cart",
7
+ "description": "A carbon offset marketplace cart with browsable project cards, tonnage selectors, certification badges, and a running impact summary sidebar.",
8
+ "category": "climate",
9
+ "tags": [
10
+ "2026",
11
+ "climate",
12
+ "offsets",
13
+ "marketplace",
14
+ "cart",
15
+ "carbon-credits",
16
+ "sustainability"
17
+ ],
18
+ "components": [
19
+ "OffsetProject",
20
+ "ImpactBadge",
21
+ "TonnageSelector",
22
+ "ProjectImage",
23
+ "CertificationChip",
24
+ "TotalImpact"
25
+ ],
26
+ "default_preset": "standard",
27
+ "presets": {
28
+ "standard": {
29
+ "description": "Full marketplace layout with grid of browsable project cards on the left and persistent cart summary sidebar docked to the right edge",
30
+ "layout": {
31
+ "layout": "split-3-1",
32
+ "atoms": "_grid _grid-cols-4 _gap-6 _w100 _p-6"
33
+ }
34
+ },
35
+ "minimal": {
36
+ "description": "Compact checkout-focused view showing only selected projects in a single column with inline quantity controls and summary footer",
37
+ "layout": {
38
+ "layout": "single-column",
39
+ "atoms": "_flex _flex-col _gap-4 _w100 _max-w-xl _mx-auto _p-6"
40
+ }
41
+ },
42
+ "comparison": {
43
+ "description": "Side-by-side comparison of multiple candidate offset projects aligned on certification, cost per tonne, vintage, and verification status rows",
44
+ "layout": {
45
+ "layout": "horizontal-compare",
46
+ "atoms": "_grid _grid-cols-3 _gap-4 _w100 _p-6"
47
+ }
48
+ }
49
+ },
50
+ "visual_brief": "A marketplace grid of offset project cards, each showing a high-quality photograph at the top depicting project type (dense forest canopy for reforestation, wind turbines at sunset for renewable, industrial scrubbers for direct air capture, mangrove coastline for blue carbon). Below the image: project name in bold sans-serif, location in muted italic, certification chips arranged in a row (Verra VCS, Gold Standard, CCB, ACR) with small recognisable logos. Cost per tonne displayed prominently in monospace (e.g. '$18.50/tCO2e'), vintage year, and verification status pill (Verified / Pending). A tonnage selector with minus/plus buttons and numeric input sits at the bottom of each card with an 'Add to Cart' button. Right-docked cart sidebar displays total tonnes, total cost, projected impact in monospace, certification mix as tiny stacked bars, and a prominent checkout button. Cart line items show thumbnail, project name, tonnes x rate, and remove button.",
51
+ "layout_hints": {
52
+ "container": "d-section",
53
+ "note": "Project cards use d-interactive with cursor:pointer. Images must maintain 16:9 aspect ratio. Certifications rendered with text labels, not icon-only.",
54
+ "currency": "All monetary values in monospace with currency symbol prefix. Tonnage values always include tCO2e unit."
55
+ },
56
+ "default_layout": {
57
+ "layout": "split-3-1",
58
+ "atoms": "_grid _grid-cols-4 _gap-6 _w100 _p-6",
59
+ "slots": {
60
+ "offset-project": "Repeating project card. Contains image, name, location, certifications, price, tonnage selector, and add-to-cart control.",
61
+ "project-image": "Top-of-card photograph showing project visual. 16:9 aspect, rounded top corners.",
62
+ "certification-chip": "Small labeled pill with certification standard name (Verra, Gold Standard, etc.) and subtle standard-specific color.",
63
+ "tonnage-selector": "Input group with minus/plus buttons around a numeric input for tonnes to purchase.",
64
+ "impact-badge": "Small badge on each card showing equivalent impact (e.g. 'offsets 3 flights' or 'powers 2 homes/yr').",
65
+ "total-impact": "Right sidebar cart summary showing running total tonnes, total cost, certification mix, line items, and checkout button."
66
+ }
67
+ },
68
+ "accessibility": {
69
+ "role": "region",
70
+ "aria-label": "Carbon offset marketplace and cart",
71
+ "announcements": [
72
+ "Added {tonnes} tCO2e of {project} to cart",
73
+ "Cart total {tonnes} tCO2e at {cost}"
74
+ ],
75
+ "keyboard": [
76
+ "Tab: cycle through project cards and cart items",
77
+ "Enter: add selected project to cart",
78
+ "Arrow Up/Down: adjust tonnage selector",
79
+ "Delete: remove item from cart when focused"
80
+ ]
81
+ },
82
+ "responsive": {
83
+ "mobile": "Project grid becomes single column. Cart summary moves to sticky bottom sheet with expand handle.",
84
+ "tablet": "Project grid 2 columns with cart sidebar remaining docked right."
85
+ },
86
+ "motion": {
87
+ "micro": {
88
+ "card-hover": "elevation raise + image zoom(1.03) 200ms ease-out",
89
+ "add-to-cart": "button pulse + cart icon bounce 300ms spring"
90
+ },
91
+ "transitions": {
92
+ "cart-add": "new line item slide-in from top 400ms ease-out",
93
+ "cart-remove": "line item slide-out + height collapse 300ms ease-in"
94
+ },
95
+ "ambient": {
96
+ "checkout-pulse": "subtle button glow on checkout CTA 2.5s ease-in-out infinite"
97
+ }
98
+ },
99
+ "interactions": [
100
+ "animate-on-mount"
101
+ ],
102
+ "composition": {
103
+ "OffsetCart": "Section(d-section) > [ProjectGrid > OffsetProject[](d-interactive) + CartSidebar > TotalImpact]",
104
+ "OffsetProject": "Card(d-surface, data-interactive) > [ProjectImage + ProjectInfo > [ProjectName + Location + CertificationChip[] + PriceLabel + ImpactBadge] + TonnageSelector + AddToCartButton]",
105
+ "TotalImpact": "Panel(d-surface, sticky) > [TotalTonnes(mono) + TotalCost(mono) + CertificationMix + CartLineItem[] + CheckoutButton]",
106
+ "TonnageSelector": "InputGroup > [MinusButton + NumberInput + PlusButton]",
107
+ "CertificationChip": "Chip(d-annotation, data-standard) > [StandardLogo + StandardName]"
108
+ }
109
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "$schema": "https://decantr.ai/schemas/pattern.v2.json",
3
+ "id": "onboarding-wizard",
4
+ "version": "1.0.0",
5
+ "decantr_compat": ">=2.0.0",
6
+ "name": "Onboarding Wizard",
7
+ "description": "Multi-step guided flow with progress indicator, step validation, and completion celebration for user onboarding and setup experiences.",
8
+ "category": "onboarding",
9
+ "tags": [
10
+ "2026",
11
+ "onboarding",
12
+ "wizard",
13
+ "stepper",
14
+ "multi-step",
15
+ "setup",
16
+ "flow",
17
+ "progress"
18
+ ],
19
+ "components": [
20
+ "StepIndicator",
21
+ "StepContent",
22
+ "NavigationButtons",
23
+ "ProgressBar",
24
+ "CompletionScreen",
25
+ "SkipButton"
26
+ ],
27
+ "default_preset": "stepper",
28
+ "presets": {
29
+ "stepper": {
30
+ "description": "Numbered horizontal step indicator at the top with sequential content panels below — the classic wizard pattern for linear multi-step flows with validation between steps",
31
+ "layout": {
32
+ "layout": "stack",
33
+ "atoms": "_flex _col _items-center _min-h-full _bg-surface _p-8"
34
+ }
35
+ },
36
+ "carousel": {
37
+ "description": "Slide-based onboarding with horizontal transitions between steps — content slides left/right with dot indicators and swipe support, ideal for visual introductions",
38
+ "layout": {
39
+ "layout": "stack",
40
+ "atoms": "_flex _col _items-center _justify-center _h-full _bg-surface _overflow-hidden"
41
+ }
42
+ },
43
+ "checklist": {
44
+ "description": "Non-linear task checklist where users can complete setup steps in any order — each task expands inline when clicked, with an overall progress tracker at the top",
45
+ "layout": {
46
+ "layout": "stack",
47
+ "atoms": "_flex _col _max-w-2xl _mx-auto _p-8 _bg-surface _gap-4"
48
+ }
49
+ }
50
+ },
51
+ "visual_brief": "A clean, focused onboarding experience centered on the page with generous whitespace. The StepIndicator sits at the top of the content area as a horizontal row of numbered circles (32px diameter each) connected by horizontal lines (2px height, spanning the gap between circles). The current/active step circle is filled with the accent color (var(--d-accent)) with white text showing the step number — it is slightly larger (36px) and has a subtle shadow (0 0 0 4px color-mix(in srgb, var(--d-accent) 15%, transparent)) creating a ring highlight. Completed steps show a white checkmark icon on an accent-filled circle with full opacity. Upcoming/future steps are outlined circles (2px border var(--d-border-muted)) with muted text for the number. The connecting lines between steps use the accent color for completed segments and var(--d-border-muted) for upcoming segments, with the current-step segment showing a gradient transition from accent to muted. Directly below the step indicator is the ProgressBar: a thin horizontal bar (4px height, border-radius: 2px, full width of the step indicator) showing the overall completion percentage with a smooth fill using the accent color on a muted track background. The StepContent area below is the largest section: a max-width 640px centered container with generous padding (40px top, 32px sides). Each step renders a title (text-xl font-semibold, margin-bottom 8px), an optional description (text-sm text-muted, margin-bottom 24px), and the step's form fields or content. Transitions between steps use a horizontal slide animation: forward steps slide in from the right, backward steps slide in from the left, with a 300ms ease-out duration. The NavigationButtons are right-aligned at the bottom of the content area with a top margin of 32px. The 'Back' button is a ghost/outline style (text-sm, no fill, muted border, visible from step 2 onward). The 'Continue' button is a primary filled button (accent background, white text, min-width 120px, text-sm font-medium). Between the Back and Continue buttons sits optional space, and a SkipButton as a subtle text link ('Skip this step', text-xs text-muted, hover: underline) appears only on optional steps. On the final step, 'Continue' changes to 'Complete' or 'Get Started'. The CompletionScreen replaces the step content after the last step: a centered column with a large animated check circle (72px, accent-filled, white checkmark that draws itself with a stroke animation), a 'You are all set!' heading (text-2xl font-bold, margin-top 24px), a congratulatory subtext (text-base text-muted, max-width 400px, text-center), and a primary 'Get Started' button below. A subtle confetti animation plays in the background — small colored particles (accent, green, amber, purple) that burst from the center and float downward with gentle rotation, lasting 2.5 seconds then fading. In the checklist preset, each task is a card (d-surface, border, border-radius 8px, padding 16px) with a checkbox, task name, and description. Completed tasks show a green checkmark and muted/struck-through title. The task expands inline to show its content when clicked.",
52
+ "layout_hints": {
53
+ "container": "centered-column",
54
+ "note": "The wizard should be centered on the page with a max-width of 720px for the overall container and 640px for step content. Generous vertical spacing creates a calm, focused feel. Do NOT cram the wizard into a small card — it should feel spacious.",
55
+ "step_indicator": "The horizontal step indicator must be visually clear at a glance. Completed (checkmark), active (filled, highlighted), and upcoming (outlined, muted) states must be distinctly different. The connecting lines are essential — they visually link the steps into a journey narrative. Place the step indicator within a max-width container (e.g., 480px for 4-5 steps) centered above the content.",
56
+ "content_area": "Step content should be max-width 640px centered. Form fields within each step should use the full width. Keep each step focused — one primary action or information group per step. Avoid scrolling within a step if possible.",
57
+ "navigation_alignment": "Navigation buttons align to the right edge of the content area. The 'Back' button sits to the LEFT of 'Continue' with a 12px gap. The SkipButton, if present, sits to the FAR LEFT of the button row (justify-between with the nav buttons). This creates a clear visual hierarchy: skip (optional, left), back (secondary, right-of-center), continue (primary, far right).",
58
+ "completion_celebration": "The confetti animation should be delightful but not overwhelming. Use 30-50 particles, small sizes (4-8px), and fade them out after 2.5 seconds. The check circle animation should be the star — the checkmark stroke draws itself over 600ms with a satisfying easing curve."
59
+ },
60
+ "default_layout": {
61
+ "layout": "stack",
62
+ "atoms": "_flex _col _items-center _min-h-full _bg-surface _p-8",
63
+ "slots": {
64
+ "step-indicator": "Horizontal row of step markers centered at the top of the wizard. Max-width 480px for 4-5 steps (scales proportionally). Each step marker is a flex column: the circle (32px diameter) on top, and optionally a step label (text-xs text-muted, max-width 80px, text-center, margin-top 6px) below. Circles are connected by horizontal lines (2px height) that span from the right edge of one circle to the left edge of the next, vertically centered with the circles. Circle states — Completed: background var(--d-accent), white checkmark SVG icon (16px), full opacity. Active: background var(--d-accent), white step number (text-sm font-bold), box-shadow: 0 0 0 4px color-mix(in srgb, var(--d-accent) 15%, transparent), slightly larger (36px diameter) with a smooth size transition. Upcoming: background transparent, border 2px solid var(--d-border-muted), step number in text-muted (text-sm). Line states — Between completed steps: background var(--d-accent). Between active and next: a gradient from var(--d-accent) to var(--d-border-muted). Between upcoming steps: background var(--d-border-muted). The active circle and its connecting lines transition smoothly (300ms ease-out) when stepping forward or backward.",
65
+ "progress-bar": "A thin horizontal bar positioned directly below the step indicator with 12px top margin. Width matches the step indicator container (480px or proportional). Height: 4px. Border-radius: 2px. Track: background var(--d-bg-muted). Fill: background var(--d-accent), width transitions smoothly (400ms ease-out) as the user progresses. The fill width represents overall completion as a percentage (e.g., step 2 of 4 = 50%). On completion, the bar fills to 100% with a brief accent pulse animation.",
66
+ "step-content": "The main content area below the progress bar. Max-width 640px, width 100%, centered (margin 0 auto), padding-top 40px. Each step renders: a title (text-xl font-semibold text-foreground, text-center or text-left depending on content type), an optional description (text-sm text-muted, margin-top 8px, margin-bottom 24px, max-width 480px, text-center for intro text or text-left for form instructions), and the step body (form fields, selections, informational content). Transitions between steps: the outgoing step slides out (translateX to -100% for forward, +100% for backward) while the incoming step slides in from the opposite side, both over 300ms ease-out. The content area has a min-height (e.g., 300px) to prevent layout shift between steps of different heights.",
67
+ "navigation-buttons": "A horizontal flex row at the bottom of the step content area. Width matches the step content (max-width 640px). Margin-top 32px. Justify-content: space-between for when SkipButton is present, or flex-end when only Back/Continue show. Left side: SkipButton (text-xs text-muted, ghost style, 'Skip this step' with a right-pointing chevron icon, only visible on optional steps, hover: text-foreground, hover: underline). Right side: a flex row with gap 12px containing the Back button (ghost variant, text-sm, left arrow icon + 'Back' text, visible from step 2 onward, disabled on step 1) and the Continue button (primary variant, text-sm font-medium, 'Continue' text + right arrow icon, min-width 120px, accent background, white text). On the final step, Continue reads 'Complete Setup' or 'Get Started' and may have a sparkle/check icon. The Continue button shows a loading spinner (16px, replacing the arrow icon) during async validation. If validation fails, the button shakes briefly (translateX -4px→4px→-2px→2px→0, 400ms) and an error message appears below it.",
68
+ "completion-screen": "Replaces step-content and step-indicator after the final step is completed. A centered vertical flex column with items-center. Top: an animated check circle — a 72px diameter circle with background var(--d-accent) and a white checkmark SVG. The checkmark draws itself with a stroke-dasharray animation: dasharray equals the path length, dashoffset animates from full to 0 over 600ms with a cubic-bezier(0.65, 0, 0.35, 1) easing. The circle itself scales from 0.8 to 1.0 with a slight overshoot (spring) during the same period. Below: 'You are all set!' heading (text-2xl font-bold text-foreground, margin-top 24px), a congratulatory description (text-base text-muted, max-width 400px, text-center, margin-top 8px, e.g., 'Your account is configured and ready to go.'), and a primary 'Get Started' button (margin-top 32px, large size, min-width 160px). Confetti animation: 40 small particles (4-8px each, mix of circles and rectangles) in accent, green (#22c55e), amber (#f59e0b), and purple (#8b5cf6) colors burst outward from the center of the screen in a fountain pattern, each with random velocity, gentle gravity, rotation, and opacity fade. The burst lasts 2.5 seconds total, particles fade out individually as they slow. Confetti is rendered in a fixed overlay layer with pointer-events: none.",
69
+ "skip-button": "A subtle, low-emphasis text button that appears on the left side of the navigation row for optional steps. Renders as text-xs text-muted with no background or border. Text reads 'Skip this step' or 'I'll do this later'. On hover: text color strengthens to text-foreground with an underline. On click: advances to the next step without saving the current step's data. Only present on steps explicitly marked as skippable — mandatory steps do not show this button."
70
+ }
71
+ },
72
+ "accessibility": {
73
+ "role": "form",
74
+ "aria-label": "Onboarding wizard",
75
+ "announcements": [
76
+ "Step {current} of {total}: {step title}",
77
+ "Step {title} completed, moving to step {next}",
78
+ "Onboarding complete — you're all set",
79
+ "Validation error: {error message}",
80
+ "Step skipped, moving to step {next}"
81
+ ],
82
+ "keyboard": [
83
+ "Tab: move between form fields and navigation buttons within a step",
84
+ "Enter: submit current step (equivalent to clicking Continue)",
85
+ "Escape: go back to previous step or close the wizard if on step 1",
86
+ "Arrow Left/Right: navigate step indicator (visual only, does not skip steps)",
87
+ "Shift+Tab: reverse tab order through form fields"
88
+ ]
89
+ },
90
+ "responsive": {
91
+ "mobile": "Step indicator simplifies to a compact format: 'Step 2 of 4' text label with a full-width progress bar beneath it — numbered circles are hidden to save vertical space. Step content goes full-width with 16px horizontal padding. Navigation buttons stack vertically: Continue button full-width on top, Back button full-width below, SkipButton as a centered text link at the bottom. Step transitions change from horizontal slide to a simple cross-fade (300ms) to avoid horizontal overflow issues. Completion confetti still plays but with fewer particles (20). The check circle scales down to 56px.",
92
+ "tablet": "Step indicator shows numbered circles but without step labels beneath them to save space. Content area max-width 560px. Navigation buttons remain horizontal. Step transitions use horizontal slide. Completion screen maintains full animations. Touch-friendly button sizes (min height 44px).",
93
+ "desktop": "Full step indicator with numbered circles, connecting lines, and optional step labels. Content area at max-width 640px with generous surrounding whitespace. All animations at full fidelity. Keyboard shortcuts enabled. Progress bar and step indicator are both visible. Confetti uses the full 40-particle burst."
94
+ },
95
+ "motion": {
96
+ "micro": {
97
+ "step-circle-activate": "Active circle scales from 32px to 36px + shadow ring expands, 300ms spring",
98
+ "button-hover": "Primary button: subtle brightness increase (filter: brightness(1.05)), 100ms ease-out",
99
+ "button-press": "scale(0.98), 80ms ease-out, return 120ms ease-out",
100
+ "validation-shake": "Continue button shakes translateX(-4px→4px→-2px→2px→0), 400ms ease-out on validation failure"
101
+ },
102
+ "transitions": {
103
+ "step-forward": "Outgoing content slides left (translateX(0→-100%)) + fade; incoming content slides in from right (translateX(100%→0)) + fade, 300ms ease-out",
104
+ "step-backward": "Outgoing content slides right (translateX(0→100%)) + fade; incoming content slides in from left (translateX(-100%→0)) + fade, 300ms ease-out",
105
+ "progress-fill": "Progress bar width transitions smoothly 400ms ease-out on step change",
106
+ "line-fill": "Connecting lines between step circles fill with accent color 300ms ease-out when a step completes",
107
+ "completion-enter": "Content cross-fades from final step to completion screen, 400ms ease-in-out"
108
+ },
109
+ "ambient": {
110
+ "checkmark-draw": "SVG checkmark stroke-dashoffset animates from pathLength to 0 over 600ms cubic-bezier(0.65, 0, 0.35, 1), creating a drawing effect",
111
+ "confetti-burst": "40 particles burst outward from center: each with random angle (0-360deg), velocity (200-500px), gravity pull (300px/s²), rotation (random 0-720deg over lifetime), and opacity fade (1.0→0 in final 500ms). Total duration 2.5s. Particles use mix of circle and rounded-rectangle shapes in 4 colors.",
112
+ "active-ring-pulse": "Active step circle's outer ring shadow pulses opacity 0.1→0.2→0.1 slowly, 3s ease-in-out infinite, providing a subtle breathing effect"
113
+ }
114
+ },
115
+ "interactions": [
116
+ "animate-on-mount",
117
+ "stagger-children",
118
+ "click-select",
119
+ "keyboard-navigation",
120
+ "focus-trap"
121
+ ],
122
+ "composition": {
123
+ "OnboardingWizard": "Wizard(d-section, centered, max-width) > [StepIndicator + ProgressBar + StepContent + NavigationButtons] | CompletionScreen",
124
+ "StepIndicator": "Indicator(flex-row, centered) > StepCircle*(numbered|checked|upcoming) + ConnectingLine*(filled|unfilled)",
125
+ "ProgressBar": "Bar(d-annotation, thin, full-width) > Fill(accent, width-transition)",
126
+ "StepContent": "Content(d-surface, centered, max-width-640, slide-transition) > [Title + Description? + StepBody(form|info)]",
127
+ "NavigationButtons": "Actions(flex-row, justify-between|end) > [SkipButton? + BackButton?(ghost) + ContinueButton(primary)]",
128
+ "CompletionScreen": "Celebration(centered, flex-col) > [CheckCircle(animated-draw) + Heading + Description + CTAButton] + ConfettiOverlay(ephemeral)"
129
+ }
130
+ }