@adia-ai/gen-ui 0.8.37

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 (631) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +77 -0
  3. package/compose/CHANGELOG.md +1707 -0
  4. package/compose/README.md +215 -0
  5. package/compose/core/artifacts.js +262 -0
  6. package/compose/core/context-store.js +218 -0
  7. package/compose/core/generator.d.ts +4 -0
  8. package/compose/core/generator.js +602 -0
  9. package/compose/core/pipeline/engine.js +289 -0
  10. package/compose/core/pipeline/types.js +91 -0
  11. package/compose/core/plan-primitives.js +120 -0
  12. package/compose/core/plan-turn.js +145 -0
  13. package/compose/core/reference.js +150 -0
  14. package/compose/core/state.js +15 -0
  15. package/compose/evals/harness.d.ts +4 -0
  16. package/compose/evals/harness.mjs +193 -0
  17. package/compose/index.d.ts +4 -0
  18. package/compose/index.js +16 -0
  19. package/compose/shared/validate-and-repair.js +122 -0
  20. package/compose/strategies/_shared/chunk-loader.js +282 -0
  21. package/compose/strategies/cascade.d.ts +67 -0
  22. package/compose/strategies/cascade.js +165 -0
  23. package/compose/strategies/escalation.d.ts +13 -0
  24. package/compose/strategies/escalation.js +132 -0
  25. package/compose/strategies/free-form-composer/index.js +254 -0
  26. package/compose/strategies/free-form-composer/system-prompt.js +205 -0
  27. package/compose/strategies/free-form-composer/transpile.js +279 -0
  28. package/compose/strategies/monolithic/_shared.js +1619 -0
  29. package/compose/strategies/monolithic/generate-instant.js +228 -0
  30. package/compose/strategies/monolithic/generate-pro.js +490 -0
  31. package/compose/strategies/monolithic/generate-thinking.js +206 -0
  32. package/compose/strategies/registry.d.ts +20 -0
  33. package/compose/strategies/registry.js +495 -0
  34. package/compose/strategies/zettel/_smoke.js +27 -0
  35. package/compose/strategies/zettel/chunk-composer.js +214 -0
  36. package/compose/strategies/zettel/chunk-refiner.js +582 -0
  37. package/compose/strategies/zettel/chunk-synthesizer.js +458 -0
  38. package/compose/strategies/zettel/composer.js +78 -0
  39. package/compose/strategies/zettel/composition-library.js +418 -0
  40. package/compose/strategies/zettel/generate.js +15 -0
  41. package/compose/strategies/zettel/generator-adapter.d.ts +4 -0
  42. package/compose/strategies/zettel/generator-adapter.js +242 -0
  43. package/compose/strategies/zettel/issue-reporter.js +607 -0
  44. package/compose/strategies/zettel/session-store.js +121 -0
  45. package/compose/strategies/zettel/state-cache.js +158 -0
  46. package/compose/transpiler/transpiler-maps.js +675 -0
  47. package/compose/transpiler/transpiler.d.ts +4 -0
  48. package/compose/transpiler/transpiler.js +962 -0
  49. package/corpus/CHANGELOG.md +1957 -0
  50. package/corpus/README.md +279 -0
  51. package/corpus/catalog-a2ui_0_9.d.ts +4 -0
  52. package/corpus/catalog-a2ui_0_9.json +29571 -0
  53. package/corpus/catalog-a2ui_0_9_rules.txt +1215 -0
  54. package/corpus/chunk-embeddings.d.ts +4 -0
  55. package/corpus/chunk-embeddings.json +1 -0
  56. package/corpus/chunks/_index.json +16658 -0
  57. package/corpus/chunks/_source-hashes.json +571 -0
  58. package/corpus/chunks/access-denied-with-request.json +124 -0
  59. package/corpus/chunks/access-request-form.json +166 -0
  60. package/corpus/chunks/access-request-pending.json +133 -0
  61. package/corpus/chunks/accordion-settings.json +176 -0
  62. package/corpus/chunks/achievement-badges.json +413 -0
  63. package/corpus/chunks/achievement-unlock.json +104 -0
  64. package/corpus/chunks/action-list-record-actions.json +84 -0
  65. package/corpus/chunks/activity-feed.json +390 -0
  66. package/corpus/chunks/admin-page-header-flush.json +83 -0
  67. package/corpus/chunks/admin-page-header-title-description.json +80 -0
  68. package/corpus/chunks/admin-page-header-with-actions.json +107 -0
  69. package/corpus/chunks/admin-page-header-with-tabs.json +144 -0
  70. package/corpus/chunks/admin-shell-rounded-borderless.json +287 -0
  71. package/corpus/chunks/admin-shell-standard.json +310 -0
  72. package/corpus/chunks/admin-sidebar-brand-signin.json +158 -0
  73. package/corpus/chunks/admin-sidebar-brand-version.json +130 -0
  74. package/corpus/chunks/admin-sidebar-flat-nav.json +131 -0
  75. package/corpus/chunks/admin-sidebar-nav-dividers.json +150 -0
  76. package/corpus/chunks/admin-sidebar-nav-groups.json +171 -0
  77. package/corpus/chunks/admin-sidebar-workspace-switcher.json +139 -0
  78. package/corpus/chunks/admin-topbar-breadcrumb-actions.json +130 -0
  79. package/corpus/chunks/admin-topbar-breadcrumb-minimal.json +79 -0
  80. package/corpus/chunks/admin-topbar-deep-breadcrumb.json +129 -0
  81. package/corpus/chunks/admin-topbar-search.json +104 -0
  82. package/corpus/chunks/admin-topbar-status-indicator.json +122 -0
  83. package/corpus/chunks/admin-topbar-trailing-toggle.json +114 -0
  84. package/corpus/chunks/agent-activity-feed.json +163 -0
  85. package/corpus/chunks/agent-artifact-stub-card.json +115 -0
  86. package/corpus/chunks/agent-canvas-shell.json +305 -0
  87. package/corpus/chunks/agent-citations-source-chips.json +82 -0
  88. package/corpus/chunks/agent-command-palette-search.json +120 -0
  89. package/corpus/chunks/agent-cost-detailed.json +260 -0
  90. package/corpus/chunks/agent-cost-inline.json +78 -0
  91. package/corpus/chunks/agent-memory-detail.json +181 -0
  92. package/corpus/chunks/agent-memory-editor.json +173 -0
  93. package/corpus/chunks/agent-memory-list.json +207 -0
  94. package/corpus/chunks/agent-pipeline-status-stages.json +61 -0
  95. package/corpus/chunks/agent-prompt-card.json +179 -0
  96. package/corpus/chunks/agent-prompt-library-grid.json +341 -0
  97. package/corpus/chunks/agent-prompt-picker.json +282 -0
  98. package/corpus/chunks/agent-rate-limit.json +100 -0
  99. package/corpus/chunks/agent-reasoning-collapsed.json +128 -0
  100. package/corpus/chunks/agent-tool-call-accordion.json +109 -0
  101. package/corpus/chunks/agent-tool-call-collapsed.json +98 -0
  102. package/corpus/chunks/agent-tool-call-error.json +112 -0
  103. package/corpus/chunks/agent-tool-call-result.json +145 -0
  104. package/corpus/chunks/agent-tool-call-running.json +85 -0
  105. package/corpus/chunks/agent-tool-call-success.json +137 -0
  106. package/corpus/chunks/agent-trace-timeline.json +244 -0
  107. package/corpus/chunks/ai-streaming-response.json +147 -0
  108. package/corpus/chunks/alert-banner-stack.json +78 -0
  109. package/corpus/chunks/alert-banner.json +55 -0
  110. package/corpus/chunks/alert-dialog-simple.json +72 -0
  111. package/corpus/chunks/alert-dialog-typed.json +107 -0
  112. package/corpus/chunks/alert-dialog-unsaved.json +81 -0
  113. package/corpus/chunks/analytics-chart.json +213 -0
  114. package/corpus/chunks/analytics-sparklines-dashboard.json +259 -0
  115. package/corpus/chunks/anchor-bar-selection-bar.json +226 -0
  116. package/corpus/chunks/api-key-table.json +148 -0
  117. package/corpus/chunks/api-keys-create.json +140 -0
  118. package/corpus/chunks/api-keys-list.json +271 -0
  119. package/corpus/chunks/app-nav-badges-counts.json +77 -0
  120. package/corpus/chunks/app-nav-badges-group-rollup-badges.json +100 -0
  121. package/corpus/chunks/app-nav-badges-plan-tiers.json +76 -0
  122. package/corpus/chunks/app-nav-badges-status-callouts.json +75 -0
  123. package/corpus/chunks/app-nav-full-example.json +195 -0
  124. package/corpus/chunks/app-nav-groups.json +103 -0
  125. package/corpus/chunks/app-nav-items.json +74 -0
  126. package/corpus/chunks/app-nav-labels-and-dividers.json +92 -0
  127. package/corpus/chunks/app-nav-spacer.json +77 -0
  128. package/corpus/chunks/app-product-listing-card.json +214 -0
  129. package/corpus/chunks/approvals-detail.json +240 -0
  130. package/corpus/chunks/approvals-queue.json +321 -0
  131. package/corpus/chunks/audit-log-basic.json +184 -0
  132. package/corpus/chunks/audit-log.json +174 -0
  133. package/corpus/chunks/auth-account-deleted-actions.json +51 -0
  134. package/corpus/chunks/auth-account-deleted.json +202 -0
  135. package/corpus/chunks/auth-card-content.json +260 -0
  136. package/corpus/chunks/auth-card-header.json +205 -0
  137. package/corpus/chunks/auth-email-entry.json +65 -0
  138. package/corpus/chunks/auth-email-verify-confirm.json +52 -0
  139. package/corpus/chunks/auth-email-verify.json +196 -0
  140. package/corpus/chunks/auth-forbidden-actions.json +59 -0
  141. package/corpus/chunks/auth-forbidden.json +203 -0
  142. package/corpus/chunks/auth-invite-actions.json +49 -0
  143. package/corpus/chunks/auth-invite-team-card.json +86 -0
  144. package/corpus/chunks/auth-link-expired-form.json +65 -0
  145. package/corpus/chunks/auth-link-expired.json +196 -0
  146. package/corpus/chunks/auth-locked-account.json +211 -0
  147. package/corpus/chunks/auth-locked-recovery-options.json +60 -0
  148. package/corpus/chunks/auth-mfa-enrollment-submit.json +54 -0
  149. package/corpus/chunks/auth-mfa-enrollment.json +284 -0
  150. package/corpus/chunks/auth-mfa-fallback-actions.json +52 -0
  151. package/corpus/chunks/auth-mfa-recovery.json +61 -0
  152. package/corpus/chunks/auth-new-password-form.json +75 -0
  153. package/corpus/chunks/auth-new-password.json +217 -0
  154. package/corpus/chunks/auth-oauth-fallback-actions.json +52 -0
  155. package/corpus/chunks/auth-oauth-interstitial.json +160 -0
  156. package/corpus/chunks/auth-password-challenge.json +94 -0
  157. package/corpus/chunks/auth-password-reset-form.json +64 -0
  158. package/corpus/chunks/auth-password-reset.json +195 -0
  159. package/corpus/chunks/auth-profile-form.json +72 -0
  160. package/corpus/chunks/auth-profile-setup.json +194 -0
  161. package/corpus/chunks/auth-reset-sent.json +188 -0
  162. package/corpus/chunks/auth-session-expired-actions.json +52 -0
  163. package/corpus/chunks/auth-session-expired.json +201 -0
  164. package/corpus/chunks/auth-signin-card-email.json +245 -0
  165. package/corpus/chunks/auth-signin-card-magic-link.json +147 -0
  166. package/corpus/chunks/auth-signin-card-mfa.json +231 -0
  167. package/corpus/chunks/auth-signin-card-otp.json +205 -0
  168. package/corpus/chunks/auth-signin-card-password.json +264 -0
  169. package/corpus/chunks/auth-signin-card-recovery.json +218 -0
  170. package/corpus/chunks/auth-signout-actions.json +51 -0
  171. package/corpus/chunks/auth-signout.json +184 -0
  172. package/corpus/chunks/auth-signup-email-entry.json +66 -0
  173. package/corpus/chunks/auth-signup-entry.json +281 -0
  174. package/corpus/chunks/auth-signup-social-auths.json +54 -0
  175. package/corpus/chunks/auth-signup-verify.json +227 -0
  176. package/corpus/chunks/auth-social-auths.json +62 -0
  177. package/corpus/chunks/auth-sso-providers.json +55 -0
  178. package/corpus/chunks/auth-sso-required.json +213 -0
  179. package/corpus/chunks/auth-team-invite.json +288 -0
  180. package/corpus/chunks/avatar-group-overflow.json +137 -0
  181. package/corpus/chunks/avatar-stack-overflow.json +124 -0
  182. package/corpus/chunks/banner-announcement-beta.json +99 -0
  183. package/corpus/chunks/banner-announcement-promo.json +102 -0
  184. package/corpus/chunks/banner-live-update.json +102 -0
  185. package/corpus/chunks/banner-system-maintenance.json +101 -0
  186. package/corpus/chunks/banner-system-offline.json +85 -0
  187. package/corpus/chunks/banner-system-update.json +102 -0
  188. package/corpus/chunks/bell-menu-empty.json +107 -0
  189. package/corpus/chunks/bell-menu-unread.json +395 -0
  190. package/corpus/chunks/billing-cancel-subscription-danger.json +61 -0
  191. package/corpus/chunks/billing-invoice-history-table.json +75 -0
  192. package/corpus/chunks/billing-overview.json +202 -0
  193. package/corpus/chunks/billing-payment-method-card-on-file.json +157 -0
  194. package/corpus/chunks/billing-progress-label.json +101 -0
  195. package/corpus/chunks/blog-post-card.json +212 -0
  196. package/corpus/chunks/breadcrumb-navigation.json +72 -0
  197. package/corpus/chunks/bulk-action-toolbar-floating.json +199 -0
  198. package/corpus/chunks/bulk-action-toolbar-swap.json +158 -0
  199. package/corpus/chunks/bulk-selection-actions-bar.json +162 -0
  200. package/corpus/chunks/business-address-form.json +953 -0
  201. package/corpus/chunks/calendar-month-view.json +74 -0
  202. package/corpus/chunks/card-grid-images.json +459 -0
  203. package/corpus/chunks/card-header-with-description.json +47 -0
  204. package/corpus/chunks/card-with-empty-state.json +96 -0
  205. package/corpus/chunks/card-with-form.json +143 -0
  206. package/corpus/chunks/card-with-sparkline.json +90 -0
  207. package/corpus/chunks/card-with-stat-kpi.json +86 -0
  208. package/corpus/chunks/changelog-feed-basic.json +470 -0
  209. package/corpus/chunks/chart-in-card-chart-plus-breakdown.json +188 -0
  210. package/corpus/chunks/chart-in-card-chart-plus-stat.json +89 -0
  211. package/corpus/chunks/chart-in-card-chart-with-filter-pills.json +124 -0
  212. package/corpus/chunks/chart-in-card-full-bleed-legend.json +116 -0
  213. package/corpus/chunks/chart-in-card-full-chart.json +107 -0
  214. package/corpus/chunks/chart-in-card-sparkline-tile.json +93 -0
  215. package/corpus/chunks/chart-in-card-stat-with-sparkline.json +73 -0
  216. package/corpus/chunks/chart-in-card-trend-footer.json +115 -0
  217. package/corpus/chunks/chart-with-filter-pills.json +169 -0
  218. package/corpus/chunks/chat-empty-state-hero.json +102 -0
  219. package/corpus/chunks/chat-message-assistant-byline.json +85 -0
  220. package/corpus/chunks/chat-message-user-byline.json +84 -0
  221. package/corpus/chunks/chat-page-shell.json +379 -0
  222. package/corpus/chunks/chat-streaming-surface.json +169 -0
  223. package/corpus/chunks/checkout-order-summary-card.json +140 -0
  224. package/corpus/chunks/code-snippet.json +107 -0
  225. package/corpus/chunks/col-form-stack.json +93 -0
  226. package/corpus/chunks/col-heading-body-action.json +79 -0
  227. package/corpus/chunks/col-stat-label.json +63 -0
  228. package/corpus/chunks/color-picker-swatches.json +153 -0
  229. package/corpus/chunks/command-palette.json +327 -0
  230. package/corpus/chunks/comments-composer.json +158 -0
  231. package/corpus/chunks/comments-mention-menu.json +237 -0
  232. package/corpus/chunks/comments-thread.json +344 -0
  233. package/corpus/chunks/commerce-pricing-tiers.json +401 -0
  234. package/corpus/chunks/comparison-table.json +246 -0
  235. package/corpus/chunks/contact-form-card.json +197 -0
  236. package/corpus/chunks/contact-form.json +157 -0
  237. package/corpus/chunks/contact-support-form.json +702 -0
  238. package/corpus/chunks/conversion-funnel-4-step-funnel.json +139 -0
  239. package/corpus/chunks/conversion-funnel-6step.json +151 -0
  240. package/corpus/chunks/conversion-funnel-wide-summary.json +192 -0
  241. package/corpus/chunks/conversion-funnel-with-segment-compare.json +202 -0
  242. package/corpus/chunks/cta-banner-centered.json +102 -0
  243. package/corpus/chunks/dashboard-acquisition-panel.json +212 -0
  244. package/corpus/chunks/dashboard-admin-page.json +104 -0
  245. package/corpus/chunks/dashboard-audience-kpis.json +165 -0
  246. package/corpus/chunks/dashboard-audience-panel.json +756 -0
  247. package/corpus/chunks/dashboard-behavior-panel.json +114 -0
  248. package/corpus/chunks/dashboard-chart-recent.json +566 -0
  249. package/corpus/chunks/dashboard-cohort-retention.json +83 -0
  250. package/corpus/chunks/dashboard-conversion-panel.json +234 -0
  251. package/corpus/chunks/dashboard-country-list.json +304 -0
  252. package/corpus/chunks/dashboard-filter-bar.json +118 -0
  253. package/corpus/chunks/dashboard-funnel.json +142 -0
  254. package/corpus/chunks/dashboard-notifications-panel.json +423 -0
  255. package/corpus/chunks/dashboard-overview-panel.json +1644 -0
  256. package/corpus/chunks/dashboard-page-header.json +166 -0
  257. package/corpus/chunks/dashboard-pages-table.json +86 -0
  258. package/corpus/chunks/dashboard-quick-actions.json +116 -0
  259. package/corpus/chunks/dashboard-reports-panel.json +166 -0
  260. package/corpus/chunks/dashboard-reports-table.json +138 -0
  261. package/corpus/chunks/dashboard-storage-card.json +117 -0
  262. package/corpus/chunks/dashboard-tabs.json +86 -0
  263. package/corpus/chunks/dashboard-team-actions-storage.json +605 -0
  264. package/corpus/chunks/dashboard-team-list.json +334 -0
  265. package/corpus/chunks/dashboard-traffic-channels.json +184 -0
  266. package/corpus/chunks/dashboard-transactions-table.json +145 -0
  267. package/corpus/chunks/data-export-history.json +192 -0
  268. package/corpus/chunks/data-export-request.json +197 -0
  269. package/corpus/chunks/data-import-wizard.json +391 -0
  270. package/corpus/chunks/date-range-picker.json +156 -0
  271. package/corpus/chunks/date-time-picker-form.json +222 -0
  272. package/corpus/chunks/departments-checkbox-form.json +390 -0
  273. package/corpus/chunks/destructive-confirm-modal.json +149 -0
  274. package/corpus/chunks/diff-inline.json +84 -0
  275. package/corpus/chunks/diff-side-by-side.json +131 -0
  276. package/corpus/chunks/diff-structured.json +216 -0
  277. package/corpus/chunks/digest-email-preview.json +374 -0
  278. package/corpus/chunks/divider-text-label.json +87 -0
  279. package/corpus/chunks/doc-editor-shell.json +356 -0
  280. package/corpus/chunks/drawer-2fa-key.json +273 -0
  281. package/corpus/chunks/drawer-2fa-sms.json +261 -0
  282. package/corpus/chunks/drawer-2fa-totp.json +385 -0
  283. package/corpus/chunks/drawer-cancel-sub.json +636 -0
  284. package/corpus/chunks/drawer-change-plan.json +561 -0
  285. package/corpus/chunks/drawer-custom-roles.json +696 -0
  286. package/corpus/chunks/drawer-data-start.json +171 -0
  287. package/corpus/chunks/drawer-delete-account.json +341 -0
  288. package/corpus/chunks/drawer-delete-workspace.json +362 -0
  289. package/corpus/chunks/drawer-discord.json +434 -0
  290. package/corpus/chunks/drawer-figma.json +401 -0
  291. package/corpus/chunks/drawer-first-dashboard.json +220 -0
  292. package/corpus/chunks/drawer-gcal.json +475 -0
  293. package/corpus/chunks/drawer-github.json +589 -0
  294. package/corpus/chunks/drawer-invite.json +397 -0
  295. package/corpus/chunks/drawer-record-detail.json +44 -0
  296. package/corpus/chunks/drawer-report.json +528 -0
  297. package/corpus/chunks/drawer-revoke-session.json +331 -0
  298. package/corpus/chunks/drawer-role.json +190 -0
  299. package/corpus/chunks/drawer-slack.json +429 -0
  300. package/corpus/chunks/drawer-smtp.json +476 -0
  301. package/corpus/chunks/drawer-source.json +294 -0
  302. package/corpus/chunks/drawer-transaction.json +493 -0
  303. package/corpus/chunks/drawer-with-create-form.json +43 -0
  304. package/corpus/chunks/editor-code-pane.json +204 -0
  305. package/corpus/chunks/editor-page-shell.json +149 -0
  306. package/corpus/chunks/editor-preview-pane.json +136 -0
  307. package/corpus/chunks/editor-statusbar-ready.json +99 -0
  308. package/corpus/chunks/editor-toolbar-import-export.json +195 -0
  309. package/corpus/chunks/email-inbox-list.json +678 -0
  310. package/corpus/chunks/empty-state-danger.json +58 -0
  311. package/corpus/chunks/empty-state-minimal.json +44 -0
  312. package/corpus/chunks/empty-state-warning.json +53 -0
  313. package/corpus/chunks/empty-state.json +65 -0
  314. package/corpus/chunks/error-404-actions.json +54 -0
  315. package/corpus/chunks/error-404.json +204 -0
  316. package/corpus/chunks/error-500-actions.json +61 -0
  317. package/corpus/chunks/error-500.json +220 -0
  318. package/corpus/chunks/error-maintenance-actions.json +53 -0
  319. package/corpus/chunks/error-maintenance.json +203 -0
  320. package/corpus/chunks/error-page-shell.json +132 -0
  321. package/corpus/chunks/export-flow-async.json +210 -0
  322. package/corpus/chunks/export-flow-delivery.json +163 -0
  323. package/corpus/chunks/export-flow-sync.json +162 -0
  324. package/corpus/chunks/extended-profile-form.json +512 -0
  325. package/corpus/chunks/faq-accordion.json +123 -0
  326. package/corpus/chunks/feature-grid-icons.json +314 -0
  327. package/corpus/chunks/feature-grid-three-cards.json +187 -0
  328. package/corpus/chunks/feature-toggle-switch-grid.json +213 -0
  329. package/corpus/chunks/file-upload-dnd.json +166 -0
  330. package/corpus/chunks/file-upload-field.json +97 -0
  331. package/corpus/chunks/file-upload-form.json +251 -0
  332. package/corpus/chunks/filter-bar-active-filters.json +176 -0
  333. package/corpus/chunks/filter-bar-filter-bar-with-table.json +113 -0
  334. package/corpus/chunks/filter-bar-saved-views.json +117 -0
  335. package/corpus/chunks/filter-popover-form.json +137 -0
  336. package/corpus/chunks/footer-multi-column.json +270 -0
  337. package/corpus/chunks/footer-primary-only.json +41 -0
  338. package/corpus/chunks/form-checkbox-group.json +65 -0
  339. package/corpus/chunks/form-drawer-edit-form.json +178 -0
  340. package/corpus/chunks/form-drawer-simple-form.json +151 -0
  341. package/corpus/chunks/form-drawer-tall-form.json +325 -0
  342. package/corpus/chunks/form-field-email-hint.json +53 -0
  343. package/corpus/chunks/form-field-range.json +54 -0
  344. package/corpus/chunks/form-field-required.json +52 -0
  345. package/corpus/chunks/form-field-select.json +66 -0
  346. package/corpus/chunks/form-field-textarea.json +51 -0
  347. package/corpus/chunks/form-field-with-error.json +151 -0
  348. package/corpus/chunks/form-fields-two-column.json +69 -0
  349. package/corpus/chunks/form-page-shell.json +146 -0
  350. package/corpus/chunks/form-switch-toggle.json +41 -0
  351. package/corpus/chunks/form-system-live-demo.json +123 -0
  352. package/corpus/chunks/forms-address-autocomplete.json +277 -0
  353. package/corpus/chunks/forms-address-fields.json +221 -0
  354. package/corpus/chunks/forms-conditional-reveal.json +195 -0
  355. package/corpus/chunks/gallery-page-shell.json +444 -0
  356. package/corpus/chunks/grid-2col-entry-cards.json +140 -0
  357. package/corpus/chunks/grid-kpi-4col.json +164 -0
  358. package/corpus/chunks/grid-responsive-kpi.json +165 -0
  359. package/corpus/chunks/hero-cta-simple.json +107 -0
  360. package/corpus/chunks/hero-cta-split.json +183 -0
  361. package/corpus/chunks/hero-section-split.json +111 -0
  362. package/corpus/chunks/icon-text-row.json +60 -0
  363. package/corpus/chunks/image-caption-tile.json +99 -0
  364. package/corpus/chunks/image-carousel.json +156 -0
  365. package/corpus/chunks/image-thumbnail-grid.json +77 -0
  366. package/corpus/chunks/image-upload-preview.json +118 -0
  367. package/corpus/chunks/import-mapping-flow.json +972 -0
  368. package/corpus/chunks/inline-dialog-rename.json +128 -0
  369. package/corpus/chunks/inline-dialog-schedule.json +154 -0
  370. package/corpus/chunks/inline-dialog-status.json +179 -0
  371. package/corpus/chunks/integrations-api-keys-card-list.json +475 -0
  372. package/corpus/chunks/integrations-connect-form.json +550 -0
  373. package/corpus/chunks/integrations-grid.json +141 -0
  374. package/corpus/chunks/integrations-webhooks-empty-state.json +66 -0
  375. package/corpus/chunks/inventory-list-stock.json +137 -0
  376. package/corpus/chunks/invite-members.json +153 -0
  377. package/corpus/chunks/invoice-line-items.json +493 -0
  378. package/corpus/chunks/kanban-board-3col.json +713 -0
  379. package/corpus/chunks/kanban-page-shell.json +671 -0
  380. package/corpus/chunks/key-value-detail-list.json +242 -0
  381. package/corpus/chunks/keyboard-shortcut-display.json +250 -0
  382. package/corpus/chunks/labeled-textarea.json +45 -0
  383. package/corpus/chunks/leaderboard-table.json +140 -0
  384. package/corpus/chunks/library-browser-search-filter.json +109 -0
  385. package/corpus/chunks/linked-record-row.json +61 -0
  386. package/corpus/chunks/loading-skeleton-placeholder.json +387 -0
  387. package/corpus/chunks/login-form-card.json +207 -0
  388. package/corpus/chunks/logo-cloud-trusted-by.json +235 -0
  389. package/corpus/chunks/map-with-location-list.json +293 -0
  390. package/corpus/chunks/marketing-hero-cta.json +102 -0
  391. package/corpus/chunks/marketing-page-shell.json +352 -0
  392. package/corpus/chunks/masonry-gallery.json +154 -0
  393. package/corpus/chunks/member-edit-drawer.json +236 -0
  394. package/corpus/chunks/members-active-table-search-filter.json +184 -0
  395. package/corpus/chunks/members-pending-invites-cards.json +251 -0
  396. package/corpus/chunks/members-roles-permissions-list.json +146 -0
  397. package/corpus/chunks/menu-context-actions.json +113 -0
  398. package/corpus/chunks/metadata-description-list.json +178 -0
  399. package/corpus/chunks/modal-create-project-form.json +133 -0
  400. package/corpus/chunks/modal-preferences-tabs.json +147 -0
  401. package/corpus/chunks/multi-field-form-validation.json +394 -0
  402. package/corpus/chunks/nav-menu-icons.json +74 -0
  403. package/corpus/chunks/newsletter-subscription.json +190 -0
  404. package/corpus/chunks/notification-badges-feed.json +411 -0
  405. package/corpus/chunks/notification-preferences-panel.json +238 -0
  406. package/corpus/chunks/onb-completion.json +139 -0
  407. package/corpus/chunks/onb-extension-install.json +172 -0
  408. package/corpus/chunks/onb-hero-welcome.json +156 -0
  409. package/corpus/chunks/onb-import-picker.json +86 -0
  410. package/corpus/chunks/onb-mobile-handoff.json +121 -0
  411. package/corpus/chunks/onb-notification-prefs.json +83 -0
  412. package/corpus/chunks/onb-persona-picker.json +82 -0
  413. package/corpus/chunks/onb-provider-tiles.json +137 -0
  414. package/corpus/chunks/onb-settings-review.json +257 -0
  415. package/corpus/chunks/onb-step-footer.json +121 -0
  416. package/corpus/chunks/onb-step-header.json +121 -0
  417. package/corpus/chunks/onb-step-progress.json +140 -0
  418. package/corpus/chunks/onb-step-shell.json +380 -0
  419. package/corpus/chunks/onb-story-pane.json +121 -0
  420. package/corpus/chunks/onb-tutorial-steps.json +193 -0
  421. package/corpus/chunks/order-confirmation-success-card.json +177 -0
  422. package/corpus/chunks/order-tracking-timeline.json +131 -0
  423. package/corpus/chunks/pagination-controls.json +82 -0
  424. package/corpus/chunks/pane-settings-sidebar.json +204 -0
  425. package/corpus/chunks/patient-visit-shell.json +191 -0
  426. package/corpus/chunks/payment-checkout-form.json +341 -0
  427. package/corpus/chunks/payment-method-form.json +328 -0
  428. package/corpus/chunks/period-comparison.json +236 -0
  429. package/corpus/chunks/permission-matrix-table.json +438 -0
  430. package/corpus/chunks/permissions-matrix-grid.json +111 -0
  431. package/corpus/chunks/permissions-matrix-summary.json +157 -0
  432. package/corpus/chunks/permissions-role-picker-radio.json +107 -0
  433. package/corpus/chunks/permissions-role-picker-select.json +101 -0
  434. package/corpus/chunks/permissions-share-link.json +256 -0
  435. package/corpus/chunks/permissions-share-people.json +297 -0
  436. package/corpus/chunks/permissions-sharing-scopes.json +109 -0
  437. package/corpus/chunks/plan-selection-form.json +529 -0
  438. package/corpus/chunks/playground-a2ui.json +181 -0
  439. package/corpus/chunks/playground-agent-admin.json +117 -0
  440. package/corpus/chunks/playground-agent-chat.json +126 -0
  441. package/corpus/chunks/playground-app-shell.json +488 -0
  442. package/corpus/chunks/playground-chat.json +265 -0
  443. package/corpus/chunks/playground-construct-canvas.json +118 -0
  444. package/corpus/chunks/playground-css-channel.json +487 -0
  445. package/corpus/chunks/playground-gen-ui.json +224 -0
  446. package/corpus/chunks/playground-render-preview.json +369 -0
  447. package/corpus/chunks/playground-streams-bridge.json +437 -0
  448. package/corpus/chunks/playground-table-toolbar.json +38 -0
  449. package/corpus/chunks/popover-with-content.json +118 -0
  450. package/corpus/chunks/pricing-tiers.json +561 -0
  451. package/corpus/chunks/product-tour.json +158 -0
  452. package/corpus/chunks/profile-public.json +297 -0
  453. package/corpus/chunks/progress-tracker-milestones.json +294 -0
  454. package/corpus/chunks/radio-button-group.json +83 -0
  455. package/corpus/chunks/rating-stars-review-summary.json +259 -0
  456. package/corpus/chunks/reactions-bar.json +75 -0
  457. package/corpus/chunks/reactions-picker.json +245 -0
  458. package/corpus/chunks/real-time-metrics-dashboard.json +344 -0
  459. package/corpus/chunks/record-detail-drawer-simple-detail.json +296 -0
  460. package/corpus/chunks/record-detail-drawer-tabbed-detail.json +443 -0
  461. package/corpus/chunks/referral-share-link.json +128 -0
  462. package/corpus/chunks/referral-status.json +243 -0
  463. package/corpus/chunks/reg-address-form.json +825 -0
  464. package/corpus/chunks/reg-billing-card.json +210 -0
  465. package/corpus/chunks/reg-brand-scrape.json +599 -0
  466. package/corpus/chunks/reg-departments-toggle.json +259 -0
  467. package/corpus/chunks/reg-extended-profile.json +356 -0
  468. package/corpus/chunks/reg-final-done.json +457 -0
  469. package/corpus/chunks/reg-helpdesk-grid.json +571 -0
  470. package/corpus/chunks/reg-import-picker.json +112 -0
  471. package/corpus/chunks/reg-integrations-grid.json +418 -0
  472. package/corpus/chunks/reg-invite-form.json +245 -0
  473. package/corpus/chunks/reg-legal-entity.json +260 -0
  474. package/corpus/chunks/reg-org-chart-review.json +891 -0
  475. package/corpus/chunks/reg-profile-identity.json +188 -0
  476. package/corpus/chunks/reg-step-footer.json +201 -0
  477. package/corpus/chunks/reg-step-header.json +201 -0
  478. package/corpus/chunks/reg-step-progress.json +236 -0
  479. package/corpus/chunks/reg-step-shell.json +605 -0
  480. package/corpus/chunks/reg-story-pane.json +201 -0
  481. package/corpus/chunks/reg-success-summary.json +257 -0
  482. package/corpus/chunks/reg-team-size.json +128 -0
  483. package/corpus/chunks/reg-usecase-picker.json +104 -0
  484. package/corpus/chunks/reg-workspace-name.json +159 -0
  485. package/corpus/chunks/responsive-grid-pattern.json +71 -0
  486. package/corpus/chunks/responsive-kpi-grid.json +166 -0
  487. package/corpus/chunks/responsive-row-pattern.json +71 -0
  488. package/corpus/chunks/responsive-shell-sidebar.json +308 -0
  489. package/corpus/chunks/responsive-wrap-at-pattern.json +124 -0
  490. package/corpus/chunks/retention-cohort-default-retention.json +80 -0
  491. package/corpus/chunks/retention-cohort-stat-pair.json +163 -0
  492. package/corpus/chunks/retention-cohort-with-legend.json +135 -0
  493. package/corpus/chunks/revenue-heatmap.json +82 -0
  494. package/corpus/chunks/role-management.json +272 -0
  495. package/corpus/chunks/row-action-cluster.json +54 -0
  496. package/corpus/chunks/row-avatar-name-role.json +71 -0
  497. package/corpus/chunks/row-icon-label.json +52 -0
  498. package/corpus/chunks/row-spread-label-value.json +54 -0
  499. package/corpus/chunks/row-wrap-tags.json +72 -0
  500. package/corpus/chunks/schedule-meeting-form-card.json +229 -0
  501. package/corpus/chunks/search-recents-menu.json +195 -0
  502. package/corpus/chunks/search-results-grouped.json +357 -0
  503. package/corpus/chunks/search-results-list.json +202 -0
  504. package/corpus/chunks/search-saved-views.json +356 -0
  505. package/corpus/chunks/search-with-filters.json +311 -0
  506. package/corpus/chunks/searchable-picker-modal.json +164 -0
  507. package/corpus/chunks/section-with-stack.json +48 -0
  508. package/corpus/chunks/security-active-sessions-devices.json +287 -0
  509. package/corpus/chunks/security-change-password-form.json +102 -0
  510. package/corpus/chunks/security-delete-account-danger.json +79 -0
  511. package/corpus/chunks/segmented-control-billing-tabs.json +164 -0
  512. package/corpus/chunks/select-multiple-preselected.json +70 -0
  513. package/corpus/chunks/settings-2fa-setup.json +307 -0
  514. package/corpus/chunks/settings-admin-page.json +1205 -0
  515. package/corpus/chunks/settings-appearance-primitives.json +145 -0
  516. package/corpus/chunks/settings-appearance-theme-panel.json +55 -0
  517. package/corpus/chunks/settings-appearance.json +81 -0
  518. package/corpus/chunks/settings-danger-zone-delete-workspace.json +93 -0
  519. package/corpus/chunks/settings-general-form.json +69 -0
  520. package/corpus/chunks/settings-integrations.json +298 -0
  521. package/corpus/chunks/settings-members-invite.json +112 -0
  522. package/corpus/chunks/settings-notification-activity-checkboxes.json +108 -0
  523. package/corpus/chunks/settings-notification-channels-switches.json +101 -0
  524. package/corpus/chunks/settings-page-shell.json +190 -0
  525. package/corpus/chunks/settings-privacy.json +83 -0
  526. package/corpus/chunks/settings-profile-security.json +122 -0
  527. package/corpus/chunks/settings-toggle-switches.json +66 -0
  528. package/corpus/chunks/sidebar-nav.json +120 -0
  529. package/corpus/chunks/sidebar-navigation-panel.json +165 -0
  530. package/corpus/chunks/signup-form-card.json +218 -0
  531. package/corpus/chunks/signup-team-size-form.json +259 -0
  532. package/corpus/chunks/single-select-card-form.json +231 -0
  533. package/corpus/chunks/slider-range-controls.json +119 -0
  534. package/corpus/chunks/social-media-post-card.json +159 -0
  535. package/corpus/chunks/sortable-list.json +307 -0
  536. package/corpus/chunks/sortable-search-paginate-table.json +162 -0
  537. package/corpus/chunks/split-pane-editor.json +146 -0
  538. package/corpus/chunks/stack-avatar-badge-overlay.json +53 -0
  539. package/corpus/chunks/stack-image-shimmer.json +51 -0
  540. package/corpus/chunks/stat-cards-kpi-dashboard.json +178 -0
  541. package/corpus/chunks/stats-band-big-numbers.json +175 -0
  542. package/corpus/chunks/status-dashboard.json +282 -0
  543. package/corpus/chunks/stepper-form-wizard.json +165 -0
  544. package/corpus/chunks/subscription-status-renewal-card.json +285 -0
  545. package/corpus/chunks/survey-rating-form.json +165 -0
  546. package/corpus/chunks/swiper-product-carousel.json +349 -0
  547. package/corpus/chunks/swiper-testimonial-carousel.json +279 -0
  548. package/corpus/chunks/table-empty-state.json +116 -0
  549. package/corpus/chunks/table-inline-edit-row.json +269 -0
  550. package/corpus/chunks/table-spreadsheet-cells.json +334 -0
  551. package/corpus/chunks/table-toolbar-no-search.json +42 -0
  552. package/corpus/chunks/table-toolbar-with-table.json +208 -0
  553. package/corpus/chunks/table-with-toolbar-card.json +80 -0
  554. package/corpus/chunks/tabs-with-panels.json +187 -0
  555. package/corpus/chunks/tag-chips-filter.json +100 -0
  556. package/corpus/chunks/team-invite-form.json +380 -0
  557. package/corpus/chunks/team-members-list.json +341 -0
  558. package/corpus/chunks/testimonial-grid.json +269 -0
  559. package/corpus/chunks/testimonial-pull-quote.json +137 -0
  560. package/corpus/chunks/testimonials-avatar-cards.json +286 -0
  561. package/corpus/chunks/timeline-events.json +89 -0
  562. package/corpus/chunks/timezone-selector-basic.json +99 -0
  563. package/corpus/chunks/timezone-selector-preview.json +104 -0
  564. package/corpus/chunks/toolbar-icons.json +216 -0
  565. package/corpus/chunks/toolbar-rich-text-editor.json +230 -0
  566. package/corpus/chunks/toolbar-tooltips.json +191 -0
  567. package/corpus/chunks/tooltip-hover-button.json +106 -0
  568. package/corpus/chunks/tree-file-explorer.json +136 -0
  569. package/corpus/chunks/tree-table-basic.json +171 -0
  570. package/corpus/chunks/trial-banner.json +158 -0
  571. package/corpus/chunks/url-import-form.json +728 -0
  572. package/corpus/chunks/usage-quota-meter-card.json +217 -0
  573. package/corpus/chunks/user-identity-row.json +81 -0
  574. package/corpus/chunks/user-onboarding-checklist.json +301 -0
  575. package/corpus/chunks/user-profile-card.json +192 -0
  576. package/corpus/chunks/users-table-badge.json +135 -0
  577. package/corpus/chunks/verification-document-upload.json +179 -0
  578. package/corpus/chunks/verification-status.json +97 -0
  579. package/corpus/chunks/verification-stepper.json +111 -0
  580. package/corpus/chunks/video-player-controls.json +120 -0
  581. package/corpus/chunks/webhook-config.json +209 -0
  582. package/corpus/chunks/webhooks-list.json +204 -0
  583. package/corpus/chunks/wizard-drawer-three-step-wizard.json +443 -0
  584. package/corpus/manifest.d.ts +4 -0
  585. package/corpus/manifest.json +6 -0
  586. package/corpus/scripts/chunk-library.d.ts +4 -0
  587. package/corpus/scripts/chunk-library.js +335 -0
  588. package/node-shims.d.ts +48 -0
  589. package/package.json +215 -0
  590. package/retrieval/CHANGELOG.md +1073 -0
  591. package/retrieval/README.md +71 -0
  592. package/retrieval/anti-patterns.js +189 -0
  593. package/retrieval/authoring/index.d.ts +4 -0
  594. package/retrieval/authoring/index.js +9 -0
  595. package/retrieval/authoring/web-research.js +220 -0
  596. package/retrieval/catalog.js +250 -0
  597. package/retrieval/component-catalog.js +168 -0
  598. package/retrieval/component-entry.js +80 -0
  599. package/retrieval/context-assembler.js +174 -0
  600. package/retrieval/domain-router.js +417 -0
  601. package/retrieval/embedding/chunk-embedding-retriever.js +117 -0
  602. package/retrieval/embedding/embedding-provider.js +72 -0
  603. package/retrieval/embedding/index.d.ts +4 -0
  604. package/retrieval/embedding/index.js +2 -0
  605. package/retrieval/feedback/dialog-recorder.js +107 -0
  606. package/retrieval/feedback/feedback-analyzer.js +180 -0
  607. package/retrieval/feedback/feedback-store.js +194 -0
  608. package/retrieval/feedback/feedback.js +117 -0
  609. package/retrieval/feedback/gap-registry.js +80 -0
  610. package/retrieval/feedback/human-signal.js +113 -0
  611. package/retrieval/feedback/index.d.ts +4 -0
  612. package/retrieval/feedback/index.js +24 -0
  613. package/retrieval/feedback/submit-feedback.js +45 -0
  614. package/retrieval/index.d.ts +4 -0
  615. package/retrieval/index.js +53 -0
  616. package/retrieval/intent/clarity.js +139 -0
  617. package/retrieval/intent/decomposer.js +124 -0
  618. package/retrieval/intent/index.d.ts +4 -0
  619. package/retrieval/intent/index.js +18 -0
  620. package/retrieval/intent/intent-alignment.js +172 -0
  621. package/retrieval/intent/intent-categorizer.js +69 -0
  622. package/retrieval/intent/intent-gate.js +96 -0
  623. package/retrieval/intent/prompt-analyzer.js +162 -0
  624. package/retrieval/wiring-catalog.js +168 -0
  625. package/validate/catalog-validator.d.ts +4 -0
  626. package/validate/catalog-validator.js +327 -0
  627. package/validate/semantic/cache.js +54 -0
  628. package/validate/semantic/classify-intent.js +128 -0
  629. package/validate/semantic/index.js +163 -0
  630. package/validate/semantic/intent-specs.js +162 -0
  631. package/validate/semantic/judge.js +180 -0
@@ -0,0 +1,972 @@
1
+ {
2
+ "name": "import-mapping-flow",
3
+ "kind": "block",
4
+ "primary": "col-ui",
5
+ "page": "/catalog/ui-patterns/app/import-mapping/import-mapping.contents.html",
6
+ "slots": [],
7
+ "nested": [],
8
+ "attrs": {
9
+ "gap": "5"
10
+ },
11
+ "html": "<col-ui\n gap=\"5\" style=\"max-width: 880px; margin-inline: auto; padding: var(--a-space-6);\">\n\n <!-- ═══════════════ Header + step progress ═══════════════ -->\n <col-ui gap=\"3\">\n <h1 style=\"margin: 0;\">Import customer data</h1>\n <text-ui color=\"subtle\">Upload a CSV or JSON file, map your columns to our fields, then preview before committing the import.</text-ui>\n <!-- step-progress-ui ships with `flex: 0 1 18rem` (designed for the\n registration shell's row-flex layout). In a col-flex parent that\n flex-basis becomes a 288px vertical bloat — override here. -->\n <step-progress-ui value=\"2\" total=\"3\" caption=\"Step 2 of 3 · Map fields\" style=\"flex: none;\"></step-progress-ui>\n </col-ui>\n\n <!-- ═══════════════ Step 1 — Upload (collapsed) ═══════════════ -->\n <card-ui>\n <header>\n <span slot=\"icon\"><avatar-ui icon=\"check\" size=\"sm\" style=\"--avatar-bg: var(--a-success-bg); --avatar-fg: var(--md-sys-color-success-on-success);\"></avatar-ui></span>\n <span slot=\"heading\">\n <text-ui strong>1. Upload file</text-ui>\n <badge-ui text=\"Done\" variant=\"success\"></badge-ui>\n </span>\n <span slot=\"description\">\n <text-ui color=\"subtle\" size=\"sm\">customers-2026-q1.csv · 1,243 rows · 8 columns</text-ui>\n </span>\n <span slot=\"action\">\n <button-ui text=\"Replace\" variant=\"ghost\" size=\"sm\" icon=\"arrow-counter-clockwise\"></button-ui>\n </span>\n </header>\n </card-ui>\n\n <!-- ═══════════════ Step 2 — Field mapping (active) ═══════════════ -->\n <card-ui>\n <header>\n <span slot=\"icon\"><avatar-ui icon=\"arrows-horizontal\" size=\"sm\"></avatar-ui></span>\n <span slot=\"heading\">\n <text-ui strong>2. Map your columns to our fields</text-ui>\n </span>\n <span slot=\"description\">\n <text-ui color=\"subtle\" size=\"sm\">We auto-detected 5 of 8 columns. Review and adjust before continuing — required fields are marked.</text-ui>\n </span>\n </header>\n <section>\n <col-ui gap=\"3\">\n <alert-ui variant=\"info\" icon=\"info\" text=\"Pro tip — pick 'Don't import' to skip a column. You can always re-run the import to bring more fields later.\"></alert-ui>\n\n <!-- Mapping rows — each row is source column + arrow + target dropdown.\n list-ui[divider] gives us per-row separators; grid-ui inside each\n row creates the 3-column structure (source | sample | target).\n NOTE: declarative <tr>/<td> inside <table-ui> would be stripped by\n the HTML parser (foster-parented). table-ui takes programmatic\n columns/data; for control-row layouts like this, list-ui composition\n is the canonical pattern. -->\n <list-ui id=\"import-mapping-list\" divider>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>full_name</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">Avery Chen</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"name\" name=\"map_full_name\">\n <option value=\"\">Don't import</option>\n <option value=\"name\" selected>Name</option>\n <option value=\"email\">Email</option>\n <option value=\"role\">Role</option>\n <option value=\"team\">Team</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>email_addr</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">avery@acme.com</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"email\" name=\"map_email_addr\">\n <option value=\"\">Don't import</option>\n <option value=\"name\">Name</option>\n <option value=\"email\" selected>Email (required)</option>\n <option value=\"role\">Role</option>\n <option value=\"team\">Team</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>company</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">Acme Inc</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"team\" name=\"map_company\">\n <option value=\"\">Don't import</option>\n <option value=\"name\">Name</option>\n <option value=\"email\">Email</option>\n <option value=\"role\">Role</option>\n <option value=\"team\" selected>Team / Company</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>job_title</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">Senior Engineer</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"role\" name=\"map_job_title\">\n <option value=\"\">Don't import</option>\n <option value=\"name\">Name</option>\n <option value=\"email\">Email</option>\n <option value=\"role\" selected>Role / Title</option>\n <option value=\"team\">Team</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>signup_date</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">2026-03-15</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"\" name=\"map_signup_date\">\n <option value=\"\" selected>Don't import</option>\n <option value=\"created_at\">Created at</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>region</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">EMEA</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"\" name=\"map_region\">\n <option value=\"\" selected>Don't import</option>\n <option value=\"region\">Region</option>\n <option value=\"team\">Team</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>notes</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">\"VIP — handle with care\"</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"\" name=\"map_notes\">\n <option value=\"\" selected>Don't import</option>\n <option value=\"notes\">Notes</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n <list-item-ui>\n <grid-ui slot=\"content\" gap=\"3\" style=\"grid-template-columns: 1fr auto 1fr; align-items: center;\">\n <col-ui gap=\"0\">\n <text-ui strong>internal_id</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">cust_5392</text-ui>\n </col-ui>\n <icon-ui name=\"arrow-right\" color=\"subtle\" style=\"justify-self: center;\"></icon-ui>\n <select-ui value=\"\" name=\"map_internal_id\">\n <option value=\"\" selected>Don't import</option>\n <option value=\"external_id\">External ID</option>\n </select-ui>\n </grid-ui>\n </list-item-ui>\n </list-ui>\n\n <!-- Validation summary — what'll get imported -->\n <row-ui gap=\"3\" align=\"center\" style=\"background: var(--a-bg-muted); padding: var(--a-space-3); border-radius: var(--a-radius-md);\">\n <icon-ui name=\"check-circle\" tone=\"success\"></icon-ui>\n <col-ui gap=\"0\" style=\"flex: 1;\">\n <text-ui strong>4 fields mapped · 4 columns skipped</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">1,243 rows ready to import. Email column passed validation (no malformed addresses).</text-ui>\n </col-ui>\n </row-ui>\n </col-ui>\n </section>\n <footer slot=\"footer\">\n <row-ui gap=\"2\" justify=\"space-between\" style=\"width: 100%;\">\n <button-ui text=\"Back\" variant=\"ghost\"></button-ui>\n <row-ui gap=\"2\">\n <button-ui text=\"Cancel\" variant=\"outline\"></button-ui>\n <button-ui text=\"Preview import →\" variant=\"primary\"></button-ui>\n </row-ui>\n </row-ui>\n </footer>\n </card-ui>\n\n <!-- ═══════════════ Step 3 — Preview (pending) ═══════════════ -->\n <card-ui>\n <header>\n <span slot=\"icon\"><avatar-ui icon=\"eye\" size=\"sm\"></avatar-ui></span>\n <span slot=\"heading\">\n <text-ui strong color=\"subtle\">3. Preview &amp; confirm</text-ui>\n </span>\n <span slot=\"description\">\n <text-ui color=\"subtle\" size=\"sm\">Final check before we commit 1,243 rows.</text-ui>\n </span>\n </header>\n </card-ui>\n\n <!-- Composition notes (rendered as a footnote for the demo, not part of\n the production UI). Helps future authors understand why this shape. -->\n <col-ui gap=\"2\" style=\"margin-top: var(--a-space-6); padding-block-start: var(--a-space-5); border-top: 1px solid var(--md-sys-color-neutral-outline);\">\n <text-ui size=\"sm\" color=\"subtle\"><strong>Composition rules.</strong> Three steps: upload → map → preview, each as a card-ui with header (icon + heading + status badge). The mapping itself is a list-ui[divider] of source-column / target-field rows — NOT a table-ui (the HTML parser strips declarative &lt;tr&gt; inside custom elements; table-ui takes programmatic .columns/.data instead). Each row is a 3-col grid (source label + sample → arrow → target select). The \"fields mapped\" summary lives at the bottom of the active card; the footer action bar carries Back + Cancel + primary Continue.</text-ui>\n </col-ui>\n\n</col-ui>",
12
+ "source": "catalog/ui-patterns/app/import-mapping/import-mapping.contents.html",
13
+ "metadata": {
14
+ "domain": "data-management",
15
+ "description": "Multi-step CSV/file import flow — upload, field mapping (source columns ↔ target fields), preview, import. Shows the field-mapping step prominently since it's the part most often missing from import patterns.",
16
+ "keywords": [
17
+ "import",
18
+ "csv",
19
+ "upload",
20
+ "mapping",
21
+ "fields",
22
+ "columns",
23
+ "bulk",
24
+ "data",
25
+ "migration"
26
+ ]
27
+ },
28
+ "captured_at": "2026-08-12T02:59:58.757Z",
29
+ "template": [
30
+ {
31
+ "id": "text",
32
+ "component": "Text",
33
+ "variant": "display",
34
+ "textContent": "Import customer data"
35
+ },
36
+ {
37
+ "id": "text-2",
38
+ "component": "Text",
39
+ "color": "subtle",
40
+ "textContent": "Upload a CSV or JSON file, map your columns to our fields, then preview before committing the import."
41
+ },
42
+ {
43
+ "id": "step-progress",
44
+ "component": "StepProgress",
45
+ "caption": "Step 2 of 3 · Map fields",
46
+ "total": 3,
47
+ "value": 2
48
+ },
49
+ {
50
+ "id": "column",
51
+ "component": "Column",
52
+ "gap": "3",
53
+ "children": [
54
+ "text",
55
+ "text-2",
56
+ "step-progress"
57
+ ]
58
+ },
59
+ {
60
+ "id": "avatar",
61
+ "component": "Avatar",
62
+ "icon": "check",
63
+ "size": "sm"
64
+ },
65
+ {
66
+ "id": "text-3",
67
+ "component": "Text",
68
+ "variant": "body",
69
+ "slot": "icon",
70
+ "children": [
71
+ "avatar"
72
+ ]
73
+ },
74
+ {
75
+ "id": "text-5",
76
+ "component": "Text",
77
+ "strong": true,
78
+ "textContent": "1. Upload file"
79
+ },
80
+ {
81
+ "id": "badge",
82
+ "component": "Badge",
83
+ "text": "Done",
84
+ "variant": "success"
85
+ },
86
+ {
87
+ "id": "text-4",
88
+ "component": "Text",
89
+ "variant": "body",
90
+ "slot": "heading",
91
+ "children": [
92
+ "text-5",
93
+ "badge"
94
+ ]
95
+ },
96
+ {
97
+ "id": "text-7",
98
+ "component": "Text",
99
+ "color": "subtle",
100
+ "size": "sm",
101
+ "textContent": "customers-2026-q1.csv · 1,243 rows · 8 columns"
102
+ },
103
+ {
104
+ "id": "text-6",
105
+ "component": "Text",
106
+ "variant": "body",
107
+ "slot": "description",
108
+ "children": [
109
+ "text-7"
110
+ ]
111
+ },
112
+ {
113
+ "id": "button",
114
+ "component": "Button",
115
+ "icon": "arrow-counter-clockwise",
116
+ "size": "sm",
117
+ "text": "Replace",
118
+ "variant": "ghost"
119
+ },
120
+ {
121
+ "id": "text-8",
122
+ "component": "Text",
123
+ "variant": "body",
124
+ "slot": "action",
125
+ "children": [
126
+ "button"
127
+ ]
128
+ },
129
+ {
130
+ "id": "header",
131
+ "component": "Header",
132
+ "children": [
133
+ "text-3",
134
+ "text-4",
135
+ "text-6",
136
+ "text-8"
137
+ ]
138
+ },
139
+ {
140
+ "id": "card",
141
+ "component": "Card",
142
+ "children": [
143
+ "header"
144
+ ]
145
+ },
146
+ {
147
+ "id": "avatar-2",
148
+ "component": "Avatar",
149
+ "icon": "arrows-horizontal",
150
+ "size": "sm"
151
+ },
152
+ {
153
+ "id": "text-9",
154
+ "component": "Text",
155
+ "variant": "body",
156
+ "slot": "icon",
157
+ "children": [
158
+ "avatar-2"
159
+ ]
160
+ },
161
+ {
162
+ "id": "text-11",
163
+ "component": "Text",
164
+ "strong": true,
165
+ "textContent": "2. Map your columns to our fields"
166
+ },
167
+ {
168
+ "id": "text-10",
169
+ "component": "Text",
170
+ "variant": "body",
171
+ "slot": "heading",
172
+ "children": [
173
+ "text-11"
174
+ ]
175
+ },
176
+ {
177
+ "id": "text-13",
178
+ "component": "Text",
179
+ "color": "subtle",
180
+ "size": "sm",
181
+ "textContent": "We auto-detected 5 of 8 columns. Review and adjust before continuing — required fields are marked."
182
+ },
183
+ {
184
+ "id": "text-12",
185
+ "component": "Text",
186
+ "variant": "body",
187
+ "slot": "description",
188
+ "children": [
189
+ "text-13"
190
+ ]
191
+ },
192
+ {
193
+ "id": "header-2",
194
+ "component": "Header",
195
+ "children": [
196
+ "text-9",
197
+ "text-10",
198
+ "text-12"
199
+ ]
200
+ },
201
+ {
202
+ "id": "alert",
203
+ "component": "Alert",
204
+ "icon": "info",
205
+ "text": "Pro tip — pick 'Don't import' to skip a column. You can always re-run the import to bring more fields later.",
206
+ "variant": "info"
207
+ },
208
+ {
209
+ "id": "text-14",
210
+ "component": "Text",
211
+ "strong": true,
212
+ "textContent": "full_name"
213
+ },
214
+ {
215
+ "id": "text-15",
216
+ "component": "Text",
217
+ "color": "subtle",
218
+ "size": "sm",
219
+ "textContent": "Avery Chen"
220
+ },
221
+ {
222
+ "id": "column-3",
223
+ "component": "Column",
224
+ "gap": "0",
225
+ "children": [
226
+ "text-14",
227
+ "text-15"
228
+ ]
229
+ },
230
+ {
231
+ "id": "arrow-right",
232
+ "component": "Icon",
233
+ "name": "arrow-right"
234
+ },
235
+ {
236
+ "id": "map-full-name",
237
+ "component": "ChoicePicker",
238
+ "name": "map_full_name",
239
+ "value": "name",
240
+ "options": [
241
+ {
242
+ "value": "",
243
+ "label": "Don't import"
244
+ },
245
+ {
246
+ "value": "name",
247
+ "label": "Name"
248
+ },
249
+ {
250
+ "value": "email",
251
+ "label": "Email"
252
+ },
253
+ {
254
+ "value": "role",
255
+ "label": "Role"
256
+ },
257
+ {
258
+ "value": "team",
259
+ "label": "Team"
260
+ }
261
+ ]
262
+ },
263
+ {
264
+ "id": "grid",
265
+ "component": "Grid",
266
+ "slot": "content",
267
+ "gap": "3",
268
+ "children": [
269
+ "column-3",
270
+ "arrow-right",
271
+ "map-full-name"
272
+ ]
273
+ },
274
+ {
275
+ "id": "list-item",
276
+ "component": "ListItem",
277
+ "children": [
278
+ "grid"
279
+ ]
280
+ },
281
+ {
282
+ "id": "text-16",
283
+ "component": "Text",
284
+ "strong": true,
285
+ "textContent": "email_addr"
286
+ },
287
+ {
288
+ "id": "text-17",
289
+ "component": "Text",
290
+ "color": "subtle",
291
+ "size": "sm",
292
+ "textContent": "avery@acme.com"
293
+ },
294
+ {
295
+ "id": "column-4",
296
+ "component": "Column",
297
+ "gap": "0",
298
+ "children": [
299
+ "text-16",
300
+ "text-17"
301
+ ]
302
+ },
303
+ {
304
+ "id": "icon",
305
+ "component": "Icon",
306
+ "name": "arrow-right"
307
+ },
308
+ {
309
+ "id": "map-email-addr",
310
+ "component": "ChoicePicker",
311
+ "name": "map_email_addr",
312
+ "value": "email",
313
+ "options": [
314
+ {
315
+ "value": "",
316
+ "label": "Don't import"
317
+ },
318
+ {
319
+ "value": "name",
320
+ "label": "Name"
321
+ },
322
+ {
323
+ "value": "email",
324
+ "label": "Email (required)"
325
+ },
326
+ {
327
+ "value": "role",
328
+ "label": "Role"
329
+ },
330
+ {
331
+ "value": "team",
332
+ "label": "Team"
333
+ }
334
+ ]
335
+ },
336
+ {
337
+ "id": "grid-2",
338
+ "component": "Grid",
339
+ "slot": "content",
340
+ "gap": "3",
341
+ "children": [
342
+ "column-4",
343
+ "icon",
344
+ "map-email-addr"
345
+ ]
346
+ },
347
+ {
348
+ "id": "list-item-2",
349
+ "component": "ListItem",
350
+ "children": [
351
+ "grid-2"
352
+ ]
353
+ },
354
+ {
355
+ "id": "text-18",
356
+ "component": "Text",
357
+ "strong": true,
358
+ "textContent": "company"
359
+ },
360
+ {
361
+ "id": "text-19",
362
+ "component": "Text",
363
+ "color": "subtle",
364
+ "size": "sm",
365
+ "textContent": "Acme Inc"
366
+ },
367
+ {
368
+ "id": "column-5",
369
+ "component": "Column",
370
+ "gap": "0",
371
+ "children": [
372
+ "text-18",
373
+ "text-19"
374
+ ]
375
+ },
376
+ {
377
+ "id": "icon-2",
378
+ "component": "Icon",
379
+ "name": "arrow-right"
380
+ },
381
+ {
382
+ "id": "map-company",
383
+ "component": "ChoicePicker",
384
+ "name": "map_company",
385
+ "value": "team",
386
+ "options": [
387
+ {
388
+ "value": "",
389
+ "label": "Don't import"
390
+ },
391
+ {
392
+ "value": "name",
393
+ "label": "Name"
394
+ },
395
+ {
396
+ "value": "email",
397
+ "label": "Email"
398
+ },
399
+ {
400
+ "value": "role",
401
+ "label": "Role"
402
+ },
403
+ {
404
+ "value": "team",
405
+ "label": "Team / Company"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "id": "grid-3",
411
+ "component": "Grid",
412
+ "slot": "content",
413
+ "gap": "3",
414
+ "children": [
415
+ "column-5",
416
+ "icon-2",
417
+ "map-company"
418
+ ]
419
+ },
420
+ {
421
+ "id": "list-item-3",
422
+ "component": "ListItem",
423
+ "children": [
424
+ "grid-3"
425
+ ]
426
+ },
427
+ {
428
+ "id": "text-20",
429
+ "component": "Text",
430
+ "strong": true,
431
+ "textContent": "job_title"
432
+ },
433
+ {
434
+ "id": "text-21",
435
+ "component": "Text",
436
+ "color": "subtle",
437
+ "size": "sm",
438
+ "textContent": "Senior Engineer"
439
+ },
440
+ {
441
+ "id": "column-6",
442
+ "component": "Column",
443
+ "gap": "0",
444
+ "children": [
445
+ "text-20",
446
+ "text-21"
447
+ ]
448
+ },
449
+ {
450
+ "id": "icon-3",
451
+ "component": "Icon",
452
+ "name": "arrow-right"
453
+ },
454
+ {
455
+ "id": "map-job-title",
456
+ "component": "ChoicePicker",
457
+ "name": "map_job_title",
458
+ "value": "role",
459
+ "options": [
460
+ {
461
+ "value": "",
462
+ "label": "Don't import"
463
+ },
464
+ {
465
+ "value": "name",
466
+ "label": "Name"
467
+ },
468
+ {
469
+ "value": "email",
470
+ "label": "Email"
471
+ },
472
+ {
473
+ "value": "role",
474
+ "label": "Role / Title"
475
+ },
476
+ {
477
+ "value": "team",
478
+ "label": "Team"
479
+ }
480
+ ]
481
+ },
482
+ {
483
+ "id": "grid-4",
484
+ "component": "Grid",
485
+ "slot": "content",
486
+ "gap": "3",
487
+ "children": [
488
+ "column-6",
489
+ "icon-3",
490
+ "map-job-title"
491
+ ]
492
+ },
493
+ {
494
+ "id": "list-item-4",
495
+ "component": "ListItem",
496
+ "children": [
497
+ "grid-4"
498
+ ]
499
+ },
500
+ {
501
+ "id": "text-22",
502
+ "component": "Text",
503
+ "strong": true,
504
+ "textContent": "signup_date"
505
+ },
506
+ {
507
+ "id": "text-23",
508
+ "component": "Text",
509
+ "color": "subtle",
510
+ "size": "sm",
511
+ "textContent": "2026-03-15"
512
+ },
513
+ {
514
+ "id": "column-7",
515
+ "component": "Column",
516
+ "gap": "0",
517
+ "children": [
518
+ "text-22",
519
+ "text-23"
520
+ ]
521
+ },
522
+ {
523
+ "id": "icon-4",
524
+ "component": "Icon",
525
+ "name": "arrow-right"
526
+ },
527
+ {
528
+ "id": "map-signup-date",
529
+ "component": "ChoicePicker",
530
+ "name": "map_signup_date",
531
+ "options": [
532
+ {
533
+ "value": "",
534
+ "label": "Don't import"
535
+ },
536
+ {
537
+ "value": "created_at",
538
+ "label": "Created at"
539
+ }
540
+ ],
541
+ "value": ""
542
+ },
543
+ {
544
+ "id": "grid-5",
545
+ "component": "Grid",
546
+ "slot": "content",
547
+ "gap": "3",
548
+ "children": [
549
+ "column-7",
550
+ "icon-4",
551
+ "map-signup-date"
552
+ ]
553
+ },
554
+ {
555
+ "id": "list-item-5",
556
+ "component": "ListItem",
557
+ "children": [
558
+ "grid-5"
559
+ ]
560
+ },
561
+ {
562
+ "id": "text-24",
563
+ "component": "Text",
564
+ "strong": true,
565
+ "textContent": "region"
566
+ },
567
+ {
568
+ "id": "text-25",
569
+ "component": "Text",
570
+ "color": "subtle",
571
+ "size": "sm",
572
+ "textContent": "EMEA"
573
+ },
574
+ {
575
+ "id": "column-8",
576
+ "component": "Column",
577
+ "gap": "0",
578
+ "children": [
579
+ "text-24",
580
+ "text-25"
581
+ ]
582
+ },
583
+ {
584
+ "id": "icon-5",
585
+ "component": "Icon",
586
+ "name": "arrow-right"
587
+ },
588
+ {
589
+ "id": "map-region",
590
+ "component": "ChoicePicker",
591
+ "name": "map_region",
592
+ "options": [
593
+ {
594
+ "value": "",
595
+ "label": "Don't import"
596
+ },
597
+ {
598
+ "value": "region",
599
+ "label": "Region"
600
+ },
601
+ {
602
+ "value": "team",
603
+ "label": "Team"
604
+ }
605
+ ],
606
+ "value": ""
607
+ },
608
+ {
609
+ "id": "grid-6",
610
+ "component": "Grid",
611
+ "slot": "content",
612
+ "gap": "3",
613
+ "children": [
614
+ "column-8",
615
+ "icon-5",
616
+ "map-region"
617
+ ]
618
+ },
619
+ {
620
+ "id": "list-item-6",
621
+ "component": "ListItem",
622
+ "children": [
623
+ "grid-6"
624
+ ]
625
+ },
626
+ {
627
+ "id": "text-26",
628
+ "component": "Text",
629
+ "strong": true,
630
+ "textContent": "notes"
631
+ },
632
+ {
633
+ "id": "text-27",
634
+ "component": "Text",
635
+ "color": "subtle",
636
+ "size": "sm",
637
+ "textContent": "\"VIP — handle with care\""
638
+ },
639
+ {
640
+ "id": "column-9",
641
+ "component": "Column",
642
+ "gap": "0",
643
+ "children": [
644
+ "text-26",
645
+ "text-27"
646
+ ]
647
+ },
648
+ {
649
+ "id": "icon-6",
650
+ "component": "Icon",
651
+ "name": "arrow-right"
652
+ },
653
+ {
654
+ "id": "map-notes",
655
+ "component": "ChoicePicker",
656
+ "name": "map_notes",
657
+ "options": [
658
+ {
659
+ "value": "",
660
+ "label": "Don't import"
661
+ },
662
+ {
663
+ "value": "notes",
664
+ "label": "Notes"
665
+ }
666
+ ],
667
+ "value": ""
668
+ },
669
+ {
670
+ "id": "grid-7",
671
+ "component": "Grid",
672
+ "slot": "content",
673
+ "gap": "3",
674
+ "children": [
675
+ "column-9",
676
+ "icon-6",
677
+ "map-notes"
678
+ ]
679
+ },
680
+ {
681
+ "id": "list-item-7",
682
+ "component": "ListItem",
683
+ "children": [
684
+ "grid-7"
685
+ ]
686
+ },
687
+ {
688
+ "id": "text-28",
689
+ "component": "Text",
690
+ "strong": true,
691
+ "textContent": "internal_id"
692
+ },
693
+ {
694
+ "id": "text-29",
695
+ "component": "Text",
696
+ "color": "subtle",
697
+ "size": "sm",
698
+ "textContent": "cust_5392"
699
+ },
700
+ {
701
+ "id": "column-10",
702
+ "component": "Column",
703
+ "gap": "0",
704
+ "children": [
705
+ "text-28",
706
+ "text-29"
707
+ ]
708
+ },
709
+ {
710
+ "id": "icon-7",
711
+ "component": "Icon",
712
+ "name": "arrow-right"
713
+ },
714
+ {
715
+ "id": "map-internal-id",
716
+ "component": "ChoicePicker",
717
+ "name": "map_internal_id",
718
+ "options": [
719
+ {
720
+ "value": "",
721
+ "label": "Don't import"
722
+ },
723
+ {
724
+ "value": "external_id",
725
+ "label": "External ID"
726
+ }
727
+ ],
728
+ "value": ""
729
+ },
730
+ {
731
+ "id": "grid-8",
732
+ "component": "Grid",
733
+ "slot": "content",
734
+ "gap": "3",
735
+ "children": [
736
+ "column-10",
737
+ "icon-7",
738
+ "map-internal-id"
739
+ ]
740
+ },
741
+ {
742
+ "id": "list-item-8",
743
+ "component": "ListItem",
744
+ "children": [
745
+ "grid-8"
746
+ ]
747
+ },
748
+ {
749
+ "id": "import-mapping-list",
750
+ "component": "List",
751
+ "divider": true,
752
+ "children": [
753
+ "list-item",
754
+ "list-item-2",
755
+ "list-item-3",
756
+ "list-item-4",
757
+ "list-item-5",
758
+ "list-item-6",
759
+ "list-item-7",
760
+ "list-item-8"
761
+ ]
762
+ },
763
+ {
764
+ "id": "check-circle",
765
+ "component": "Icon",
766
+ "name": "check-circle",
767
+ "tone": "success"
768
+ },
769
+ {
770
+ "id": "text-30",
771
+ "component": "Text",
772
+ "strong": true,
773
+ "textContent": "4 fields mapped · 4 columns skipped"
774
+ },
775
+ {
776
+ "id": "text-31",
777
+ "component": "Text",
778
+ "color": "subtle",
779
+ "size": "sm",
780
+ "textContent": "1,243 rows ready to import. Email column passed validation (no malformed addresses)."
781
+ },
782
+ {
783
+ "id": "column-11",
784
+ "component": "Column",
785
+ "gap": "0",
786
+ "children": [
787
+ "text-30",
788
+ "text-31"
789
+ ]
790
+ },
791
+ {
792
+ "id": "row",
793
+ "component": "Row",
794
+ "align": "center",
795
+ "gap": "3",
796
+ "children": [
797
+ "check-circle",
798
+ "column-11"
799
+ ]
800
+ },
801
+ {
802
+ "id": "column-2",
803
+ "component": "Column",
804
+ "gap": "3",
805
+ "children": [
806
+ "alert",
807
+ "import-mapping-list",
808
+ "row"
809
+ ]
810
+ },
811
+ {
812
+ "id": "section",
813
+ "component": "Section",
814
+ "children": [
815
+ "column-2"
816
+ ]
817
+ },
818
+ {
819
+ "id": "button-2",
820
+ "component": "Button",
821
+ "text": "Back",
822
+ "variant": "ghost"
823
+ },
824
+ {
825
+ "id": "button-3",
826
+ "component": "Button",
827
+ "text": "Cancel",
828
+ "variant": "outline"
829
+ },
830
+ {
831
+ "id": "button-4",
832
+ "component": "Button",
833
+ "text": "Preview import →",
834
+ "variant": "primary"
835
+ },
836
+ {
837
+ "id": "row-3",
838
+ "component": "Row",
839
+ "gap": "2",
840
+ "children": [
841
+ "button-3",
842
+ "button-4"
843
+ ]
844
+ },
845
+ {
846
+ "id": "row-2",
847
+ "component": "Row",
848
+ "gap": "2",
849
+ "justify": "space-between",
850
+ "children": [
851
+ "button-2",
852
+ "row-3"
853
+ ]
854
+ },
855
+ {
856
+ "id": "footer",
857
+ "component": "Footer",
858
+ "slot": "footer",
859
+ "children": [
860
+ "row-2"
861
+ ]
862
+ },
863
+ {
864
+ "id": "card-2",
865
+ "component": "Card",
866
+ "children": [
867
+ "header-2",
868
+ "section",
869
+ "footer"
870
+ ]
871
+ },
872
+ {
873
+ "id": "avatar-3",
874
+ "component": "Avatar",
875
+ "icon": "eye",
876
+ "size": "sm"
877
+ },
878
+ {
879
+ "id": "text-32",
880
+ "component": "Text",
881
+ "variant": "body",
882
+ "slot": "icon",
883
+ "children": [
884
+ "avatar-3"
885
+ ]
886
+ },
887
+ {
888
+ "id": "text-34",
889
+ "component": "Text",
890
+ "color": "subtle",
891
+ "strong": true,
892
+ "textContent": "3. Preview &amp; confirm"
893
+ },
894
+ {
895
+ "id": "text-33",
896
+ "component": "Text",
897
+ "variant": "body",
898
+ "slot": "heading",
899
+ "children": [
900
+ "text-34"
901
+ ]
902
+ },
903
+ {
904
+ "id": "text-36",
905
+ "component": "Text",
906
+ "color": "subtle",
907
+ "size": "sm",
908
+ "textContent": "Final check before we commit 1,243 rows."
909
+ },
910
+ {
911
+ "id": "text-35",
912
+ "component": "Text",
913
+ "variant": "body",
914
+ "slot": "description",
915
+ "children": [
916
+ "text-36"
917
+ ]
918
+ },
919
+ {
920
+ "id": "header-3",
921
+ "component": "Header",
922
+ "children": [
923
+ "text-32",
924
+ "text-33",
925
+ "text-35"
926
+ ]
927
+ },
928
+ {
929
+ "id": "card-3",
930
+ "component": "Card",
931
+ "children": [
932
+ "header-3"
933
+ ]
934
+ },
935
+ {
936
+ "id": "text-38",
937
+ "component": "Text",
938
+ "variant": "body",
939
+ "textContent": "Composition rules."
940
+ },
941
+ {
942
+ "id": "text-37",
943
+ "component": "Text",
944
+ "color": "subtle",
945
+ "size": "sm",
946
+ "textContent": "Three steps: upload → map → preview, each as a card-ui with header (icon + heading + status badge). The mapping itself is a list-ui[divider] of source-column / target-field rows — NOT a table-ui (the HTML parser strips declarative &lt;tr&gt; inside custom elements; table-ui takes programmatic .columns/.data instead). Each row is a 3-col grid (source label + sample → arrow → target select). The \"fields mapped\" summary lives at the bottom of the active card; the footer action bar carries Back + Cancel + primary Continue.",
947
+ "children": [
948
+ "text-38"
949
+ ]
950
+ },
951
+ {
952
+ "id": "column-12",
953
+ "component": "Column",
954
+ "gap": "2",
955
+ "children": [
956
+ "text-37"
957
+ ]
958
+ },
959
+ {
960
+ "id": "root",
961
+ "component": "Column",
962
+ "gap": "5",
963
+ "children": [
964
+ "column",
965
+ "card",
966
+ "card-2",
967
+ "card-3",
968
+ "column-12"
969
+ ]
970
+ }
971
+ ]
972
+ }